removal of viable_to_RNA_ratio_distribution and infectious_dose_distribution from data registry
This commit is contained in:
parent
39fc9d8e96
commit
3c3758dfcd
4 changed files with 70 additions and 68 deletions
|
|
@ -3,11 +3,3 @@ from enum import Enum
|
|||
class ViralLoads(Enum):
|
||||
COVID_OVERALL = "Ref: Viral load - covid_overal_vl_data"
|
||||
SYMPTOMATIC_FREQUENCIES = "Ref: Viral load - symptomatic_vl_frequencies"
|
||||
|
||||
|
||||
class InfectiousDoses(Enum):
|
||||
DISTRIBUTION = "Ref: Infectious dose - infectious_dose_distribution"
|
||||
|
||||
|
||||
class ViableToRNARatios(Enum):
|
||||
DISTRIBUTION = "Ref: Viable to RNA ratio - viable_to_RNA_ratio_distribution"
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import numpy as np
|
|||
from scipy import special as sp
|
||||
from scipy.stats import weibull_min
|
||||
|
||||
from caimira.enums import ViralLoads, InfectiousDoses, ViableToRNARatios
|
||||
from caimira.enums import ViralLoads
|
||||
|
||||
import caimira.monte_carlo.models as mc
|
||||
from caimira.monte_carlo.sampleable import LogCustom, LogNormal, Normal, LogCustomKernel, CustomKernel, Uniform, Custom
|
||||
|
|
@ -25,24 +25,6 @@ def evaluate_vl(root: typing.Dict, value: str, data_registry: DataRegistry):
|
|||
raise ValueError(f"Invalid ViralLoads value {value}")
|
||||
|
||||
|
||||
def evaluate_infectd(root: typing.Dict, value: str, data_registry: DataRegistry):
|
||||
if root[value] == InfectiousDoses.DISTRIBUTION.value:
|
||||
return infectious_dose_distribution(data_registry)
|
||||
elif root[value] == "Custom":
|
||||
return param_evaluation(root, 'Infectious dose custom')
|
||||
else:
|
||||
raise ValueError(f"Invalid InfectiousDoses value {value}")
|
||||
|
||||
|
||||
def evaluate_vtrr(root: typing.Dict, value: str, data_registry: DataRegistry):
|
||||
if root[value] == ViableToRNARatios.DISTRIBUTION.value:
|
||||
return viable_to_RNA_ratio_distribution(data_registry)
|
||||
elif root[value] == "Custom":
|
||||
return param_evaluation(root, 'Viable to RNA ratio custom')
|
||||
else:
|
||||
raise ValueError(f"Invalid ViableToRNARatios value {value}")
|
||||
|
||||
|
||||
sqrt2pi = np.sqrt(2.*np.pi)
|
||||
sqrt2 = np.sqrt(2.)
|
||||
|
||||
|
|
@ -275,13 +257,13 @@ def covid_overal_vl_data(data_registry):
|
|||
|
||||
# Derived from data in doi.org/10.1016/j.ijid.2020.09.025 and
|
||||
# https://iosh.com/media/8432/aerosol-infection-risk-hospital-patient-care-full-report.pdf (page 60)
|
||||
def viable_to_RNA_ratio_distribution(data_registry):
|
||||
return Uniform(data_registry.virological_data['viable_to_RNA_ratio_distribution']['low'], data_registry.virological_data['viable_to_RNA_ratio_distribution']['high'])
|
||||
def viable_to_RNA_ratio_distribution():
|
||||
return Uniform(0.01, 0.6)
|
||||
|
||||
|
||||
# From discussion with virologists
|
||||
def infectious_dose_distribution(data_registry):
|
||||
return Uniform(data_registry.virological_data['infectious_dose_distribution']['low'], data_registry.virological_data['infectious_dose_distribution']['high'])
|
||||
def infectious_dose_distribution():
|
||||
return Uniform(10., 100.)
|
||||
|
||||
|
||||
# From https://doi.org/10.1101/2021.10.14.21264988 and references therein
|
||||
|
|
@ -290,38 +272,38 @@ def virus_distributions(data_registry):
|
|||
return {
|
||||
'SARS_CoV_2': mc.SARSCoV2(
|
||||
viral_load_in_sputum=evaluate_vl(vd['SARS_CoV_2'], 'viral_load_in_sputum', data_registry),
|
||||
infectious_dose=evaluate_infectd(vd['SARS_CoV_2'], 'infectious_dose', data_registry),
|
||||
viable_to_RNA_ratio=evaluate_vtrr(vd['SARS_CoV_2'], 'viable_to_RNA_ratio', data_registry),
|
||||
infectious_dose=param_evaluation(vd['SARS_CoV_2'], 'infectious_dose'),
|
||||
viable_to_RNA_ratio=param_evaluation(vd['SARS_CoV_2'], 'viable_to_RNA_ratio'),
|
||||
transmissibility_factor=vd['SARS_CoV_2']['transmissibility_factor'],
|
||||
),
|
||||
'SARS_CoV_2_ALPHA': mc.SARSCoV2(
|
||||
viral_load_in_sputum=evaluate_vl(vd['SARS_CoV_2_ALPHA'], 'viral_load_in_sputum', data_registry),
|
||||
infectious_dose=evaluate_infectd(vd['SARS_CoV_2_ALPHA'], 'infectious_dose', data_registry),
|
||||
viable_to_RNA_ratio=evaluate_vtrr(vd['SARS_CoV_2_ALPHA'], 'viable_to_RNA_ratio', data_registry),
|
||||
infectious_dose=param_evaluation(vd['SARS_CoV_2_ALPHA'], 'infectious_dose'),
|
||||
viable_to_RNA_ratio=param_evaluation(vd['SARS_CoV_2_ALPHA'], 'viable_to_RNA_ratio'),
|
||||
transmissibility_factor=vd['SARS_CoV_2_ALPHA']['transmissibility_factor'],
|
||||
),
|
||||
'SARS_CoV_2_BETA': mc.SARSCoV2(
|
||||
viral_load_in_sputum=evaluate_vl(vd['SARS_CoV_2_BETA'], 'viral_load_in_sputum', data_registry),
|
||||
infectious_dose=evaluate_infectd(vd['SARS_CoV_2_BETA'], 'infectious_dose', data_registry),
|
||||
viable_to_RNA_ratio=evaluate_vtrr(vd['SARS_CoV_2_BETA'], 'viable_to_RNA_ratio', data_registry),
|
||||
infectious_dose=param_evaluation(vd['SARS_CoV_2_BETA'], 'infectious_dose'),
|
||||
viable_to_RNA_ratio=param_evaluation(vd['SARS_CoV_2_BETA'], 'viable_to_RNA_ratio'),
|
||||
transmissibility_factor=vd['SARS_CoV_2_BETA']['transmissibility_factor'],
|
||||
),
|
||||
'SARS_CoV_2_GAMMA': mc.SARSCoV2(
|
||||
viral_load_in_sputum=evaluate_vl(vd['SARS_CoV_2_GAMMA'], 'viral_load_in_sputum', data_registry),
|
||||
infectious_dose=evaluate_infectd(vd['SARS_CoV_2_GAMMA'], 'infectious_dose', data_registry),
|
||||
viable_to_RNA_ratio=evaluate_vtrr(vd['SARS_CoV_2_GAMMA'], 'viable_to_RNA_ratio', data_registry),
|
||||
infectious_dose=param_evaluation(vd['SARS_CoV_2_GAMMA'], 'infectious_dose'),
|
||||
viable_to_RNA_ratio=param_evaluation(vd['SARS_CoV_2_GAMMA'], 'viable_to_RNA_ratio'),
|
||||
transmissibility_factor=vd['SARS_CoV_2_GAMMA']['transmissibility_factor'],
|
||||
),
|
||||
'SARS_CoV_2_DELTA': mc.SARSCoV2(
|
||||
viral_load_in_sputum=evaluate_vl(vd['SARS_CoV_2_DELTA'], 'viral_load_in_sputum', data_registry),
|
||||
infectious_dose=evaluate_infectd(vd['SARS_CoV_2_DELTA'], 'infectious_dose', data_registry),
|
||||
viable_to_RNA_ratio=evaluate_vtrr(vd['SARS_CoV_2_DELTA'], 'viable_to_RNA_ratio', data_registry),
|
||||
infectious_dose=param_evaluation(vd['SARS_CoV_2_DELTA'], 'infectious_dose'),
|
||||
viable_to_RNA_ratio=param_evaluation(vd['SARS_CoV_2_DELTA'], 'viable_to_RNA_ratio'),
|
||||
transmissibility_factor=vd['SARS_CoV_2_DELTA']['transmissibility_factor'],
|
||||
),
|
||||
'SARS_CoV_2_OMICRON': mc.SARSCoV2(
|
||||
viral_load_in_sputum=evaluate_vl(vd['SARS_CoV_2_OMICRON'], 'viral_load_in_sputum', data_registry),
|
||||
infectious_dose=evaluate_infectd(vd['SARS_CoV_2_OMICRON'], 'infectious_dose', data_registry),
|
||||
viable_to_RNA_ratio=evaluate_vtrr(vd['SARS_CoV_2_OMICRON'], 'viable_to_RNA_ratio', data_registry),
|
||||
infectious_dose=param_evaluation(vd['SARS_CoV_2_OMICRON'], 'infectious_dose'),
|
||||
viable_to_RNA_ratio=param_evaluation(vd['SARS_CoV_2_OMICRON'], 'viable_to_RNA_ratio'),
|
||||
transmissibility_factor=vd['SARS_CoV_2_OMICRON']['transmissibility_factor'],
|
||||
),
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
from caimira.enums import ViralLoads, InfectiousDoses, ViableToRNARatios
|
||||
from caimira.enums import ViralLoads
|
||||
|
||||
|
||||
class DataRegistry:
|
||||
|
|
@ -210,54 +210,82 @@ class DataRegistry:
|
|||
"interpolation_fp_right": 0,
|
||||
"max_function": 0.2,
|
||||
},
|
||||
"viable_to_RNA_ratio_distribution": {
|
||||
"low": 0.01,
|
||||
"high": 0.6,
|
||||
},
|
||||
"infectious_dose_distribution": {
|
||||
"low": 10,
|
||||
"high": 100,
|
||||
},
|
||||
"virus_distributions": {
|
||||
"SARS_CoV_2": {
|
||||
"viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
|
||||
"infectious_dose": InfectiousDoses.DISTRIBUTION.value,
|
||||
"viable_to_RNA_ratio": ViableToRNARatios.DISTRIBUTION.value,
|
||||
"infectious_dose": {
|
||||
"associated_value": "Uniform distribution",
|
||||
"parameters": {"low": 10, "high": 100},
|
||||
},
|
||||
"viable_to_RNA_ratio": {
|
||||
'associated_value': 'Uniform distribution',
|
||||
'parameters': {'low': 0.01, 'high': 0.6},
|
||||
},
|
||||
"transmissibility_factor": 1,
|
||||
"infectiousness_days": 14,
|
||||
},
|
||||
"SARS_CoV_2_ALPHA": {
|
||||
"viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
|
||||
"infectious_dose": InfectiousDoses.DISTRIBUTION.value,
|
||||
"viable_to_RNA_ratio": ViableToRNARatios.DISTRIBUTION.value,
|
||||
"infectious_dose": {
|
||||
"associated_value": "Uniform distribution",
|
||||
"parameters": {"low": 10, "high": 100},
|
||||
},
|
||||
"viable_to_RNA_ratio": {
|
||||
'associated_value': 'Uniform distribution',
|
||||
'parameters': {'low': 0.01, 'high': 0.6},
|
||||
},
|
||||
"transmissibility_factor": 0.78,
|
||||
"infectiousness_days": 14,
|
||||
},
|
||||
"SARS_CoV_2_BETA": {
|
||||
"viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
|
||||
"infectious_dose": InfectiousDoses.DISTRIBUTION.value,
|
||||
"viable_to_RNA_ratio": ViableToRNARatios.DISTRIBUTION.value,
|
||||
"infectious_dose": {
|
||||
"associated_value": "Uniform distribution",
|
||||
"parameters": {"low": 10, "high": 100},
|
||||
},
|
||||
"viable_to_RNA_ratio": {
|
||||
'associated_value': 'Uniform distribution',
|
||||
'parameters': {'low': 0.01, 'high': 0.6},
|
||||
},
|
||||
"transmissibility_factor": 0.8,
|
||||
"infectiousness_days": 14,
|
||||
},
|
||||
"SARS_CoV_2_GAMMA": {
|
||||
"viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
|
||||
"infectious_dose": InfectiousDoses.DISTRIBUTION.value,
|
||||
"viable_to_RNA_ratio": ViableToRNARatios.DISTRIBUTION.value,
|
||||
"infectious_dose": {
|
||||
"associated_value": "Uniform distribution",
|
||||
"parameters": {"low": 10, "high": 100},
|
||||
},
|
||||
"viable_to_RNA_ratio": {
|
||||
'associated_value': 'Uniform distribution',
|
||||
'parameters': {'low': 0.01, 'high': 0.6},
|
||||
},
|
||||
"transmissibility_factor": 0.72,
|
||||
"infectiousness_days": 14,
|
||||
},
|
||||
"SARS_CoV_2_DELTA": {
|
||||
"viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
|
||||
"infectious_dose": InfectiousDoses.DISTRIBUTION.value,
|
||||
"viable_to_RNA_ratio": ViableToRNARatios.DISTRIBUTION.value,
|
||||
"infectious_dose": {
|
||||
"associated_value": "Uniform distribution",
|
||||
"parameters": {"low": 10, "high": 100},
|
||||
},
|
||||
"viable_to_RNA_ratio": {
|
||||
'associated_value': 'Uniform distribution',
|
||||
'parameters': {'low': 0.01, 'high': 0.6},
|
||||
},
|
||||
"transmissibility_factor": 0.51,
|
||||
"infectiousness_days": 14,
|
||||
},
|
||||
"SARS_CoV_2_OMICRON": {
|
||||
"viral_load_in_sputum": ViralLoads.COVID_OVERALL.value,
|
||||
"infectious_dose": InfectiousDoses.DISTRIBUTION.value,
|
||||
"viable_to_RNA_ratio": ViableToRNARatios.DISTRIBUTION.value,
|
||||
"infectious_dose": {
|
||||
"associated_value": "Uniform distribution",
|
||||
"parameters": {"low": 10, "high": 100},
|
||||
},
|
||||
"viable_to_RNA_ratio": {
|
||||
'associated_value': 'Uniform distribution',
|
||||
'parameters': {'low': 0.01, 'high': 0.6},
|
||||
},
|
||||
"transmissibility_factor": 0.2,
|
||||
"infectiousness_days": 14,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -186,8 +186,8 @@ def skagit_chorale_mc(data_registry):
|
|||
presence=models.SpecificInterval(((0, 2.5), )),
|
||||
virus=mc.SARSCoV2(
|
||||
viral_load_in_sputum=10**9,
|
||||
infectious_dose=infectious_dose_distribution(data_registry),
|
||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution(data_registry),
|
||||
infectious_dose=infectious_dose_distribution(),
|
||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution(),
|
||||
transmissibility_factor=1.,
|
||||
),
|
||||
mask=models.Mask.types['No mask'],
|
||||
|
|
@ -230,8 +230,8 @@ def bus_ride_mc(data_registry):
|
|||
presence=models.SpecificInterval(((0, 1.67), )),
|
||||
virus=mc.SARSCoV2(
|
||||
viral_load_in_sputum=5*10**8,
|
||||
infectious_dose=infectious_dose_distribution(data_registry),
|
||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution(data_registry),
|
||||
infectious_dose=infectious_dose_distribution(),
|
||||
viable_to_RNA_ratio=viable_to_RNA_ratio_distribution(),
|
||||
transmissibility_factor=1.,
|
||||
),
|
||||
mask=models.Mask.types['No mask'],
|
||||
|
|
|
|||
Loading…
Reference in a new issue