From 1eb9d85b24a26d47abed0e58517d1e9b232980a0 Mon Sep 17 00:00:00 2001 From: Luis Aleixo Date: Fri, 24 Sep 2021 17:03:03 +0200 Subject: [PATCH 1/5] Changed transmissibility_factor for each virus --- cara/monte_carlo/data.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cara/monte_carlo/data.py b/cara/monte_carlo/data.py index ea6a2349..4cb5f388 100644 --- a/cara/monte_carlo/data.py +++ b/cara/monte_carlo/data.py @@ -117,19 +117,19 @@ virus_distributions = { 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( 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.72, ), 'SARS_CoV_2_B16172': 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.51, ), } From 7a4e64c9b680a5b7d277fb845fa0bb38ded315ab Mon Sep 17 00:00:00 2001 From: Luis Aleixo Date: Fri, 24 Sep 2021 17:27:35 +0200 Subject: [PATCH 2/5] Added Beta VOC --- cara/apps/calculator/model_generator.py | 2 +- .../templates/base/calculator.report.html.j2 | 2 ++ .../calculator/templates/calculator.form.html.j2 | 2 ++ cara/models.py | 12 +++++++++--- cara/monte_carlo/data.py | 6 ++++++ 5 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cara/apps/calculator/model_generator.py b/cara/apps/calculator/model_generator.py index 6e4a5527..885b4500 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_B117', 'SARS_CoV_2_P1', 'SARS_CoV_2_B16172', 'SARS_CoV_2_B1351'} 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..963eea31 100644 --- a/cara/apps/calculator/templates/base/calculator.report.html.j2 +++ b/cara/apps/calculator/templates/base/calculator.report.html.j2 @@ -195,6 +195,8 @@ 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_SARS_CoV_2_B1351" %} + SARS-CoV-2 (Beta VOC) {% elif form.virus_type == "SARS_CoV_2_P1" %} SARS-CoV-2 (Gamma VOC) {% elif form.virus_type == "SARS_CoV_2_B16172" %} diff --git a/cara/apps/calculator/templates/calculator.form.html.j2 b/cara/apps/calculator/templates/calculator.form.html.j2 index 65391454..b570d85d 100644 --- a/cara/apps/calculator/templates/calculator.form.html.j2 +++ b/cara/apps/calculator/templates/calculator.form.html.j2 @@ -64,6 +64,7 @@ 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):
  • Alpha (also known as B.1.1.7, first identified in UK, Dec 2020),
  • +
  • Beta (also known as B.1.351, first identified in South Africa, Oct 2020).
  • Gamma (also known as P.1, first identified in Brazil/Japan, Jan 2021).
  • Delta (also known as B.1.617.2, first identified in India, Oct 2020).
diff --git a/cara/models.py b/cara/models.py index 67d4c62a..1f8fe188 100644 --- a/cara/models.py +++ b/cara/models.py @@ -480,19 +480,25 @@ Virus.types = { 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_B1351': SARSCoV2( + viral_load_in_sputum=1e9, + infectious_dose=50., + viable_to_RNA_ratio=0.5, + transmissibility_factor=0.8, + ), 'SARS_CoV_2_P1': 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( 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 4cb5f388..1abddb91 100644 --- a/cara/monte_carlo/data.py +++ b/cara/monte_carlo/data.py @@ -119,6 +119,12 @@ virus_distributions = { viable_to_RNA_ratio=viable_to_RNA_ratio_distribution, transmissibility_factor=0.78, ), + 'SARS_CoV_2_B1351': 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.8, + ), 'SARS_CoV_2_P1': mc.SARSCoV2( viral_load_in_sputum=symptomatic_vl_frequencies, infectious_dose=infectious_dose_distribution, From fe404bb374b03607f09e7554a8d4cf7a4a039428 Mon Sep 17 00:00:00 2001 From: Luis Aleixo Date: Thu, 7 Oct 2021 15:19:55 +0200 Subject: [PATCH 3/5] Update VOCs references --- .../calculator/templates/base/calculator.report.html.j2 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cara/apps/calculator/templates/base/calculator.report.html.j2 b/cara/apps/calculator/templates/base/calculator.report.html.j2 index 963eea31..5d9aaac4 100644 --- a/cara/apps/calculator/templates/base/calculator.report.html.j2 +++ b/cara/apps/calculator/templates/base/calculator.report.html.j2 @@ -194,13 +194,13 @@ {% 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) + SARS-CoV-2 (Alpha VOC) {% elif form.virus_type == "SARS_CoV_2_SARS_CoV_2_B1351" %} - SARS-CoV-2 (Beta VOC) + SARS-CoV-2 (Beta VOC) {% elif form.virus_type == "SARS_CoV_2_P1" %} - SARS-CoV-2 (Gamma VOC) + SARS-CoV-2 (Gamma VOC) {% elif form.virus_type == "SARS_CoV_2_B16172" %} - SARS-CoV-2 (Delta VOC) + SARS-CoV-2 (Delta VOC) {% endif %}

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

  • From 73b36b81db77ffb3003c919510efd3736ef86d15 Mon Sep 17 00:00:00 2001 From: Luis Aleixo Date: Tue, 12 Oct 2021 09:55:44 +0200 Subject: [PATCH 4/5] Changed PANGO names to greek letters --- cara/apps/calculator/model_generator.py | 2 +- .../templates/base/calculator.report.html.j2 | 8 ++++---- .../calculator/templates/calculator.form.html.j2 | 8 ++++---- cara/models.py | 8 ++++---- cara/monte_carlo/data.py | 8 ++++---- cara/tests/models/test_exposure_model.py | 2 +- cara/tests/test_monte_carlo_full_models.py | 12 ++++++------ cara/tests/test_predefined_distributions.py | 4 ++-- 8 files changed, 26 insertions(+), 26 deletions(-) diff --git a/cara/apps/calculator/model_generator.py b/cara/apps/calculator/model_generator.py index 885b4500..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', 'SARS_CoV_2_B1351'} +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 5d9aaac4..795851fb 100644 --- a/cara/apps/calculator/templates/base/calculator.report.html.j2 +++ b/cara/apps/calculator/templates/base/calculator.report.html.j2 @@ -193,13 +193,13 @@
  • Virus variant: {% if form.virus_type == "SARS_CoV_2" %} SARS-CoV-2 (nominal strain) - {% elif form.virus_type == "SARS_CoV_2_B117" %} + {% elif form.virus_type == "SARS_CoV_2_ALPHA" %} SARS-CoV-2 (Alpha VOC) - {% elif form.virus_type == "SARS_CoV_2_SARS_CoV_2_B1351" %} + {% elif form.virus_type == "SARS_CoV_2_SARS_CoV_2_BETA" %} SARS-CoV-2 (Beta VOC) - {% elif form.virus_type == "SARS_CoV_2_P1" %} + {% elif form.virus_type == "SARS_CoV_2_GAMMA" %} SARS-CoV-2 (Gamma VOC) - {% elif form.virus_type == "SARS_CoV_2_B16172" %} + {% elif form.virus_type == "SARS_CoV_2_DELTA" %} SARS-CoV-2 (Delta VOC) {% endif %}

  • diff --git a/cara/apps/calculator/templates/calculator.form.html.j2 b/cara/apps/calculator/templates/calculator.form.html.j2 index b570d85d..28d275eb 100644 --- a/cara/apps/calculator/templates/calculator.form.html.j2 +++ b/cara/apps/calculator/templates/calculator.form.html.j2 @@ -63,10 +63,10 @@ v{{ calculator_version }} Please sen diff --git a/cara/models.py b/cara/models.py index 1f8fe188..b7c1ff95 100644 --- a/cara/models.py +++ b/cara/models.py @@ -475,26 +475,26 @@ 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.78, ), - 'SARS_CoV_2_B1351': 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_P1': SARSCoV2( + 'SARS_CoV_2_GAMMA': SARSCoV2( viral_load_in_sputum=1e9, infectious_dose=50., viable_to_RNA_ratio = 0.5, 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, diff --git a/cara/monte_carlo/data.py b/cara/monte_carlo/data.py index 1abddb91..e4d23f8b 100644 --- a/cara/monte_carlo/data.py +++ b/cara/monte_carlo/data.py @@ -113,25 +113,25 @@ 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.78, ), - 'SARS_CoV_2_B1351': 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.8, ), - 'SARS_CoV_2_P1': 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.72, ), - 'SARS_CoV_2_B16172': mc.SARSCoV2( + '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, 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): From 8f601ef37c5dbafd6b9a40e0f2ec74d29af65b3c Mon Sep 17 00:00:00 2001 From: Luis Aleixo Date: Tue, 12 Oct 2021 16:49:18 +0200 Subject: [PATCH 5/5] Bug on Betta VOC --- cara/apps/calculator/templates/base/calculator.report.html.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cara/apps/calculator/templates/base/calculator.report.html.j2 b/cara/apps/calculator/templates/base/calculator.report.html.j2 index 795851fb..88aec4af 100644 --- a/cara/apps/calculator/templates/base/calculator.report.html.j2 +++ b/cara/apps/calculator/templates/base/calculator.report.html.j2 @@ -195,7 +195,7 @@ SARS-CoV-2 (nominal strain) {% elif form.virus_type == "SARS_CoV_2_ALPHA" %} SARS-CoV-2 (Alpha VOC) - {% elif form.virus_type == "SARS_CoV_2_SARS_CoV_2_BETA" %} + {% 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)