ClustalW格式是多序列比对程序CLUSTAL W的默认输出格式,大概是这个样子:
Aligned FASTA格式是多序列比对程序MUSCLE的默认输出格式,与一般的FASTA格式很相似,只是根据比对结果在序列中填充“-”,使所有序列长度相同,例如:
Aligned FASTA格式更便于机器阅读,而ClustalW格式是比较人性化的 ,使用者可以直观地看到相同和不同的区域。
由于MUSCLE程序的profile alignment功能需要aligned FASTA格式的输入,因此我写了以下一段简单的python代码,把ClustalW格式转换成aligned FASTA格式:
#!/usr/bin/python
#Usage: python clw2afa.py input.clw
#Default output is STDOUT, you can redirect using '>'
#You can also import it as a module, i.e. import clw2afa
import sys
import re
def clw2afa(filename):
pat=re.compile('(\S+)\s+(\S+)')
f=open(filename)
header=f.readline()
if not header.startswith('CLUSTAL') and not header.startswith('MUSCLE'):
sys.exit("clw2afa.py:Wrong input file type.")
ln=f.readline()
while not ln.strip():
ln=f.readline()
seqdict={}
EOF=False
while ln:
m=pat.search(ln)
if m and not '*' in ln:
seqdict[m.group(1)]=m.group(2)
ln=f.readline()
elif not ln:
EOF=True
break
else:
break
if not EOF:
while True:
ln=f.readline()
if not ln:
break
m=pat.search(ln)
if m and not '*' in ln:
seqdict[m.group(1)]+='\n'+m.group(2)
f.close()
output=''
for k,v in seqdict.items():
output+='>%s\n%s\n'%(k,v)
return output
if __name__ == "__main__":
import sys
tt=clw2afa(sys.argv[1])
print tt
#Usage: python clw2afa.py input.clw
#Default output is STDOUT, you can redirect using '>'
#You can also import it as a module, i.e. import clw2afa
import sys
import re
def clw2afa(filename):
pat=re.compile('(\S+)\s+(\S+)')
f=open(filename)
header=f.readline()
if not header.startswith('CLUSTAL') and not header.startswith('MUSCLE'):
sys.exit("clw2afa.py:Wrong input file type.")
ln=f.readline()
while not ln.strip():
ln=f.readline()
seqdict={}
EOF=False
while ln:
m=pat.search(ln)
if m and not '*' in ln:
seqdict[m.group(1)]=m.group(2)
ln=f.readline()
elif not ln:
EOF=True
break
else:
break
if not EOF:
while True:
ln=f.readline()
if not ln:
break
m=pat.search(ln)
if m and not '*' in ln:
seqdict[m.group(1)]+='\n'+m.group(2)
f.close()
output=''
for k,v in seqdict.items():
output+='>%s\n%s\n'%(k,v)
return output
if __name__ == "__main__":
import sys
tt=clw2afa(sys.argv[1])
print tt
写得有点混乱,希望大家如果使用的话把BUG报告一下^^
以下文章也许和本文有点关系:
那年今天:- 2006 : 偶的考试安排。。
- 2009 : 超级酷的Zotero新功能


(还没人喜欢)
2条留言 跳到评论框
转格式,还是bioperl强...
你的blog写代码也不好啊..不能着色..没有缩排...
看了一下wordpress,我也想玩一玩...
[回复这条留言]
曾经用过perl的,语法有点BT啊。。
我也觉得wordpress贴代码比较崩溃。。
主要是wp自动去除每段前面的空白符,我以前用一个插件可以自动着色的,现在没装了。
另外有个网站可以进行代码着色:
http://www.fayaa.com/code/
刚刚改了一下,看看效果^^
wordpress很强大啦,你用一下就知道新浪多么垃圾了。。
话说你有兴趣的话可以用我的空间
[回复这条留言]
好啊...有什么限制吗?
我再再找了个免费域名,找了个免费空间....
早说嘛,我就不用找了...
[回复这条留言]
没。。你想个二级域名就好,比如xxx.azpala.com
[回复这条留言]
ygc.azpala.com
azpala是什么意思?
ygc是我名字的拼音首字母..
[回复这条留言]
azalea+pala,我和我LG的BBS ID ^^
话说你的全名是?
[回复这条留言]
汗....想法跟我差不多...
我就想过拿女方的名字,加上自己的姓....
叫做"你的名字和我的姓氏"....发现我很会YY...
没gf的...羡慕一下有LG的...
我的名字叫余光创
[回复这条留言]
汗。。我lg羡慕你还来不及呢。。
话说你的名字很独特
[回复这条留言]
余是姓..这个很费话
光是辈份..祖谱里排的..
创是我爷爷给取的...
[回复这条留言]
个么应该叫余光中。。
[回复这条留言]
第二句打错了,不是再再,是刚刚...我打五笔的..我是老人家...^^
[回复这条留言]
汗。。我理解成你一而再再而三地找域名
真是辛苦了。。
[回复这条留言]
我就在你在筑巢好了...
你是自己的空间?
[回复这条留言]
perl也不BT吧...
写小脚本还是很舒服的...
就是看别人的代码很头痛...
[回复这条留言]
唉 就是说这个。。
实在看不懂别人的perl代码
上学期改别人一个perl程序差点吐血了
[回复这条留言]
我开始转向用R了..
功能注释才是主流了...
[回复这条留言]