Compare commits

...

101 commits

Author SHA1 Message Date
Luis Aleixo
25fe14c1aa Removed script files 2021-09-17 11:18:21 +02:00
Luis Aleixo
cbae4a01a3 updated boxplot positions 2021-09-16 17:53:36 +02:00
Luis Aleixo
adb8dccbad compare_viruses_vr plot 2021-09-16 17:29:50 +02:00
Luis Aleixo
0c992e459f added corrected models for the concentrations plot 2021-09-16 12:12:52 +02:00
Andrejh
42ed330ad4 color plot update 2021-09-15 16:00:12 +02:00
Luis Aleixo
e6818c6661 compare_concentration_curves methods 2021-09-15 15:59:10 +02:00
Andrejh
d83b86de4b add comment 2021-09-15 13:15:59 +02:00
Luis Aleixo
29f191dd2a Added uniform distribution to the infectious_dose 2021-09-15 10:58:33 +02:00
Luis Aleixo
f50ce6d15b Updated fraction_deposited value according to the diameter 2021-09-15 10:51:34 +02:00
Luis Aleixo
4f63325617 Merge branch 'master' into paper/deposition_fraction 2021-09-15 10:39:10 +02:00
Luis Aleixo
9810ee3f1f deposition_fraction_plot with correct values 2021-09-15 10:38:17 +02:00
Luis Aleixo
cb7d8abeb8 changed linespace range 2021-09-14 17:36:53 +02:00
Luis Aleixo
c4d43c099c d_dep approach 1.0 2021-09-14 17:12:19 +02:00
Luis Aleixo
34b1f89d69 deposition fraction for a breathing model 2021-09-14 14:25:23 +02:00
Luis Aleixo
f9c92329d8 modified f_dep according to Finlay & Martin 2021-09-14 10:41:04 +02:00
Andrejh
0ce14e56f3 add results for shouting 2021-09-12 14:27:49 +02:00
Andrejh
9fe5ecc04f add results for paper 2021-09-12 14:07:39 +02:00
Andrejh
6e14f8dbb6 update var naming 2021-09-10 16:48:17 +02:00
Luis Aleixo
8807942603 f_dep in function of diameter graph 2021-09-10 10:10:44 +02:00
Andrejh
2bc31d88f6 harmonize unfiform dist in data.py 2021-09-08 17:40:32 +02:00
Luis Aleixo
8c1ab2f504 Added viable_to_RNA variable to each virus in model 2021-09-08 15:46:19 +02:00
Andrejh
4dac6237c2 Merge remote-tracking branch 'origin/feature/virions_plot' into feature/virions_plot 2021-09-08 15:40:51 +02:00
Andrejh
95cfddcdbe add mask dependency 2021-09-08 15:40:07 +02:00
Luis Aleixo
fe00584c89 Merge branch 'feature/virions_plot' of https://gitlab.cern.ch/cara/cara into feature/virions_plot 2021-09-08 15:35:30 +02:00
Luis Aleixo
b92b2ec132 Added viable_to_RNA distribution on Virus class 2021-09-08 15:35:17 +02:00
Andrejh
eb8feb6ed4 add phy activity as and atribute 2021-09-08 15:12:25 +02:00
Luis Aleixo
902396fcf7 added values of cn_B and cn_L into the model 2021-09-08 14:33:57 +02:00
Luis Aleixo
c81e9b1c14 merge with new style 2021-09-07 16:46:41 +02:00
Luis Aleixo
e8f4db16fa CDF models for breathing, speaking and shouting 2021-09-07 12:15:51 +02:00
Luis Aleixo
ca120716ff Merge branch 'master' into feature/virions_plot 2021-09-07 09:59:12 +02:00
Luis Aleixo
b820b3d889 bug in print_er_info arguments 2021-09-07 09:56:42 +02:00
Luis Aleixo
5f9091f18b Changed colormap fontsize 2021-09-06 17:29:55 +02:00
Luis Aleixo
83caf48282 Merge branch 'feature/virions_plot' of https://gitlab.cern.ch/cara/cara into feature/virions_plot 2021-09-06 17:14:29 +02:00
Luis Aleixo
52ee8f3c38 Plot with correct legends and media values 2021-09-06 17:13:31 +02:00
Andrejh
16e705f5bb increase sample size + add means of log(er) 2021-09-06 17:00:30 +02:00
Andrejh
ba2524a1ea Merge remote-tracking branch 'origin/feature/virions_plot' into feature/virions_plot 2021-09-06 15:37:20 +02:00
Andrejh
a4b1e5adf2 legend edits 2021-09-06 15:36:54 +02:00
Luis Aleixo
e152b296c8 breathing, speaking and shouting histograms all in one 2021-09-06 14:44:14 +02:00
Luis Aleixo
cca80d86ea changed models.virus to mc.virus 2021-09-06 11:29:55 +02:00
Luis Aleixo
f0c59b0c61 added shouting model and changed talking to speaking 2021-09-06 11:04:03 +02:00
Luis Aleixo
57b6a668c0 statistical data for breathing and talking models 2021-09-06 10:42:31 +02:00
Luis Aleixo
c4afd66747 statistical data on emission rate 2021-09-06 09:37:18 +02:00
Andrejh
b00af20e82 minor edit 2021-09-03 17:18:49 +02:00
Andrejh
3ea400af2a rearrange code in file to group talking together 2021-09-03 17:11:24 +02:00
Andrejh
38b48d3341 add tick 2021-09-03 17:10:06 +02:00
Andrejh
afb49ee1e7 Merge remote-tracking branch 'origin/feature/virions_plot' into feature/virions_plot 2021-09-03 16:59:56 +02:00
Luis Aleixo
a4114edaf9 bug fix on label 2021-09-03 15:53:35 +02:00
Andrejh
b76152015b Merge remote-tracking branch 'origin/feature/virions_plot' into feature/virions_plot
# Conflicts:
#	cara/model_scenarios.py
2021-09-03 15:50:22 +02:00
Luis Aleixo
919ba2f51e Changed graph legend 2021-09-03 15:49:35 +02:00
Andrejh
1b6f5eea75 legend updates 2021-09-03 15:41:23 +02:00
Luis Aleixo
dc86171bd1 changed files organization 2021-09-03 15:39:04 +02:00
Luis Aleixo
9686739cc6 Correct breathing values 2021-09-03 13:55:27 +02:00
Luis Aleixo
7aec37c47a Merge branch 'feature/virions_plot' of https://gitlab.cern.ch/cara/cara into feature/virions_plot 2021-09-03 12:48:20 +02:00
Luis Aleixo
25f4981c96 Removed unused code and added line legend for cn (B and L) 2021-09-03 12:46:46 +02:00
Andrejh
e93e744dec legend updates 2021-09-03 12:08:40 +02:00
Luis Aleixo
7be638c92f Legends and colormap 2021-09-03 11:16:21 +02:00
Luis Aleixo
32a2a75bc9 Changed color value 2021-09-02 10:43:45 +02:00
Luis Aleixo
f2b1335beb Merge branch 'master' into feature/virions_plot 2021-09-02 10:36:50 +02:00
Luis Aleixo
5c07820a9e Changed colormap color scale and plot linewidth 2021-09-02 10:35:16 +02:00
Andrejh
32f9fa0d50 add cn_L, cn_B 2021-09-02 10:19:30 +02:00
Andrejh
9d0c93947d add 1.0 as cn default 2021-09-02 09:50:12 +02:00
Luis Aleixo
d79469ffba fit_function_to_data_points function 2021-09-01 16:00:20 +02:00
Luis Aleixo
5cdf955d58 changed ylim 2021-08-31 17:30:04 +02:00
Luis Aleixo
9dda1e81e0 New points and graph 2021-08-31 17:24:45 +02:00
Luis Aleixo
ffa52ee901 new plot with multiple cn lines 2021-08-31 12:50:47 +02:00
Andrejh
0f0def394b raw data in copies per hour 2021-08-20 11:11:52 +02:00
Luis Aleixo
3724009060 updated legends for different graphs 2021-08-20 10:55:26 +02:00
Andrejh
90ae11ebc4 normalize data from per hour to per 30min (breathing) and per 15min (talking) 2021-08-19 11:49:27 +02:00
Luis Aleixo
cbc5ffb203 added methods to different scenarios 2021-08-18 14:23:46 +02:00
Andrejh
4d95dd2ced add data for talking 2021-08-18 10:18:11 +02:00
Andrejh
9e04e2e2f2 update markers and labels 2021-08-18 10:04:40 +02:00
Andrejh
93662ad875 change to 100% breathing 2021-08-18 09:45:41 +02:00
Andrejh
c60f363726 Merge remote-tracking branch 'origin/feature/virions_plot' into feature/virions_plot 2021-08-18 09:32:39 +02:00
Andrejh
5ee92afbe1 update labels 2021-08-18 09:31:55 +02:00
Luis Aleixo
68e7c1c13d updated requirements 2021-08-17 15:51:46 +02:00
Luis Aleixo
0350b1e8e6 plot legend with titles 2021-08-17 11:12:39 +02:00
Luis Aleixo
158320e522 added labels to each author 2021-08-16 17:44:29 +02:00
Luis Aleixo
0a2fc3ef17 added cluster areas 2021-08-16 15:49:33 +02:00
Luis Aleixo
b2d794316a Merge branch 'master' into feature/virions_plot 2021-08-06 11:41:55 +02:00
Luis Aleixo
f5ee4c3882 updated Yan data 2021-08-06 11:36:23 +02:00
Andrejh
60cb0ef455 update plot labels 2021-08-06 09:55:37 +02:00
Luis Aleixo
d33affa36f added points from file into the plot 2021-08-05 17:39:57 +02:00
Luis Aleixo
8daa03881c deleted unused file 2021-08-05 15:28:06 +02:00
Luis Aleixo
e7decf52b2 update report_generator according to previous version 2021-08-05 15:11:28 +02:00
Luis Aleixo
81dcbcd39e file used to plot and write data 2021-08-05 15:10:21 +02:00
Luis Aleixo
2988f2085b files division 2021-08-05 14:40:08 +02:00
Luis Aleixo
90040a62a2 plot with log scale on y axis 2021-08-05 13:40:57 +02:00
Luis Aleixo
ae085826dd plot fig 2021-08-05 09:58:22 +02:00
Luis Aleixo
d03ff7f4f0 added model_scenario 2021-08-05 09:41:01 +02:00
Luis Aleixo
b59ae0236d tab missing 2021-08-04 14:16:48 +02:00
Luis Aleixo
f614027b02 test_exposure_model values adjustments 2021-08-04 14:07:01 +02:00
Luis Aleixo
5ddddf10f8 Changed 'infectious virus' to 'virions' 2021-08-04 13:36:52 +02:00
Luis Aleixo
415ade0185 single test for infectious_dose_vectorisation fix #184 2021-08-04 11:43:58 +02:00
Luis Aleixo
160dcf6a60 test_infectious_dose_vectorisation code implementation 2021-08-04 09:59:04 +02:00
Luis Aleixo
c1938889b8 test_infected_population_vectorisation and test_concentration_model_vectorisation tests fix 2021-08-03 16:11:59 +02:00
Luis Aleixo
9a43db9c5a other variable names 2021-08-03 15:33:40 +02:00
Luis Aleixo
4b63281f02 test update with new values 2021-08-03 15:27:28 +02:00
Luis Aleixo
f6340d7986 added logic behing ER and concentration (model) 2021-08-03 13:45:14 +02:00
Luis Aleixo
0935056df2 variable renaming (remove quantum) 2021-08-03 11:22:08 +02:00
Luis Aleixo
52c4eb7c2c Revert "variables renaming (removal of quantum)"
This reverts commit ae4db5a4b0.
2021-08-03 11:18:44 +02:00
Luis Aleixo
ae4db5a4b0 variables renaming (removal of quantum) 2021-08-03 11:10:57 +02:00
7 changed files with 80 additions and 23 deletions

