-
Notifications
You must be signed in to change notification settings - Fork 0
/
parameters.py
50 lines (41 loc) · 1.71 KB
/
parameters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import json
DEFAULT_PARAM_PATH = "default_params.json"
PARAM_TYPES = ["economic assumption",
"corporate tax baseline",
"individual income tax baseline"]
def get_default_params():
""""
Read parameters from default_params.json
returns: dictionary with keys "economic assumption", "corporate tax baseline"
and "individual income tax baseline" with all params
sorted into the dictionary corresponding to param_type
"""
param_dict = {"economic assumption": {},
"corporate tax baseline": {},
"individual income tax baseline": {}}
with open(DEFAULT_PARAM_PATH) as js:
default_params = json.loads(js.read())
for param in default_params:
param_type = default_params[param]["param_type"]
v = default_params[param]["value"]
assert isinstance(v, list)
if len(v) > 0:
param_dict[param_type][param] = v[0]
else:
param_dict[param_type][param] = None
return param_dict
def read_reform(reform):
"""
Read reform and fill in default parameters where paramters are not specified
returns: dictionary with keys "economic assumption", "corporate tax baseline"
and "individual income tax baseline" with all params
sorted into the dictionary corresponding to param_type
"""
default_params = get_default_params()
for param_type in default_params:
for param in default_params[param_type]:
if param in reform[param_type]:
reform[param_type][param] = reform[param_type][param]
else:
reform[param_type][param] = default_params[param_type][param]
return reform