import subprocess import os import numpy as np ########## effects = ['no_effect', 'lineage_effect'] directories = effects * 200 reps = np.repeat(range(1, 201), 2) for x in range(0, 400): directories[x] = directories[x] + '/' + str(reps[x]) for x in directories: os.makedirs(os.path.join(x)) ##########GENERATE_DIRECTORIES_FOR_R_SCRIPT dividers = ["directories <- c('C:/Users/some3165/Documents/The intractability of rates eight taxon/"] + ["', 'C:/Users/some3165/Documents/The intractability of rates eight taxon/"]*2 r_grouped_directories = np.array_split(np.array(directories), 200) final_r_groups = [None]*200 for x in range (0, 200): final_r_groups[x] = [None] * 2 for x in range(0, 200): for y in range(0, 2): final_r_groups[x][y] = dividers[y] + r_grouped_directories[x][y] final_r_groups[x] = str(final_r_groups[x]).replace('", "', '').replace('["', '').replace('"]', "')") ##########GENERATE_DIRECTORIES_AND_VECTORS_FOR_REV_SCRIPT rev_data_directories = [None]*400 for x in range(0, 400): rev_data_directories[x] = (np.repeat(directories, 1).tolist()*200)[x] rev_grouped_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] * 2 for x in range(0, 200): for y in range(0, 2): final_rev_data[x][y] = rev_grouped_data_directories[x][y] final_rev_data[x] = str(final_rev_data[x]).replace('[', 'datasets <- v(').replace(']', ')').replace("'", '"') ##########RUN_FULL_LOOP for x in range(1, 50): 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(['C:/Program Files/R/R-3.4.0/bin/Rscript', 'C:/Users/some3165/Documents/The intractability of rates eight taxon/simulate_tree.R']) 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' + '\n' + Revscript_base) out_rev_script.close() subprocess.call(['rb.exe', 'inference_script.Rev'])