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())
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)
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)
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)
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)
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
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)
#!/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()
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)
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)