Changed P(I) formula and added host immunity for exposed Population
Fixed values for viable_to_RNA_ratio and transmissibility_factor of each Virus variant Updated probability of infection formula
This commit is contained in:
parent
e00d7982a8
commit
364f20930e
4 changed files with 26 additions and 20 deletions
|
|
@ -449,6 +449,7 @@ class FormData:
|
||||||
presence=self.exposed_present_interval(),
|
presence=self.exposed_present_interval(),
|
||||||
activity=activity,
|
activity=activity,
|
||||||
mask=self.mask(),
|
mask=self.mask(),
|
||||||
|
host_immunity=0.,
|
||||||
)
|
)
|
||||||
return exposed
|
return exposed
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -507,6 +507,7 @@ baseline_model = models.ExposureModel(
|
||||||
presence=models.SpecificInterval(((8., 12.), (13., 17.))),
|
presence=models.SpecificInterval(((8., 12.), (13., 17.))),
|
||||||
activity=models.Activity.types['Seated'],
|
activity=models.Activity.types['Seated'],
|
||||||
mask=models.Mask.types['No mask'],
|
mask=models.Mask.types['No mask'],
|
||||||
|
host_immunity=0.,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,7 @@ from .utils import method_cache
|
||||||
|
|
||||||
from .dataclass_utils import nested_replace
|
from .dataclass_utils import nested_replace
|
||||||
|
|
||||||
|
oneoverln2 = 1 / np.log(2)
|
||||||
|
|
||||||
# Define types for items supporting vectorisation. In the future this may be replaced
|
# Define types for items supporting vectorisation. In the future this may be replaced
|
||||||
# by ``np.ndarray[<type>]`` once/if that syntax is supported. Note that vectorization
|
# by ``np.ndarray[<type>]`` once/if that syntax is supported. Note that vectorization
|
||||||
|
|
@ -433,7 +434,7 @@ class Virus:
|
||||||
viable_to_RNA_ratio: _VectorisedFloat
|
viable_to_RNA_ratio: _VectorisedFloat
|
||||||
|
|
||||||
#: Reported increase of transmissibility of a VOC
|
#: Reported increase of transmissibility of a VOC
|
||||||
transmissibility_VOC: float
|
transmissibility_factor: float
|
||||||
|
|
||||||
#: Pre-populated examples of Viruses.
|
#: Pre-populated examples of Viruses.
|
||||||
types: typing.ClassVar[typing.Dict[str, "Virus"]]
|
types: typing.ClassVar[typing.Dict[str, "Virus"]]
|
||||||
|
|
@ -472,26 +473,26 @@ Virus.types = {
|
||||||
# 50 comes from Buonanno et al.
|
# 50 comes from Buonanno et al.
|
||||||
infectious_dose=50.,
|
infectious_dose=50.,
|
||||||
viable_to_RNA_ratio = 0.5,
|
viable_to_RNA_ratio = 0.5,
|
||||||
transmissibility_VOC=1.0,
|
transmissibility_factor=1.0,
|
||||||
),
|
),
|
||||||
'SARS_CoV_2_B117': SARSCoV2(
|
'SARS_CoV_2_B117': SARSCoV2(
|
||||||
# also called VOC-202012/01
|
# also called VOC-202012/01
|
||||||
viral_load_in_sputum=1e9,
|
viral_load_in_sputum=1e9,
|
||||||
infectious_dose=30.,
|
infectious_dose=50.,
|
||||||
viable_to_RNA_ratio = 0.5,
|
viable_to_RNA_ratio = 0.5,
|
||||||
transmissibility_VOC=0.6,
|
transmissibility_factor=0.6,
|
||||||
),
|
),
|
||||||
'SARS_CoV_2_P1': SARSCoV2(
|
'SARS_CoV_2_P1': SARSCoV2(
|
||||||
viral_load_in_sputum=1e9,
|
viral_load_in_sputum=1e9,
|
||||||
infectious_dose=1/0.045,
|
infectious_dose=50.,
|
||||||
viable_to_RNA_ratio = 0.5,
|
viable_to_RNA_ratio = 0.5,
|
||||||
transmissibility_VOC=0.45,
|
transmissibility_factor=0.45,
|
||||||
),
|
),
|
||||||
'SARS_CoV_2_B16172': SARSCoV2(
|
'SARS_CoV_2_B16172': SARSCoV2(
|
||||||
viral_load_in_sputum=1e9,
|
viral_load_in_sputum=1e9,
|
||||||
infectious_dose=30/1.6,
|
infectious_dose=50.,
|
||||||
viable_to_RNA_ratio = 0.5,
|
viable_to_RNA_ratio = 0.5,
|
||||||
transmissibility_VOC=0.38,
|
transmissibility_factor=0.38,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -667,6 +668,11 @@ class Population:
|
||||||
#: The physical activity being carried out by the people.
|
#: The physical activity being carried out by the people.
|
||||||
activity: Activity
|
activity: Activity
|
||||||
|
|
||||||
|
#: The ratio of virions that are inactivated by the person's immunity.
|
||||||
|
# This parameter considers the potential antibodies in the person,
|
||||||
|
# which might render inactive some RNA copies (virions).
|
||||||
|
host_immunity: float
|
||||||
|
|
||||||
def person_present(self, time):
|
def person_present(self, time):
|
||||||
return self.presence.triggered(time)
|
return self.presence.triggered(time)
|
||||||
|
|
||||||
|
|
@ -726,12 +732,7 @@ class EmittingPopulation(_PopulationWithVirus):
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class InfectedPopulation(_PopulationWithVirus):
|
class InfectedPopulation(_PopulationWithVirus):
|
||||||
#: The type of expiration that is being emitted whilst doing the activity.
|
#: The type of expiration that is being emitted whilst doing the activity.
|
||||||
expiration: _ExpirationBase
|
expiration: _ExpirationBase
|
||||||
|
|
||||||
#: The ratio of virions that are inactivated by the infected person's immunity.
|
|
||||||
# This parameter considers the potential antibodies in the infected person,
|
|
||||||
# which might render inactive some RNA copies (virions).
|
|
||||||
host_immunity: _VectorisedFloat
|
|
||||||
|
|
||||||
@method_cache
|
@method_cache
|
||||||
def fraction_of_infectious_virus(self) -> _VectorisedFloat:
|
def fraction_of_infectious_virus(self) -> _VectorisedFloat:
|
||||||
|
|
@ -1002,10 +1003,13 @@ class ExposureModel:
|
||||||
exposure * self.fraction_deposited * f_inf
|
exposure * self.fraction_deposited * f_inf
|
||||||
)
|
)
|
||||||
|
|
||||||
infectious_dose = 1.44 * self.concentration_model.virus.infectious_dose * self.concentration_model.virus.transmissibility_VOC * (1 / (1 - self.concentration_model.infected.host_immunity))
|
# oneoverln2 multiplied by ID_50 corresponds to ID_63.
|
||||||
|
infectious_dose = oneoverln2 * self.concentration_model.virus.infectious_dose
|
||||||
|
|
||||||
# Probability of infection.
|
# Probability of infection.
|
||||||
return (1 - np.exp(-(inf_aero/infectious_dose))) * 100
|
return (1 - np.exp(-((inf_aero * (1 - self.exposed.host_immunity))/(infectious_dose *
|
||||||
|
self.concentration_model.virus.transmissibility_factor)))) * 100
|
||||||
|
|
||||||
|
|
||||||
def expected_new_cases(self) -> _VectorisedFloat:
|
def expected_new_cases(self) -> _VectorisedFloat:
|
||||||
prob = self.infection_probability()
|
prob = self.infection_probability()
|
||||||
|
|
|
||||||
|
|
@ -111,25 +111,25 @@ virus_distributions = {
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
viral_load_in_sputum=symptomatic_vl_frequencies,
|
||||||
infectious_dose=infectious_dose_distribution,
|
infectious_dose=infectious_dose_distribution,
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
||||||
transmissibility_VOC=1.,
|
transmissibility_factor=1.,
|
||||||
),
|
),
|
||||||
'SARS_CoV_2_B117': mc.SARSCoV2(
|
'SARS_CoV_2_B117': mc.SARSCoV2(
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
viral_load_in_sputum=symptomatic_vl_frequencies,
|
||||||
infectious_dose=infectious_dose_distribution,
|
infectious_dose=infectious_dose_distribution,
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
||||||
transmissibility_VOC=0.6,
|
transmissibility_factor=0.6,
|
||||||
),
|
),
|
||||||
'SARS_CoV_2_P1': mc.SARSCoV2(
|
'SARS_CoV_2_P1': mc.SARSCoV2(
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
viral_load_in_sputum=symptomatic_vl_frequencies,
|
||||||
infectious_dose=infectious_dose_distribution,
|
infectious_dose=infectious_dose_distribution,
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
||||||
transmissibility_VOC=0.45,
|
transmissibility_factor=0.45,
|
||||||
),
|
),
|
||||||
'SARS_CoV_2_B16172': mc.SARSCoV2(
|
'SARS_CoV_2_B16172': mc.SARSCoV2(
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
viral_load_in_sputum=symptomatic_vl_frequencies,
|
||||||
infectious_dose=infectious_dose_distribution,
|
infectious_dose=infectious_dose_distribution,
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
||||||
transmissibility_VOC=0.38,
|
transmissibility_factor=0.38,
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue