diff --git a/configuration/__init__.py b/SimCAD/__init__.py similarity index 84% rename from configuration/__init__.py rename to SimCAD/__init__.py index 9f1848c..1df2784 100644 --- a/configuration/__init__.py +++ b/SimCAD/__init__.py @@ -1,6 +1,6 @@ configs = [] -class Config(object): +class Configuration(object): def __init__(self, sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms): self.sim_config = sim_config self.state_dict = state_dict @@ -8,4 +8,4 @@ class Config(object): self.exogenous_states = exogenous_states self.env_processes = env_processes self.behavior_ops = behavior_ops - self.mechanisms = mechanisms + self.mechanisms = mechanisms \ No newline at end of file diff --git a/engine/__init__.py b/SimCAD/engine/__init__.py similarity index 91% rename from engine/__init__.py rename to SimCAD/engine/__init__.py index bd3356d..7800b27 100644 --- a/engine/__init__.py +++ b/SimCAD/engine/__init__.py @@ -1,13 +1,11 @@ - - from pathos.multiprocessing import ProcessingPool as Pool import pandas as pd from tabulate import tabulate -from utils import flatten -from utils.ui import create_tensor_field -from utils.configProcessor import generate_config +from SimCAD.utils import flatten +from SimCAD.utils.ui import create_tensor_field +from SimCAD.utils.configProcessor import generate_config class ExecutionContext(object): @@ -25,7 +23,7 @@ class ExecutionContext(object): class Executor(object): def __init__(self, ExecutionContext, configs): - from engine.simulation import Executor + from SimCAD.engine.simulation import Executor def execute(): ec = ExecutionContext() diff --git a/engine/simulation.py b/SimCAD/engine/simulation.py similarity index 100% rename from engine/simulation.py rename to SimCAD/engine/simulation.py diff --git a/utils/__init__.py b/SimCAD/utils/__init__.py similarity index 100% rename from utils/__init__.py rename to SimCAD/utils/__init__.py diff --git a/utils/configProcessor.py b/SimCAD/utils/configProcessor.py similarity index 100% rename from utils/configProcessor.py rename to SimCAD/utils/configProcessor.py diff --git a/utils/configuration.py b/SimCAD/utils/configuration.py similarity index 100% rename from utils/configuration.py rename to SimCAD/utils/configuration.py diff --git a/utils/engine.py b/SimCAD/utils/engine.py similarity index 52% rename from utils/engine.py rename to SimCAD/utils/engine.py index 24e2089..4d68ab2 100644 --- a/utils/engine.py +++ b/SimCAD/utils/engine.py @@ -17,23 +17,4 @@ def last_index(l): return len(l)-1 def retrieve_state(l, offset): - return l[last_index(l) + offset + 1] - -# def exo_proc_trigger(mech_step, update_f, y): -# if mech_step == 1: -# return update_f -# else: -# return lambda step, sL, s, _input: (y, s[y]) - - - -# def apply_exo_proc(s, x, y): -# if s['mech_step'] == 1: -# return x -# else: -# return s[y] - -# def es5p2(step, sL, s, _input): # accept timedelta instead of timedelta params -# y = 'timestamp' -# x = ep_time_step(s, s['timestamp'], seconds=1) -# return (y, x) \ No newline at end of file + return l[last_index(l) + offset + 1] \ No newline at end of file diff --git a/utils/ui.py b/SimCAD/utils/ui.py similarity index 64% rename from utils/ui.py rename to SimCAD/utils/ui.py index 1bcad4a..3122591 100644 --- a/utils/ui.py +++ b/SimCAD/utils/ui.py @@ -1,8 +1,8 @@ import pandas as pd -from utils.configProcessor import create_matrix_field +from SimCAD.utils.configProcessor import create_matrix_field def create_tensor_field(mechanisms, exo_proc, keys=['behaviors', 'states']): - dfs = [ create_matrix_field(mechanisms, k) for k in keys ] + dfs = [create_matrix_field(mechanisms, k) for k in keys] df = pd.concat(dfs, axis=1) for es, i in zip(exo_proc, range(len(exo_proc))): df['es'+str(i+1)] = es diff --git a/refactored_test.py b/refactored_test.py deleted file mode 100644 index 8973217..0000000 --- a/refactored_test.py +++ /dev/null @@ -1,7 +0,0 @@ - -from engine import ExecutionContext, Executor -from ui import config1, config2 - -configs = [config1, config2] -run = Executor(ExecutionContext, configs) -result = run.main() \ No newline at end of file diff --git a/runtime/__init__.py b/runtime/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/runtime/multiproc.py b/runtime/multiproc.py deleted file mode 100644 index da420d3..0000000 --- a/runtime/multiproc.py +++ /dev/null @@ -1,9 +0,0 @@ -from pathos.multiprocessing import ProcessingPool as Pool - - -def parallelize_simulations(fs, states_list, configs, env_processes, Ts, Ns): - l = list(zip(fs, states_list, configs, env_processes, Ts, Ns)) - with Pool(len(configs)) as p: - results = p.map(lambda t: t[0](t[1], t[2], t[3], t[4], t[5]), l) - - return results \ No newline at end of file diff --git a/runtime/run.py b/runtime/run.py deleted file mode 100644 index b113a11..0000000 --- a/runtime/run.py +++ /dev/null @@ -1,50 +0,0 @@ -import pandas as pd -from tabulate import tabulate -from configuration import configs -from utils import flatten -from utils.ui import create_tensor_field -from utils.configProcessor import generate_config -from engine.simulation import Executor -from runtime.multiproc import parallelize_simulations - -# from ui import config1, config2 -# - -def main(): - print(configs) - states_lists, Ts, Ns, eps, configs_struct, env_processes, mechanisms, simulation_execs = \ - [], [], [], [], [], [], [], [] - config_idx = 0 - for x in configs: - - states_lists.append([x.state_dict]) - Ts.append(x.sim_config['T']) - Ns.append(x.sim_config['N']) - eps.append(list(x.exogenous_states.values())) - configs_struct.append(generate_config(x.state_dict, x.mechanisms, eps[config_idx])) - env_processes.append(x.env_processes) - mechanisms.append(x.mechanisms) - simulation_execs.append(Executor(x.behavior_ops).simulation) - - config_idx += 1 - - # Dimensions: N x r x mechs - - - if len(configs) > 1: - simulations = parallelize_simulations(simulation_execs, states_lists, configs_struct, env_processes, Ts, Ns) - - for result, mechanism, ep in list(zip(simulations, mechanisms, eps)): - print(tabulate(create_tensor_field(mechanism, ep), headers='keys', tablefmt='psql')) - print(tabulate(pd.DataFrame(flatten(result)), headers='keys', tablefmt='psql')) - else: - print('single note') - simulation, states_list, config = simulation_execs.pop(), states_lists.pop(), configs_struct.pop() - env_process = env_processes.pop() - # simulations = [simulation(states_list, config, env_processes, T, N)] - - # behavior_ops, states_list, configs, env_processes, time_seq, runs - # result = simulation(states_list1, config1, conf1.env_processes, T, N) - # return pd.DataFrame(flatten(result)) - - diff --git a/ui/config1.py b/sandboxUX/config1.py similarity index 92% rename from ui/config1.py rename to sandboxUX/config1.py index 7a0d661..eae080d 100644 --- a/ui/config1.py +++ b/sandboxUX/config1.py @@ -1,8 +1,10 @@ -from configuration import Config, configs -from utils.configuration import * -from fn.op import foldr -import numpy as np from decimal import Decimal +import numpy as np +from fn.op import foldr + +from SimCAD import Configuration, configs +from SimCAD.utils.configuration import exo_update_per_ts, proc_trigger, dict_elemwise_sum, bound_norm_random, \ + ep_time_step seed = { 'z': np.random.RandomState(1), @@ -159,4 +161,4 @@ sim_config = { "T": range(5) } -configs.append(Config(sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms)) +configs.append(Configuration(sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms)) diff --git a/ui/config2.py b/sandboxUX/config2.py similarity index 92% rename from ui/config2.py rename to sandboxUX/config2.py index 6ec8fe5..5aab54f 100644 --- a/ui/config2.py +++ b/sandboxUX/config2.py @@ -1,8 +1,10 @@ -from configuration import Config, configs -from utils.configuration import * -from fn.op import foldr -import numpy as np from decimal import Decimal +import numpy as np +from fn.op import foldr + +from SimCAD import Configuration, configs +from SimCAD.utils.configuration import exo_update_per_ts, proc_trigger, dict_elemwise_sum, bound_norm_random, \ + ep_time_step seed = { @@ -161,4 +163,4 @@ sim_config = { "T": range(5) } -configs.append(Config(sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms)) \ No newline at end of file +configs.append(Configuration(sim_config, state_dict, seed, exogenous_states, env_processes, behavior_ops, mechanisms)) \ No newline at end of file diff --git a/sandboxUX/sim_test.py b/sandboxUX/sim_test.py new file mode 100644 index 0000000..5aa4534 --- /dev/null +++ b/sandboxUX/sim_test.py @@ -0,0 +1,7 @@ + +from SimCAD.engine import ExecutionContext, Executor +from sandboxUX import config1, config2 + +configs = [config1, config2] +run = Executor(ExecutionContext, configs) +result = run.main() \ No newline at end of file diff --git a/test.py b/test.py deleted file mode 100644 index cac1ef4..0000000 --- a/test.py +++ /dev/null @@ -1,5 +0,0 @@ -from runtime import run -from ui import config1, config2 -from tabulate import tabulate -result = run.main() -print(tabulate(result, headers='keys', tablefmt='psql')) \ No newline at end of file