Missing ',' in line when Biopython reads a nexus tree
0
0
Entering edit mode
2.2 years ago

Hello, everyone!

I want to edit a tree that I got from BEAST2 treeannotator in nexus-format. Usually I use the module Phylo from Biopython for such work but Phylo.read(r"filename.tree", "nexus") gave me the next exception:

    ---------------------------------------------------------------------------
    NexusError                                Traceback (most recent call last)
    Input In [29], in <cell line: 1>()
    ----> 1 Phylo.read(r"filename.tree", "nexus")

    File ~\miniconda3\lib\site-packages\Bio\Phylo\_io.py:60, in read(file, format, **kwargs)
         58 try:
         59     tree_gen = parse(file, format, **kwargs)
    ---> 60     tree = next(tree_gen)
         61 except StopIteration:
         62     raise ValueError("There are no trees in this file.") from None

    File ~\miniconda3\lib\site-packages\Bio\Phylo\_io.py:49, in parse(file, format, **kwargs)
         34 """Parse a file iteratively, and yield each of the trees it contains.
         35 
         36 If a file only contains one tree, this still returns an iterable object that
       (...)
         46 
         47 """
         48 with File.as_handle(file) as fp:
    ---> 49     yield from getattr(supported_formats[format], "parse")(fp, **kwargs)

    File ~\miniconda3\lib\site-packages\Bio\Phylo\NexusIO.py:40, in parse(handle)
         32 def parse(handle):
         33     """Parse the trees in a Nexus file.
         34 
         35     Uses the old Nexus.Trees parser to extract the trees, converts them back to
       (...)
         38     eventually change Nexus to use the new NewickIO parser directly.)
         39     """
    ---> 40     nex = Nexus.Nexus(handle)
         42     # NB: Once Nexus.Trees is modified to use Tree.Newick objects, do this:
         43     # return iter(nex.trees)
         44     # Until then, convert the Nexus.Trees.Tree object hierarchy:
         45     def node2clade(nxtree, node):

    File ~\miniconda3\lib\site-packages\Bio\Nexus\Nexus.py:668, in Nexus.__init__(self, input)
        665 self.options["gapmode"] = "missing"
        667 if input:
    --> 668     self.read(input)
        669 else:
        670     self.read(DEFAULTNEXUS)

    File ~\miniconda3\lib\site-packages\Bio\Nexus\Nexus.py:718, in Nexus.read(self, input)
        716     break
        717 if title in KNOWN_NEXUS_BLOCKS:
    --> 718     self._parse_nexus_block(title, contents)
        719 else:
        720     self._unknown_nexus_block(title, contents)

    File ~\miniconda3\lib\site-packages\Bio\Nexus\Nexus.py:759, in Nexus._parse_nexus_block(self, title, contents)
        757 for line in block.commandlines:
        758     try:
    --> 759         getattr(self, "_" + line.command)(line.options)
        760     except AttributeError:
        761         raise NexusError("Unknown command: %s " % line.command) from None

    File ~\miniconda3\lib\site-packages\Bio\Nexus\Nexus.py:1144, in Nexus._translate(self, options)
       1142         break
       1143     elif c != ",":
    -> 1144         raise NexusError("Missing ',' in line %s." % options)
       1145 except NexusError:
       1146     raise

    NexusError: Missing ',' in line 1 AB298157.1_2015_-7.9133750332192605_114.8086828279248, 2 AB298158.1_2007_-8.41698974207…

Using Nexus.read(Nexus(), input=r"filename.tree") gave the same result. Please could anyone help with this? I cannot understand the reason of this error because nexus file looks correct.

biopython nexus phylogenetics • 338 views
ADD COMMENT

Login before adding your answer.

Traffic: 2285 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6