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
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:
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):