explain differences in new classes
This commit is contained in:
parent
92ce654442
commit
e34a31fd08
1 changed files with 47 additions and 1 deletions
|
|
@ -105,6 +105,11 @@ def lognormal(csi: float, lamb: float, samples: int) -> np.ndarray:
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class MCVirus:
|
class MCVirus:
|
||||||
|
"""
|
||||||
|
halflife and decay_constant are used indentically as before
|
||||||
|
qID replaces coefficient_of_infectivity to be more in-line with the paper (qID = 1 / COI)
|
||||||
|
no pre-defined virus types
|
||||||
|
"""
|
||||||
#: Biological decay (inactivation of the virus in air)
|
#: Biological decay (inactivation of the virus in air)
|
||||||
halflife: float
|
halflife: float
|
||||||
|
|
||||||
|
|
@ -119,6 +124,14 @@ class MCVirus:
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class MCPopulation:
|
class MCPopulation:
|
||||||
|
"""
|
||||||
|
The mask-attribute of original CARA has been reduced to a simple bool indicating whether or not masks are being worn
|
||||||
|
expiratory_activity and breathing_category are integer values corresponding to pre-defined values
|
||||||
|
Unlike original CARA, expiratory activity is an attribute of a general population, not just an infected one. This
|
||||||
|
modification turned out to be unnecessary, so the expiratory activity can be places back into MCInfectedPopulation.
|
||||||
|
The exposed population in the MCExposureModel is currently an instance of the original Population class, as the new
|
||||||
|
MC-specific features were never needed for the exposed subject.
|
||||||
|
"""
|
||||||
"""
|
"""
|
||||||
Represents a group of people all with exactly the same behaviour and
|
Represents a group of people all with exactly the same behaviour and
|
||||||
situation.
|
situation.
|
||||||
|
|
@ -147,6 +160,27 @@ class MCPopulation:
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class MCInfectedPopulation(MCPopulation):
|
class MCInfectedPopulation(MCPopulation):
|
||||||
|
"""
|
||||||
|
The new samples-attribute indicates the number of samples to use for the monte-carlo simulation. Having this as an
|
||||||
|
attribute of the infected population is quite messy, and should probably be changed.
|
||||||
|
The expiratory_activity_weights are added as a way to simulate scenarios of combined expiratory activities. Should
|
||||||
|
be placed in the same class as the expiratory_activity attribute.
|
||||||
|
viral_load can optionally be set to a single float in order to over-ride the use of a distribution. This was mainly
|
||||||
|
used for testing.
|
||||||
|
_generate_viral_loads uses the data defined at the top of this file to generate a kernel density estimation
|
||||||
|
distribution in order to sample randomly from the distribution suggested by the data. This is messy and should be
|
||||||
|
changed.
|
||||||
|
_generate_breathing_rates similarly samples an array from a lognormal distribution specified by parameters at the
|
||||||
|
top of the file.
|
||||||
|
The functions for generating these samples are cached in order to avoid having to re-sample from
|
||||||
|
the distributions when we wanted to plot the histograms of the distributions after running the model.
|
||||||
|
The function _concentration_distribution_without_mask returns a lambda-function which determines the concentration
|
||||||
|
of particles of a given diameter being expirated by the infected subject, which depends on their expiratory
|
||||||
|
activity. In the case that masks are being worn, a pre-defined function for mask-leakage vs diameter is applied in
|
||||||
|
order to simulate the filtration of particles as a function of their diameter. This function is defined at the top
|
||||||
|
of this file in mask_leakage_out. If it is desirable to model different kinds of masks, this function should
|
||||||
|
probably a member function of some Mask-class.
|
||||||
|
"""
|
||||||
#: The virus with which the population is infected.
|
#: The virus with which the population is infected.
|
||||||
virus: MCVirus
|
virus: MCVirus
|
||||||
|
|
||||||
|
|
@ -259,6 +293,9 @@ class MCInfectedPopulation(MCPopulation):
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class MCConcentrationModel:
|
class MCConcentrationModel:
|
||||||
|
"""
|
||||||
|
No significant modifications compared to models.py
|
||||||
|
"""
|
||||||
room: models.Room
|
room: models.Room
|
||||||
ventilation: models._VentilationBase
|
ventilation: models._VentilationBase
|
||||||
infected: MCInfectedPopulation
|
infected: MCInfectedPopulation
|
||||||
|
|
@ -320,7 +357,8 @@ class MCConcentrationModel:
|
||||||
class BuonannoSpecificInfectedPopulation:
|
class BuonannoSpecificInfectedPopulation:
|
||||||
"""
|
"""
|
||||||
A class representing a specific case described in a paper by Buonanno et al., previously used to compare our
|
A class representing a specific case described in a paper by Buonanno et al., previously used to compare our
|
||||||
results with the results of the paper.
|
results with the results of the paper. Not used anywhere in the paper or elsewhere as far as I am aware, and can
|
||||||
|
most likely be discarded.
|
||||||
"""
|
"""
|
||||||
#: The virus with which the population is infected.
|
#: The virus with which the population is infected.
|
||||||
virus: MCVirus
|
virus: MCVirus
|
||||||
|
|
@ -343,6 +381,14 @@ class BuonannoSpecificInfectedPopulation:
|
||||||
|
|
||||||
@dataclass(frozen=True)
|
@dataclass(frozen=True)
|
||||||
class MCExposureModel:
|
class MCExposureModel:
|
||||||
|
"""
|
||||||
|
The quanta_exposure function has been modified in order to process arrays of a different shape compared to original
|
||||||
|
CARA, but essentially does the exact same thing.
|
||||||
|
The infection_probability function now takes into account a deposition factor (f_dep) which indicates the portion
|
||||||
|
of inhaled particles which are not subsequently exhaled.
|
||||||
|
The reproduction_number function was never needed and thus not implemented for the MC approach, but doing so would
|
||||||
|
probably be trivial.
|
||||||
|
"""
|
||||||
#: The virus concentration model which this exposure model should consider.
|
#: The virus concentration model which this exposure model should consider.
|
||||||
concentration_model: MCConcentrationModel
|
concentration_model: MCConcentrationModel
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue