Convert From Graphviz (Dot Language) to Newick format
1
0
Entering edit mode
8.5 years ago
richard_95 • 0

Hello,

I'm working on gain/loss gene events and for that I'm using a tool that gives as an output a gene tree in Graphviz format (dot language) like this:

digraph G {
0[label=Series];
1[label=Parallel];
2[label=Series];
3[label=v2];
4[label=v5];
5[label=v8];
6[label=Series];
7[label=v0];
8[label=v3];
9[label=v6];
10[label=v1];
11[label=v4];
12[label=v7];
0->1 ;
1->2 ;
2->3 ;
2->4 ;
2->5 ;
1->6 ;
6->7 ;
6->8 ;
6->9 ;
0->10 ;
0->11 ;
0->12 ;
}

It represents the tree as a directed graph in direction from the root to the leaves. Then it enumerates the nodes and each node has a label. The last part is the edges of the tree.

I would like to convert this output to Newick format. However I don't know much about programming so I was wondering if you can help me with this :)

Phylogenetics • 3.6k views
ADD COMMENT
0
Entering edit mode

I don't know of an easy solution short of writing a converter yourself. You could explore converting to another intermediate graph format and see if there is any tool that can then do the conversion from there to Newick (I don't know of any from the top of my head). I think your best bet would be to convert your dot file to a distance matrix from which you rebuild the tree with a phylogeny software that can read distance matrices. Also do you have to work with dot files ? The format is not suited to phylogenetic data, it's mostly designed for drawing graphs.

ADD REPLY
1
Entering edit mode
8.4 years ago
jhc ★ 3.0k

with a little transformation of the graphviz format, you could get a parent->child tab delimited text based table. In example

v0 v1 1.0
v0 v2 1.0
v1 v3 1.0 
v1 v4 1.0

(third column represents branch distance)

Then you can use ETE3 to load that table as a tree structure (http://etetoolkit.org/docs/latest/reference/reference_tree.html#ete3.TreeNode.from_parent_child_table)

from ete3 import Tree
t = Tree.from_parent_child_table([line.split() for line in open("parent_child.txt")] )
print t
#      /-v3
#   /-|
#--|   \-v4
#  |
#   \-v2

and finally export as newick

t.write()
ADD COMMENT

Login before adding your answer.

Traffic: 1971 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