2
.gitignore vendored
View file

@ -4,6 +4,8 @@ __pycache__
*.DS_Store *.DS_Store
*.pyc *.pyc
data.csv
# Editor stuff # Editor stuff
*.swp *.swp
.idea .idea

View file

@ -246,7 +246,7 @@ class FormData:
ventilation=self.ventilation(), ventilation=self.ventilation(),
infected=self.infected_population(), infected=self.infected_population(),
), ),
exposed=self.exposed_population() exposed=self.exposed_population(),
) )
def build_model(self, sample_size=_DEFAULT_MC_SAMPLE_SIZE) -> models.ExposureModel: def build_model(self, sample_size=_DEFAULT_MC_SAMPLE_SIZE) -> models.ExposureModel:

View file

@ -339,3 +339,4 @@ class ReportGenerator:
def render(self, context: dict) -> str: def render(self, context: dict) -> str:
template = self._template_environment().get_template("calculator.report.html.j2") template = self._template_environment().get_template("calculator.report.html.j2")
return template.render(**context) return template.render(**context)

View file

@ -50,7 +50,6 @@ from .utils import method_cache
from .dataclass_utils import nested_replace from .dataclass_utils import nested_replace
# 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
# implies 1d arrays: multi-dimensional arrays are not supported. # implies 1d arrays: multi-dimensional arrays are not supported.
@ -429,6 +428,9 @@ class Virus:
#: Dose to initiate infection, in RNA copies #: Dose to initiate infection, in RNA copies
infectious_dose: _VectorisedFloat infectious_dose: _VectorisedFloat
#: viable-to-RNA virus ratio as a function of the viral load
viable_to_RNA: _VectorisedFloat
#: Pre-populated examples of Viruses. #: Pre-populated examples of Viruses.
types: typing.ClassVar[typing.Dict[str, "Virus"]] types: typing.ClassVar[typing.Dict[str, "Virus"]]
@ -465,19 +467,23 @@ Virus.types = {
# as per https://www.dhs.gov/publication/st-master-question-list-covid-19 # as per https://www.dhs.gov/publication/st-master-question-list-covid-19
# 50 comes from Buonanno et al. # 50 comes from Buonanno et al.
infectious_dose=50., infectious_dose=50.,
viable_to_RNA = 0.5,
), ),
'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=30.,
viable_to_RNA = 0.5,
), ),
'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=1/0.045,
viable_to_RNA = 0.5,
), ),
'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=30/1.6,
viable_to_RNA = 0.5,
), ),
} }
@ -539,7 +545,7 @@ class _ExpirationBase:
#: Pre-populated examples of Expirations. #: Pre-populated examples of Expirations.
types: typing.ClassVar[typing.Dict[str, "_ExpirationBase"]] types: typing.ClassVar[typing.Dict[str, "_ExpirationBase"]]
def aerosols(self, mask: Mask): def aerosols(self, mask: Mask, cn_B: float, cn_L: float):
""" """
total volume of aerosols expired per volume of air (mL/cm^3). total volume of aerosols expired per volume of air (mL/cm^3).
""" """
@ -561,19 +567,19 @@ class Expiration(_ExpirationBase):
BLO_factors: typing.Tuple[float, float, float] BLO_factors: typing.Tuple[float, float, float]
@cached() @cached()
def aerosols(self, mask: Mask): def aerosols(self, mask: Mask, cn_B: float, cn_L: float):
""" Result is in mL.cm^-3 """ """ Result is in mL.cm^-3 """
def volume(d): def volume(d):
return (np.pi * d**3) / 6. return (np.pi * d**3) / 6.
def _Bmode(d: float) -> float: def _Bmode(d: float, cn_B: float) -> float:
# B-mode (see ref. above). # B-mode (see ref. above).
return ( (1 / d) * (0.1 / (np.sqrt(2 * np.pi) * 0.262364)) * return ( (1 / d) * (cn_B / (np.sqrt(2 * np.pi) * 0.262364)) *
np.exp(-1 * (np.log(d) - 0.989541) ** 2 / (2 * 0.262364 ** 2))) np.exp(-1 * (np.log(d) - 0.989541) ** 2 / (2 * 0.262364 ** 2)))
def _Lmode(d: float) -> float: def _Lmode(d: float, cn_L: float) -> float:
# L-mode (see ref. above). # L-mode (see ref. above).
return ( (1 / d) * (1.0 / (np.sqrt(2 * np.pi) * 0.506818)) * return ( (1 / d) * (cn_L / (np.sqrt(2 * np.pi) * 0.506818)) *
np.exp(-1 * (np.log(d) - 1.38629) ** 2 / (2 * 0.506818 ** 2))) np.exp(-1 * (np.log(d) - 1.38629) ** 2 / (2 * 0.506818 ** 2)))
def _Omode(d: float) -> float: def _Omode(d: float) -> float:
@ -582,8 +588,8 @@ class Expiration(_ExpirationBase):
np.exp(-1 * (np.log(d) - 4.97673) ** 2 / (2 * 0.585005 ** 2))) np.exp(-1 * (np.log(d) - 4.97673) ** 2 / (2 * 0.585005 ** 2)))
def integrand(d: float) -> float: def integrand(d: float) -> float:
return (self.BLO_factors[0] * _Bmode(d) + return (self.BLO_factors[0] * _Bmode(d, cn_B) +
self.BLO_factors[1] * _Lmode(d) + self.BLO_factors[1] * _Lmode(d, cn_L) +
self.BLO_factors[2] * _Omode(d) self.BLO_factors[2] * _Omode(d)
) * volume(d) * (1 - mask.exhale_efficiency(d)) ) * volume(d) * (1 - mask.exhale_efficiency(d))
@ -608,9 +614,9 @@ class MultipleExpiration(_ExpirationBase):
raise ValueError("expirations and weigths should contain the" raise ValueError("expirations and weigths should contain the"
"same number of elements") "same number of elements")
def aerosols(self, mask: Mask): def aerosols(self, mask: Mask, cn_B: float, cn_L: float):
return np.array([ return np.array([
weight * expiration.aerosols(mask) / sum(self.weights) weight * expiration.aerosols(mask, cn_B, cn_L) / sum(self.weights)
for weight,expiration in zip(self.weights,self.expirations) for weight,expiration in zip(self.weights,self.expirations)
]).sum(axis=0) ]).sum(axis=0)
@ -676,8 +682,11 @@ class InfectedPopulation(Population):
#: 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
@method_cache #: The percentage of host immunity
def emission_rate_when_present(self) -> _VectorisedFloat: host_immunity: float = 0.
def emission_rate_when_present(self, cn_B: float = 0.06, cn_L: float = 0.2) -> _VectorisedFloat:
""" """
The emission rate if the infected population is present. The emission rate if the infected population is present.
@ -687,7 +696,7 @@ class InfectedPopulation(Population):
# Emission Rate (virions / h) # Emission Rate (virions / h)
# Note on units: exhalation rate is in m^3/h, aerosols in mL/cm^3 # Note on units: exhalation rate is in m^3/h, aerosols in mL/cm^3
# and viral load in virus/mL -> 1e6 conversion factor # and viral load in virus/mL -> 1e6 conversion factor
aerosols = self.expiration.aerosols(self.mask) aerosols = self.expiration.aerosols(self.mask, cn_B, cn_L)
ER = (self.virus.viral_load_in_sputum * ER = (self.virus.viral_load_in_sputum *
self.activity.exhalation_rate * self.activity.exhalation_rate *
@ -719,7 +728,7 @@ class InfectedPopulation(Population):
# with a declaration of state change time, as is the case for things # with a declaration of state change time, as is the case for things
# like Ventilation. # like Ventilation.
return self.emission_rate_when_present() return self.emission_rate_when_present(cn_B=0.06, cn_L=0.2)
@dataclass(frozen=True) @dataclass(frozen=True)
@ -906,7 +915,33 @@ class ExposureModel:
repeats: int = 1 repeats: int = 1
#: The fraction of viruses actually deposited in the respiratory tract #: The fraction of viruses actually deposited in the respiratory tract
fraction_deposited: _VectorisedFloat = 0.6 """
To be updated in the future.
The diameter value of 1.37 is the correspondent to a fraction_deposited of 0.6
"""
d = 1.37
IF = 1 - 0.5 * (1 - (1 / (1 + (0.00076*(d**2.8)))))
DF = IF * (0.0587 + (0.911/(1 + np.exp(4.77 + 1.485 * np.log(d)))) + (0.943/(1 + np.exp(0.508 - 2.58 * np.log(d)))))
fraction_deposited: _VectorisedFloat = DF
def _normed_exposure_between_bounds(self, time1: float, time2: float) -> _VectorisedFloat:
"""The number of virions per meter^3 between any two times, normalized
by the emission rate of the infected population"""
for start, stop in self.exposed.presence.boundaries():
if start > time2:
normed_exposure = 0.
break
elif time2 <= stop:
normed_exposure = self.concentration_model.normed_integrated_concentration(time1, time2)
break
else:
normed_exposure = self.concentration_model.normed_integrated_concentration(time1, time2)
return normed_exposure
def exposure_between_bounds(self, time1: float, time2: float) -> _VectorisedFloat:
"""The number of virions per meter^3 between any two times."""
return (self._normed_exposure_between_bounds(time1, time2) *
self.concentration_model.infected.emission_rate_when_present())
def _normed_exposure(self) -> _VectorisedFloat: def _normed_exposure(self) -> _VectorisedFloat:
""" """
@ -928,10 +963,11 @@ class ExposureModel:
def infection_probability(self) -> _VectorisedFloat: def infection_probability(self) -> _VectorisedFloat:
exposure = self.exposure() exposure = self.exposure()
# Dose
inf_aero = ( inf_aero = (
self.exposed.activity.inhalation_rate * self.exposed.activity.inhalation_rate *
(1 - self.exposed.mask.inhale_efficiency()) * (1 - self.exposed.mask.inhale_efficiency()) *
exposure * self.fraction_deposited exposure * self.fraction_deposited * (self.concentration_model.infected.virus.viable_to_RNA * (1 - self.concentration_model.infected.host_immunity))
) )
# Probability of infection. # Probability of infection.

View file

@ -38,24 +38,33 @@ symptomatic_vl_frequencies = LogCustomKernel(
kernel_bandwidth=0.1 kernel_bandwidth=0.1
) )
# From https://doi.org/10.1093/cid/ciaa1579
infectious_virus_distribution = Uniform(0.15, 0.45)
# From discussion with virologists
infectious_dose_distribution = Uniform(10., 100.)
# From CERN-OPEN-2021-04 and refererences therein # From CERN-OPEN-2021-04 and refererences therein
virus_distributions = { virus_distributions = {
'SARS_CoV_2': mc.SARSCoV2( 'SARS_CoV_2': mc.SARSCoV2(
viral_load_in_sputum=symptomatic_vl_frequencies, viral_load_in_sputum=symptomatic_vl_frequencies,
infectious_dose=100, infectious_dose=infectious_dose_distribution,
viable_to_RNA=infectious_virus_distribution,
), ),
'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=60, infectious_dose=infectious_dose_distribution,
viable_to_RNA=infectious_virus_distribution,
), ),
'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=100/2.25, infectious_dose=infectious_dose_distribution,
viable_to_RNA=infectious_virus_distribution,
), ),
'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=60/1.6, infectious_dose=infectious_dose_distribution,
viable_to_RNA=infectious_virus_distribution,
), ),
} }
@ -67,4 +76,6 @@ virus_distributions = {
mask_distributions = { mask_distributions = {
'Type I': mc.Mask(Uniform(0.25, 0.80)), 'Type I': mc.Mask(Uniform(0.25, 0.80)),
'FFP2': mc.Mask(Uniform(0.83, 0.91)), 'FFP2': mc.Mask(Uniform(0.83, 0.91)),
} }

View file

@ -84,3 +84,4 @@ webencodings==0.5.1
websocket-client==1.1.0 websocket-client==1.1.0
wheel==0.36.2 wheel==0.36.2
widgetsnbextension==3.5.1 widgetsnbextension==3.5.1
pandas==1.3.2

View file

@ -26,6 +26,12 @@ ignore_missing_imports = True
[mypy-scipy.*] [mypy-scipy.*]
ignore_missing_imports = True ignore_missing_imports = True
[mypy-tqdm.*]
ignore_missing_imports = True
[mypy-pandas.*]
ignore_missing_imports = True
[mypy-timezonefinder.*] [mypy-timezonefinder.*]
ignore_missing_imports = True ignore_missing_imports = True