您的位置:首页 > 编程语言 > Python开发

用python编写统计fasta格式的序列的长度脚本

2015-09-30 22:22 1246 查看
如果用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的序列长度,再和这个脚本进行对比。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: