在 GitHub 上编辑此页面

SeqIO - 开发人员提示

此页面面向任何有兴趣了解或扩展 Biopython 的新序列输入/输出接口(SeqIO)的开发人员或编码人员。

读取新的文件格式

**注意:** 详细信息仍在不断变化中

要添加对读取新文件格式的支持,您必须实现一个迭代器,该迭代器期望一个文件句柄并返回 SeqRecord 对象。您可以使用以下方法做到这一点:

您可以接受其他可选参数。但是,必须有一个且只有一个必需参数(输入文件句柄)。

您将使用什么作为 SeqRecordidnamedescription 将取决于文件格式。理想情况下,您应该使用登录号作为 id。此 ID 对于每个记录也应该是唯一的(除非文件中的记录本身是模棱两可的)。

在记录的注释字典中存储任何注释时,请遵循 GenBank 解析器制定的实际标准… 我应该尝试更多地记录这一点。

如果提供的文件似乎无效,请引发 ValueError 异常。

最后,必须将新格式添加到 Bio/SeqIO/__init__.py 中的相关字典映射中,以便 Bio.SeqIO.parse()Bio.SeqIO.read() 函数能够识别它。

写入新的文件格式

**注意:** 详细信息仍在不断变化中

要添加对写入新文件格式的支持,您应该编写 Bio.SeqIO.Interfaces 中的某个写入器对象的子类。

然后,必须将新格式添加到 Bio/SeqIO/__init__.py 中的相关字典映射中,以便 Bio.SeqIO.write() 函数能够识别您的代码。

如果提供的记录无法写入此文件格式,请引发 ValueError 异常。在适当的情况下,请使用以下措辞:

raise ValueError("Must have at least one sequence")
raise ValueError("Sequences must all be the same length")
raise ValueError("Duplicate record identifier: %s" % ...)
...

待办事项 - 在 Bio.SeqIO 本身中定义标准异常?

可能的附加格式

Biopython 中存在以下文件格式的现有解析器,如果合适,可以将其集成到 SeqIOAlignIOSearchIO 中。

KEGG 格式

Bio.KEGG 可以解析 KEGG 格式 的文件吗?

MEME 格式

Bio.MEME 有一个用于此文件格式的解析器,乍一看它看起来可以像对齐格式一样对待。

http://meme-suite.org/

BLAST 结果

来自 BLAST 套件的成对比对可以使用 Bio.AlignIO 转换为成对比对对象。这有用吗?Bug 2560 上的示例代码