|
| 1 | +"""App.""" |
| 2 | + |
| 3 | +import os |
| 4 | + |
| 5 | +import altair as alt # type: ignore |
| 6 | +import streamlit as st # type: ignore |
| 7 | + |
| 8 | +from ..model.parameters import Parameters |
| 9 | +from ..model.sir import Sir |
| 10 | +from .charts import ( |
| 11 | + build_admits_chart, |
| 12 | + build_census_chart, |
| 13 | + build_sim_sir_w_date_chart, |
| 14 | +) |
| 15 | +from .display import ( |
| 16 | + display_download_link, |
| 17 | + display_footer, |
| 18 | + display_header, |
| 19 | + display_sidebar, |
| 20 | + hide_menu_style, |
| 21 | +) |
| 22 | + |
| 23 | + |
| 24 | +def main(): |
| 25 | + # This is somewhat dangerous: |
| 26 | + # Hide the main menu with "Rerun", "run on Save", "clear cache", and "record a screencast" |
| 27 | + # This should not be hidden in prod, but removed |
| 28 | + # In dev, this should be shown |
| 29 | + st.markdown(hide_menu_style, unsafe_allow_html=True) |
| 30 | + |
| 31 | + d = Parameters.create(os.environ, []) |
| 32 | + p = display_sidebar(st, d) |
| 33 | + m = Sir(p) |
| 34 | + |
| 35 | + display_header(st, m, p) |
| 36 | + |
| 37 | + st.subheader("New Admissions") |
| 38 | + st.markdown("Projected number of **daily** COVID-19 admissions.") |
| 39 | + admits_chart = build_admits_chart(alt=alt, admits_floor_df=m.admits_floor_df, max_y_axis=p.max_y_axis) |
| 40 | + st.altair_chart(admits_chart, use_container_width=True) |
| 41 | + display_download_link( |
| 42 | + st, |
| 43 | + filename=f"{p.current_date}_projected_admits.csv", |
| 44 | + df=m.admits_df, |
| 45 | + ) |
| 46 | + |
| 47 | + st.subheader("Admitted Patients (Census)") |
| 48 | + st.markdown("Projected **census** of COVID-19 patients, accounting for arrivals and discharges.") |
| 49 | + census_chart = build_census_chart(alt=alt, census_floor_df=m.census_floor_df, max_y_axis=p.max_y_axis) |
| 50 | + st.altair_chart(census_chart, use_container_width=True) |
| 51 | + display_download_link( |
| 52 | + st, |
| 53 | + filename=f"{p.current_date}_projected_census.csv", |
| 54 | + df=m.census_df, |
| 55 | + ) |
| 56 | + |
| 57 | + st.subheader("Susceptible, Infected, and Recovered") |
| 58 | + st.markdown("The number of susceptible, infected, and recovered individuals in the hospital catchment region at any given moment") |
| 59 | + sim_sir_w_date_chart = build_sim_sir_w_date_chart(alt=alt, sim_sir_w_date_floor_df=m.sim_sir_w_date_floor_df) |
| 60 | + st.altair_chart(sim_sir_w_date_chart, use_container_width=True) |
| 61 | + display_download_link( |
| 62 | + st, |
| 63 | + filename=f"{p.current_date}_sim_sir_w_date.csv", |
| 64 | + df=m.sim_sir_w_date_df, |
| 65 | + ) |
| 66 | + display_footer(st) |
0 commit comments