比方说,我有一个基因组的GenBank ID(BA000007.3)和一个带有基因组座标的列表:
blocks = [(1443423, 1444553), ...]
我需要找出这些模块覆盖哪些基因(或哪些基因的部分)。
我已经尝试过了:
from Bio import Entrez, SeqIO
Entrez.email = "some@example.com"
with Entrez.efetch(db="nucleotide", rettype="gb", retmode="text", id="BA000007.3") as handle:
seq_record = SeqIO.read(handle, "gb")
sub_record = seq_record[1443423:1444553]
print(len(sub_record.features))
它返回0,因为此块没有完全覆盖所有基因。但是,如果您在浏览器中打开NCBI记录并更改显示的区域,您将看到此块部分覆盖了2个基因。
我也尝试过用SeqFeature和FeatureLocation进行减法运算,但是它也不起作用(新序列根本不具有特征)。
那么有没有办法手动检查每个基因组的每个区块呢?