Skip to content

Commit

Permalink
needs subset_id
Browse files Browse the repository at this point in the history
  • Loading branch information
JEJodesty committed Jul 14, 2020
1 parent 6486c70 commit 13a8b65
Show file tree
Hide file tree
Showing 10 changed files with 241 additions and 102 deletions.
2 changes: 2 additions & 0 deletions cadCAD/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

name = "cadCAD"
configs = []
global experiment_count
# experiment_count = 0

if os.name == 'nt':
dill.settings['recurse'] = True
Expand Down
264 changes: 187 additions & 77 deletions cadCAD/configuration/__init__.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from pprint import pprint
from typing import Dict, Callable, List, Tuple
from pandas.core.frame import DataFrame
from functools import reduce
from collections import deque
from copy import deepcopy
import pandas as pd
# from time import time
Expand All @@ -15,7 +15,8 @@
class Configuration(object):
def __init__(self, user_id, sim_config={}, initial_state={}, seeds={}, env_processes={},
exogenous_states={}, partial_state_update_blocks={}, policy_ops=[lambda a, b: a + b],
session_id=0, simulation_id=0, run_id=1, **kwargs) -> None:
session_id=0, simulation_id=0, run_id=1, experiment_id=0, exp_window=deque([0, None], 2), **kwargs
) -> None:
# print(exogenous_states)
self.sim_config = sim_config
self.initial_state = initial_state
Expand All @@ -27,88 +28,197 @@ def __init__(self, user_id, sim_config={}, initial_state={}, seeds={}, env_proce
self.kwargs = kwargs

self.user_id = user_id
self.session_id = session_id
self.session_id = session_id # eesntially config id
self.simulation_id = simulation_id
self.run_id = run_id
self.experiment_id = experiment_id
self.exp_window = exp_window

sanitize_config(self)


def append_configs(
user_id='cadCAD_user',
session_id=0, #ToDo: change to string
sim_configs={}, initial_state={}, seeds={}, raw_exogenous_states={}, env_processes={},
partial_state_update_blocks={}, policy_ops=[lambda a, b: a + b], _exo_update_per_ts: bool = True,
config_list=configs
) -> None:

try:
max_runs = sim_configs[0]['N']
except KeyError:
max_runs = sim_configs['N']

if _exo_update_per_ts is True:
exogenous_states = exo_update_per_ts(raw_exogenous_states)
else:
exogenous_states = raw_exogenous_states

if isinstance(sim_configs, dict):
sim_configs = [sim_configs]

simulation_id = 0
if len(config_list) > 0:
last_config = config_list[-1]
simulation_id = last_config.simulation_id + 1

sim_cnt = 0
new_sim_configs = []
for t in list(zip(sim_configs, list(range(len(sim_configs))))):
sim_config = t[0]
N = sim_config['N']

if N > 1:
for n in range(N):
sim_config['simulation_id'] = simulation_id + sim_cnt
sim_config['run_id'] = n
sim_config['N'] = 1
# sim_config['N'] = n + 1
new_sim_configs.append(deepcopy(sim_config))
del sim_config
class Experiment:
def __init__(self):
self.exp_id = 0
self.exp_window = deque([self.exp_id, None], 2)

def append_configs(
self,
user_id='cadCAD_user',
session_id=0, # ToDo: change to string
sim_configs={}, initial_state={}, seeds={}, raw_exogenous_states={}, env_processes={},
partial_state_update_blocks={}, policy_ops=[lambda a, b: a + b], _exo_update_per_ts: bool = True,
config_list=configs
) -> None:

try:
max_runs = sim_configs[0]['N']
except KeyError:
max_runs = sim_configs['N']

if _exo_update_per_ts is True:
exogenous_states = exo_update_per_ts(raw_exogenous_states)
else:
sim_config['simulation_id'] = simulation_id
sim_config['run_id'] = 0
new_sim_configs.append(deepcopy(sim_config))
# del sim_config

sim_cnt += 1

run_id = 0
for sim_config in new_sim_configs:
sim_config['N'] = run_id + 1
if max_runs == 1:
sim_config['run_id'] = run_id
elif max_runs >= 1:
if run_id >= max_runs:
sim_config['N'] = run_id - (max_runs - 1)

config = Configuration(
sim_config=sim_config,
initial_state=initial_state,
seeds=seeds,
exogenous_states=exogenous_states,
env_processes=env_processes,
partial_state_update_blocks=partial_state_update_blocks,
policy_ops=policy_ops,

# session_id=session_id,
user_id=user_id,
session_id=f"{user_id}={sim_config['simulation_id']}_{sim_config['run_id']}",
simulation_id=sim_config['simulation_id'],
# run_id=run_id_config
run_id=sim_config['run_id']
)
configs.append(config)
run_id += 1
exogenous_states = raw_exogenous_states

if isinstance(sim_configs, dict):
sim_configs = [sim_configs]

simulation_id = 0
if len(config_list) > 0:
last_config = config_list[-1]
simulation_id = last_config.simulation_id + 1

sim_cnt = 0
new_sim_configs = []
for t in list(zip(sim_configs, list(range(len(sim_configs))))):
sim_config = t[0]
N = sim_config['N']

if N > 1:
for n in range(N):
sim_config['simulation_id'] = simulation_id + sim_cnt
sim_config['run_id'] = n
sim_config['N'] = 1
# sim_config['N'] = n + 1
new_sim_configs.append(deepcopy(sim_config))
del sim_config
else:
sim_config['simulation_id'] = simulation_id
sim_config['run_id'] = 0
new_sim_configs.append(deepcopy(sim_config))
# del sim_config

sim_cnt += 1

run_id = 0
print(self.exp_id)
for sim_config in new_sim_configs:
sim_config['N'] = run_id + 1
if max_runs == 1:
sim_config['run_id'] = run_id
elif max_runs >= 1:
if run_id >= max_runs:
sim_config['N'] = run_id - (max_runs - 1)

self.exp_window = deepcopy(self.exp_window)
config = Configuration(
sim_config=sim_config,
initial_state=initial_state,
seeds=seeds,
exogenous_states=exogenous_states,
env_processes=env_processes,
partial_state_update_blocks=partial_state_update_blocks,
policy_ops=policy_ops,

# session_id=session_id,
user_id=user_id,
session_id=f"{user_id}={sim_config['simulation_id']}_{sim_config['run_id']}",
simulation_id=sim_config['simulation_id'],
# run_id=run_id_config
run_id=sim_config['run_id'],
experiment_id=self.exp_id,
exp_window=self.exp_window
)
configs.append(config)
run_id += 1

# print(exp_cnt)
self.exp_id += 1
self.exp_window.appendleft(self.exp_id)
# print()
# print(self.exp_id)


# def append_configs(
# user_id='cadCAD_user',
# session_id=0, #ToDo: change to string
# sim_configs={}, initial_state={}, seeds={}, raw_exogenous_states={}, env_processes={},
# partial_state_update_blocks={}, policy_ops=[lambda a, b: a + b], _exo_update_per_ts: bool = True,
# config_list=configs
# ) -> None:
#
# try:
# max_runs = sim_configs[0]['N']
# except KeyError:
# max_runs = sim_configs['N']
#
# if _exo_update_per_ts is True:
# exogenous_states = exo_update_per_ts(raw_exogenous_states)
# else:
# exogenous_states = raw_exogenous_states
#
# if isinstance(sim_configs, dict):
# sim_configs = [sim_configs]
#
# simulation_id = 0
# if len(config_list) > 0:
# last_config = config_list[-1]
# simulation_id = last_config.simulation_id + 1
#
# sim_cnt = 0
# new_sim_configs = []
# for t in list(zip(sim_configs, list(range(len(sim_configs))))):
# sim_config = t[0]
# N = sim_config['N']
#
# if N > 1:
# for n in range(N):
# sim_config['simulation_id'] = simulation_id + sim_cnt
# sim_config['run_id'] = n
# sim_config['N'] = 1
# # sim_config['N'] = n + 1
# new_sim_configs.append(deepcopy(sim_config))
# del sim_config
# else:
# sim_config['simulation_id'] = simulation_id
# sim_config['run_id'] = 0
# new_sim_configs.append(deepcopy(sim_config))
# # del sim_config
#
# sim_cnt += 1
#
# # print(configs)
# run_id = 0
# # if len(configs) > 0:
# # ds_run_id = configs[-1].__dict__['run_id'] + 1
# # # print()
# # # print(configs[-1].__dict__['simulation_id'])
# # # print(configs[-1].__dict__['run_id'])
# # # configs[-1].__dict__['run_id']
# # # print(configs[-1].__dict__['run_id'] + 1)
# # run_id = ds_run_id + 1
#
# for sim_config in new_sim_configs:
# sim_config['N'] = run_id + 1
# if max_runs == 1:
# sim_config['run_id'] = run_id
# elif max_runs >= 1:
# if run_id >= max_runs:
# sim_config['N'] = run_id - (max_runs - 1)
#
# config = Configuration(
# sim_config=sim_config,
# initial_state=initial_state,
# seeds=seeds,
# exogenous_states=exogenous_states,
# env_processes=env_processes,
# partial_state_update_blocks=partial_state_update_blocks,
# policy_ops=policy_ops,
#
# # session_id=session_id,
# user_id=user_id,
# session_id=f"{user_id}={sim_config['simulation_id']}_{sim_config['run_id']}",
# simulation_id=sim_config['simulation_id'],
# # run_id=run_id_config
# run_id=sim_config['run_id']
# )
# configs.append(config)
# run_id += 1
#
# # print(configs)
# # print(f'simulation_id: {configs[-1].__dict__["simulation_id"]}')
# # print(f'run_id: {configs[-1].__dict__["run_id"]}')


class Identity:
Expand Down
14 changes: 10 additions & 4 deletions cadCAD/engine/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def execute(self) -> Tuple[Any, Any, Dict[str, Any]]:

sessions = []
var_dict_list, states_lists = [], []
Ts, Ns, SimIDs, RunIDs = [], [], [], []
Ts, Ns, SimIDs, RunIDs, ExpIDs, ExpWindows = [], [], [], [], [], []
eps, configs_structs, env_processes_list = [], [], []
partial_state_updates, sim_executors = [], []
config_idx = 0
Expand All @@ -78,11 +78,16 @@ def execute(self) -> Tuple[Any, Any, Dict[str, Any]]:
t1 = time()
for x in self.configs:
sessions.append(
{'user_id': x.user_id, 'session_id': x.session_id, 'simulation_id': x.simulation_id, 'run_id': x.run_id}
{
'user_id': x.user_id, 'experiment_id': x.experiment_id, 'session_id': x.session_id,
'simulation_id': x.simulation_id, 'run_id': x.run_id
}
)
Ts.append(x.sim_config['T'])
Ns.append(x.sim_config['N'])

ExpIDs.append(x.experiment_id)
ExpWindows.append(x.exp_window)
SimIDs.append(x.simulation_id)
RunIDs.append(x.run_id)

Expand Down Expand Up @@ -136,14 +141,15 @@ def auto_mode_switcher(config_amt):

print("Execution Method: " + self.exec_method.__name__)
simulations_results = self.exec_method(
sim_executors, var_dict_list, states_lists, configs_structs, env_processes_list, Ts, SimIDs, RunIDs #Ns
sim_executors, var_dict_list, states_lists, configs_structs, env_processes_list, Ts, SimIDs, RunIDs,
ExpIDs #Ns
)
final_result = get_final_results(simulations_results, partial_state_updates, eps, sessions, remote_threshold)
elif self.exec_context == ExecutionMode.distributed:
print("Execution Method: " + self.exec_method.__name__)
simulations_results = self.exec_method(
sim_executors, var_dict_list, states_lists, configs_structs, env_processes_list, Ts,
SimIDs, RunIDs, self.sc
SimIDs, RunIDs, ExpIDs, self.sc
)
final_result = get_final_dist_results(simulations_results, partial_state_updates, eps, sessions)

Expand Down
Loading

0 comments on commit 13a8b65

Please sign in to comment.