aegis_gui.utilities.manipulate

 1import yaml
 2import logging
 3
 4from aegis_sim.parameterization.default_parameters import DEFAULT_PARAMETERS
 5from aegis_gui.utilities.utilities import get_config_path, get_container
 6from aegis_sim.utilities.container import Container
 7import subprocess
 8
 9running_processes = {}
10
11
12def make_config_file(filename, configs):
13    configs["PHENOMAP_SPECS"] = []
14    configs["NOTES"] = []
15    for k, v in configs.items():
16        configs[k] = DEFAULT_PARAMETERS[k].convert(v)
17    logging.info("Making a config file.")
18    config_path = get_config_path(filename)
19    with open(config_path, "w") as file_:
20        yaml.dump(configs, file_)
21
22
23def run_simulation(filename, prerun_sim_path):
24    global running_processes
25    config_path = get_config_path(filename)
26    logging.info(f"Running a simulation at path {config_path}.")
27    if prerun_sim_path is None:
28        pickle_command = []
29    else:
30        container = Container(prerun_sim_path)
31        latest_pickle_path = container.get_path(["pickles"])[-1]
32        logging.info(f"Using pickled population from {latest_pickle_path}.")
33        pickle_command = ["-p", latest_pickle_path]
34    process = subprocess.Popen(
35        ["aegis", "sim", "--config_path", config_path] + pickle_command
36    )  # used to use sys.executable for cross-platform 'python3' command
37    running_processes[filename] = process
38
39
40def terminate_simulation(simname):
41    container = get_container(filename=simname)
42    container.terminate()
running_processes = {}
def make_config_file(filename, configs):
13def make_config_file(filename, configs):
14    configs["PHENOMAP_SPECS"] = []
15    configs["NOTES"] = []
16    for k, v in configs.items():
17        configs[k] = DEFAULT_PARAMETERS[k].convert(v)
18    logging.info("Making a config file.")
19    config_path = get_config_path(filename)
20    with open(config_path, "w") as file_:
21        yaml.dump(configs, file_)
def run_simulation(filename, prerun_sim_path):
24def run_simulation(filename, prerun_sim_path):
25    global running_processes
26    config_path = get_config_path(filename)
27    logging.info(f"Running a simulation at path {config_path}.")
28    if prerun_sim_path is None:
29        pickle_command = []
30    else:
31        container = Container(prerun_sim_path)
32        latest_pickle_path = container.get_path(["pickles"])[-1]
33        logging.info(f"Using pickled population from {latest_pickle_path}.")
34        pickle_command = ["-p", latest_pickle_path]
35    process = subprocess.Popen(
36        ["aegis", "sim", "--config_path", config_path] + pickle_command
37    )  # used to use sys.executable for cross-platform 'python3' command
38    running_processes[filename] = process
def terminate_simulation(simname):
41def terminate_simulation(simname):
42    container = get_container(filename=simname)
43    container.terminate()