Merge branch 'feature/virus_qid' into 'master'

Virus coefficient_of_infectivity replaced by its inverse (qID)

See merge request cara/cara!181
This commit is contained in:
Nicolas Mounet 2021-05-26 07:16:20 +00:00
commit 3244f8ba8f
3 changed files with 15 additions and 15 deletions

View file

@ -419,8 +419,8 @@ class Virus:
#: RNA copies / mL
viral_load_in_sputum: _VectorisedFloat
#: Ratio between infectious aerosols and dose to cause infection.
coefficient_of_infectivity: _VectorisedFloat
#: RNA-copies per quantum
quantum_infectious_dose: _VectorisedFloat
#: Pre-populated examples of Viruses.
types: typing.ClassVar[typing.Dict[str, "Virus"]]
@ -436,20 +436,20 @@ Virus.types = {
halflife=1.1,
viral_load_in_sputum=1e9,
# No data on coefficient for SARS-CoV-2 yet.
# It is somewhere between 0.001 and 0.01 to have a 50% chance
# to cause infection. i.e. 1000 or 100 SARS-CoV viruses to cause infection.
coefficient_of_infectivity=0.02,
# It is somewhere between 1000 or 100 SARS-CoV viruses to have
# a 50% chance to cause infection.
quantum_infectious_dose=50.,
),
'SARS_CoV_2_B117': Virus(
# also called VOC-202012/01
halflife=1.1,
viral_load_in_sputum=1e9,
coefficient_of_infectivity=1/30.,
quantum_infectious_dose=30.,
),
'SARS_CoV_2_P1': Virus(
halflife=1.1,
viral_load_in_sputum=1e9,
coefficient_of_infectivity=0.045,
quantum_infectious_dose=1/0.045,
),
}
@ -584,10 +584,10 @@ class InfectedPopulation(Population):
aerosols = self.expiration.aerosols(self.mask)
ER = (self.virus.viral_load_in_sputum *
self.virus.coefficient_of_infectivity *
self.activity.exhalation_rate *
10 ** 6 *
aerosols)
aerosols /
self.virus.quantum_infectious_dose)
# For superspreading event, where ejection_factor is infinite we fix the ER
# based on Miller et al. (2020).

View file

@ -12,7 +12,7 @@ from cara import models
{'air_change': np.array([100, 120])},
{'virus_halflife': np.array([1.1, 1.5])},
{'viral_load_in_sputum': np.array([5e8, 1e9])},
{'coefficient_of_infectivity': np.array([0.02, 0.05])},
{'quantum_infectious_dose': np.array([50, 20])},
{'η_exhale': np.array([0.92, 0.95])},
{'η_leaks': np.array([0.15, 0.20])},
]
@ -23,7 +23,7 @@ def test_concentration_model_vectorisation(override_params):
'air_change': 100,
'virus_halflife': 1.1,
'viral_load_in_sputum': 1e9,
'coefficient_of_infectivity': 0.02,
'quantum_infectious_dose': 50,
'η_exhale': 0.95,
'η_leaks': 0.15,
}
@ -48,7 +48,7 @@ def test_concentration_model_vectorisation(override_params):
virus=models.Virus(
halflife=defaults['virus_halflife'],
viral_load_in_sputum=defaults['viral_load_in_sputum'],
coefficient_of_infectivity=defaults['coefficient_of_infectivity'],
quantum_infectious_dose=defaults['quantum_infectious_dose'],
),
expiration=models.Expiration(
ejection_factor=(0.084, 0.009, 0.003, 0.002),

View file

@ -7,7 +7,7 @@ import cara.models
@pytest.mark.parametrize(
"override_params", [
{'viral_load_in_sputum': np.array([5e8, 1e9])},
{'coefficient_of_infectivity': np.array([0.02, 0.05])},
{'quantum_infectious_dose': np.array([50, 20])},
{'η_exhale': np.array([0.92, 0.95])},
{'η_leaks': np.array([0.15, 0.20])},
{'exhalation_rate': np.array([0.75, 0.81])},
@ -17,7 +17,7 @@ def test_infected_population_vectorisation(override_params):
defaults = {
'virus_halflife': 1.1,
'viral_load_in_sputum': 1e9,
'coefficient_of_infectivity': 0.02,
'quantum_infectious_dose': 50,
'η_exhale': 0.95,
'η_leaks': 0.15,
'exhalation_rate': 0.75,
@ -40,7 +40,7 @@ def test_infected_population_vectorisation(override_params):
virus=cara.models.Virus(
halflife=defaults['virus_halflife'],
viral_load_in_sputum=defaults['viral_load_in_sputum'],
coefficient_of_infectivity=defaults['coefficient_of_infectivity'],
quantum_infectious_dose=defaults['quantum_infectious_dose'],
),
expiration=cara.models.Expiration(
ejection_factor=(0.084, 0.009, 0.003, 0.002),