diff --git a/.gitignore b/.gitignore index b70d197..27a58c5 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,8 @@ results *.csv *.txt simulations/.ipynb_checkpoints +dist/*.gz +cadCAD.egg-info build SimCAD.egg-info \ No newline at end of file diff --git a/README.md b/README.md index 825c846..b591f72 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ SimCAD is written in Python 3. ```bash pip3 install -r requirements.txt python3 setup.py sdist bdist_wheel -pip3 install dist/SimCAD-0.1-py3-none-any.whl +pip3 install dist/cadCAD-0.1-py3-none-any.whl ``` **2. Configure Simulation:** diff --git a/SimCAD/__init__.py b/SimCAD/__init__.py deleted file mode 100644 index b4234cb..0000000 --- a/SimCAD/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -name = "SimCAD" -configs = [] \ No newline at end of file diff --git a/cadCAD/__init__.py b/cadCAD/__init__.py new file mode 100644 index 0000000..ce0b0f9 --- /dev/null +++ b/cadCAD/__init__.py @@ -0,0 +1,2 @@ +name = "cadCAD" +configs = [] \ No newline at end of file diff --git a/SimCAD/configuration/__init__.py b/cadCAD/configuration/__init__.py similarity index 92% rename from SimCAD/configuration/__init__.py rename to cadCAD/configuration/__init__.py index 1440b54..277ffce 100644 --- a/SimCAD/configuration/__init__.py +++ b/cadCAD/configuration/__init__.py @@ -2,15 +2,15 @@ from functools import reduce from fn.op import foldr import pandas as pd -from SimCAD import configs -from SimCAD.utils import key_filter -from SimCAD.configuration.utils.policyAggregation import dict_elemwise_sum -from SimCAD.configuration.utils import exo_update_per_ts +from cadCAD import configs +from cadCAD.utils import key_filter +from cadCAD.configuration.utils.policyAggregation import dict_elemwise_sum +from cadCAD.configuration.utils import exo_update_per_ts class Configuration(object): - def __init__(self, sim_config=None, initial_state=None, seeds=None, env_processes=None, - exogenous_states=None, partial_state_updates=None, policy_ops=[foldr(dict_elemwise_sum())]): + def __init__(self, sim_config={}, initial_state={}, seeds={}, env_processes={}, + exogenous_states={}, partial_state_updates={}, policy_ops=[foldr(dict_elemwise_sum())], **kwargs): self.sim_config = sim_config self.initial_state = initial_state self.seeds = seeds diff --git a/SimCAD/configuration/utils/__init__.py b/cadCAD/configuration/utils/__init__.py similarity index 98% rename from SimCAD/configuration/utils/__init__.py rename to cadCAD/configuration/utils/__init__.py index ab5113d..084f7ae 100644 --- a/SimCAD/configuration/utils/__init__.py +++ b/cadCAD/configuration/utils/__init__.py @@ -4,7 +4,7 @@ from copy import deepcopy from fn.func import curried import pandas as pd -from SimCAD.utils import dict_filter, contains_type +from cadCAD.utils import dict_filter, contains_type class TensorFieldReport: diff --git a/SimCAD/configuration/utils/parameterSweep.py b/cadCAD/configuration/utils/parameterSweep.py similarity index 84% rename from SimCAD/configuration/utils/parameterSweep.py rename to cadCAD/configuration/utils/parameterSweep.py index 7d5024c..9e5d6ab 100644 --- a/SimCAD/configuration/utils/parameterSweep.py +++ b/cadCAD/configuration/utils/parameterSweep.py @@ -1,4 +1,4 @@ -from SimCAD.utils import flatten_tabulated_dict, tabulate_dict +from cadCAD.utils import flatten_tabulated_dict, tabulate_dict def process_variables(d): diff --git a/SimCAD/configuration/utils/policyAggregation.py b/cadCAD/configuration/utils/policyAggregation.py similarity index 100% rename from SimCAD/configuration/utils/policyAggregation.py rename to cadCAD/configuration/utils/policyAggregation.py diff --git a/SimCAD/engine/__init__.py b/cadCAD/engine/__init__.py similarity index 94% rename from SimCAD/engine/__init__.py rename to cadCAD/engine/__init__.py index 139d126..5a1d4ad 100644 --- a/SimCAD/engine/__init__.py +++ b/cadCAD/engine/__init__.py @@ -1,9 +1,9 @@ from pathos.multiprocessing import ProcessingPool as Pool -from SimCAD.utils import flatten -from SimCAD.configuration import Processor -from SimCAD.configuration.utils import TensorFieldReport -from SimCAD.engine.simulation import Executor as SimExecutor +from cadCAD.utils import flatten +from cadCAD.configuration import Processor +from cadCAD.configuration.utils import TensorFieldReport +from cadCAD.engine.simulation import Executor as SimExecutor class ExecutionMode: diff --git a/SimCAD/engine/simulation.py b/cadCAD/engine/simulation.py similarity index 97% rename from SimCAD/engine/simulation.py rename to cadCAD/engine/simulation.py index 4d855b1..9e3a153 100644 --- a/SimCAD/engine/simulation.py +++ b/cadCAD/engine/simulation.py @@ -1,7 +1,7 @@ from copy import deepcopy from fn.op import foldr, call -from SimCAD.engine.utils import engine_exception +from cadCAD.engine.utils import engine_exception id_exception = engine_exception(KeyError, KeyError, None) @@ -49,7 +49,7 @@ class Executor: del last_in_obj - self.apply_env_proc(env_processes, last_in_copy, last_in_copy['timestamp']) + self.apply_env_proc(env_processes, last_in_copy, last_in_copy['timestep']) # not time_step last_in_copy["sub_step"], last_in_copy["time_step"], last_in_copy['run'] = sub_step, time_step, run sL.append(last_in_copy) diff --git a/SimCAD/engine/utils.py b/cadCAD/engine/utils.py similarity index 100% rename from SimCAD/engine/utils.py rename to cadCAD/engine/utils.py diff --git a/SimCAD/utils/__init__.py b/cadCAD/utils/__init__.py similarity index 100% rename from SimCAD/utils/__init__.py rename to cadCAD/utils/__init__.py diff --git a/dist/SimCAD-0.1-py3-none-any.whl b/dist/SimCAD-0.1-py3-none-any.whl deleted file mode 100644 index d6a18cf..0000000 Binary files a/dist/SimCAD-0.1-py3-none-any.whl and /dev/null differ diff --git a/dist/cadCAD-0.1-py3-none-any.whl b/dist/cadCAD-0.1-py3-none-any.whl new file mode 100644 index 0000000..dce3979 Binary files /dev/null and b/dist/cadCAD-0.1-py3-none-any.whl differ diff --git a/setup.py b/setup.py index 619744d..ab1c80c 100644 --- a/setup.py +++ b/setup.py @@ -1,6 +1,6 @@ from setuptools import setup, find_packages -long_description = "SimCAD is a differential games based simulation software package for research, validation, and \ +long_description = "cadCAD is a differential games based simulation software package for research, validation, and \ Computer Aided Design of economic systems. An economic system is treated as a state based model and defined through \ a set of endogenous and exogenous state variables which are updated through mechanisms and environmental processes, \ respectively. Behavioral models, which may be deterministic or stochastic, provide the evolution of the system \ @@ -10,14 +10,14 @@ long_description = "SimCAD is a differential games based simulation software pac processes to understand and visualize network behavior under various conditions. Support for A/B testing policies, \ monte carlo analysis and other common numerical methods is provided." -setup(name='SimCAD', +setup(name='cadCAD', version='0.1', - description="SimCAD: a differential games based simulation software package for research, validation, and \ + description="cadCAD: a differential games based simulation software package for research, validation, and \ Computer Aided Design of economic systems", long_description = long_description, - url='https://github.com/BlockScience/DiffyQ-SimCAD', + url='https://github.com/BlockScience/DiffyQ-cadCAD', author='Joshua E. Jodesty', author_email='joshua@block.science', # license='LICENSE', - packages=find_packages() #['SimCAD'] + packages=find_packages() ) diff --git a/simulations/example_run.py b/simulations/example_run.py index b179e49..3c80d44 100644 --- a/simulations/example_run.py +++ b/simulations/example_run.py @@ -1,9 +1,9 @@ import pandas as pd from tabulate import tabulate # The following imports NEED to be in the exact order -from SimCAD.engine import ExecutionMode, ExecutionContext, Executor +from cadCAD.engine import ExecutionMode, ExecutionContext, Executor from simulations.validation import sweep_config, config1, config2 -from SimCAD import configs +from cadCAD import configs exec_mode = ExecutionMode() diff --git a/simulations/validation/config1.py b/simulations/validation/config1.py index ce74604..4539208 100644 --- a/simulations/validation/config1.py +++ b/simulations/validation/config1.py @@ -2,9 +2,9 @@ from decimal import Decimal import numpy as np from datetime import timedelta -from SimCAD.configuration import append_configs -from SimCAD.configuration.utils import proc_trigger, bound_norm_random, ep_time_step -from SimCAD.configuration.utils.parameterSweep import config_sim +from cadCAD.configuration import append_configs +from cadCAD.configuration.utils import proc_trigger, bound_norm_random, ep_time_step +from cadCAD.configuration.utils.parameterSweep import config_sim seeds = { @@ -78,8 +78,8 @@ def es4p2(_g, step, sL, s, _input): ts_format = '%Y-%m-%d %H:%M:%S' t_delta = timedelta(days=0, minutes=0, seconds=1) def es5p2(_g, step, sL, s, _input): - y = 'timestamp' - x = ep_time_step(s, dt_str=s['timestamp'], fromat_str=ts_format, _timedelta=t_delta) + y = 'timestep' + x = ep_time_step(s, dt_str=s['timestep'], fromat_str=ts_format, _timedelta=t_delta) return (y, x) @@ -98,14 +98,14 @@ genesis_states = { 's2': Decimal(0.0), 's3': Decimal(1.0), 's4': Decimal(1.0), - 'timestamp': '2018-10-01 15:16:24' + 'timestep': '2018-10-01 15:16:24' } raw_exogenous_states = { "s3": es3p1, "s4": es4p2, - "timestamp": es5p2 + "timestep": es5p2 } diff --git a/simulations/validation/config2.py b/simulations/validation/config2.py index 987e8c0..5925c6c 100644 --- a/simulations/validation/config2.py +++ b/simulations/validation/config2.py @@ -2,9 +2,9 @@ from decimal import Decimal import numpy as np from datetime import timedelta -from SimCAD.configuration import append_configs -from SimCAD.configuration.utils import proc_trigger, bound_norm_random, ep_time_step -from SimCAD.configuration.utils.parameterSweep import config_sim +from cadCAD.configuration import append_configs +from cadCAD.configuration.utils import proc_trigger, bound_norm_random, ep_time_step +from cadCAD.configuration.utils.parameterSweep import config_sim seeds = { 'z': np.random.RandomState(1), @@ -77,8 +77,8 @@ def es4p2(_g, step, sL, s, _input): ts_format = '%Y-%m-%d %H:%M:%S' t_delta = timedelta(days=0, minutes=0, seconds=1) def es5p2(_g, step, sL, s, _input): - y = 'timestamp' - x = ep_time_step(s, dt_str=s['timestamp'], fromat_str=ts_format, _timedelta=t_delta) + y = 'timestep' + x = ep_time_step(s, dt_str=s['timestep'], fromat_str=ts_format, _timedelta=t_delta) return (y, x) @@ -97,14 +97,14 @@ genesis_states = { 's2': Decimal(0.0), 's3': Decimal(1.0), 's4': Decimal(1.0), - 'timestamp': '2018-10-01 15:16:24' + 'timestep': '2018-10-01 15:16:24' } raw_exogenous_states = { "s3": es3p1, "s4": es4p2, - "timestamp": es5p2 + "timestep": es5p2 } diff --git a/simulations/validation/sweep_config.py b/simulations/validation/sweep_config.py index c93a703..f23e4ba 100644 --- a/simulations/validation/sweep_config.py +++ b/simulations/validation/sweep_config.py @@ -3,9 +3,9 @@ import numpy as np from datetime import timedelta import pprint -from SimCAD.configuration import append_configs -from SimCAD.configuration.utils import proc_trigger, ep_time_step -from SimCAD.configuration.utils.parameterSweep import config_sim +from cadCAD.configuration import append_configs +from cadCAD.configuration.utils import proc_trigger, ep_time_step +from cadCAD.configuration.utils.parameterSweep import config_sim pp = pprint.PrettyPrinter(indent=4) @@ -93,8 +93,8 @@ def es4p2(_g, step, sL, s, _input): ts_format = '%Y-%m-%d %H:%M:%S' t_delta = timedelta(days=0, minutes=0, seconds=1) def es5p2(_g, step, sL, s, _input): - y = 'timestamp' - x = ep_time_step(s, dt_str=s['timestamp'], fromat_str=ts_format, _timedelta=t_delta) + y = 'timestep' + x = ep_time_step(s, dt_str=s['timestep'], fromat_str=ts_format, _timedelta=t_delta) return (y, x) @@ -114,7 +114,7 @@ genesis_states = { 's2': Decimal(0.0), 's3': Decimal(1.0), 's4': Decimal(1.0), - 'timestamp': '2018-10-01 15:16:24' + 'timestep': '2018-10-01 15:16:24' } @@ -122,7 +122,7 @@ genesis_states = { raw_exogenous_states = { "s3": es3p1, "s4": es4p2, - "timestamp": es5p2 + "timestep": es5p2 }