我可以成功使用BioPython的AlignIO模块读取Nexus文件并生成序列和ID列表。由Mesquite和其他程序生成的Nexus文件可以定义set of excluded positions(称为exset),这些文件将被忽略或进一步过滤掉。 Biopython是否提供了从nexus文件解析exset的方法? (理想情况下是整数列表)。我在文档中找不到提及。现在我已经编写了自己的函数,这个函数有点笨拙,可能过于依赖于我一直在测试的特定nexus文件。
答案 0 :(得分:0)
如果有的话,Biopython对此的支持有限。但您要查找的数据位于Nexus对象中:
from Bio.Nexus import Nexus
# I'm using the sample file from
# http://paup.csit.fsu.edu/data/primate-mtDNA-interleaved.nex
nex = Nexus.Nexus(input="sample.nex")
for block in nex.unknown_blocks:
if block.title == "assumptions":
for assumption in block.commandlines[0]:
if assumption.startswith("exset"):
print assumption
输出:
exset coding = noncoding
exset noncoding = coding
因此解析器会加载"假设"阻止进入unknown_blocks。在那里你可以搜索名为"假设"并手动解析行。命令行包含一个包含列表的列表,所以在这里我提取了第一个列表。创建自己的专用解析器似乎很容易,仅适用于以" exset"开头的行。