removal of viable_to_RNA_ratio_distribution and infectious_dose_distribution from data registry

This commit is contained in:
Luis Aleixo 2024-03-14 16:19:38 +01:00
parent 39fc9d8e96
commit 3c3758dfcd
4 changed files with 70 additions and 68 deletions

View file

@ -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"

View file

@ -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'],
),
}

View file

@ -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,
},

View file

@ -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'],