如何使用Biopython中的SeqIO打印前几条记录

时间:2019-03-06 00:36:45

标签: python bioinformatics biopython enumerate fasta

我有一个fasta文件,其中包含数百条记录,但是我试图返回仅包含前20条记录(记录描述,AA长度和名称)的表。

我的代码无法正常工作,我想知道如何仅返回前20条记录-最好以表格格式返回。

这是我的python代码:

#!/usr/local/bin/python3
import cgi
import re
form = cgi.FieldStorage()
from Bio import SeqIO
for index, record in enumerate(SeqIO.parse("e_coli_k12_dh10b.faa", "fasta")): print(record.description, len(record.seq))

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点。与您当前的结构最相似的是,当索引达到19(从计数开始于0开始的第20个数字)时,添加一个break

from Bio import SeqIO

for index, record in enumerate(SeqIO.parse("e_coli_k12_dh10b.faa", "fasta")): 
    print(record.description, len(record.seq))
    if index == 19:
        break

但是,我更喜欢使用样式方式是使用itertools.islice

from itertools import islice
from Bio import SeqIO

records = SeqIO.parse("e_coli_k12_dh10b.faa", "fasta")

for record in islice(records, 20):
    print(record.description, len(record.seq))

如果要存储表,可以将描述和长度插入到所选择的列表,数组或其他数据结构中,而不用进行打印。