在 GitHub 上编辑此页面

使用 Bio.SeqIO 模块转换序列文件。

问题

许多生物信息学工具使用不同的输入文件格式,因此需要在序列文件格式之间进行相互转换。一个有用的选择是命令行工具 EMBOSS 的 seqret,但在这里我们将展示如何使用 Bio.SeqIO 来解决这个问题。

解决方案

假设您有一个 GenBank 文件,您希望将其转换为 Fasta 文件。例如,让我们考虑文件 cor6_6.gb(包含在 Biopython 单元测试的 GenBank 目录下)

from Bio import SeqIO

with open("cor6_6.gb", "rU") as input_handle:
    with open("cor6_6.fasta", "w") as output_handle:
        sequences = SeqIO.parse(input_handle, "genbank")
        count = SeqIO.write(sequences, output_handle, "fasta")

print("Converted %i records" % count)

在这个例子中,GenBank 文件包含六个记录,开头是这样的

LOCUS       ATCOR66M      513 bp    mRNA            PLN       02-MAR-1992
DEFINITION  A.thaliana cor6.6 mRNA.
ACCESSION   X55053
VERSION     X55053.1  GI:16229
...

生成的 Fasta 文件也包含所有六个记录,如下所示

>X55053.1 A.thaliana cor6.6 mRNA.
AACAAAACACACATCAAAAACGATTTTACAAGAAAAAAATA...
...

请注意,所有 Fasta 文件只能存储标识符、描述和序列。

通过更改格式字符串,该代码可用于在任何受支持的文件格式之间进行转换。

您无需使用文件句柄 - 请参阅使用 stdin 和 stdout 管道的 Bio.SeqIO 的示例。

工作原理

请参阅 Bio.SeqIO 页面。