Exemple #1
0
def scale_tree_branch(tree, format="newick"):
        tree_obj = None
        if os.path.exists(tree):
                tree_obj = Tree.get_from_path(tree, format)
        elif isinstance(tree, str):
                tree_obj = Tree(stream=StringIO(tree), schema=format)
        elif isinstance(tree, Tree):
                tree_obj = Tree
        if sum([ e.length > 1 for e in tree_obj.postorder_edge_iter()]):
                for e in tree_obj.postorder_edge_iter():
                        if e.length is not None:
                                e.length = e.length/100
        return tree_obj.as_newick_string()
Exemple #2
0
import os


##################### IMPORTANT dendropy 3.8.1 is required

if __name__ == '__main__':
    
    taxonRemoveFile = sys.argv[1]
    treeName = sys.argv[2]
    outFile = sys.argv[3]
    
    print "Prunning %s according to %s to %s" %(treeName,taxonRemoveFile ,outFile)
   # tree = Tree(stream=open(treeName,"r"), schema='newick', as_rooted=True)  # as_rooted=True na hole tree gulak unrooted hishabe treat korbe
    #tree = TreeList.get_from_path(treeName, 'newick')
    trees = dendropy.TreeList.get_from_path(treeName, 'newick',as_rooted=True,preserve_underscores=True)
    # prune all taxa 	    
    handle = open(taxonRemoveFile,"r")	    
    line = handle.readline()
    taxon_sets = line.split()
    handle.close()

    out = open(outFile,'w');   	
    for tree in trees:	
	    prTree= Tree(tree)
	    prTree.prune_taxa_with_labels(taxon_sets, update_splits=True, delete_outdegree_one=True)        
            s = prTree.as_newick_string()
            s = s[0:s.rfind(")")+1]
	    out.write(s);
	    out.write(";\n")	
    out.close()