Esempio n. 1
0
 def run(self):
     super().run()
     models = ["crude", "delay", "overflow"]
     kind = st.sidebar.selectbox(_("Clinical model"), models)
     m = SEAIR(region="BR", disease=covid19)
     cm = m.clinical(kind)
     cm.ui.summary_table(subheader=_("Parameters table"))
Esempio n. 2
0
def main(embed=False):
    if not embed:
        st.css(keep_menu=True)
        st.sidebar.logo()

    models = ["crude", "delay", "overflow"]
    kind = st.sidebar.selectbox(_("Clinical model"), models)
    m = SEAIR(region="BR", disease=covid19)

    cm = m.clinical(kind)
    cm.ui.summary_table(subheader=_("Parameters table"))
Esempio n. 3
0
    def handle_explore_option(self, option):
        if option == "model":
            model = SEAIR(region=self.region, disease="covid-19")
            model.run(180)
            object = model.clinical.overflow_model()
        elif option == "region":
            object = self.region
        else:
            import pydemic_ui.components as object

        return object
Esempio n. 4
0
def start_model(region: RegionT, disease="covid-19"):
    """
    Start model with cases data for the given region.
    """

    cases = region.pydemic.epidemic_curve(disease=disease,
                                          real=True,
                                          keep_observed=True)
    m = SEAIR(region=region, disease=disease)
    m.set_cases(cases, adjust_R0=True, save_observed=True)
    m.info.save_event("simulation_start")
    return m
Esempio n. 5
0
def model(*, daily_cases, runner, period, disease, **kwargs):
    """
    Return model from parameters
    """
    m = SEAIR(disease=disease, **kwargs)

    recovered = 0.0
    exposed = daily_cases * m.incubation_period
    infectious = daily_cases * m.infectious_period * m.Qs
    asymptomatic = daily_cases * m.infectious_period * (1 - m.Qs)
    susceptible = m.population - exposed - asymptomatic - infectious - recovered

    m.set_ic(state=(susceptible, exposed, asymptomatic, infectious, recovered))
    m = runner(m, period)
    return m
Esempio n. 6
0
def main(embed=False, disease=None):
    """
    Main interface of the API explorer.
    """
    if not embed:
        st.css(keep_menu=True)
        st.sidebar.logo()
    where = st if embed else st.sidebar

    st.title(_("Pydemic-UI API explorer"))
    where.header(_("Options"))

    region = where.text_input(_("Mundi region code"), value="BR")
    try:
        region = mundi.region(region)
    except LookupError:
        where.error("Invalid mundi region code.")
        return

    opts = {
        "model": _("A Pydemic Model"),
        "region": _("A Mundi Region"),
        "components": _("Input components"),
    }
    msg = _("What do you want to explore?")
    opt = where.radio(msg, list(opts), format_func=opts.get)

    if opt == "model":
        model = SEAIR(region=region, disease="covid-19")
        model.run(180)
        obj = model.clinical.overflow_model()
    elif opt == "region":
        obj = region
    else:
        import pydemic_ui.components as obj

    explore_object_attribute(opt, obj, where=where)
Esempio n. 7
0
def seir(run=120, region="BR", disease=covid19, **kwargs):
    """
    A simple SEIR example.
    """

    m = SEAIR(region=region, disease=disease, **kwargs)
    m.set_ic(cases=1e-6 * m.population)
    m.run(run)
    return m.clinical.overflow_model()
def get_model(region):
    region = mundi.region(region)
    data = region.pydemic.epidemic_curve()
    empirical_CFR = (data["deaths"] / data["cases"]).mean()
    notification_rate = min(0.5, covid19.CFR(region=region) / empirical_CFR)

    m = SEAIR(region=region, R0=R0[region.id])
    real_data = data.copy()
    real_data["cases"] /= notification_rate
    m.set_cases(real_data, save_observed=True)
    m.run(60)
    return m.clinical.overflow_model()
Esempio n. 9
0
    return predictor


def fit(self, data):
    """
    Fit model to epidemic curve.
    """
    self.set_cases(data, adjust_R0=True)


Model.predictor = predictor
Model.fit = fit

region = mundi.region("IT")
model = SEAIR(region=region).clinical.overflow_model()
params = model.disease_params
predictor = model.predictor()

curves: pd.DataFrame = region.pydemic.epidemic_curve()
curves = curves.reset_index().drop_duplicates("date",
                                              keep="first").set_index("date")

tf = curves.index[-1]
notification_ratio = params.CFR / (curves.loc[tf, "deaths"] /
                                   curves.loc[tf, "cases"])
curves["cases"] /= notification_ratio | dbg

start, end = curves.index[[0, -1]]
full_index = pd.to_datetime(np.arange((end - start).days),
                            unit="D",
Esempio n. 10
0
 def test_seair_initialization(self):
     # Probability of developing symptoms
     assert SEAIR(disease="disease").prob_symptoms == 1.0
     assert SEAIR(disease=covid19).prob_symptoms == covid19.prob_symptoms()
     assert SEAIR(prob_symptoms=0.5).prob_symptoms == 0.5
     assert SEAIR(Qs=0.5).prob_symptoms == 0.5