我有一个有几百条记录的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))
有很多方法可以做到这一点。与当前结构最相似的是当索引达到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))
如果要存储表,可以将描述和长度插入到所选的列表,数组或其他数据结构中,而不是打印。