diff --git a/cara/apps/calculator/model_generator.py b/cara/apps/calculator/model_generator.py index 6e4a5527..dbfd97f3 100644 --- a/cara/apps/calculator/model_generator.py +++ b/cara/apps/calculator/model_generator.py @@ -699,7 +699,7 @@ MECHANICAL_VENTILATION_TYPES = {'mech_type_air_changes', 'mech_type_air_supply', MASK_TYPES = {'Type I', 'FFP2'} MASK_WEARING_OPTIONS = {'mask_on', 'mask_off'} VENTILATION_TYPES = {'natural_ventilation', 'mechanical_ventilation', 'no_ventilation'} -VIRUS_TYPES = {'SARS_CoV_2', 'SARS_CoV_2_B117', 'SARS_CoV_2_P1', 'SARS_CoV_2_B16172'} +VIRUS_TYPES = {'SARS_CoV_2', 'SARS_CoV_2_ALPHA', 'SARS_CoV_2_GAMMA', 'SARS_CoV_2_DELTA', 'SARS_CoV_2_BETA'} VOLUME_TYPES = {'room_volume_explicit', 'room_volume_from_dimensions'} WINDOWS_OPENING_REGIMES = {'windows_open_permanently', 'windows_open_periodically', 'not-applicable'} WINDOWS_TYPES = {'window_sliding', 'window_hinged', 'not-applicable'} diff --git a/cara/apps/calculator/templates/base/calculator.report.html.j2 b/cara/apps/calculator/templates/base/calculator.report.html.j2 index 146478dc..88aec4af 100644 --- a/cara/apps/calculator/templates/base/calculator.report.html.j2 +++ b/cara/apps/calculator/templates/base/calculator.report.html.j2 @@ -193,12 +193,14 @@
  • Virus variant: {% if form.virus_type == "SARS_CoV_2" %} SARS-CoV-2 (nominal strain) - {% elif form.virus_type == "SARS_CoV_2_B117" %} - SARS-CoV-2 (Alpha VOC) - {% elif form.virus_type == "SARS_CoV_2_P1" %} - SARS-CoV-2 (Gamma VOC) - {% elif form.virus_type == "SARS_CoV_2_B16172" %} - SARS-CoV-2 (Delta VOC) + {% elif form.virus_type == "SARS_CoV_2_ALPHA" %} + SARS-CoV-2 (Alpha VOC) + {% elif form.virus_type == "SARS_CoV_2_BETA" %} + SARS-CoV-2 (Beta VOC) + {% elif form.virus_type == "SARS_CoV_2_GAMMA" %} + SARS-CoV-2 (Gamma VOC) + {% elif form.virus_type == "SARS_CoV_2_DELTA" %} + SARS-CoV-2 (Delta VOC) {% endif %}

  • Room Volume: {{ model.concentration_model.room.volume }} m³

  • diff --git a/cara/apps/calculator/templates/calculator.form.html.j2 b/cara/apps/calculator/templates/calculator.form.html.j2 index 65391454..28d275eb 100644 --- a/cara/apps/calculator/templates/calculator.form.html.j2 +++ b/cara/apps/calculator/templates/calculator.form.html.j2 @@ -63,9 +63,10 @@ v{{ calculator_version }} Please sen @@ -347,6 +348,7 @@ v{{ calculator_version }} Please sen SARS-CoV-2 covers the original "wild type" strain of the virus and three variants of concern (VOC):
    diff --git a/cara/models.py b/cara/models.py index 67d4c62a..b7c1ff95 100644 --- a/cara/models.py +++ b/cara/models.py @@ -475,24 +475,30 @@ Virus.types = { viable_to_RNA_ratio = 0.5, transmissibility_factor=1.0, ), - 'SARS_CoV_2_B117': SARSCoV2( + 'SARS_CoV_2_ALPHA': SARSCoV2( # also called VOC-202012/01 viral_load_in_sputum=1e9, infectious_dose=50., viable_to_RNA_ratio = 0.5, - transmissibility_factor=0.6, + transmissibility_factor=0.78, ), - 'SARS_CoV_2_P1': SARSCoV2( + 'SARS_CoV_2_BETA': SARSCoV2( + viral_load_in_sputum=1e9, + infectious_dose=50., + viable_to_RNA_ratio=0.5, + transmissibility_factor=0.8, + ), + 'SARS_CoV_2_GAMMA': SARSCoV2( viral_load_in_sputum=1e9, infectious_dose=50., viable_to_RNA_ratio = 0.5, - transmissibility_factor=0.45, + transmissibility_factor=0.72, ), - 'SARS_CoV_2_B16172': SARSCoV2( + 'SARS_CoV_2_DELTA': SARSCoV2( viral_load_in_sputum=1e9, infectious_dose=50., viable_to_RNA_ratio = 0.5, - transmissibility_factor=0.38, + transmissibility_factor=0.51, ), } diff --git a/cara/monte_carlo/data.py b/cara/monte_carlo/data.py index ea6a2349..e4d23f8b 100644 --- a/cara/monte_carlo/data.py +++ b/cara/monte_carlo/data.py @@ -113,23 +113,29 @@ virus_distributions = { viable_to_RNA_ratio=viable_to_RNA_ratio_distribution, transmissibility_factor=1., ), - 'SARS_CoV_2_B117': mc.SARSCoV2( + 'SARS_CoV_2_ALPHA': mc.SARSCoV2( viral_load_in_sputum=symptomatic_vl_frequencies, infectious_dose=infectious_dose_distribution, viable_to_RNA_ratio=viable_to_RNA_ratio_distribution, - transmissibility_factor=0.6, + transmissibility_factor=0.78, ), - 'SARS_CoV_2_P1': mc.SARSCoV2( + 'SARS_CoV_2_BETA': mc.SARSCoV2( viral_load_in_sputum=symptomatic_vl_frequencies, infectious_dose=infectious_dose_distribution, viable_to_RNA_ratio=viable_to_RNA_ratio_distribution, - transmissibility_factor=0.45, + transmissibility_factor=0.8, ), - 'SARS_CoV_2_B16172': mc.SARSCoV2( + 'SARS_CoV_2_GAMMA': mc.SARSCoV2( viral_load_in_sputum=symptomatic_vl_frequencies, infectious_dose=infectious_dose_distribution, viable_to_RNA_ratio=viable_to_RNA_ratio_distribution, - transmissibility_factor=0.38, + transmissibility_factor=0.72, + ), + 'SARS_CoV_2_DELTA': mc.SARSCoV2( + viral_load_in_sputum=symptomatic_vl_frequencies, + infectious_dose=infectious_dose_distribution, + viable_to_RNA_ratio=viable_to_RNA_ratio_distribution, + transmissibility_factor=0.51, ), } diff --git a/cara/tests/models/test_exposure_model.py b/cara/tests/models/test_exposure_model.py index e120ad29..654a7858 100644 --- a/cara/tests/models/test_exposure_model.py +++ b/cara/tests/models/test_exposure_model.py @@ -64,7 +64,7 @@ def known_concentrations(func): presence=halftime, mask=models.Mask.types['Type I'], activity=models.Activity.types['Standing'], - virus=models.Virus.types['SARS_CoV_2_B117'], + virus=models.Virus.types['SARS_CoV_2_ALPHA'], expiration=models.Expiration.types['Talking'], host_immunity=0., ) diff --git a/cara/tests/test_monte_carlo_full_models.py b/cara/tests/test_monte_carlo_full_models.py index bb3f283b..a0381723 100644 --- a/cara/tests/test_monte_carlo_full_models.py +++ b/cara/tests/test_monte_carlo_full_models.py @@ -40,7 +40,7 @@ def shared_office_mc(): ), infected=mc.InfectedPopulation( number=1, - virus=virus_distributions['SARS_CoV_2_B117'], + virus=virus_distributions['SARS_CoV_2_ALPHA'], presence=mc.SpecificInterval(((0., 2.), (2.1, 4.), (5., 7.), (7.1, 9.))), mask=models.Mask(η_inhale=0.3), activity=activity_distributions['Seated'], @@ -83,7 +83,7 @@ def classroom_mc(): ), infected=mc.InfectedPopulation( number=1, - virus=virus_distributions['SARS_CoV_2_B117'], + virus=virus_distributions['SARS_CoV_2_ALPHA'], presence=mc.SpecificInterval(((0., 2.), (2.5, 4.), (5., 7.), (7.5, 9.))), mask=models.Mask.types['No mask'], activity=activity_distributions['Light activity'], @@ -116,7 +116,7 @@ def ski_cabin_mc(): ), infected=mc.InfectedPopulation( number=1, - virus=virus_distributions['SARS_CoV_2_B117'], + virus=virus_distributions['SARS_CoV_2_ALPHA'], presence=mc.SpecificInterval(((0., 1/3),)), mask=models.Mask(η_inhale=0.3), activity=activity_distributions['Moderate activity'], @@ -151,7 +151,7 @@ def gym_mc(): ), infected=mc.InfectedPopulation( number=2, - virus=virus_distributions['SARS_CoV_2_B117'], + virus=virus_distributions['SARS_CoV_2_ALPHA'], presence=mc.SpecificInterval(((0., 1.),)), mask=models.Mask.types["No mask"], activity=activity_distributions['Heavy exercise'], @@ -185,7 +185,7 @@ def waiting_room_mc(): ), infected=mc.InfectedPopulation( number=1, - virus=virus_distributions['SARS_CoV_2_B117'], + virus=virus_distributions['SARS_CoV_2_ALPHA'], presence=mc.SpecificInterval(((0., 2.),)), mask=models.Mask.types["No mask"], activity=activity_distributions['Seated'], @@ -295,7 +295,7 @@ def test_small_shared_office_Geneva(mask_type, month, expected_pi, ), infected=mc.InfectedPopulation( number=1, - virus=virus_distributions['SARS_CoV_2_B117'], + virus=virus_distributions['SARS_CoV_2_ALPHA'], presence=mc.SpecificInterval(((9., 10+2/3), (10+5/6, 12.5), (13.5, 15+2/3), (15+5/6, 18.))), mask=models.Mask.types[mask_type], activity=activity_distributions['Seated'], diff --git a/cara/tests/test_predefined_distributions.py b/cara/tests/test_predefined_distributions.py index 4197b2fb..524cfcfe 100644 --- a/cara/tests/test_predefined_distributions.py +++ b/cara/tests/test_predefined_distributions.py @@ -36,9 +36,9 @@ def test_activity_distributions(distribution, mean, std): "distribution, mean, std",[ ['SARS_CoV_2', 6.59, 1.74], - ['SARS_CoV_2_B117', 6.59, 1.74], + ['SARS_CoV_2_ALPHA', 6.59, 1.74], - ['SARS_CoV_2_P1', 6.59, 1.74], + ['SARS_CoV_2_GAMMA', 6.59, 1.74], ] ) def test_viral_load_logdistribution(distribution, mean, std):