Skip to content

Calculator-v4.16.1: Merge branch 'bugfix/short-range-f_inf' into 'master'

Compare
Choose a tag to compare
@lrdossan lrdossan released this 20 Aug 09:39
· 118 commits to master since this release

Fixed error with fraction of infectious virus (f_inf) (short-range).

Default form values:

NO_DEFAULT = object()
DEFAULTS = {
    'activity_type': 'office',
    'air_changes': 0.,
    'air_supply': 0.,
    'arve_sensors_option': False,
    'specific_breaks': '{}',
    'precise_activity': '{}',
    'calculator_version': NO_DEFAULT,
    'ceiling_height': 0.,
    'conditional_probability_plot': False,
    'conditional_probability_viral_loads': False,
    'CO2_fitting_result': '{}',
    'exposed_coffee_break_option': 'coffee_break_0',
    'exposed_coffee_duration': 5,
    'exposed_finish': '17:30',
    'exposed_lunch_finish': '13:30',
    'exposed_lunch_option': True,
    'exposed_lunch_start': '12:30',
    'exposed_start': '08:30',
    'event_month': 'January',
    'floor_area': 0.,
    'hepa_amount': 0.,
    'hepa_option': False,
    'humidity': '',
    'infected_coffee_break_option': 'coffee_break_0',
    'infected_coffee_duration': 5,
    'infected_dont_have_breaks_with_exposed': False,
    'infected_finish': '17:30',
    'infected_lunch_finish': '13:30',
    'infected_lunch_option': True,
    'infected_lunch_start': '12:30',
    'infected_people': 1,
    'infected_start': '08:30',
    'inside_temp': NO_DEFAULT,
    'location_latitude': NO_DEFAULT,
    'location_longitude': NO_DEFAULT,
    'location_name': NO_DEFAULT,
    'geographic_population': 0,
    'geographic_cases': 0,
    'ascertainment_bias': 'confidence_low',
    'exposure_option': 'p_deterministic_exposure',
    'mask_type': 'Type I',
    'mask_wearing_option': 'mask_off',
    'mechanical_ventilation_type': 'not-applicable',
    'opening_distance': 0.,
    'room_heating_option': False,
    'room_number': NO_DEFAULT,
    'room_volume': 0.,
    'simulation_name': NO_DEFAULT,
    'total_people': NO_DEFAULT,
    'vaccine_option': False,
    'vaccine_booster_option': False,
    'vaccine_type': 'AZD1222_(AstraZeneca)',
    'vaccine_booster_type': 'AZD1222_(AstraZeneca)',
    'ventilation_type': 'no_ventilation',
    'virus_type': 'SARS_CoV_2',
    'volume_type': NO_DEFAULT,
    'window_type': 'window_sliding',
    'window_height': 0.,
    'window_width': 0.,
    'windows_duration': 10.,
    'windows_frequency': 60.,
    'windows_number': 0,
    'window_opening_regime': 'windows_open_permanently',
    'sensor_in_use': '',
    'short_range_option': 'short_range_no',
    'short_range_interactions': '[]',
    'short_range_occupants': 0,
}

# ------------------ Activities ----------------------

# ------------------ Validation ----------------------
COFFEE_OPTIONS_INT = {'coffee_break_0': 0, 'coffee_break_1': 1,
                      'coffee_break_2': 2, 'coffee_break_4': 4}
CONFIDENCE_LEVEL_OPTIONS = {'confidence_low': 10,
                            'confidence_medium': 5, 'confidence_high': 2}
MECHANICAL_VENTILATION_TYPES = {
    'mech_type_air_changes', 'mech_type_air_supply', 'not-applicable'}
MASK_WEARING_OPTIONS = {'mask_on', 'mask_off'}
MONTH_NAMES = [
    'January', 'February', 'March', 'April', 'May', 'June', 'July',
    'August', 'September', 'October', 'November', 'December',
]
VACCINE_BOOSTER_TYPE = ['AZD1222_(AstraZeneca)', 'Ad26.COV2.S_(Janssen)', 'BNT162b2_(Pfizer)', 'BNT162b2_(Pfizer)_(4th_dose)', 'BNT162b2_(Pfizer)_and_mRNA-1273_(Moderna)',
                        'BNT162b2_(Pfizer)_or_mRNA-1273_(Moderna)', 'BNT162b2_(Pfizer)_or_mRNA-1273_(Moderna)_(4th_dose)', 'CoronaVac_(Sinovac)', 'Coronavac_(Sinovac)', 'Sinopharm',
                        'mRNA-1273_(Moderna)', 'mRNA-1273_(Moderna)_(4th_dose)', 'Other']
