Updated host immunity declaration to model generator

This commit is contained in:
Luis Aleixo 2021-09-17 17:27:52 +02:00
parent 61be4a57f5
commit 153896ec7e
7 changed files with 21 additions and 18 deletions

View file

@ -417,7 +417,8 @@ class FormData:
presence=self.infected_present_interval(),
mask=self.mask(),
activity=activity,
expiration=expiration
expiration=expiration,
host_immunity=0.,
)
return infected

View file

@ -499,6 +499,7 @@ baseline_model = models.ExposureModel(
mask=models.Mask.types['No mask'],
activity=models.Activity.types['Seated'],
expiration=models.Expiration.types['Talking'],
host_immunity=0.,
),
),
exposed=models.Population(

View file

@ -430,7 +430,7 @@ class Virus:
infectious_dose: _VectorisedFloat
#: viable-to-RNA virus ratio as a function of the viral load
viable_to_RNA: _VectorisedFloat
viable_to_RNA_ratio: _VectorisedFloat
#: Pre-populated examples of Viruses.
types: typing.ClassVar[typing.Dict[str, "Virus"]]
@ -468,23 +468,23 @@ Virus.types = {
# as per https://www.dhs.gov/publication/st-master-question-list-covid-19
# 50 comes from Buonanno et al.
infectious_dose=50.,
viable_to_RNA = 0.5,
viable_to_RNA_ratio = 0.5,
),
'SARS_CoV_2_B117': SARSCoV2(
# also called VOC-202012/01
viral_load_in_sputum=1e9,
infectious_dose=30.,
viable_to_RNA = 0.5,
viable_to_RNA_ratio = 0.5,
),
'SARS_CoV_2_P1': SARSCoV2(
viral_load_in_sputum=1e9,
infectious_dose=1/0.045,
viable_to_RNA = 0.5,
viable_to_RNA_ratio = 0.5,
),
'SARS_CoV_2_B16172': SARSCoV2(
viral_load_in_sputum=1e9,
infectious_dose=30/1.6,
viable_to_RNA = 0.5,
viable_to_RNA_ratio = 0.5,
),
}
@ -713,8 +713,8 @@ class InfectedPopulation(_PopulationWithVirus):
#: The type of expiration that is being emitted whilst doing the activity.
expiration: _ExpirationBase
#: The percentage of host immunity
host_immunity: float = 0.
#: The ratio of virions that are inactivated by the infected person's immunity.
host_immunity: _VectorisedFloat
@method_cache
def emission_rate_when_present(self) -> _VectorisedFloat:
@ -973,7 +973,7 @@ class ExposureModel:
self.exposed.activity.inhalation_rate *
(1 - self.exposed.mask.inhale_efficiency()) *
exposure * self.fraction_deposited *
(self.concentration_model.infected.virus.viable_to_RNA * (1 - self.concentration_model.infected.host_immunity))
(self.concentration_model.infected.virus.viable_to_RNA_ratio * (1 - self.concentration_model.infected.host_immunity))
)
# Probability of infection.

View file

@ -100,29 +100,29 @@ symptomatic_vl_frequencies = LogCustomKernel(
)
# From https://doi.org/10.1093/cid/ciaa1579
infectious_virus_distribution = Uniform(0.15, 0.45)
viable_to_RNA_ratio_distribution = Uniform(0.15, 0.45)
# From CERN-OPEN-2021-04 and refererences therein
virus_distributions = {
'SARS_CoV_2': mc.SARSCoV2(
viral_load_in_sputum=symptomatic_vl_frequencies,
infectious_dose=100,
viable_to_RNA=infectious_virus_distribution,
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
),
'SARS_CoV_2_B117': mc.SARSCoV2(
viral_load_in_sputum=symptomatic_vl_frequencies,
infectious_dose=60,
viable_to_RNA=infectious_virus_distribution,
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
),
'SARS_CoV_2_P1': mc.SARSCoV2(
viral_load_in_sputum=symptomatic_vl_frequencies,
infectious_dose=100/2.25,
viable_to_RNA=infectious_virus_distribution,
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
),
'SARS_CoV_2_B16172': mc.SARSCoV2(
viral_load_in_sputum=symptomatic_vl_frequencies,
infectious_dose=60/1.6,
viable_to_RNA=infectious_virus_distribution,
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
),
}

View file

@ -42,7 +42,7 @@ def test_concentration_model_vectorisation(override_params):
virus=models.SARSCoV2(
viral_load_in_sputum=defaults['viral_load_in_sputum'],
infectious_dose=50.,
viable_to_RNA = 0.5,
viable_to_RNA_ratio = 0.5,
),
expiration=models._ExpirationBase.types['Breathing'],
)

View file

@ -65,7 +65,8 @@ def known_concentrations(func):
mask=models.Mask.types['Type I'],
activity=models.Activity.types['Standing'],
virus=models.Virus.types['SARS_CoV_2_B117'],
expiration=models.Expiration.types['Talking']
expiration=models.Expiration.types['Talking'],
host_immunity=0.,
)
normed_func = lambda x: func(x) / dummy_infected_population.emission_rate_when_present()
return KnownNormedconcentration(dummy_room, dummy_ventilation,
@ -190,7 +191,7 @@ def test_infectious_dose_vectorisation():
virus=models.SARSCoV2(
viral_load_in_sputum=1e9,
infectious_dose=np.array([50, 20, 30]),
viable_to_RNA = 0.5,
viable_to_RNA_ratio = 0.5,
),
expiration=models.Expiration.types['Talking']
)

View file

@ -32,7 +32,7 @@ def test_infected_population_vectorisation(override_params):
virus=cara.models.Virus(
viral_load_in_sputum=defaults['viral_load_in_sputum'],
infectious_dose=50.,
viable_to_RNA = 0.5,
viable_to_RNA_ratio = 0.5,
),
expiration=cara.models._ExpirationBase.types['Breathing'],
)