一个fasta格式序列用python求GC含量

如题所述

如果用perl来编写统计fasta序列的长度脚本,很简单的几行代码就可以搞定,但是想了想,觉得用python写更时候处理大的文件,尤其是想用python实现多线程处理。因此,就有了用python来编写最初版的统计fasta序列长度的脚本的想法。
运行方法:nohup python stat_length.py input.fasta > input.len &
运行结果:
>Aquca_005_00607.1_Acoerulea 429
>Aquca_1939_00001.1_Acoerulea 534
>Aquca_005_00568.1_Acoerulea 369
>Aquca_033_00023.1_Acoerulea 447
>Aquca_005_00384.1_Acoerulea 1461

源代码如下:
#!/usr/bin/python
import sys,os,re

def process_file(reader):
'''Open, read,and print a file'''
names=[]
index=0
dict={}

for line in reader:
if line.startswith('>'):
if index >=1:
names.append(line)
index =index+1
name=line[:-1]
seq = ''
else:
seq +=line[:-1]
dict[name]=seq
return dict

if __name__ == "__main__":
input_file=open(sys.argv[1],"r")
reader=input_file.readlines()
items=process_file(reader)
for key in items:
length=int(len(items[key]))
print "%s\t%d" %(key,length)
input_file.close()

后记:后面会更新用多线程的方法来实现python统计fasta的序列长度,再和这个脚本进行对比。
温馨提示:答案为网友推荐,仅供参考