Source code for src.simulation.seasonality
import numpy as np
import pandas as pd
[docs]def seasonality_model(params, dates, seed, contact_models): # noqa: U100
df = pd.DataFrame(index=dates)
weak_effect = params.loc[
("seasonality_effect", "seasonality_effect", "weak"), "value"
]
strong_effect = params.loc[
("seasonality_effect", "seasonality_effect", "strong"), "value"
]
for name in contact_models:
effect = strong_effect if "other" in name else weak_effect
df[name] = create_seasonality_series(dates, effect)
return df
[docs]def create_seasonality_series(dates, season_effect):
base_sine_curve = np.sin(np.pi * (dates.dayofyear.to_numpy() / 182.5 + 0.5))
factor_arr = 1 - 0.5 * season_effect + 0.5 * season_effect * base_sine_curve
factor_sr = pd.Series(factor_arr, index=dates)
return factor_sr