VACCINE_TYPE = ['Ad26.COV2.S_(Janssen)', 'Any_mRNA_-_heterologous', 'AZD1222_(AstraZeneca)', 'AZD1222_(AstraZeneca)_and_any_mRNA_-_heterologous', 'AZD1222_(AstraZeneca)_and_BNT162b2_(Pfizer)',
                'BBIBP-CorV_(Beijing_CNBG)', 'BNT162b2_(Pfizer)', 'BNT162b2_(Pfizer)_and_mRNA-1273_(Moderna)', 'CoronaVac_(Sinovac)', 'CoronaVac_(Sinovac)_and_AZD1222_(AstraZeneca)', 'Covishield',
                'mRNA-1273_(Moderna)', 'Sputnik_V_(Gamaleya)', 'CoronaVac_(Sinovac)_and_BNT162b2_(Pfizer)']
VENTILATION_TYPES = {'natural_ventilation', 'mechanical_ventilation',
                     'no_ventilation', 'from_fitting'}
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'}

Configuration:

version = None

expiration_particle = {
    "long_range_particle_diameter": {
        "minimum_diameter": 0.1,
        "maximum_diameter": 30,
        "references": "Morawska et al. (https://doi.org/10.1016/j.jaerosci.2008.11.002); Johnson et al. (https://doi.org/10.1016/j.jaerosci.2011.07.009).",
    },
    "short_range_particle_diameter": {
        "minimum_diameter": 0.1,
        "maximum_diameter": 100,
        "references": "Morawska et al. (https://doi.org/10.1016/j.jaerosci.2008.11.002); Johnson et al. (https://doi.org/10.1016/j.jaerosci.2011.07.009).",
    },
    "BLOmodel": {
        "cn": {"B": 0.06, "L": 0.2, "O": 0.0010008},
        "mu": {"B": 0.989541, "L": 1.38629, "O": 4.97673},
        "sigma": {"B": 0.262364, "L": 0.506818, "O": 0.585005},
        "references": "Morawska et al. (https://doi.org/10.1016/j.jaerosci.2008.11.002); Johnson et al. (https://doi.org/10.1016/j.jaerosci.2011.07.009).",
    },
    "expiration_BLO_factors": {
        "Breathing": {"B": 1., "L": 0., "O": 0., },
        "Speaking": {"B": 1., "L": 1., "O": 1., },
        "Singing": {"B": 1., "L": 5., "O": 5., },
        "Shouting": {"B": 1., "L": 5., "O": 5., },
        "references": "Morawska et al. (https://doi.org/10.1016/j.jaerosci.2008.11.002); Johnson et al. (https://doi.org/10.1016/j.jaerosci.2011.07.009).",
    },
    "particle": {
        "evaporation_factor": 0.3,
        "references": "Marr et al. (https://doi.org/10.1098/rsif.2018.0298).",
    },
}

activity_distributions = {
    "Seated": {
        "inhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": -0.6872121723362303,
                "lognormal_standard_deviation_gaussian": 0.10498338229297108,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
        "exhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": -0.6872121723362303,
                "lognormal_standard_deviation_gaussian": 0.10498338229297108,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
    },
    "Standing": {
        "inhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": -0.5742377578494785,
                "lognormal_standard_deviation_gaussian": 0.09373162411398223,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
        "exhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": -0.5742377578494785,
                "lognormal_standard_deviation_gaussian": 0.09373162411398223,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
    },
    "Light activity": {
        "inhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": 0.21380242785625422,
                "lognormal_standard_deviation_gaussian": 0.09435378091059601,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
        "exhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": 0.21380242785625422,
                "lognormal_standard_deviation_gaussian": 0.09435378091059601,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
    },
    "Moderate activity": {
        "inhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": 0.551771330362601,
                "lognormal_standard_deviation_gaussian": 0.1894616357138137,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
        "exhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": 0.551771330362601,
                "lognormal_standard_deviation_gaussian": 0.1894616357138137,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
    },
    "Heavy exercise": {
        "inhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": 1.1644665696723049,
                "lognormal_standard_deviation_gaussian": 0.21744554768657565,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
        "exhalation_rate": {
            "associated_value": "Log-normal distribution",
            "parameters": {
                "lognormal_mean_gaussian": 1.1644665696723049,
                "lognormal_standard_deviation_gaussian": 0.21744554768657565,
            },
            "references": "Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
        },
    },
}

virological_data = {
    "symptomatic_vl_frequencies": {
        "associated_value": "Log Custom Kernel distribution",
        "parameters": {
            "log_variable": [
                2.46032,
                2.67431,
                2.85434,
                3.06155,
                3.25856,
                3.47256,
                3.66957,
                3.85979,
                4.09927,
                4.27081,
                4.47631,
                4.66653,
                4.87204,
                5.10302,
                5.27456,
                5.46478,
                5.6533,
                5.88428,
                6.07281,
                6.30549,
                6.48552,
                6.64856,
                6.85407,
                7.10373,
                7.30075,
                7.47229,
                7.66081,
                7.85782,
                8.05653,
                8.27053,
                8.48453,
                8.65607,
                8.90573,
                9.06878,
                9.27429,
                9.473,
                9.66152,
                9.87552,
            ],
            "frequencies": [
                0.001206885,
                0.007851618,
                0.008078144,
                0.01502491,
                0.013258014,
                0.018528495,
                0.020053765,
                0.021896167,
                0.022047184,
                0.018604005,
                0.01547796,
                0.018075445,
                0.021503523,
                0.022349217,
                0.025097721,
                0.032875078,
                0.030594727,
                0.032573045,
                0.034717482,
                0.034792991,
                0.033267721,
                0.042887485,
                0.036846816,
                0.03876473,
                0.045016819,
                0.040063473,
                0.04883754,
                0.043944602,
                0.048142864,
                0.041588741,
                0.048762031,
                0.027921732,
                0.033871788,
                0.022122693,
                0.016927718,
                0.008833228,
                0.00478598,
                0.002807662,
            ],
            "kernel_bandwidth": 0.1,
        },
        "references": "Henriques et al. (https://doi.org/10.1101/2021.10.14.21264988) and references therein.",
    },
    "covid_overal_vl_data": {
        "associated_value": "Weibull distribution",
        "parameters": {
            "shape_factor": 3.47,
            "scale_factor": 7.01,
            "start": 0.01,
            "stop": 0.99,
            "num": 30.0,
            "min_bound": 2,
            "max_bound": 10,
            "interpolation_fp_left": 0,
            "interpolation_fp_right": 0,
            "max_function": 0.2,
        },
        "references": "Chen et al. (https://elifesciences.org/articles/65774); First line of the figure in https://iiif.elifesciences.org/lax:65774%2Felife-65774-fig4-figsupp3-v2.tif/full/1500,/0/default.jpg.",
    },
    "virus_distributions": {
        "SARS_CoV_2": {
            "viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
            "infectious_dose": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 10, "high": 100},
                "references": "Lednicky et al. (https://doi.org/10.1016/j.ijid.2020.09.025); Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
            },
            "viable_to_RNA_ratio": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 0.01, "high": 0.6},
                "references": "",
            },
            "transmissibility_factor": {
                "value": 1,
                "references": "Campbell et al. (https://doi.org/10.2807/1560-7917.ES.2021.26.24.2100509.)",
            },
            "infectiousness_days": {
                "value": 14,
                "references": "",
            },
        },
        "SARS_CoV_2_ALPHA": {
            "viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
            "infectious_dose": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 10, "high": 100},
                "references": "Lednicky et al. (https://doi.org/10.1016/j.ijid.2020.09.025); Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
            },
            "viable_to_RNA_ratio": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 0.01, "high": 0.6},
                "references": "",
            },
            "transmissibility_factor": {
                "value": 0.78,
                "references": "Campbell et al. (https://doi.org/10.2807/1560-7917.ES.2021.26.24.2100509.)",
            },
            "infectiousness_days": {
                "value": 14,
                "references": "",
            },
        },
        "SARS_CoV_2_BETA": {
            "viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
            "infectious_dose": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 10, "high": 100},
                "references": "Lednicky et al. (https://doi.org/10.1016/j.ijid.2020.09.025); Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
            },
            "viable_to_RNA_ratio": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 0.01, "high": 0.6},
                "references": "",
            },
            "transmissibility_factor": {
                "value": 0.8,
                "references": "Campbell et al. (https://doi.org/10.2807/1560-7917.ES.2021.26.24.2100509.)",
            },
            "infectiousness_days": {
                "value": 14,
                "references": "",
            },
        },
        "SARS_CoV_2_GAMMA": {
            "viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
            "infectious_dose": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 10, "high": 100},
                "references": "Lednicky et al. (https://doi.org/10.1016/j.ijid.2020.09.025); Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
            },
            "viable_to_RNA_ratio": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 0.01, "high": 0.6},
                "references": "",
            },
            "transmissibility_factor": {
                "value": 0.72,
                "references": "Campbell et al. (https://doi.org/10.2807/1560-7917.ES.2021.26.24.2100509.)",
            },
            "infectiousness_days": {
                "value": 14,
                "references": "",
            },
        },
        "SARS_CoV_2_DELTA": {
            "viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
            "infectious_dose": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 10, "high": 100},
                "references": "Lednicky et al. (https://doi.org/10.1016/j.ijid.2020.09.025); Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
            },
            "viable_to_RNA_ratio": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 0.01, "high": 0.6},
                "references": "",
            },
            "transmissibility_factor": {
                "value": 0.51,
                "references": "Campbell et al. (https://doi.org/10.2807/1560-7917.ES.2021.26.24.2100509.)",
            },
            "infectiousness_days": {
                "value": 14,
                "references": "",
            },
        },
        "SARS_CoV_2_OMICRON": {
            "viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
            "infectious_dose": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 10, "high": 100},
                "references": "Lednicky et al. (https://doi.org/10.1016/j.ijid.2020.09.025); Henriques et al. (https://doi.org/10.1098/rsfs.2021.0076) and references therein.",
            },
            "viable_to_RNA_ratio": {
                "associated_value": "Uniform distribution",
                "parameters": {"low": 0.01, "high": 0.6},
                "references": "",
            },
            "transmissibility_factor": {
                "value": 0.2,
                "references": "",
            },
            "infectiousness_days": {
                "value": 14,
                "references": "",
            },
        },
    },
}

mask_distributions = {
    "Type I": {
        "η_inhale": {
            "associated_value": "Uniform distribution",
            "parameters": {
                "low": 0.25,
                "high": 0.80,
            },
            "references": "Pan et al. (https://doi.org/10.1080/02786826.2021.1890687); Booth et al. (https://doi.org/10.1016/j.jhin.2013.02.007); Monn et al. (https://doi.org/10.4209/aaqr.2020.08.0531).",
        },
        "factor_exhale": {
            "value": 1,
            "references": "",
        },
    },
    "FFP2": {
        "η_inhale": {
            "associated_value": "Uniform distribution",
            "parameters": {
                "low": 0.83,
                "high": 0.91,
            },
            "references": "Pan et al. (https://doi.org/10.1080/02786826.2021.1890687); Booth et al. (https://doi.org/10.1016/j.jhin.2013.02.007); Monn et al. (https://doi.org/10.4209/aaqr.2020.08.0531).",
        },
        "factor_exhale": {
            "value": 1,
            "references": "",
        },
    },
    "Cloth": {
        "η_inhale": {
            "associated_value": "Uniform distribution",
            "parameters": {
                "low": 0.05,
                "high": 0.40,
            },
            "references": "Pan et al. (https://doi.org/10.1080/02786826.2021.1890687); Booth et al. (https://doi.org/10.1016/j.jhin.2013.02.007); Monn et al. (https://doi.org/10.4209/aaqr.2020.08.0531).",
        },
        "η_exhale": {
            "associated_value": "Uniform distribution",
            "parameters": {
                "low": 0.20,
                "high": 0.50,
            },
            "references": "Pan et al. (https://doi.org/10.1080/02786826.2021.1890687); Booth et al. (https://doi.org/10.1016/j.jhin.2013.02.007); Monn et al. (https://doi.org/10.4209/aaqr.2020.08.0531).",
        },
        "factor_exhale": {
            "value": 1,
            "references": "",
        },
    },
}

####################################

