Skip to content

Implement weather-dependent transmission model#150

Open
atmyers wants to merge 26 commits into
developmentfrom
weather_model
Open

Implement weather-dependent transmission model#150
atmyers wants to merge 26 commits into
developmentfrom
weather_model

Conversation

@atmyers

@atmyers atmyers commented Feb 27, 2026

Copy link
Copy Markdown
Contributor

This implements a model where temperature and humidity data affect disease transmission. The formula used is:

$$ p(T,AH) = p_{max} \exp(-\beta_{AH} * AH - \alpha_T * \max(0,T - T_0)) $$

where the meaning of the parameters is described in the documentation. To turn this on, add agent.do_weather=1 to your inputs file.

@atmyers atmyers marked this pull request as ready for review June 12, 2026 17:00
@atmyers atmyers requested a review from tannguyen153 June 12, 2026 19:26
Comment thread docs/source/usage/how_to_run.rst Outdated
Comment thread docs/source/usage/how_to_run.rst Outdated
Comment thread src/WeatherTransmissionModel.H Outdated
Comment thread src/WeatherTransmissionModel.H Outdated
Co-authored-by: Andrew Myers <atmyers@lbl.gov>
@tannguyen153

Copy link
Copy Markdown
Collaborator

Hi Andrew, the example input file currently uses your local data. Could you change them to relative paths? Also, the weather transmission model substantially suppresses the virus transmission. Shouldn't we choose neutral model parameters to see more reasonable impact of the weather?

Comment thread examples/inputs_random_us_weather Outdated
Comment thread examples/inputs_random_us_weather Outdated
Comment thread examples/inputs_random_us_weather Outdated
Co-authored-by: Andrew Myers <atmyers@lbl.gov>
Comment thread examples/inputs_random_us_weather Outdated
@nugent68

Copy link
Copy Markdown

Opened #160 against this branch: it reference-normalizes the weather transmission scale factor. The exponential is currently referenced at AH = 0, which never occurs in the data (US min 0.13, p05 2.9 g/m³), so rho sits well below 1 everywhere (US mean ≈ 0.20, peak winter ≈ 0.38) and — since it multiplies the calibrated disease.p_trans/xmit_* — enabling the weather model suppresses transmission ~5× year-round. #160 moves the reference to a flu-season AH_ref (default 6.0 g/m³) and clamps rho ≤ 1, so the calibrated baseline is recovered during flu season (AH_ref = 0 reproduces current behaviour). Verified on a 120-day MA run.

nugent68 and others added 2 commits June 15, 2026 12:43
The weather transmission model

  rho(T,AH) = p_max * exp(-beta_AH*AH - alpha_T*max(0,T-T0))

references the absolute-humidity exponential at AH=0, which never occurs in
the data (US min 0.13, p05 2.9 g/m^3). As a result rho is far below 1
everywhere (US mean ~0.20, peak winter ~0.38). Because rho multiplies the
calibrated baseline transmission probabilities (disease.p_trans / xmit_*),
enabling the weather model suppressed effective transmission ~5x year-round
and craters the calibrated R0.

Move the exponential's reference point to a flu-season absolute humidity
AH_ref (default 6.0 g/m^3) and clamp the result to 1:

  rho = min(1, p_max * exp(-beta_AH*(AH - AH_ref) - alpha_T*max(0,T-T0)))

With p_max=1 the scale factor is 1 at/below AH_ref (and T<=T0), so the
calibrated baseline is recovered during flu-season conditions and weather
only attenuates toward summer. The clamp keeps 1 - infect*xmit*rho >= 0.
Set AH_ref=0 to recover the previous un-normalised behaviour.

The model form (exp decay in AH, T0~5C threshold) remains as supported by
Shaman & Kohn 2009, Peci et al. 2019, Park et al. 2020, and Lowen et al. 2007;
only the normalisation changes.

Verified on a 120-day MA run: AH_ref=6 reproduces the no-weather baseline
(~141k infections), whereas AH_ref=0 suppresses it to ~42k.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants