Esempio n. 1
0
def fit_IDF(p_reported, ifr):
    name = ['Île de France']
    departements, size = build_patches.patches_from_regions(name)
    data = gather_hosp_data(departements[0])
    fitter = lockdown.LockdownFitter(data, name[0], size[0], '2020-03-16')
    fitter.setup_fit('Before lockdown',
                     '2020-03-01',
                     '2020-03-27', [17],
                     columns=['Hospital deaths'])
    fitter.setup_fit('Lockdown', '2020-03-16', '2020-05-11', [18, 28, 28])
    fitter.setup_fit('Easing of lockdown', '2020-05-11', '2020-06-10',
                     [10, 15, 15])
    fitter.setup_fit('Second wave', '2020-07-10', '2020-10-30', [18, 28, 28])
    fitter.setup_fit('Second lockdown', '2020-10-30', '2020-12-01',
                     [13, 18, 18])
    fitter.setup_fit('Easing of second lockdown', '2020-11-25', '2020-12-18',
                     [10, 15, 15])
    fitter.compute_growth_rates(verbose=True)

    try:
        EI_dist = lockdown.EI_dist_covid(p_reported)
        fitter.prepare_sir(EI_dist, ifr)
        for fit in fitter.fits[2:]:
            if fit.name == 'Second lockdown':
                continue
            fitter.adjust_date_of_change(fit.name, 'Hospital admissions')
        fitter.compute_sir('2020-12-31')

    except Exception as error:
        print('Error !!!!!!')
        print(error)
        print(traceback.format_exc())
    finally:
        return fitter
Esempio n. 2
0
def fit_PACA(p_reported, ifr, curfew=True):
    name = ["Provence-Alpes-Côte d’Azur"]
    departements, size = build_patches.patches_from_regions(name)
    data = gather_hosp_data(departements[0])
    fitter = lockdown.LockdownFitter(data, name[0], size[0], '2020-03-16')
    fitter.setup_fit('Before lockdown',
                     '2020-03-01',
                     '2020-03-27', [17],
                     columns=['Hospital deaths'])
    fitter.setup_fit('Lockdown', '2020-03-16', '2020-05-11', [18, 28, 28])
    fitter.setup_fit('Easing of lockdown', '2020-05-01', '2020-06-20',
                     [10, 15], ['Hospital admissions', 'Hospital deaths'])
    fitter.setup_fit('Second wave (1/3)', '2020-06-28', '2020-09-07',
                     [18, 48, 32])
    fitter.setup_fit('Second wave (2/3)', '2020-09-01', '2020-10-10',
                     [15, 18, 18])
    fitter.setup_fit('Second wave (3/3)', '2020-09-25', '2020-10-20',
                     [15, 18, 18])
    if curfew:
        fitter.setup_fit('Curfew', '2020-10-16', '2020-11-10', [8],
                         ['Hospital admissions'])
    fitter.setup_fit('Second lockdown', '2020-10-30', '2020-12-01',
                     [13, 15, 15])
    fitter.setup_fit('Easing of second lockdown', '2020-11-29', '2020-12-18',
                     [10, 15, 15])
    fitter.compute_growth_rates(verbose=True)

    try:
        EI_dist = lockdown.EI_dist_covid(p_reported)
        fitter.prepare_sir(EI_dist, ifr)
        for fit in fitter.fits[2:]:
            if fit.name in [
                    'Second lockdown', 'Curfew', 'Easing of second lockdown'
            ]:
                continue
            fitter.adjust_date_of_change(fit.name, 'Hospital admissions')
        fitter.compute_sir('2020-12-31')

    except Exception as error:
        print('Error !!!!!!')
        print(error)
        print(traceback.format_exc())
    finally:
        return fitter
## Setup fits in PACA
patches[paca].setup_fit('deuxième vague', '2020-07-01', '2020-10-30',
                        [15, 28, 20])

for patch in patches:
    patch.compute_growth_rates()

fig, axes = plt.subplots(2, 2, dpi=200, figsize=(12, 9))
for i in range(2):
    for j in range(2):
        patches[2 * i + j].plot_fit(axs=axes[i, j], francais=True, nb_xticks=4)
fig.set_tight_layout(True)

ifrs = [0.003, 0.005, 0.01]
#ifrs = [.003, 0.005]
EI_dist = lockdown.EI_dist_covid(0.8)

deaths = pd.DataFrame()
times = pd.DataFrame()

for f in ifrs:
    for patch in patches:
        print(f)
        if not hasattr(patch, 'sir'):
            patch.prepare_sir(EI_dist, f, ref_event=deces)
        else:
            patch.sir.forget()
            patch.compute_probas(f, ref_event=deces)
#        patch.prepare_sir(EI_dist, f, ref_event = deces)
        for (i, fit) in enumerate(patch.fits):
            if i <= 1:
Esempio n. 4
0
import numpy as np

import fit_lockdown as lockdown

N = 20e6
r = .27
rE = -.05
f = .005
deaths_at_lockdown = 50

lockdown_length = 55

delay = 15
delay_dist = np.array([[delay, 1]])

EI_dist = lockdown.EI_dist_covid(.8, fixed_E=False, n=20)
I_dist = EI_dist[:, 1:]
incubation_time = np.sum(EI_dist[:, 0] * EI_dist[:, 2])
generation_time = np.sum(EI_dist[:, 1] * EI_dist[:, 2])

#sir_markov = lockdown.SIR_lockdown_mixed_delays(N, r, rE, f, generation_time, delay_dist)
seir_markov = lockdown.SEIR_lockdown_mixed_delays(N, r, rE, f, generation_time,
                                                  incubation_time, delay_dist)
#sir_nonmarkov = lockdown.SIR_nonMarkov(N, r, rE, f, I_dist, delay_dist)
seir_nonmarkov = lockdown.SEIR_nonMarkov(N, r, rE, f, EI_dist, delay_dist)

models = [seir_markov, seir_nonmarkov]
names = ['Markovian SEIR', 'non-Markovian SEIR']
lstyles = ['dashdot', 'solid']

for (i, m) in enumerate(models):