如何从Biopython的SeqRecord中提取GenBank记录的病毒宿主信息?
从Biopython的SeqRecord提取GenBank宿主信息
当然可以从SeqRecord对象中提取宿主信息,宿主数据存储在GenBank记录的source特征的qualifiers字典里,而非直接在顶层annotations中。
具体实现步骤:
- 遍历SeqRecord的
features列表,筛选出type为source的特征 - 从该特征的
qualifiers字典中获取host对应的取值
修改后的代码示例:
from Bio import Entrez, SeqIO # NCBI要求使用Entrez接口必须绑定邮箱,防止被限制访问 Entrez.email = "your_email@example.com" id = 'CY238774.1' handle = Entrez.efetch(db='nucleotide', id=id, rettype='gb', retmode='text') record = SeqIO.read(handle, 'gb') # 提取宿主信息 host_info = None for feature in record.features: if feature.type == 'source': if 'host' in feature.qualifiers: # qualifiers的取值为列表,取第一个元素即可 host_info = feature.qualifiers['host'][0] break print(host_info) # 输出结果: Homo sapiens
补充说明:
- 部分GenBank记录可能未标注宿主信息,建议添加空值判断逻辑避免报错
- 批量处理多条记录时,可将提取逻辑封装为函数循环调用
内容的提问来源于stack exchange,提问作者darkwing
相关产品推荐
相关产品推荐

