如何用Python的BioPython提取GenBank文件中的CDS编号?
用BioPython提取GenBank文件中的CDS编号并输出到文本文件
核心逻辑
GenBank文件的CDS信息都嵌套在序列记录的features字段中,CDS对应的编号(比如基因座标签、蛋白ID等)会存在qualifiers字典里。只需遍历筛选出CDS类型的特征,提取对应字段即可。
代码实现
1. 提取并打印CDS编号
from Bio import SeqIO # 替换为你的GenBank文件路径 gb_file = "your_target.gb" # 解析GenBank文件 for record in SeqIO.parse(gb_file, "genbank"): # 遍历所有特征,筛选CDS类型 for feature in record.features: if feature.type == "CDS": # 提取基因座标签(最常用的CDS编号类型) if "locus_tag" in feature.qualifiers: print(feature.qualifiers["locus_tag"][0]) # 如果需要蛋白编号,替换为以下代码 # elif "protein_id" in feature.qualifiers: # print(feature.qualifiers["protein_id"][0])
2. 将CDS编号输出到文本文件
如果要把提取到的编号保存到单独文件,只需先收集结果再写入:
from Bio import SeqIO gb_file = "your_target.gb" output_file = "cds_ids.txt" cds_id_list = [] for record in SeqIO.parse(gb_file, "genbank"): for feature in record.features: if feature.type == "CDS": # 根据需求选择对应的编号字段 if "locus_tag" in feature.qualifiers: cds_id_list.append(feature.qualifiers["locus_tag"][0]) # 写入文件,每行一个编号 with open(output_file, "w") as f: for cds_id in cds_id_list: f.write(f"{cds_id}\n")
补充说明
- GenBank的CDS特征里,不同编号对应不同的
qualifiers键:locus_tag:基因座唯一标签,多数场景下就是你要的"CDS编号"protein_id:编码蛋白的NCBI官方编号gene:基因名称(可能存在重复)
- 如果你的目标编号存放在其他字段,可以打印
feature.qualifiers查看所有可用键,再调整提取逻辑。
内容的提问来源于stack exchange,提问作者Cedric Ramos
相关产品推荐
相关产品推荐

