Esempio n. 1
0
def _run_samples_SAT(model, SAT, tmax, path, logging_prefix):
    '''Run many simulations in parallel.'''
    path_SAT = os.path.join(path, str(SAT))
    os.makedirs(path_SAT, exist_ok=True)
    logging_prefix_SAT = logging_prefix + f'SAT {SAT}, '
    parameters = herd.Parameters(model=model, SAT=SAT)
    samples = herd.samples.load(model=model, SAT=SAT)
    return (delayed(_run_sample)(parameters, s, tmax, path_SAT, i,
                                 logging_prefix_SAT)
            for (i, s) in samples.iterrows())
Esempio n. 2
0
def run_start_time(model, SAT, start_time, tmax, nruns, hdfstore):
    if start_time == 0.5:
        _copy_run(model, SAT, start_time, nruns, hdfstore)
    else:
        p = herd.Parameters(model=model, SAT=SAT)
        p.start_time = start_time
        logging_prefix = (', '.join(
            (f'model {model}', f'SAT {SAT}', f'start_time {start_time}')) +
                          ', ')
        df = run.run_many(p, tmax, nruns, logging_prefix=logging_prefix)
        run._prepend_index_levels(df,
                                  model=model,
                                  SAT=SAT,
                                  start_time=start_time)
        hdfstore.put(df, min_itemsize=run._min_itemsize)
Esempio n. 3
0
def run_population_size(model, SAT, population_size, tmax, nruns, hdfstore):
    if population_size == 1000:
        _copy_run(model, SAT, population_size, nruns, hdfstore)
    else:
        p = herd.Parameters(model=model, SAT=SAT)
        p.population_size = population_size
        logging_prefix = (', '.join(
            (f'model {model}', f'SAT {SAT}',
             f'population_size {population_size}')) + ', ')
        df = run.run_many(p, tmax, nruns, logging_prefix=logging_prefix)
        run._prepend_index_levels(df,
                                  model=model,
                                  SAT=SAT,
                                  population_size=population_size)
        hdfstore.put(df, min_itemsize=run._min_itemsize)
Esempio n. 4
0
def run_initial_conditions(model, SAT, initial_conditions, tmax, nruns,
                           hdfstore):
    if initial_conditions == SAT:
        _copy_run(model, SAT, initial_conditions, nruns, hdfstore)
    else:
        p = herd.Parameters(model=model,
                            SAT=SAT,
                            _initial_conditions=initial_conditions)
        logging_prefix = (', '.join(
            (f'model {model}', f'SAT {SAT}',
             f'initial_conditions {initial_conditions}')) + ', ')
        df = run.run_many(p, tmax, nruns, logging_prefix=logging_prefix)
        run._prepend_index_levels(df,
                                  model=model,
                                  SAT=SAT,
                                  initial_conditions=initial_conditions)
        hdfstore.put(df, min_itemsize=run._min_itemsize)
Esempio n. 5
0
def run_birth_seasonality(model, SAT, birth_seasonality_scaling, tmax, nruns,
                          hdfstore):
    p = herd.Parameters(model=model, SAT=SAT)
    p.birth_seasonal_coefficient_of_variation *= birth_seasonality_scaling
    bscov = p.birth_seasonal_coefficient_of_variation
    if birth_seasonality_scaling == 1:
        _copy_run(model, SAT, bscov, nruns, hdfstore)
    else:
        logging_prefix = (', '.join(
            (f'model {model}', f'SAT {SAT}',
             f'birth_seasonality_scaling {birth_seasonality_scaling}')) + ', ')
        df = run.run_many(p, tmax, nruns, logging_prefix=logging_prefix)
        run._prepend_index_levels(
            df,
            model=model,
            SAT=SAT,
            birth_seasonal_coefficient_of_variation=bscov)
        hdfstore.put(df, min_itemsize=run._min_itemsize)
Esempio n. 6
0
def get_susceptible_recruitment():
    filename = 'susceptible_recruitment.csv'
    try:
        ser = pandas.read_csv(filename,
                              index_col=0, parse_dates=True,
                              header=None, squeeze=True)
    except FileNotFoundError:
        parameters = herd.Parameters()
        t0 = parameters.start_time
        susceptible_recruitment = SusceptibleRecruitment(parameters)
        # Susceptible recruitment depends on time of year.
        # 1 year of dates, points every day.
        year = pandas.Timedelta(days=dates.DAYS_PER_YEAR)
        start = (pandas.Timestamp(year=2001, month=1, day=1)
                 + t0 * year)
        end = start + year
        dt = pandas.date_range(start, end, freq='D', closed='left')
        # Convert to float year.
        t = (dt - dt[0]) / year
        v = susceptible_recruitment.pdf(t)
        ser = pandas.Series(v, index=dt)
        ser.to_csv(filename, header=False)
    return ser
Esempio n. 7
0
def run(model, SAT, tmax, nruns, store):
    p = herd.Parameters(model=model, SAT=SAT)
    logging_prefix = (', '.join((f'model {model}', f'SAT {SAT}')) + ', ')
    df = run_many(p, tmax, nruns, logging_prefix=logging_prefix)
    _prepend_index_levels(df, model=model, SAT=SAT)
    hdfstore.put(df, min_itemsize=_min_itemsize)
Esempio n. 8
0
#!/usr/bin/python3
import sys

from matplotlib import pyplot

sys.path.append('..')
import herd
from herd._initial_conditions import find_hazard_infection, plot
sys.path.pop()

models = ('acute', 'chronic')

for model in models:
    params = herd.Parameters(model=model)
    hazard_infection = find_hazard_infection(params)
    plot(hazard_infection, params, show=False, label=model.capitalize())
pyplot.legend()
pyplot.show()
Esempio n. 9
0
import run
sys.path.pop()


def make_plot(data, show=True):
    (fig, ax) = pyplot.subplots()
    seaborn.set_palette(seaborn.color_palette('deep', 6))
    for (k, x) in data.items():
        ax.step(365 * x.index, x, where='post', label=k)
    ax.set_xlabel(data.index.name)
    ax.set_ylabel('number')
    ax.legend()
    if show:
        pyplot.show()


if __name__ == '__main__':
    SAT = 1
    model = 'chronic'
    seed = 1
    tmax = 10
    debug = False

    p = herd.Parameters(model=model, SAT=SAT)
    t0 = time.time()
    data = run.run_one(p, tmax, seed, debug=debug)
    t1 = time.time()
    print('Run time: {} seconds.'.format(t1 - t0))

    make_plot(data)
Esempio n. 10
0
def load_parameters_and_samples(model, SAT):
    parameters = herd.Parameters(model=model, SAT=SAT)
    samples = herd.samples.load(model=model, SAT=SAT)
    return (parameters, samples)