In [1]:
import dendropy
import pandas as pd

In [6]:
data = pd.read_csv('../Data/PyronParityData.csv', index_col=0, header=False)

In [5]:
taxa = dendropy.TaxonSet()
mle = dendropy.Tree.get_from_path('../2598364_0', 'newick', taxon_set=taxa, preserve_underscores=True,extract_comment_metadata=True)

In [7]:
for idx, nd in enumerate(mle.leaf_iter()):
    if nd.label is None:
        lookup = '{}'.format(nd.taxon)
        nd.label = int(data.ix[lookup])
    else: 
        pass

In [27]:
origins = [] #changes to viviparity
reversions = [] #reversions to oviparity
total = [] #should equal 3951
childs = []

for index, node in enumerate(mle.postorder_node_iter()):
    if node.parent_node is None:
        pass
    if float(node.label) == 0 or 1 > float(node.label) > .5:
        total.append(node)
        if node.parent_node is None:
            pass
        
        elif float(node.parent_node.label) < 0.05:
            reversions.append(node)
            foci = node.parent_node
            if foci.parent_node is None:
                print 'root'
        elif float(node.parent_node.label) > .5:
             new_foci = node.parent_node 
             if new_foci.parent_node is None:
                 pass
             elif float(new_foci.parent_node.label) < 0.05:
                 reversions.append(new_foci)
        elif float(node.parent_node.label) > .05:
             new_foci = node.parent_node 
             if new_foci.parent_node is None:
                 pass
             elif float(new_foci.parent_node.label) < 0.05:
                 reversions.append(new_foci)                    

print len(set(reversions)), 'reversions'
print set(reversions)


33 reversions
set([<dendropy.dataobject.tree.Node object at 0xad34248c>, <dendropy.dataobject.tree.Node object at 0xad6e256c>, <dendropy.dataobject.tree.Node object at 0xad90786c>, <dendropy.dataobject.tree.Node object at 0xad6d288c>, <dendropy.dataobject.tree.Node object at 0xad2a512c>, <dendropy.dataobject.tree.Node object at 0xad45994c>, <dendropy.dataobject.tree.Node object at 0xad8e696c>, <dendropy.dataobject.tree.Node object at 0xad91c98c>, <dendropy.dataobject.tree.Node object at 0xad2ca1ac>, <dendropy.dataobject.tree.Node object at 0xad929a6c>, <dendropy.dataobject.tree.Node object at 0xad907acc>, <dendropy.dataobject.tree.Node object at 0xad4932ec>, <dendropy.dataobject.tree.Node object at 0xad46a88c>, <dendropy.dataobject.tree.Node object at 0xad8ec32c>, <dendropy.dataobject.tree.Node object at 0xad2bbb4c>, <dendropy.dataobject.tree.Node object at 0xad33dbcc>, <dendropy.dataobject.tree.Node object at 0xad552cac>, <dendropy.dataobject.tree.Node object at 0xad4abbec>, <dendropy.dataobject.tree.Node object at 0xad30744c>, <dendropy.dataobject.tree.Node object at 0xad924c8c>, <dendropy.dataobject.tree.Node object at 0xad459cac>, <dendropy.dataobject.tree.Node object at 0xad382cec>, <dendropy.dataobject.tree.Node object at 0xad92454c>, <dendropy.dataobject.tree.Node object at 0xad260cec>, <dendropy.dataobject.tree.Node object at 0xad93556c>, <dendropy.dataobject.tree.Node object at 0xad31f5ec>, <dendropy.dataobject.tree.Node object at 0xad46a26c>, <dendropy.dataobject.tree.Node object at 0xad6d268c>, <dendropy.dataobject.tree.Node object at 0xad9246ac>, <dendropy.dataobject.tree.Node object at 0xad90ff6c>, <dendropy.dataobject.tree.Node object at 0xad6c678c>, <dendropy.dataobject.tree.Node object at 0xad55a54c>, <dendropy.dataobject.tree.Node object at 0xad2a1eac>])

In [16]:
origins = [] #changes to viviparity
childs = []

for index, node in enumerate(mle.postorder_node_iter()):
    if node.parent_node is None:
        pass
    if float(node.label) == 1.0 or 0 < float(node.label) < .05:
        total.append(node)
        if node.parent_node is None:
            pass
        elif float(node.parent_node.label) > 0.95:
            print 'node', node.taxon, node.parent_node.label
            origins.append(node)
            foci = node.parent_node

        elif float(foci.parent_node.label) > .5:
             new_foci = node.parent_node 
             if new_foci.parent_node is None:
                 pass
             elif float(new_foci.parent_node.label) > 0.95:
                 origins.append(new_foci)
        elif float(foci.parent_node.label) < .05:
             new_foci = node.parent_node 
             if new_foci.parent_node is None:
                 pass
             elif float(new_foci.parent_node.label) < 0.95:
                 origins.append(new_foci)
                   

print len(set(origins)), 'origins'
print set(origins)


node None 0.993219160871954
node Rhacodactylus_trachyrhynchus 0.995179719649829
node Psammodynastes_pulverulentus 0.988366440598484
node Pseudaspis_cana 0.952245570947064
node Liopholidophis_sexlineatus 0.960833772383943
node Hemachatus_haemachatus 0.99895456926748
node None 0.993852341018983
node None 0.983055308472194
node None 0.998120314050423
node None 0.981056900234731
node Sinonatrix_annularis 0.981445619648509
node Chamaeleo_affinis 0.982905255642751
node None 0.998560292105321
node None 0.963150272336692
node None 0.968241962103618
node Liolaemus_nigroviridis 0.964590730341668
node Liolaemus_espinozai 0.951837459174403
node None 0.993680295948305
node Anguis_fragilis 0.965254482143646
node None 0.997168681460311
node Monopeltis_capensis 0.998116202242371
node Trogonophis_wiegmanni 0.961120149820311
node None 0.98726503622811
node None 0.97792234348717
node None 0.960419990295342
node Lipinia_noctua 0.977957731952092
node None 0.999858904464587
52 origins
set([<dendropy.dataobject.tree.Node object at 0xad25880c>, <dendropy.dataobject.tree.Node object at 0xad713f2c>, <dendropy.dataobject.tree.Node object at 0xad4ee06c>, <dendropy.dataobject.tree.Node object at 0xad7300ac>, <dendropy.dataobject.tree.Node object at 0xad68226c>, <dendropy.dataobject.tree.Node object at 0xada9b8cc>, <dendropy.dataobject.tree.Node object at 0xad61f90c>, <dendropy.dataobject.tree.Node object at 0xad823d8c>, <dendropy.dataobject.tree.Node object at 0xad8b792c>, <dendropy.dataobject.tree.Node object at 0xada9b14c>, <dendropy.dataobject.tree.Node object at 0xad4ab2ec>, <dendropy.dataobject.tree.Node object at 0xad2e610c>, <dendropy.dataobject.tree.Node object at 0xad89144c>, <dendropy.dataobject.tree.Node object at 0xadaa01ac>, <dendropy.dataobject.tree.Node object at 0xad2eb9cc>, <dendropy.dataobject.tree.Node object at 0xad8aa9ec>, <dendropy.dataobject.tree.Node object at 0xad209f0c>, <dendropy.dataobject.tree.Node object at 0xada9b22c>, <dendropy.dataobject.tree.Node object at 0xadaa026c>, <dendropy.dataobject.tree.Node object at 0xad50128c>, <dendropy.dataobject.tree.Node object at 0xad850b2c>, <dendropy.dataobject.tree.Node object at 0xad647aec>, <dendropy.dataobject.tree.Node object at 0xad3e058c>, <dendropy.dataobject.tree.Node object at 0xada9bb2c>, <dendropy.dataobject.tree.Node object at 0xad89134c>, <dendropy.dataobject.tree.Node object at 0xad97f38c>, <dendropy.dataobject.tree.Node object at 0xad657b4c>, <dendropy.dataobject.tree.Node object at 0xad54f8ac>, <dendropy.dataobject.tree.Node object at 0xada94bec>, <dendropy.dataobject.tree.Node object at 0xada9444c>, <dendropy.dataobject.tree.Node object at 0xad3c44ac>, <dendropy.dataobject.tree.Node object at 0xada94cec>, <dendropy.dataobject.tree.Node object at 0xadaa0d0c>, <dendropy.dataobject.tree.Node object at 0xad501d4c>, <dendropy.dataobject.tree.Node object at 0xada9458c>, <dendropy.dataobject.tree.Node object at 0xada9b5ac>, <dendropy.dataobject.tree.Node object at 0xad45e5cc>, <dendropy.dataobject.tree.Node object at 0xadaa05ec>, <dendropy.dataobject.tree.Node object at 0xada9be0c>, <dendropy.dataobject.tree.Node object at 0xad7f3d0c>, <dendropy.dataobject.tree.Node object at 0xad64f26c>, <dendropy.dataobject.tree.Node object at 0xad3c0e6c>, <dendropy.dataobject.tree.Node object at 0xada9468c>, <dendropy.dataobject.tree.Node object at 0xadaa06ac>, <dendropy.dataobject.tree.Node object at 0xad3046cc>, <dendropy.dataobject.tree.Node object at 0xad299eec>, <dendropy.dataobject.tree.Node object at 0xad32870c>, <dendropy.dataobject.tree.Node object at 0xad4ab68c>, <dendropy.dataobject.tree.Node object at 0xada94f2c>, <dendropy.dataobject.tree.Node object at 0xad2753ec>, <dendropy.dataobject.tree.Node object at 0xad777f6c>, <dendropy.dataobject.tree.Node object at 0xada9b7cc>])

In [89]:
print len(childs)


0

In [73]:


In [ ]: