当需要从GBK或GBFF格式的基因组注释文件中提取CDS序列时,可以借助biopython模块中的SeqIO和FeatureIO模块进行处理。下面是具体的攻略:
步骤一 安装Biopython模块
首先,需要安装Biopython模块。可以通过pip或conda进行安装。在命令行中输入如下命令进行安装:
#使用pip安装
pip install biopython
#使用conda安装
conda install -c conda-forge biopython
步骤二 从GBFF文件中读取CDS信息
接下来,需要读取GBFF文件中的CDS信息。可以使用biopython的SeqIO模块对GBFF文件进行解析,然后使用FeatureIO模块,选择提取CDS特征信息,最后使用SeqRecord对象的sequence属性提取序列信息。
示例一如下:
from Bio import SeqIO
from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.SeqIO import FeatureIO
# 读取GBFF文件中第一个序列的CDS信息并输出序列
gbff_filename = "example.gbff"
record = SeqIO.read(gbff_filename, 'genbank')
cds_features = [f for f in record.features if f.type == 'CDS']
for cds in cds_features:
print(f"{'-'*10}\nCDS ID: {cds.qualifiers['protein_id'][0]}")
print(f"NT_START: {cds.location.start}, NT_END: {cds.location.end}")
print(Seq(cds.qualifiers['translation'][0]))
示例二如下:
from Bio import SeqIO
from Bio.SeqRecord import SeqRecord
from Bio.SeqIO import FeatureIO
# 读取GBFF文件中第一个序列的CDS信息并输出序列
gbff_filename = "example.gbff"
record = SeqIO.read(gbff_filename, 'genbank')
record.description = record.description.split(' ')[1]
cds_features = [f for f in record.features if f.type == 'CDS']
cds_seqrecords = []
for cds in cds_features:
feature_seq = SeqRecord(record.seq[cds.location.start:cds.location.end],
id=cds.qualifiers['locus_tag'][0],
description=f"{'|'.join(cds.qualifiers['gene'])}")
cds_seqrecords.append(feature_seq)
with open("cds.fa", "w") as output_handle:
SeqIO.write(cds_seqrecords, output_handle, "fasta")
上述代码可以读取指定的GBFF文件,提取其中第一个序列(也可以根据需求选择其他序列),并输出序列。其中,第一段代码展示了如何通过CDS特征提取序列信息,包括序列ID、起止位置和翻译成氨基酸序列;第二段代码则展示了如何将CDS序列存储为fasta文件。
值得注意的是,一些基因组注释文件中可能不会使用“CDS”作为区分特征的关键字,而是使用其他的标签,比如“gene”、“feature”等等。因此,在使用时,需要根据具体的注释文件进行相应的调整。
对于更为复杂的GBFF文件格式,可以阅读biopython的相关文档进行深入学习。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python从gbff文件中直接提取cds序列 - Python技术站