Parse and display networks¶
In [1]:
Copied!
import toytree
import toytree
Extended newick format¶
Explain the format here...
In [6]:
Copied!
H0 = "((A:1,B:1)AB:1,(C:1,D:1):1);"
H1 = "(((A:0.5,#H1:0.1::0.2):0.5,B:1),((C:0.2)#H1:0.8,D:1.0):1)Root;"
H2 = "(((A:0.5,#H1:0.1::0.2):0.5,(B:0.5,#H2:0.1::0.3):0.5):1,((C:0.2)#H1:0.8,(D:0.1)#H2:0.9):1)Root;"
H2 = "(((A:0.5,#H1:0.1::0.2):0.5,(B:0.5,#H2:0.1::0.3):0.5):1,((C:0.2)#H1:0.8,(D:0.1)#H2:0.9):1)Root;"
H3 = "((((A:0.5,#H1:0.3::0.2):0.1,#H3:0.2::0.1):0.4,(B:0.5,#H2:0.1::0.3):0.5):1,(((C:0.2)#H1:0.2)#H3:0.6,(D:0.2)#H2:0.7):1)Root;"
H0 = "((A:1,B:1)AB:1,(C:1,D:1):1);"
H1 = "(((A:0.5,#H1:0.1::0.2):0.5,B:1),((C:0.2)#H1:0.8,D:1.0):1)Root;"
H2 = "(((A:0.5,#H1:0.1::0.2):0.5,(B:0.5,#H2:0.1::0.3):0.5):1,((C:0.2)#H1:0.8,(D:0.1)#H2:0.9):1)Root;"
H2 = "(((A:0.5,#H1:0.1::0.2):0.5,(B:0.5,#H2:0.1::0.3):0.5):1,((C:0.2)#H1:0.8,(D:0.1)#H2:0.9):1)Root;"
H3 = "((((A:0.5,#H1:0.3::0.2):0.1,#H3:0.2::0.1):0.4,(B:0.5,#H2:0.1::0.3):0.5):1,(((C:0.2)#H1:0.2)#H3:0.6,(D:0.2)#H2:0.7):1)Root;"
Parse expanded newick network¶
TODO: describe format...
In [8]:
Copied!
major_tree, admixture_events = toytree.network.parse_network(H3)
major_tree, admixture_events = toytree.network.parse_network(H3)
In [9]:
Copied!
for event in admixture_events:
print(event)
for event in admixture_events:
print(event)
AdmixtureEvent(src=['H2'], dst=['D'], src_dist=0.0, dst_dist=0.2, style={}, meta={'label': 'H2', 'gamma': 0.3})
AdmixtureEvent(src=['H3'], dst=['C'], src_dist=0.0, dst_dist=0.4, style={}, meta={'label': 'H3', 'gamma': 0.1})
AdmixtureEvent(src=['H1'], dst=['C'], src_dist=0.0, dst_dist=0.2, style={}, meta={'label': 'H1', 'gamma': 0.2})
In [23]:
Copied!
major_tree[0].name = "<b><i>$HELLO</i></b>"
major_tree.draw(tip_labels_align=True, admixture_edges=admixture_events);
major_tree[0].name = "$HELLO"
major_tree.draw(tip_labels_align=True, admixture_edges=admixture_events);
Style admixture edges¶
In [12]:
Copied!
admixture_events[0].style = {'stroke': toytree.color.COLORS2[0], 'stroke-width': 3, 'stroke-dasharray': '3,6'}
admixture_events[1].style = {'stroke': toytree.color.COLORS2[1], 'stroke-width': 3, 'stroke-dasharray': '3,6'}
admixture_events[0].style = {'stroke': toytree.color.COLORS2[0], 'stroke-width': 3, 'stroke-dasharray': '3,6'}
admixture_events[1].style = {'stroke': toytree.color.COLORS2[1], 'stroke-width': 3, 'stroke-dasharray': '3,6'}
In [13]:
Copied!
major_tree.draw(tip_labels_align=True, admixture_edges=admixture_events);
major_tree.draw(tip_labels_align=True, admixture_edges=admixture_events);
Manually draw admixture events¶
In [14]:
Copied!
tree = toytree.rtree.unittree(10, seed=123)
admix = toytree.AdmixtureEvent(src=0, dst=3, src_dist=0.1, dst_dist=0.05, style={"stroke": "red", "stroke-opacity": 0.3})
tree.draw(ts='c', admixture_edges=admix);
tree = toytree.rtree.unittree(10, seed=123)
admix = toytree.AdmixtureEvent(src=0, dst=3, src_dist=0.1, dst_dist=0.05, style={"stroke": "red", "stroke-opacity": 0.3})
tree.draw(ts='c', admixture_edges=admix);