Exemple #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
Exemple #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
    param_values = np.loadtxt("param_values_delays.txt", float)
except (OSError, Change):
    param_values = saltelli.sample(inputs, 1000, calc_second_order = False)
    np.savetxt("param_values_delays.txt", param_values)

try:
    if COMPUTE_AGAIN or CHANGE_INPUT:
        raise Change('output')
    output_values = np.loadtxt('output_values_delays.txt', float)
except (OSError, Change):
    output_values = np.zeros((2, np.size(param_values, 0)))
    
    ## prepare lockdown fitter
    patches, sizes = build_patches.patches_from_region_list(region_list)
    data_patches = gather_data(patches, SOS_medecins=False, include_early=False)
    fitter = lockdown.LockdownFitter(data_patches[0], names[0], sizes[0], '2020-03-16')
    fitter.setup_fit('Before lockdown', '2020-03-01', '2020-03-26', [17], columns = ['Hospital deaths'])
    fitter.setup_fit('Lockdown', '2020-03-16', '2020-05-11', [18, 28, 28])
    fitter.compute_growth_rates()
    
    for (i, param) in enumerate(param_values):
        print(100.*i/np.size(param_values, 0))
        E_dist, I_dist = lockdown.EI_dist(param[0], param[1], 10, n=10)
        EI_dist = lockdown.product_dist(E_dist, I_dist)
        lockdown_datetime = fitter.datetime_lockdown + date.timedelta(days = param[2])
        fitter.datetime_lockdown = lockdown_datetime
        try:
            fitter.prepare_sir(EI_dist, param[3], verbose = False)
        except AssertionError:
            continue
        fitter.dates_of_change['Lockdown'] = lockdown_datetime.strftime(fitter.date_format)
data_patches = gather_data(patches, SOS_medecins=False, include_early=False)

deces = 'Décès hospitaliers dus au Covid-19'
admissions = 'Admissions à l\'hôpital liées au Covid-19'

# data_patches[0] = data_patches[0].drop(['ICU admissions'], axis = 1)
for i in range(len(names)):
    data_patches[i].columns = [admissions, deces, 'Admissions en réanimation']

patches = []
for (i, name) in enumerate(names):
    data_patches[i] = data_patches[i].drop(
        data_patches[i]['2020-11-01':].index)
    patches.append(
        lockdown.LockdownFitter(data_patches[i], name, sizes[i], '2020-03-16'))

for patch in patches:
    patch.setup_fit('avant le confinement',
                    '2020-03-01',
                    '2020-03-25', [17],
                    columns=[deces])
    patch.setup_fit('confinement', '2020-03-16', '2020-06-02', [18, 28, 28])

## Setup fits in Ile de France
patches[idf].setup_fit('été', '2020-06-02', '2020-09-10', [18, 25, 25])
patches[idf].setup_fit('deuxième vague', '2020-09-01', '2020-10-30',
                       [10, 15, 15])

## Setup fits in Grand Est
patches[gdest].setup_fit('déconfinement', '2020-05-15', '2020-07-01',