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 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 RF_cloud1 = readTree.cluster_density_avg(in_file='%s_cloud.tree' % name, NNI_trees=int(cloud_size) - 1, starting_tree_number=0) RF_cloud2 = readTree.cluster_density_avg(in_file='%s_cloud.tree' % name, NNI_trees=int(cloud_size) - 1, starting_tree_number=cloud_size) # write to log file