twinks in the generated scenarios
This commit is contained in:
parent
c114eaa794
commit
cf966b427a
1 changed files with 26 additions and 31 deletions
|
|
@ -1,5 +1,5 @@
|
||||||
from cara import models, data
|
from cara import models, data
|
||||||
from cara.monte_carlo.data import activity_distributions, symptomatic_vl_frequencies, viable_to_RNA_ratio_distribution, infectious_dose_distribution, expiration_distributions
|
from cara.monte_carlo.data import activity_distributions, symptomatic_vl_frequencies, viable_to_RNA_ratio_distribution, infectious_dose_distribution, expiration_distributions, mask_distributions, virus_distributions
|
||||||
import cara.monte_carlo as mc
|
import cara.monte_carlo as mc
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from cara.monte_carlo.sampleable import Normal,LogNormal,LogCustomKernel,CustomKernel,Uniform
|
from cara.monte_carlo.sampleable import Normal,LogNormal,LogCustomKernel,CustomKernel,Uniform
|
||||||
|
|
@ -54,6 +54,11 @@ expiration_BLO_factors = {
|
||||||
######### Standard exposure models ###########
|
######### Standard exposure models ###########
|
||||||
|
|
||||||
def exposure_module(activity: str, expiration: str, mask: str):
|
def exposure_module(activity: str, expiration: str, mask: str):
|
||||||
|
if mask == 'No mask':
|
||||||
|
exposure_mask = models.Mask.types['No mask']
|
||||||
|
else:
|
||||||
|
exposure_mask = mask_distributions[mask]
|
||||||
|
|
||||||
exposure_mc = mc.ExposureModel(
|
exposure_mc = mc.ExposureModel(
|
||||||
concentration_model=mc.ConcentrationModel(
|
concentration_model=mc.ConcentrationModel(
|
||||||
room=models.Room(volume=100, humidity=0.5),
|
room=models.Room(volume=100, humidity=0.5),
|
||||||
|
|
@ -63,14 +68,9 @@ def exposure_module(activity: str, expiration: str, mask: str):
|
||||||
),
|
),
|
||||||
infected=mc.InfectedPopulation(
|
infected=mc.InfectedPopulation(
|
||||||
number=1,
|
number=1,
|
||||||
virus=mc.SARSCoV2(
|
virus=virus_distributions['SARS_CoV_2'],
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
|
||||||
infectious_dose=infectious_dose_distribution,
|
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
|
||||||
transmissibility_factor=1.,
|
|
||||||
),
|
|
||||||
presence=mc.SpecificInterval(((0, 2),)),
|
presence=mc.SpecificInterval(((0, 2),)),
|
||||||
mask=models.Mask.types[mask],
|
mask=exposure_mask,
|
||||||
activity=activity_distributions[activity],
|
activity=activity_distributions[activity],
|
||||||
expiration=expiration_distributions[expiration],
|
expiration=expiration_distributions[expiration],
|
||||||
host_immunity=0.,
|
host_immunity=0.,
|
||||||
|
|
@ -80,7 +80,7 @@ def exposure_module(activity: str, expiration: str, mask: str):
|
||||||
number=14,
|
number=14,
|
||||||
presence=mc.SpecificInterval(((0, 2),)),
|
presence=mc.SpecificInterval(((0, 2),)),
|
||||||
activity=activity_distributions[activity],
|
activity=activity_distributions[activity],
|
||||||
mask=models.Mask.types[mask],
|
mask=exposure_mask,
|
||||||
host_immunity=0.,
|
host_immunity=0.,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
@ -88,6 +88,11 @@ def exposure_module(activity: str, expiration: str, mask: str):
|
||||||
|
|
||||||
######### Exposure model for specific viral load ###########
|
######### Exposure model for specific viral load ###########
|
||||||
def exposure_vl(activity: str, expiration: str, mask: str, vl: float):
|
def exposure_vl(activity: str, expiration: str, mask: str, vl: float):
|
||||||
|
if mask == 'No mask':
|
||||||
|
exposure_mask = models.Mask.types['No mask']
|
||||||
|
else:
|
||||||
|
exposure_mask = mask_distributions[mask]
|
||||||
|
|
||||||
exposure_mc = mc.ExposureModel(
|
exposure_mc = mc.ExposureModel(
|
||||||
concentration_model=mc.ConcentrationModel(
|
concentration_model=mc.ConcentrationModel(
|
||||||
room=models.Room(volume=100, humidity=0.5),
|
room=models.Room(volume=100, humidity=0.5),
|
||||||
|
|
@ -104,7 +109,7 @@ def exposure_vl(activity: str, expiration: str, mask: str, vl: float):
|
||||||
transmissibility_factor=1.,
|
transmissibility_factor=1.,
|
||||||
),
|
),
|
||||||
presence=mc.SpecificInterval(((0, 2),)),
|
presence=mc.SpecificInterval(((0, 2),)),
|
||||||
mask=models.Mask.types[mask],
|
mask=exposure_mask,
|
||||||
activity=activity_distributions[activity],
|
activity=activity_distributions[activity],
|
||||||
expiration=expiration_distributions[expiration],
|
expiration=expiration_distributions[expiration],
|
||||||
host_immunity=0.,
|
host_immunity=0.,
|
||||||
|
|
@ -114,7 +119,7 @@ def exposure_vl(activity: str, expiration: str, mask: str, vl: float):
|
||||||
number=14,
|
number=14,
|
||||||
presence=mc.SpecificInterval(((0, 2),)),
|
presence=mc.SpecificInterval(((0, 2),)),
|
||||||
activity=activity_distributions[activity],
|
activity=activity_distributions[activity],
|
||||||
mask=models.Mask.types[mask],
|
mask=exposure_mask,
|
||||||
host_immunity=0.,
|
host_immunity=0.,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
@ -122,6 +127,11 @@ def exposure_vl(activity: str, expiration: str, mask: str, vl: float):
|
||||||
|
|
||||||
######### Exposure model for specific viral load ###########
|
######### Exposure model for specific viral load ###########
|
||||||
def exposure_vl_cn(activity: str, expiration: str, mask: str, vl: float, cn: typing.Tuple[float, float, float]):
|
def exposure_vl_cn(activity: str, expiration: str, mask: str, vl: float, cn: typing.Tuple[float, float, float]):
|
||||||
|
if mask == 'No mask':
|
||||||
|
exposure_mask = models.Mask.types['No mask']
|
||||||
|
else:
|
||||||
|
exposure_mask = mask_distributions[mask]
|
||||||
|
|
||||||
exposure_mc = mc.ExposureModel(
|
exposure_mc = mc.ExposureModel(
|
||||||
concentration_model=mc.ConcentrationModel(
|
concentration_model=mc.ConcentrationModel(
|
||||||
room=models.Room(volume=100, humidity=0.5),
|
room=models.Room(volume=100, humidity=0.5),
|
||||||
|
|
@ -138,7 +148,7 @@ def exposure_vl_cn(activity: str, expiration: str, mask: str, vl: float, cn: typ
|
||||||
transmissibility_factor=1.,
|
transmissibility_factor=1.,
|
||||||
),
|
),
|
||||||
presence=mc.SpecificInterval(((0, 2),)),
|
presence=mc.SpecificInterval(((0, 2),)),
|
||||||
mask=models.Mask.types[mask],
|
mask=exposure_mask,
|
||||||
activity=activity_distributions[activity],
|
activity=activity_distributions[activity],
|
||||||
expiration=cn_expiration_distribution(expiration_BLO_factors[expiration], cn),
|
expiration=cn_expiration_distribution(expiration_BLO_factors[expiration], cn),
|
||||||
host_immunity=0.,
|
host_immunity=0.,
|
||||||
|
|
@ -148,7 +158,7 @@ def exposure_vl_cn(activity: str, expiration: str, mask: str, vl: float, cn: typ
|
||||||
number=14,
|
number=14,
|
||||||
presence=mc.SpecificInterval(((0, 2),)),
|
presence=mc.SpecificInterval(((0, 2),)),
|
||||||
activity=activity_distributions[activity],
|
activity=activity_distributions[activity],
|
||||||
mask=models.Mask.types[mask],
|
mask=exposure_mask,
|
||||||
host_immunity=0.,
|
host_immunity=0.,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
|
@ -165,12 +175,7 @@ def office_model_no_mask_windows_closed():
|
||||||
infected=mc.InfectedPopulation(
|
infected=mc.InfectedPopulation(
|
||||||
number=1,
|
number=1,
|
||||||
presence=mc.SpecificInterval(present_times = ((0, 1.5), (2, 3.5), (4.5, 6), (6.5, 8))),
|
presence=mc.SpecificInterval(present_times = ((0, 1.5), (2, 3.5), (4.5, 6), (6.5, 8))),
|
||||||
virus=mc.SARSCoV2(
|
virus=virus_distributions['SARS_CoV_2'],
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
|
||||||
infectious_dose=infectious_dose_distribution,
|
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
|
||||||
transmissibility_factor=1.,
|
|
||||||
),
|
|
||||||
mask=models.Mask.types["No mask"],
|
mask=models.Mask.types["No mask"],
|
||||||
activity=activity_distributions['Light activity'],
|
activity=activity_distributions['Light activity'],
|
||||||
expiration=build_expiration({'Talking': 0.33, 'Breathing': 0.67}),
|
expiration=build_expiration({'Talking': 0.33, 'Breathing': 0.67}),
|
||||||
|
|
@ -206,12 +211,7 @@ def office_model_no_mask_windows_open_breaks():
|
||||||
infected=mc.InfectedPopulation(
|
infected=mc.InfectedPopulation(
|
||||||
number=1,
|
number=1,
|
||||||
presence=mc.SpecificInterval(present_times=((0, 1.5), (2, 3.5), (4.5, 6), (6.5, 8))),
|
presence=mc.SpecificInterval(present_times=((0, 1.5), (2, 3.5), (4.5, 6), (6.5, 8))),
|
||||||
virus=mc.SARSCoV2(
|
virus=virus_distributions['SARS_CoV_2'],
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
|
||||||
infectious_dose=infectious_dose_distribution,
|
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
|
||||||
transmissibility_factor=1.,
|
|
||||||
),
|
|
||||||
mask=models.Mask.types["No mask"],
|
mask=models.Mask.types["No mask"],
|
||||||
activity=activity_distributions['Light activity'],
|
activity=activity_distributions['Light activity'],
|
||||||
expiration=build_expiration({'Talking': 0.33, 'Breathing': 0.67}),
|
expiration=build_expiration({'Talking': 0.33, 'Breathing': 0.67}),
|
||||||
|
|
@ -246,12 +246,7 @@ def office_model_no_mask_windows_open_alltimes():
|
||||||
infected=mc.InfectedPopulation(
|
infected=mc.InfectedPopulation(
|
||||||
number=1,
|
number=1,
|
||||||
presence=mc.SpecificInterval(present_times=((0, 1.5), (2, 3.5), (4.5, 6), (6.5, 8))),
|
presence=mc.SpecificInterval(present_times=((0, 1.5), (2, 3.5), (4.5, 6), (6.5, 8))),
|
||||||
virus=mc.SARSCoV2(
|
virus=virus_distributions['SARS_CoV_2'],
|
||||||
viral_load_in_sputum=symptomatic_vl_frequencies,
|
|
||||||
infectious_dose=infectious_dose_distribution,
|
|
||||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution,
|
|
||||||
transmissibility_factor=1.,
|
|
||||||
),
|
|
||||||
mask=models.Mask.types["No mask"],
|
mask=models.Mask.types["No mask"],
|
||||||
activity=activity_distributions['Light activity'],
|
activity=activity_distributions['Light activity'],
|
||||||
expiration=build_expiration({'Talking': 0.33, 'Breathing': 0.67}),
|
expiration=build_expiration({'Talking': 0.33, 'Breathing': 0.67}),
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue