Skip to content

Commit 8bfd079

Browse files
author
Michael Becker
committed
Run black: Fix all the formatting!!!
1 parent a068838 commit 8bfd079

File tree

10 files changed

+209
-173
lines changed

10 files changed

+209
-173
lines changed

src/app.py

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import streamlit as st # type: ignore
55

66
from penn_chime.presentation import (
7-
#additional_projections_chart,
7+
# additional_projections_chart,
88
display_header,
99
display_sidebar,
1010
display_n_days_slider,
@@ -17,9 +17,14 @@
1717
write_definitions,
1818
write_footer,
1919
)
20-
from penn_chime.settings import DEFAULTS
20+
from penn_chime.settings import DEFAULTS
2121
from penn_chime.models import sim_sir_df, build_admissions_df, build_census_df
22-
from penn_chime.charts import additional_projections_chart, admitted_patients_chart, new_admissions_chart
22+
from penn_chime.charts import (
23+
additional_projections_chart,
24+
admitted_patients_chart,
25+
new_admissions_chart,
26+
)
27+
2328
# This is somewhat dangerous:
2429
# Hide the main menu with "Rerun", "run on Save", "clear cache", and "record a screencast"
2530
# This should not be hidden in prod, but removed
@@ -32,27 +37,23 @@
3237

3338
if st.checkbox("Show more info about this tool"):
3439
notes = "The total size of the susceptible population will be the entire catchment area for Penn Medicine entities (HUP, PAH, PMC, CCH)"
35-
show_more_info_about_this_tool(
36-
st=st,
37-
parameters=p,
38-
inputs=DEFAULTS,
39-
notes=notes
40-
)
40+
show_more_info_about_this_tool(st=st, parameters=p, inputs=DEFAULTS, notes=notes)
4141

4242
# PRESENTATION
4343
# Two more combination variable initialization / input element creation
4444
as_date = st.checkbox(label="Present result as dates instead of days", value=False)
4545
display_n_days_slider(st, p, DEFAULTS)
4646

4747
# begin format data
48-
admissions_df = build_admissions_df(p=p) # p.n_days, *p.dispositions)
48+
admissions_df = build_admissions_df(p=p) # p.n_days, *p.dispositions)
4949
census_df = build_census_df(admissions_df, parameters=p)
5050
# end format data
5151

5252
st.subheader("New Admissions")
5353
st.markdown("Projected number of **daily** COVID-19 admissions at Penn hospitals")
5454
st.altair_chart(
55-
new_admissions_chart(alt, admissions_df, parameters=p, as_date=as_date), use_container_width=True
55+
new_admissions_chart(alt, admissions_df, parameters=p, as_date=as_date),
56+
use_container_width=True,
5657
)
5758
if st.checkbox("Show Projected Admissions in tabular form"):
5859
draw_projected_admissions_table(st, admissions_df, as_date=as_date)
@@ -61,7 +62,8 @@
6162
"Projected **census** of COVID-19 patients, accounting for arrivals and discharges at Penn hospitals"
6263
)
6364
st.altair_chart(
64-
admitted_patients_chart(alt=alt, census=census_df, parameters=p, as_date=as_date), use_container_width=True
65+
admitted_patients_chart(alt=alt, census=census_df, parameters=p, as_date=as_date),
66+
use_container_width=True,
6567
)
6668
if st.checkbox("Show Projected Census in tabular form"):
6769
draw_census_table(st, census_df, as_date=as_date)
@@ -70,10 +72,8 @@
7072
)
7173
if st.checkbox("Show Additional Projections"):
7274
show_additional_projections(
73-
st, alt,
74-
additional_projections_chart,
75-
parameters=p,
76-
as_date=as_date)
75+
st, alt, additional_projections_chart, parameters=p, as_date=as_date
76+
)
7777
if st.checkbox("Show Raw SIR Simulation Data"):
7878
draw_raw_sir_simulation_table(st, parameters=p, as_date=as_date)
7979
write_definitions(st)

src/cli.py

Lines changed: 64 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -37,30 +37,63 @@ def validate(string):
3737

3838
def parse_args():
3939
"""Parse args."""
40-
parser = ArgumentParser(description='CHIME')
40+
parser = ArgumentParser(description="CHIME")
4141

42-
parser.add_argument('--file', type=open, action=FromFile)
42+
parser.add_argument("--file", type=open, action=FromFile)
4343
parser.add_argument(
44-
'--prefix',
45-
type=str,
46-
default=datetime.now().strftime("%Y.%m.%d.%H.%M."),
44+
"--prefix", type=str, default=datetime.now().strftime("%Y.%m.%d.%H.%M."),
4745
)
4846

4947
for arg, cast, min_value, max_value, help in (
50-
('--current-hospitalized', int, 0, None, "Currently Hospitalized COVID-19 Patients (>= 0)"),
51-
('--doubling-time', float, 0.0, None, "Doubling time before social distancing (days)"),
52-
('--hospitalized-los', int, 0, None, "Hospitalized Length of Stay (days)"),
53-
('--hospitalized-rate', float, 0.00001, 1.0, "Hospitalized Rate: 0.00001 - 1.0"),
54-
('--icu-los', int, 0, None, "ICU Length of Stay (days)"),
55-
('--icu-rate', float, 0.0, 1.0, "ICU Rate: 0.0 - 1.0"),
56-
('--known-infected', int, 0, None,
57-
"Currently Known Regional Infections (>=0) (only used to compute detection rate - does not change projections)"),
58-
('--market_share', float, 0.00001, 1.0, "Hospital Market Share (0.00001 - 1.0)"),
59-
('--n-days', int, 0, None, "Nuber of days to project >= 0"),
60-
('--relative-contact-rate', float, 0.0, 1.0, "Social Distancing Reduction Rate: 0.0 - 1.0"),
61-
('--susceptible', int, 1, None, "Regional Population >= 1"),
62-
('--ventilated-los', int, 0, None, "Hospitalized Length of Stay (days)"),
63-
('--ventilated-rate', float, 0.0, 1.0, "Ventilated Rate: 0.0 - 1.0"),
48+
(
49+
"--current-hospitalized",
50+
int,
51+
0,
52+
None,
53+
"Currently Hospitalized COVID-19 Patients (>= 0)",
54+
),
55+
(
56+
"--doubling-time",
57+
float,
58+
0.0,
59+
None,
60+
"Doubling time before social distancing (days)",
61+
),
62+
("--hospitalized-los", int, 0, None, "Hospitalized Length of Stay (days)"),
63+
(
64+
"--hospitalized-rate",
65+
float,
66+
0.00001,
67+
1.0,
68+
"Hospitalized Rate: 0.00001 - 1.0",
69+
),
70+
("--icu-los", int, 0, None, "ICU Length of Stay (days)"),
71+
("--icu-rate", float, 0.0, 1.0, "ICU Rate: 0.0 - 1.0"),
72+
(
73+
"--known-infected",
74+
int,
75+
0,
76+
None,
77+
"Currently Known Regional Infections (>=0) (only used to compute detection rate - does not change projections)",
78+
),
79+
(
80+
"--market_share",
81+
float,
82+
0.00001,
83+
1.0,
84+
"Hospital Market Share (0.00001 - 1.0)",
85+
),
86+
("--n-days", int, 0, None, "Nuber of days to project >= 0"),
87+
(
88+
"--relative-contact-rate",
89+
float,
90+
0.0,
91+
1.0,
92+
"Social Distancing Reduction Rate: 0.0 - 1.0",
93+
),
94+
("--susceptible", int, 1, None, "Regional Population >= 1"),
95+
("--ventilated-los", int, 0, None, "Hospitalized Length of Stay (days)"),
96+
("--ventilated-rate", float, 0.0, 1.0, "Ventilated Rate: 0.0 - 1.0"),
6497
):
6598
parser.add_argument(arg, type=validator(cast, min_value, max_value))
6699
return parser.parse_args()
@@ -83,22 +116,24 @@ def main():
83116
ventilated=RateLos(a.ventilated_rate, a.ventilated_los),
84117
)
85118

86-
raw_df = DataFrame({
87-
"Susceptible": p.susceptible_v,
88-
"Infected": p.infected_v,
89-
"Recovered": p.recovered_v,
90-
})
119+
raw_df = DataFrame(
120+
{
121+
"Susceptible": p.susceptible_v,
122+
"Infected": p.infected_v,
123+
"Recovered": p.recovered_v,
124+
}
125+
)
91126
admits_df = build_admissions_df(p.n_days, *p.dispositions)
92127
census_df = build_census_df(admits_df, *p.lengths_of_stay)
93128

94129
prefix = a.prefix
95130
for df, name in (
96-
(raw_df, 'raw'),
97-
(admits_df, 'admits'),
98-
(census_df, 'census'),
131+
(raw_df, "raw"),
132+
(admits_df, "admits"),
133+
(census_df, "census"),
99134
):
100-
df.to_csv(prefix + name + '.csv')
135+
df.to_csv(prefix + name + ".csv")
101136

102137

103-
if __name__ == '__main__':
138+
if __name__ == "__main__":
104139
main()

src/penn_chime/charts.py

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
from altair import Chart # type: ignore
32
import pandas as pd # type: ignore
43
import numpy as np # type: ignore
@@ -8,10 +7,7 @@
87

98

