def makeCloud(tips, RF_norm_cloud, name, cloud_size, starting_trees):
    # Make cluster of trees around each starting tree
    # Get starting trees parsed
    t1 = starting_trees[0]
    t2 = starting_trees[1]
    # Calculate number of NNI moves based on desired normalized RF distance.
    RF_max = 2 * (tips - 2)
    NNI_moves_cloud = int((RF_max * RF_norm_cloud) / 2)
    if NNI_moves_cloud == 0:
        NNI_moves_cloud = 1
    # Make a cloud for each starting tree
    c_size = int(cloud_size) - 1

    print("Making clouds...")

    # Make clouds
    cluster1 = readTree.NNI_mult_trees(in_tree=t1,
                                       num_out_trees=c_size,
                                       num_nni_moves=NNI_moves_cloud,
                                       out='list')
    cluster2 = readTree.NNI_mult_trees(in_tree=t2,
                                       num_out_trees=c_size,
                                       num_nni_moves=NNI_moves_cloud,
                                       out='list')
    tree_list = [cluster1, cluster2]
    # Make a nexus file with starting trees and cloud trees
    readTree.list_to_out(tree_list, '%s_cloud.tree' % name)
############################################################
# Make cluster of trees around each starting tree
############################################################
# Calculate number of NNI moves based on desired normalized RF distance.
NNI_moves_cloud = int((RF_max * RF_norm_cloud) / 2)
if NNI_moves_cloud == 0:
    NNI_moves_cloud = 1
# Make a cloud for each starting tree
c_size = int(cloud_size) - 1

print("Making clouds...")

# Make clouds
cluster1 = readTree.NNI_mult_trees(in_tree=t1,
                                   num_out_trees=c_size,
                                   num_nni_moves=NNI_moves_cloud,
                                   out='list')
cluster2 = readTree.NNI_mult_trees(in_tree=t2,
                                   num_out_trees=c_size,
                                   num_nni_moves=NNI_moves_cloud,
                                   out='list')
# Make a nexus file with starting trees and cloud trees
readTree.list_to_out(cluster1, cluster2, '%s_cloud.tree' % name)

############################################################
# Print info to log file
############################################################
print("Calculating stats on trees...")
# Calculate emperical distance between two start trees
RF_emp = readTree.rf_unweighted(t1, t2, normalized='T')[1]
# Calculate average density of each cloud
Beispiel #3
0
in_tree_object = readTree.rand_tree(tips=10,brl_avg=1,brl_std=None,verbose='T')

############################## 
# Make moves
############################## 
# Print newick string
in_tree_object.newick(in_tree_object.root)

# Make NNI move 
new_tree_object = readTree.NNI(orig_tree=in_tree_object,node_choice='exponential')

# Make multiple moves on a single tree
new_tree_object = readTree.NNI_mult_moves(in_tree=in_tree,num_moves=1,node_choice='exponential',no_dup_start_tree='T')

# Make multiple trees, each with one NNI move from starting tree. Output as nexus file.
readTree.NNI_mult_trees(in_tree=in_tree,num_out_trees=10,num_nni_moves=2,out_file='outFile2.t',node_choice='random',no_dup_start_tree='T')

############################## 
# Look at and compare trees
############################## 

# Print newick string
new_tree_object.newick(new_tree_object.root)

# View tree in terminal along with newick string
readTree.view_phylo(new_tree_object)

# Check that all trees have the right number of moves from start tree
readTree.compare_tree_file(in_file='outFile1.t',total_trees=11,distance_metric="uRF")

# Compare RF distance between two trees.