Skip to content

Commit d3a1319

Browse files
committed
Add missing parameters
1 parent 74b4949 commit d3a1319

File tree

2 files changed

+43
-20
lines changed

2 files changed

+43
-20
lines changed

src/chime_dash/app/services/callbacks.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,20 +115,26 @@ def update_parameters(i, *input_values) -> List[dict]:
115115
dt = inputs_dict["doubling_time"] if inputs_dict["doubling_time"] else None
116116
dfh = inputs_dict["date_first_hospitalized"] if not dt else None
117117
pars = Parameters(
118-
population=inputs_dict["population"],
119118
current_hospitalized=inputs_dict["current_hospitalized"],
120119
date_first_hospitalized=dfh,
121120
doubling_time=dt,
122-
hospitalized=Disposition(
123-
inputs_dict["hospitalized_rate"] / 100, inputs_dict["hospitalized_los"]
121+
hospitalized=Disposition.create(
122+
days=inputs_dict["hospitalized_los"],
123+
rate=inputs_dict["hospitalized_rate"] / 100,
124+
),
125+
icu=Disposition(
126+
days=inputs_dict["icu_los"],
127+
rate=inputs_dict["icu_rate"] / 100,
124128
),
125-
icu=Disposition(inputs_dict["icu_rate"] / 100, inputs_dict["icu_los"]),
126129
infectious_days=inputs_dict["infectious_days"],
127130
market_share=inputs_dict["market_share"] / 100,
128131
n_days=inputs_dict["n_days"],
132+
population=inputs_dict["population"],
133+
recovered=0, #FIXME input or pass through from defaults is required!
129134
relative_contact_rate=inputs_dict["relative_contact_rate"] / 100,
130-
ventilated=Disposition(
131-
inputs_dict["ventilated_rate"] / 100, inputs_dict["ventilated_los"]
135+
ventilated=Disposition.create(
136+
days=inputs_dict["ventilated_los"],
137+
rate=inputs_dict["ventilated_rate"] / 100,
132138
),
133139
max_y_axis=inputs_dict.get("max_y_axis_value", None),
134140
)

src/chime_dash/app/utils/__init__.py

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -60,38 +60,55 @@ def parameters_serializer(p: Parameters):
6060

6161
def parameters_deserializer(p_json: str):
6262
values = loads(p_json)
63-
dfh = (
64-
parse_date(values["date_first_hospitalized"])
65-
if values["date_first_hospitalized"]
66-
else None
67-
)
63+
64+
dates = {
65+
key: parse_date(values[key]) if values[key] else None
66+
for key in (
67+
"current_date",
68+
"date_first_hospitalized",
69+
"mitigation_date",
70+
)
71+
}
6872
result = Parameters(
73+
current_date=dates["current_date"],
6974
current_hospitalized=values["current_hospitalized"],
70-
hospitalized=Disposition(*values["hospitalized"]),
71-
icu=Disposition(*values["icu"]),
72-
relative_contact_rate=values["relative_contact_rate"],
73-
ventilated=Disposition(*values["ventilated"]),
74-
current_date=parse_date(values["current_date"]),
75-
date_first_hospitalized=dfh,
76-
doubling_time=values["doubling_time"],
75+
hospitalized=Disposition.create(
76+
days=values["hospitalized"][0],
77+
rate=values["hospitalized"][1],
78+
),
79+
icu=Disposition.create(
80+
days=values["icu"][0],
81+
rate=values["icu"][1],
82+
),
7783
infectious_days=values["infectious_days"],
84+
date_first_hospitalized=dates["date_first_hospitalized"],
85+
doubling_time=values["doubling_time"],
7886
market_share=values["market_share"],
7987
max_y_axis=values["max_y_axis"],
88+
mitigation_date=values["mitigation_date"],
8089
n_days=values["n_days"],
8190
population=values["population"],
8291
recovered=values["recovered"],
8392
region=values["region"],
93+
relative_contact_rate=values["relative_contact_rate"],
94+
ventilated=Disposition.create(
95+
days=values["ventilated"][0],
96+
rate=values["ventilated"][1],
97+
),
8498
)
8599

100+
# FIXME: parameters should be immutable
101+
# Working around validators in __init__
86102
for key, value in values.items():
87103

88104
if result.__dict__[key] != value and key not in (
105+
"current_date",
106+
"date_first_hospitalized",
89107
"dispositions",
90108
"hospitalized",
91109
"icu",
110+
"mitigation_date",
92111
"ventilated",
93-
"current_date",
94-
"date_first_hospitalized",
95112
):
96113
result.__dict__[key] = value
97114

0 commit comments

Comments
 (0)