JoRussell-IDM / updated_infection_and_immunity

malaria_two_pt_oh
0 stars 0 forks source link

Pyrogenic Threshold #6

Open JoRussell-IDM opened 5 years ago

JoRussell-IDM commented 5 years ago

The pyrogenic threshold represents the asexual parasite density that triggers fever.

Pyrogenic threshold is a susceptibility object particular to an individual that can be updated daily.

A Base Pyrogenic threshold (m_base_pyrogenic_threshold_draw) is initizalized by accounting for both the individual's age, cumulative exposure (number of infections and number of waves experienced; these are (or should be!) tracked susceptibility parameters) along with an individual_innate_variability which accounts for how heterogeneous this threshold can be between individuals of a similar susceptibility stratums.

A individuals particular Pyrogenic threshold for a given infection m_ind_pyrogenic_threshold is then drawn upon each infection allowing some heterogeneity across differently virulent strains.

The value of this Pyrogenic threshold should be updated during every update step UpdatePyrogenicThreshold() to account for the effect of recent exposure and malaria free interval (a MFI effect should be added parallel to m_RecentExposure * SusceptibilityMalariaConfig::exposureScaleFactor_PT, may necessitate adding a new scalefactor to the config)

In fact now that I see this having such a sprawling structure, I think that from a high level we need in the config:

a base pyrogenic threshold value (base_PT) a age specific scale factor for pyrogenic threshold (age_PT) a number of infections specific scale factor for pyrogenic threshold (discreteinfections_PT) a number of waves specific scale factor for pyrogenic threshold (waves_PT) a malaria free-interval specific scale factor for pyrogenic threshold (MFI_PT) a recent exposure specific scale factor for pyrogenic threshold (recentexposure_PT)

This seems like a lot but we will want to make sure that through calibration to reference parasite density/fever measurements that the right combination of susceptibility params does an ok job at predicting fever status. It may come out that one of these scale factors adds no new information in which case, great lets scrub it.

DGoes-IDM commented 5 years ago

Given the above, I'm looking for:

  1. Functional form for calculating individual base pyrogenic threshold, which sounds like it is a function of: a draw from a Gaussian, age, cumulative exposure, number of infections experienced, number of waves experienced, and some innate variability
  2. Functional form for calculating daily pyrogenic threshold, which sounds like it is a function of: a base pyrogenic threshold value (base_PT), a age specific scale factor for pyrogenic threshold (age_PT), a number of infections specific scale factor for pyrogenic threshold (discreteinfections_PT), a number of waves specific scale factor for pyrogenic threshold (waves_PT), a malaria free-interval specific scale factor for pyrogenic threshold (MFI_PT), a recent exposure specific scale factor for pyrogenic threshold (recentexposure_PT; and all of the individual variables themselves that these are scale factors for
JoRussell-IDM commented 5 years ago

A. In InitPyrogenicThreshold() make all values configurable: m_base_pyrogenic_threshold_draw = (15000 + 500 age / DAYSPERYEAR) + (individual_innate_variability 5500);

15000: base_PT 500: age_PT_increment 5500: individual_variation_magnitude

B. Keep DrawPyrogenicThreshold() as is

C. UpdatePyrogenicThreshold() needs extension to include effects of all suscpetibility params we care about:

m_ind_pyrogenic_threshold (base)

recent exposure: m_ind_pyrogenic_threshold = m_ind_pyrogenic_threshold + m_RecentExposure * SusceptibilityMalariaConfig::exposureScaleFactor_PT;

age: m_ind_pyrogenic_threshold = m_ind_pyrogenic_threshold + age * SusceptibilityMalariaConfig::age_scalefactor_PT;

....

for scale factors and variables for all of these member variables recent exposure age discrete_number_infections (historical, cumulative) discrete_number_waves active_number_infections (concurrent) malaria_free_interval

One big function is fine! or separate for readability

DGoes-IDM commented 5 years ago

@JoRussell-IDM, what do you want the scale factor defaults to be?

DGoes-IDM commented 5 years ago

Here's how it looks now: SNAG-0041.png

JoRussell-IDM commented 5 years ago

Jon needs to find appropriate scale factor values from literature to replace in the SusceptibilityMalaria.cpp Configure()