Notebook to get a quick estimate of the number of nodes that differ between two trees.
In [1]:
import dendropy
from dendropy.utility.fileutils import find_files
import numpy as np
Read in data.
In [2]:
taxa = dendropy.TaxonSet()
ours = dendropy.Tree.get_from_path('../best.phy', 'newick', taxon_set=taxa)
Calculate Robinson-Foulds distance, and tree length.
In [4]:
non_ml = dendropy.Tree.get_from_path('../Trees/MLE/ExaML_result.SquamataPyron.MLE.2b', 'newick', taxon_set = taxa)
print ours.length()
print non_ml.length()
print ours.symmetric_difference(non_ml)
In [ ]:
taxa = dendropy.TaxonSet()
pb = dendropy.Tree.get_from_path('../Trees/TotalOptimization/Ranked/2598364', 'nexus', taxon_set=taxa)
In [7]:
rfs = [tree.symmetric_difference(pb_o) for tree in uotrees]
In [8]:
rfs
Out[8]:
In [3]:
olist = find_files(top='garli_opt/', filename_filter='*.tre')
print olist
In [ ]:
otrees = [dendropy.Tree.get_from_path(filename, "nexus") for filename in olist]
Calculate RF score, pairwise over all trees in sample.
In [ ]:
n = len(uotrees)
udiffarray = np.zeros((n,n))
for i, ele1 in enumerate(uotrees):
for j, ele2 in enumerate(uotrees):
if j >= i:
break # Since the matrix is symmetrical we don't need to
# calculate everything
difference = ele1.symmetric_difference(ele2)
udiffarray[i, j] = difference
udiffarray[j, i] = difference
In [ ]:
diffarray
In [38]:
diffarray
Out[38]:
In [36]:
o_tl = [tree.length() for tree in otrees]
print o_tl
In [39]:
uo_tl = [mle.length() for mle in uotrees]
print uo_tl
In [ ]: