如何将变量文件名传递给python ete?

时间:2015-06-20 05:11:28

标签: python variables tree etetoolkit

我正在尝试使用以下代码从文件加载newick字符串:

filename = templist[1].lower().replace(" ","") + ".nwk"
tt = Tree(filename, format=1)

但是收到以下错误:

 tt = Tree(filename, format=1) # Loads a tree structure from a newick string. The returned variable tt is the root node for the tree.
  File "/python2.7/dist-packages/ete2-2.2.1072-py2.7.egg/ete2/coretype/tree.py", line 225, in __init__
    read_newick(newick, root_node = self, format=format)
  File "/python2.7/dist-packages/ete2-2.2.1072-py2.7.egg/ete2/parser/newick.py", line 237, in read_newick
    'Unexisting tree file or Malformed newick tree structure.'
ete2.parser.newick.NewickError: Unexisting tree file or Malformed newick tree structure.

我已经验证了文件格式,并且没问题。我想我是以错误的方式传递变量,请指导我将filename作为变量传递。

当我将文件名作为字符串传递而不使用变量时它工作正常,但我需要使用变量值来加载树。

1 个答案:

答案 0 :(得分:1)

您确定format=1是否正确?

根据documentation -

  

对于命名的内部节点,我们将使用格式1

您确定您的newick树已命名内部节点吗?如果没有,请尝试不将任何值传递给format参数。

另外,请确保文件名是文件的absolute路径,或者是否是其相对路径,例如a.nwk,然后确保该文件存在于您所在的目录中运行python脚本。