Open JoRussell-IDM opened 5 years ago
Given the above, I'm looking for:
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
@JoRussell-IDM, what do you want the scale factor defaults to be?
Here's how it looks now:
Jon needs to find appropriate scale factor values from literature to replace in the SusceptibilityMalaria.cpp Configure()
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.