updated expiration definition
This commit is contained in:
parent
a61d065b83
commit
2658e36add
5 changed files with 12 additions and 11 deletions
|
|
@ -711,6 +711,9 @@ class Expiration(_ExpirationBase):
|
|||
# to c_n,i in Eq. (4) of https://doi.org/10.1101/2021.10.14.21264988)
|
||||
cn: float = 1.
|
||||
|
||||
#: Expiration name
|
||||
name: typing.Optional[str] = None
|
||||
|
||||
@property
|
||||
def particle(self) -> Particle:
|
||||
"""
|
||||
|
|
@ -1313,7 +1316,7 @@ class ShortRangeModel:
|
|||
data_registry: DataRegistry
|
||||
|
||||
#: Expiration type
|
||||
expiration: _ExpirationBase
|
||||
expiration: Expiration
|
||||
|
||||
#: Activity type
|
||||
activity: Activity
|
||||
|
|
@ -1324,9 +1327,6 @@ class ShortRangeModel:
|
|||
#: Interpersonal distances
|
||||
distance: _VectorisedFloat
|
||||
|
||||
#: Expiration definition
|
||||
expiration_def: typing.Optional[str] = None
|
||||
|
||||
def dilution_factor(self) -> _VectorisedFloat:
|
||||
'''
|
||||
The dilution factor for the respective expiratory activity type.
|
||||
|
|
|
|||
|
|
@ -365,6 +365,7 @@ def expiration_distribution(
|
|||
BLO_factors,
|
||||
d_min=0.1,
|
||||
d_max=30.,
|
||||
exp_type=None,
|
||||
):
|
||||
"""
|
||||
Returns an Expiration with an aerosol diameter distribution, defined
|
||||
|
|
@ -382,6 +383,7 @@ def expiration_distribution(
|
|||
kernel_bandwidth=0.1,
|
||||
),
|
||||
cn=BLOmodel(data_registry, BLO_factors).integrate(d_min, d_max),
|
||||
name=exp_type,
|
||||
)
|
||||
|
||||
|
||||
|
|
@ -432,7 +434,8 @@ def short_range_expiration_distributions(data_registry):
|
|||
data_registry=data_registry,
|
||||
BLO_factors=BLO_factors,
|
||||
d_min=param_evaluation(data_registry.expiration_particle['particle_size_range']['short_range'], 'minimum_diameter'),
|
||||
d_max=param_evaluation(data_registry.expiration_particle['particle_size_range']['short_range'], 'maximum_diameter')
|
||||
d_max=param_evaluation(data_registry.expiration_particle['particle_size_range']['short_range'], 'maximum_diameter'),
|
||||
exp_type=exp_type,
|
||||
)
|
||||
for exp_type, BLO_factors in expiration_BLO_factors(data_registry).items()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,8 +5,6 @@ import io
|
|||
import typing
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib
|
||||
matplotlib.use('Agg')
|
||||
from collections import defaultdict
|
||||
|
||||
from caimira.calculator.models import models, dataclass_utils, profiler, monte_carlo as mc
|
||||
|
|
@ -226,7 +224,7 @@ def group_results(form: VirusFormData, model_group: models.ExposureModelGroup) -
|
|||
# Short range outputs
|
||||
short_range_interactions: dict = defaultdict(list)
|
||||
for short_range_model in single_group.short_range:
|
||||
short_range_interactions[short_range_model.expiration_def].extend(
|
||||
short_range_interactions[short_range_model.expiration.name].extend(
|
||||
short_range_model.presence.boundaries()
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -258,9 +258,10 @@ class VirusFormData(FormData):
|
|||
|
||||
short_range = defaultdict(list)
|
||||
if self.short_range_option == "short_range_yes":
|
||||
sr_expiration_distributions = short_range_expiration_distributions(self.data_registry)
|
||||
for key, group in self.short_range_interactions.items():
|
||||
for interaction in group:
|
||||
expiration = short_range_expiration_distributions(self.data_registry)[interaction['expiration']]
|
||||
expiration = sr_expiration_distributions[interaction['expiration']]
|
||||
presence = self.short_range_interval(interaction)
|
||||
distances = short_range_distances(self.data_registry)
|
||||
short_range[key].append(mc.ShortRangeModel(
|
||||
|
|
@ -269,7 +270,6 @@ class VirusFormData(FormData):
|
|||
activity=infected_population.activity,
|
||||
presence=presence,
|
||||
distance=distances,
|
||||
expiration_def=interaction['expiration']
|
||||
))
|
||||
|
||||
concentration_model: models.ConcentrationModel = mc.ConcentrationModel(
|
||||
|
|
|
|||
|
|
@ -290,7 +290,7 @@ function draw_plot(svg_id, group_id, times, concentrations_zoomed,
|
|||
});
|
||||
|
||||
// Short-Range Area.
|
||||
short_range_intervals.forEach((b, index) => {
|
||||
short_range_intervals.flat().forEach((b, index) => {
|
||||
shortRangeArea[index].x(d => xTimeRange(d.time))
|
||||
.y0(graph_height - 50)
|
||||
.y1(d => yRange(d.concentration));
|
||||
|
|
|
|||
Loading…
Reference in a new issue