Skip to main content
 首页 » 编程设计

python之通过python程序从FASTA文件中按顺序排序序列

2025年05月04日10pengyingh

我试图创建一个 python 程序来读取 fasta 文件“seqs.fa” 并让程序按名称对序列进行排序。

Fasta 文件如下所示:

>seqA - human 
GCTGACGTGGTGAAGTCAC 
>seqC - gorilla 
GATGACAA 
GATGAAGTCAG 
>seqB - chimp 
GATGACATGGTGAAGTAAC 

我的程序是这样的:

import sys 
 
inFile = open(sys.argv[1], 'r') 
a = inFile.readlines() 
a.sort() 
seq = ''.join(a[0:]) 
seq = seq.replace('\n', "\n") 
print seq 

预期结果:

>seqA - human 
GCTGACGTGGTGAAGTCAC 
>seqB - chimp 
GATGACATGGTGAAGTAAC 
>seqC - gorilla 
GATGACAAGATGAAGTCAG 

我的结果:

>seqA - human 
>seqB - chimp 
>seqC - gorilla 
GATGACAA 
GATGAAGTCAG 
GATGACATGGTGAAGTAAC 
GCTGACGTGGTGAAGTCAC 

最后四行是 gorilla 、黑猩猩和人类序列, gorilla 序列分为前两行。

谁能给我一些关于如何排序或解决问题的提示?

请您参考如下方法:

不要自己实现 FASTA 阅读器!像大多数情况一样,有些聪明人已经为您做了这件事。使用例如 BioPython反而。像这样:

from Bio import SeqIO 
handle = open("seqs.fa", "rU") 
l = SeqIO.parse(handle, "fasta") 
sortedList = [f for f in sorted(l, key=lambda x : x.id)] 
for s in sortedList: 
   print s.description 
   print str(s.seq)