此页面面向任何有兴趣了解或扩展 Biopython 的新序列输入/输出接口(SeqIO
)的开发人员或编码人员。
**注意:** 详细信息仍在不断变化中
要添加对读取新文件格式的支持,您必须实现一个迭代器,该迭代器期望一个文件句柄并返回 SeqRecord
对象。您可以使用以下方法做到这一点:
Bio.SeqIO.Interfaces
中的某个类的迭代器类yield
关键字;适用于简单格式)SeqRecord
列表,然后使用 iter()
函数将其转换为迭代器。您可以接受其他可选参数。但是,必须有一个且只有一个必需参数(输入文件句柄)。
您将使用什么作为 SeqRecord
的 id
、name
和 description
将取决于文件格式。理想情况下,您应该使用登录号作为 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 中存在以下文件格式的现有解析器,如果合适,可以将其集成到 SeqIO
、AlignIO
或 SearchIO
中。
Bio.KEGG
可以解析 KEGG 格式 的文件吗?
Bio.MEME
有一个用于此文件格式的解析器,乍一看它看起来可以像对齐格式一样对待。
来自 BLAST 套件的成对比对可以使用 Bio.AlignIO
转换为成对比对对象。这有用吗?Bug 2560 上的示例代码