Ejemplo n.º 1
0
def plot_regional_outputs(
        plotter,
        calib_dir_path,
        mcmc_tables,
        targets,
        regions,
        indicator,
        file_name,
        max_y_values=(),
):
    chosen_outputs = [
        indicator + "_for_cluster_" + i_region.replace("-", "_")
        for i_region in regions
    ]
    uncertainty_df = get_uncertainty_df(calib_dir_path, mcmc_tables, targets)
    x_low, x_up = STANDARD_X_LIMITS
    plots.uncertainty.plots.plot_multi_output_timeseries_with_uncertainty(
        plotter,
        uncertainty_df,
        chosen_outputs,
        [0],
        targets,
        False,
        x_low,
        x_up,
        STANDARD_N_TICKS,
        title_font_size=STANDARD_TITLE_FONTSIZE,
        label_font_size=STANDARD_LABEL_FONTSIZE,
        file_name=file_name,
        max_y_values=max_y_values,
        custom_titles=[i_region.replace("-", " ") for i_region in regions],
        custom_sup_title=indicator.replace("_", " "),
    )
Ejemplo n.º 2
0
def plot_seroprevalence_by_age(
    plotter: StreamlitPlotter,
    calib_dir_path: str,
    mcmc_tables: List[pd.DataFrame],
    mcmc_params: List[pd.DataFrame],
    targets: dict,
    app_name: str,
    region: str,
):

    n_columns = 2
    n_rows = 2

    fig = pyplot.figure(constrained_layout=True,
                        figsize=(n_columns * 7, n_rows * 5))  # (w, h)
    spec = fig.add_gridspec(ncols=n_columns, nrows=n_rows)
    i_row = 0
    i_col = 0
    for region in Region.PHILIPPINES_REGIONS:
        calib_dir_path = calib_dir_path.replace("philippines", region)
        uncertainty_df = get_uncertainty_df(calib_dir_path, mcmc_tables,
                                            targets)
        # available_scenarios = uncertainty_df["scenario"].unique()
        # selected_scenario = st.sidebar.selectbox("Select scenario", available_scenarios, key=str())
        selected_scenario = 0

        # min_time = int(min(uncertainty_df["time"]))
        # max_time = int(max(uncertainty_df["time"]))
        # time = st.sidebar.slider("time", min_time, max_time, max_time)
        time = 397

        with pyplot.style.context("ggplot"):
            ax = fig.add_subplot(spec[i_row, i_col])
            _, _, _ = plots.uncertainty.plots.plot_seroprevalence_by_age(
                plotter,
                uncertainty_df,
                selected_scenario,
                time,
                axis=ax,
                name=region.title())

        i_col += 1
        if i_col >= n_columns:
            i_col = 0
            i_row += 1
    plotter.save_figure(fig,
                        filename="sero_by_age",
                        subdir="outputs",
                        title_text="")
Ejemplo n.º 3
0
def plot_scenarios_multioutput(
    plotter: StreamlitPlotter,
    calib_dir_path: str,
    mcmc_tables: List[pd.DataFrame],
    mcmc_params: List[pd.DataFrame],
    targets: dict,
    app_name: str,
    region: str,
):
    uncertainty_df = get_uncertainty_df(calib_dir_path, mcmc_tables, targets)
    (
        dpi_request,
        capitalise_first_letter,
        is_logscale,
        is_targets,
        is_overlay_uncertainty,
        is_legend,
    ) = (300, False, False, True, True, True)

    scenario_outputs = [
        "notifications", "infection_deaths", "icu_occupancy",
        "hospital_occupancy"
    ]

    # From Litton et al.
    icu_capacities = [{}] * len(scenario_outputs)
    icu_capacities[2] = \
        {
            "base ICU beds": 499,
            "max physical ICU beds": 1092,
            "max surge ICU capacity": 1665,
        }

    plots.uncertainty.plots.plot_multi_output_timeseries_with_uncertainty(
        plotter,
        uncertainty_df,
        scenario_outputs,
        uncertainty_df["scenario"].unique(),
        targets,
        is_logscale,
        STANDARD_X_LIMITS[0],
        426,
        title_font_size=STANDARD_TITLE_FONTSIZE,
        label_font_size=STANDARD_LABEL_FONTSIZE,
        file_name="multi_scenario",
        multi_panel_hlines=icu_capacities,
        max_y_values=(24e3, 750, 3e3, 3e4),
    )
Ejemplo n.º 4
0
def multi_country_uncertainty(plotter, calib_dir_path, mcmc_tables,
                              mcmc_params, targets, app_name, region_names):
    """
    Code taken directly from the fit calibration file at this stage.
    """

    is_logscale = st.sidebar.checkbox("Log scale")
    n_xticks = st.sidebar.slider("Number of x ticks", 1, 10, 6)
    title_font_size = st.sidebar.slider("Title font size", 1, 30, 12)
    label_font_size = st.sidebar.slider("Label font size", 1, 30, 10)
    uncertainty_df = []

    for i_region in range(len(mcmc_tables)):
        uncertainty_df.append(
            get_uncertainty_df(calib_dir_path[i_region], mcmc_tables[i_region],
                               targets))

        if i_region == 0:
            available_outputs = [
                o["output_key"] for o in targets[i_region].values()
            ]
            chosen_output = st.sidebar.selectbox("Select calibration target",
                                                 available_outputs)
            x_min = round(min(uncertainty_df[0]["time"]))
            x_max = round(max(uncertainty_df[0]["time"]))
            x_low, x_up = selectors.create_xrange_selector(x_min, x_max)
            available_scenarios = uncertainty_df[0]["scenario"].unique()
            selected_scenarios = st.multiselect("Select scenarios",
                                                available_scenarios)

    plots.uncertainty.plots.plot_multicountry_timeseries_with_uncertainty(
        plotter,
        uncertainty_df,
        chosen_output,
        selected_scenarios,
        targets,
        region_names,
        is_logscale,
        x_low,
        x_up,
        n_xticks,
        title_font_size=title_font_size,
        label_font_size=label_font_size,
    )
Ejemplo n.º 5
0
def plot_scenarios(
    plotter: StreamlitPlotter,
    calib_dir_path: str,
    mcmc_tables: List[pd.DataFrame],
    mcmc_params: List[pd.DataFrame],
    targets: dict,
    app_name: str,
    region: str,
):
    chosen_output = "notifications"
    targets = {
        k: v
        for k, v in targets.items() if v["output_key"] == chosen_output
    }
    uncertainty_df = get_uncertainty_df(calib_dir_path, mcmc_tables, targets)
    selected_scenarios = uncertainty_df["scenario"].unique()
    (
        title_font_size,
        label_font_size,
        dpi_request,
        capitalise_first_letter,
        is_logscale,
        is_targets,
        is_overlay_uncertainty,
        is_legend,
    ) = (8, 8, 300, False, False, True, True, True)
    plots.uncertainty.plots.plot_timeseries_with_uncertainty(
        plotter,
        uncertainty_df,
        chosen_output,
        selected_scenarios,
        targets,
        is_logscale,
        STANDARD_X_LIMITS[0],
        426,
        add_targets=is_targets,
        overlay_uncertainty=is_overlay_uncertainty,
        title_font_size=title_font_size,
        label_font_size=label_font_size,
        dpi_request=dpi_request,
        capitalise_first_letter=capitalise_first_letter,
        legend=is_legend,
    )
Ejemplo n.º 6
0
def plot_multiple_timeseries_with_uncertainty(
    plotter: StreamlitPlotter,
    calib_dir_path: str,
    mcmc_tables: List[pd.DataFrame],
    mcmc_params: List[pd.DataFrame],
    targets: dict,
    app_name: str,
    region: str,
):

    plt.style.use("ggplot")
    uncertainty_df = get_uncertainty_df(calib_dir_path, mcmc_tables, targets)
    chosen_outputs = STATEWIDE_OUTPUTS

    # Add vertical lines for the dates of specific policy interventions to the first panel
    multi_panel_vlines = \
        [{}] * len(chosen_outputs)
    multi_panel_vlines[0] = \
        {
            "postcodes": 184,  # 2nd July (11:59pm 1st)
            "stage 3": 191,  # 9th July (11:59pm 8th)
            "face coverings": 205,  # 23rd July (11:59pm 22nd)
            "stage 4": 215.75  # 6pm 2nd August
        }

    x_low, x_up = STANDARD_X_LIMITS
    plots.uncertainty.plots.plot_multi_output_timeseries_with_uncertainty(
        plotter,
        uncertainty_df,
        chosen_outputs,
        [0],
        targets,
        False,
        x_low,
        x_up,
        STANDARD_N_TICKS,
        title_font_size=STANDARD_TITLE_FONTSIZE,
        label_font_size=STANDARD_LABEL_FONTSIZE,
        file_name="multi_output",
        multi_panel_vlines=multi_panel_vlines,
    )