我有兴趣确定基因组特定位置的特征(即基因/cds)。例如,什么基因(如果有)包含位置 2,000,000。我知道如何通过for
循环和遍历基因组中的每个特征来做到这一点(代码包含在下面),但作为随机化研究的一部分,这是我想做数亿次的事情,这将需要很多时间比我想要的更长。
下面包含的代码是我正在尝试做的更具体的示例:
from Bio import SeqIO
import random
GenomeSeq = SeqIO.read(open("reference_sequence.gbk", "r"), "genbank")
interesting_position = random.randint(0, len(GenomeSeq))
for feature in GenomeSeq.features: # loop each position through whole genome
# In this particular case I'm interested in focusing on cds, but
# in others, I may be interested in other feature types?
if feature.type == "CDS":
if (feature.location._start.position <= interesting_position and
feature.location._end.position >= interesting_position):
try:
print feature.qualifiers['gene']
except KeyError:
print feature
我考虑过制作一个字典,其中基因中的每个位置对应于一个键,并将特征 ID 作为值,因为查找会比循环更快,但似乎应该有一种方法可以做GenomeSeq[interestion_position].qualifiers['gene']