从Nexus文件中获取对齐的排除位置

时间:2014-04-01 18:42:42

标签: biopython

我可以成功使用BioPython的AlignIO模块读取Nexus文件并生成序列和ID列表。由Mesquite和其他程序生成的Nexus文件可以定义set of excluded positions(称为exset),这些文件将被忽略或进一步过滤掉。 Biopython是否提供了从nexus文件解析exset的方法? (理想情况下是整数列表)。我在文档中找不到提及。现在我已经编写了自己的函数,这个函数有点笨拙,可能过于依赖于我一直在测试的特定nexus文件。

1 个答案:

答案 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"开头的行。