109
def new_admissions_chart(
11-
alt,
12-
projection_admits: pd.DataFrame,
13-
parameters: Parameters,
14-
as_date: bool = False,
10+
alt, projection_admits: pd.DataFrame, parameters: Parameters, as_date: bool = False,
1511
) -> Chart:
1612
"""docstring"""
1713
plot_projection_days = parameters.n_days - 10
@@ -49,10 +45,7 @@ def new_admissions_chart(
4945

5046

5147
def admitted_patients_chart(
52-
alt,
53-
census: pd.DataFrame,
54-
parameters: Parameters,
55-
as_date: bool = False
48+
alt, census: pd.DataFrame, parameters: Parameters, as_date: bool = False
5649
) -> Chart:
5750
"""docstring"""
5851

@@ -63,7 +56,7 @@ def admitted_patients_chart(
6356
x_kwargs = {"shorthand": "date:T", "title": "Date"}
6457
idx = "date:T"
6558
else:
66-
x_kwargs ={"shorthand": "day", "title": "Days from today"}
59+
x_kwargs = {"shorthand": "day", "title": "Days from today"}
6760
idx = "day"
6861

6962
y_scale = alt.Scale()
@@ -91,11 +84,7 @@ def admitted_patients_chart(
9184

9285

9386
def additional_projections_chart(
94-
alt,
95-
i: np.ndarray,
96-
r: np.ndarray,
97-
as_date: bool = False,
98-
max_y_axis: int = None
87+
alt, i: np.ndarray, r: np.ndarray, as_date: bool = False, max_y_axis: int = None
9988
) -> Chart:
10089
dat = pd.DataFrame({"Infected": i, "Recovered": r})
10190
dat["day"] = dat.index

src/penn_chime/defaults.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
class Regions:
77
"""Arbitrary number of counties."""
8+
89
def __init__(self, **kwargs):
910
susceptible = 0
1011
for key, value in kwargs.items():
@@ -19,18 +20,18 @@ def susceptible(self):
1920

2021
class Constants:
2122
def __init__(
22-
self, *,
23+
self,
24+
*,
2325
current_hospitalized: int,
2426
doubling_time: int,
2527
known_infected: int,
2628
n_days: int,
2729
relative_contact_rate: int,
2830
region: Regions,
29-
3031
hospitalized: RateLos,
3132
icu: RateLos,
3233
ventilated: RateLos,
33-
market_share: float = 1.0
34+
market_share: float = 1.0,
3435
):
3536
self.region = region
3637
self.known_infected = known_infected

src/penn_chime/models.py

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77

88

99
def sir(
10-
s: float, i: float, r: float,
11-
beta: float, gamma: float, n: float
10+
s: float, i: float, r: float, beta: float, gamma: float, n: float
1211
) -> Tuple[float, float, float]:
1312
"""The SIR model, one time step."""
1413
s_n = (-beta * s * i) + s
@@ -26,8 +25,7 @@ def sir(
2625

2726

2827
def gen_sir(
29-
s: float, i: float, r: float,
30-
beta: float, gamma: float, n_days: int
28+
s: float, i: float, r: float, beta: float, gamma: float, n_days: int
3129
) -> Generator[Tuple[float, float, float], None, None]:
3230
"""Simulate SIR model forward in time yielding tuples."""
3331
s, i, r = (float(v) for v in (s, i, r))
@@ -38,8 +36,7 @@ def gen_sir(
3836

3937

4038
def sim_sir(
41-
s: float, i: float, r: float,
42-
beta: float, gamma: float, n_days: int
39+
s: float, i: float, r: float, beta: float, gamma: float, n_days: int
4340
) -> Tuple[np.ndarray, np.ndarray, np.ndarray]:
4441
"""Simulate the SIR model forward in time."""
4542
s, i, r = (float(v) for v in (s, i, r))
@@ -79,20 +76,20 @@ def get_dispositions(
7976
def build_admissions_df(p) -> pd.DataFrame:
8077
"""Build admissions dataframe from Parameters."""
8178
days = np.array(range(0, p.n_days + 1))
82-
data_dict = dict(zip(["day", "Hospitalized", "ICU", "Ventilated"],
83-
[days] + [disposition for disposition in p.dispositions]
84-
))
79+
data_dict = dict(
80+
zip(
81+
["day", "Hospitalized", "ICU", "Ventilated"],
82+
[days] + [disposition for disposition in p.dispositions],
83+
)
84+
)
8585
projection = pd.DataFrame.from_dict(data_dict)
8686
# New cases
8787
projection_admits = projection.iloc[:-1, :] - projection.shift(1)
8888
projection_admits["day"] = range(projection_admits.shape[0])
8989
return projection_admits
9090

9191

92-
def build_census_df(
93-
projection_admits: pd.DataFrame,
94-
parameters
95-
) -> pd.DataFrame:
92+
def build_census_df(projection_admits: pd.DataFrame, parameters) -> pd.DataFrame:
9693
"""ALOS for each category of COVID-19 case (total guesses)"""
9794
n_days = np.shape(projection_admits)[0]
9895
hosp_los, icu_los, vent_los = parameters.lengths_of_stay
@@ -115,8 +112,9 @@ def build_census_df(
115112
census_df = census_df[["day", "Hospitalized", "ICU", "Ventilated"]]
116113
census_df = census_df.head(n_days)
117114
census_df = census_df.rename(
118-
columns={disposition: f"{disposition}"
119-
for disposition
120-
in ("Hospitalized", "ICU", "Ventilated")}
115+
columns={
116+
disposition: f"{disposition}"
117+
for disposition in ("Hospitalized", "ICU", "Ventilated")
118+
}
121119
)
122120
return census_df

0 commit comments

Comments
 (0)