コード例 #1
0
def evaluate_simulation_results(graph_folder, generation_number, parameters = {}, reps = [0], autorun = False, plot_name = None):
	#print parameters
	assert parameters, "Please specify a dictionary with par_name:par_value as key:value sets"

	data = empty_data_matrix(len(reps))
	saved_simulation_data_ids = list()

	simulation_reps_to_run = []
	random_path = str(randint(0, 2**64))
	log_folders = IO.get_logfolders(parameters, reps, random_path)

	for r in reps:
		try:
			assert IO.check_simulation_complete(log_folders[r]), "Could not calculate data because simulation in folder %s was not finished"%log_folders[r]
		except AssertionError:
			simulation_reps_to_run.append(r)

	if simulation_reps_to_run: run_simulation(parameters, simulation_reps_to_run, random_path)

	for r in reps:
		data[r], data_id = __evaluate_simulation_results(parameters, log_folders[r], graph_folder, generation_number, plot_name)
		if data_id: saved_simulation_data_ids.append(data_id)

	return data, saved_simulation_data_ids
コード例 #2
0
def run_simulation(parameters, reps, random_path):
    #assert check_parameters(parameters), "Invalid simulation parameters!"

    processes = list()
    log_folders = IO.get_logfolders(parameters, reps, random_path)
    
    try:
        for i, rep in enumerate(reps):
            ### Remove old simulation data calculated with the same parameters
            shutil.rmtree(log_folders[i], ignore_errors=True)
            parameters.update({'nRounds':settings.n_simulation_rounds})
            ### Build parameter string for java program
            par_string = ''
            for (par, val) in parameters.items(): par_string += '-D%s=%s '%(par,val)
            vm_args = "java -d64 -Xms512m -Xmx4g -DlogFolder=%s "%log_folders[i]
            command = vm_args + par_string + '-jar %s'%settings.jar_path
            if settings.WITH_SIMULATION_OUTPUT:
                processes.append(Popen(command.split(' ')))            
            else:
                processes.append(Popen(command.split(' '), stdout=open(devnull, 'w')))            
        for p in processes:
            p.wait()
    except CalledProcessError, e:
        e.__str__()