room = {
    "inside_temp": 293.,
    "humidity_with_heating": 0.3,
    "humidity_without_heating": 0.5,
    "references": "",
}

ventilation = {
    "natural": {
        "discharge_factor": {
            "sliding": 0.6,
        },
    },
    "infiltration_ventilation": 0.25,
    "references": "Henriques et al. (https://doi.org/10.1101/2021.10.14.21264988).",
}

concentration_model = {
    "virus_concentration_model": {
        "min_background_concentration": 0.0,
        "references": "",
    },
    "CO2_concentration_model": {
        "CO2_atmosphere_concentration": 440.44,
        "CO2_fraction_exhaled": 0.042,
        "references": "",
    },
}

short_range_model = {
    "dilution_factor": {
        "mouth_diameter": 0.02,
        "exhalation_coefficient": 2,
        "breathing_cycle": 4,
        "penetration_coefficients": {
            "𝛽r1": 0.18,
            "𝛽r2": 0.2,
            "𝛽x1": 2.4,
        },
        "references": "Jia et al. (https://doi.org/10.1016/j.buildenv.2022.109166).",
    },
    "conversational_distance": {
        "minimum_distance": 0.5,
        "maximum_distance": 2.0,
        "references": "Derived from Fig. 8 a) 'stand-stand' in Zhang et al. (https://www.mdpi.com/1660-4601/17/4/1445).",
    },
}

monte_carlo = {
    "sample_size": 250000,
    "references": "",
}

population_scenario_activity = {
    "office": {"placeholder": "Office", "activity": "Seated", "expiration": {"Speaking": 1, "Breathing": 2}},
    "smallmeeting": {
        "placeholder": "Small meeting (<10 occ.)",
        "activity": "Seated",
        "expiration": {"Speaking": 1},
    },
    "largemeeting": {
        "placeholder": "Large meeting (>= 10 occ.)",
        "activity": "Standing",
        "expiration": {"Speaking": 1, "Breathing": 2},
    },
    "callcenter": {"placeholder": "Call Center", "activity": "Seated", "expiration": {"Speaking": 1}},
    "controlroom-day": {
        "placeholder": "Control Room - Day shift",
        "activity": "Seated",
        "expiration": {"Speaking": 1, "Breathing": 1},
    },
    "controlroom-night": {
        "placeholder": "Control Room - Night shift",
        "activity": "Seated",
        "expiration": {"Speaking": 1, "Breathing": 9},
    },
    "library": {"placeholder": "Library", "activity": "Seated", "expiration": {"Breathing": 1}},
    "lab": {
        "placeholder": "Lab",
        "activity": "Light activity",
        "expiration": {"Speaking": 1, "Breathing": 1},
    },
    "workshop": {
        "placeholder": "Workshop",
        "activity": "Moderate activity",
        "expiration": {"Speaking": 1, "Breathing": 1},
    },
    "training": {"placeholder": "Conference/Training (speaker infected)", "activity": "Standing", "expiration": {"Speaking": 1}},
    "training_attendee": {"placeholder": "Conference/Training (attendee infected)", "activity": "Seated", "expiration": {"Breathing": 1}},
    "gym": {"placeholder": "Gym", "activity": "Heavy exercise", "expiration": {"Breathing": 1}},
    "household-day": {
        "placeholder": "Household (day time)",
        "activity": "Light activity",
        "expiration": {"Breathing": 5, "Speaking": 5},
    },
    "household-night": {
        "placeholder": "Household (evening and night time)",
        "activity": "Seated",
        "expiration": {"Breathing": 7, "Speaking": 3},
    },
    "primary-school": {
        "placeholder": "Primary school",
        "activity": "Light activity",
        "expiration": {"Breathing": 5, "Speaking": 5},
    },
    "secondary-school": {
        "placeholder": "Secondary school",
        "activity": "Light activity",
        "expiration": {"Breathing": 7, "Speaking": 3},
    },
    "university": {
        "placeholder": "University",
        "activity": "Seated",
        "expiration": {"Breathing": 9, "Speaking": 1},
    },
    "restaurant": {
        "placeholder": "Restaurant",
        "activity": "Seated",
        "expiration": {"Breathing": 1, "Speaking": 9},
    },
    "precise": {"placeholder": "Precise", "activity": "", "expiration": {}},
}

image