import subprocess import os import numpy as np ########## effects = ['residual_rate_gene_specific_rate_lineage_specific_rate'] directories = effects * 200 reps = range(1, 201) for x in range(0, 200): directories[x] = directories[x] + '/' + str(reps[x]) for x in directories: os.makedirs(os.path.join(x)) ##########GENERATE_DIRECTORIES_FOR_R_SCRIPT dividers = "EXPERIMENT_LOCATION" final_r_groups = [None]*200 for x in range(0, 200): final_r_groups[x] = dividers + directories[x] + "')" final_r_groups[x] = str(final_r_groups[x]).replace('", "', '').replace('["', '').replace('"]', "')") ##########GENERATE_DIRECTORIES_AND_VECTORS_FOR_REV_SCRIPT rev_data_directories = [None]*800 for x in range(0, 800): rev_data_directories[x] = (np.repeat(directories, 4).tolist()*200)[x] rev_data_directories = np.array_split(np.array(rev_data_directories), 200) final_rev_data = [None]*200 for x in range (0, 200): final_rev_data[x] = [None] * 4 for x in range(0, 200): for y in range(0, 4): final_rev_data[x][y] = rev_data_directories[x][y] final_rev_data[x] = str(final_rev_data[x]).replace('[', 'datasets <- v(').replace(']', ')').replace("'", '"') ### rev_result_directories = [None]*800 for x in range(0, 800): rev_result_directories[x] = (np.repeat(directories, 4).tolist()*200)[x] rev_grouped_result_directories = np.array_split(np.array(rev_result_directories), 200) final_rev_result = [None]*200 for x in range (0, 200): final_rev_result[x] = [None] * 4 for x in range(0, 200): for y in range(0, 4): final_rev_result[x][y] = rev_grouped_result_directories[x][y] final_rev_result[x] = str(final_rev_result[x]).replace('[', 'results <- v(').replace(']', ')').replace("'", '"') ### scale_number = str([1,5,20,400]*1).replace('[', 'scale_number <- v(').replace(']', ')') dirich_scale = str([1,5,10,30]*1).replace('[', 'dirich_scale <- v(').replace(']', ')') concat_number = str(["/1concatenated", "/5concatenated", "/20concatenated", "/400concatenated"] * 1).replace('[', 'concat <- v(').replace(']', ')').replace("'", '"') marker_number = str([1,5,20,400]*1).replace('[', 'marker_number <- v(').replace(']', ')') ##########RUN_FULL_LOOP for x in range(0, 100): R_script = open("simulation_loop.R", "r+") out_r_script = open("simulation_script.R", "w+") Rscript_base = R_script.read() out_r_script.write(final_r_groups[x] + Rscript_base) out_r_script.close() subprocess.call(["###R_LOCATION", "###SIMULATION_SCRIPT_LOCATION"]) Rev_script = open("inference_loop.Rev", "r+") out_rev_script = open("inference_script.Rev", "w+") Revscript_base = Rev_script.read() out_rev_script.write(final_rev_data[x] + '\n' + final_rev_result[x] + '\n' + scale_number + '\n' + concat_number + '\n' + marker_number + '\n' + Revscript_base) out_rev_script.close() subprocess.call(["###REV_BAYES_LOCATION", "###INFERENCE_SCRIPT_LOCATION"]) Rev_script_two = open("inference_loop_dirichlet.Rev", "r+") out_rev_script_two = open("inference_script_dirichlet.Rev", "w+") Revscript_two_base = Rev_script_two.read() out_rev_script_two.write(final_rev_data[x] + '\n' + final_rev_result[x] + '\n' + dirich_scale + '\n' + concat_number + '\n' + marker_number + '\n' + Revscript_two_base) out_rev_script_two.close() subprocess.call(["###REV_BAYES_LOCATION", "###INFERENCE_SCRIPT_DIRICHLET_LOCATION"])