如何提高生物信息学脚本的速度?

时间:2019-08-05 21:54:32

标签: python python-3.x

我正在开发用于生物信息分析的python脚本。首先,脚本读取整个文件(.fasta –基本是一个很长的字符串)以找到所有支架(以“>”开头的行),然后打印出找到的支架数量。我有两个类似的输入文件.fasta,一个具有超过1.5GB的文件,可在一分钟内运行,另一个具有85MB的文件,耗时超过31小时。

import sys

cabecalho = []
sequencia = []
contador = -1
file_open = open('C:\PYTHON\Chr09.fasta', "r")
for line in file_open:
    line = line.rstrip()
    if ">" in line:
        cabecalho.append(line)
        contador += 1
        sequencia.insert(contador, '')
    else:
        sequencia[contador] += line
con = contador + 1
print(con)

该如何优化此脚本的运行速度?或者如何检查文件出了什么问题(它们具有相同的格式和相同的文本配置。)

1 个答案:

答案 0 :(得分:1)

首先,你不需要重新发明weel,Biopython可以轻松处理fasta文件,例如:

from Bio import SeqIO

myseqs = {}
fasta_sequences = SeqIO.parse(open('C:\PYTHON\Chr09.fasta'), 'fasta')
for fasta in fasta_sequences:
 name, sequence = fasta.description, str(fasta.seq)
 myseqs[name] = sequence

print("total sequences: "+len(myseqs))

通过这种方式,您还可以将序列作为 dict,以便通过 fasta 标头轻松访问并执行您想做的任何操作。

最后,安装 biopython 只需输入

<块引用>

pip install biopython

其他不用python的方法,如果你只想知道脚手架的数量,可以在unix环境下用grep命令一行搞定

<块引用>

grep -c ">" myfasta.fasta

-c 仅用于计数匹配

问候