vivarium-public-health 2.3.3__py3-none-any.whl → 3.0.1__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. vivarium_public_health/_version.py +1 -1
  2. vivarium_public_health/disease/model.py +23 -21
  3. vivarium_public_health/disease/models.py +1 -0
  4. vivarium_public_health/disease/special_disease.py +40 -41
  5. vivarium_public_health/disease/state.py +42 -125
  6. vivarium_public_health/disease/transition.py +70 -27
  7. vivarium_public_health/mslt/delay.py +1 -0
  8. vivarium_public_health/mslt/disease.py +1 -0
  9. vivarium_public_health/mslt/intervention.py +1 -0
  10. vivarium_public_health/mslt/magic_wand_components.py +1 -0
  11. vivarium_public_health/mslt/observer.py +1 -0
  12. vivarium_public_health/mslt/population.py +1 -0
  13. vivarium_public_health/plugins/parser.py +61 -31
  14. vivarium_public_health/population/add_new_birth_cohorts.py +2 -3
  15. vivarium_public_health/population/base_population.py +2 -1
  16. vivarium_public_health/population/mortality.py +83 -80
  17. vivarium_public_health/{metrics → results}/__init__.py +2 -0
  18. vivarium_public_health/results/columns.py +22 -0
  19. vivarium_public_health/results/disability.py +187 -0
  20. vivarium_public_health/results/disease.py +222 -0
  21. vivarium_public_health/results/mortality.py +186 -0
  22. vivarium_public_health/results/observer.py +78 -0
  23. vivarium_public_health/results/risk.py +138 -0
  24. vivarium_public_health/results/simple_cause.py +18 -0
  25. vivarium_public_health/{metrics → results}/stratification.py +10 -8
  26. vivarium_public_health/risks/__init__.py +1 -2
  27. vivarium_public_health/risks/base_risk.py +134 -29
  28. vivarium_public_health/risks/data_transformations.py +65 -326
  29. vivarium_public_health/risks/distributions.py +315 -145
  30. vivarium_public_health/risks/effect.py +376 -75
  31. vivarium_public_health/risks/implementations/low_birth_weight_and_short_gestation.py +61 -89
  32. vivarium_public_health/treatment/magic_wand.py +1 -0
  33. vivarium_public_health/treatment/scale_up.py +1 -0
  34. vivarium_public_health/treatment/therapeutic_inertia.py +1 -0
  35. vivarium_public_health/utilities.py +17 -2
  36. {vivarium_public_health-2.3.3.dist-info → vivarium_public_health-3.0.1.dist-info}/METADATA +12 -2
  37. vivarium_public_health-3.0.1.dist-info/RECORD +49 -0
  38. {vivarium_public_health-2.3.3.dist-info → vivarium_public_health-3.0.1.dist-info}/WHEEL +1 -1
  39. vivarium_public_health/metrics/disability.py +0 -118
  40. vivarium_public_health/metrics/disease.py +0 -136
  41. vivarium_public_health/metrics/mortality.py +0 -144
  42. vivarium_public_health/metrics/risk.py +0 -110
  43. vivarium_public_health/testing/__init__.py +0 -0
  44. vivarium_public_health/testing/mock_artifact.py +0 -145
  45. vivarium_public_health/testing/utils.py +0 -71
  46. vivarium_public_health-2.3.3.dist-info/RECORD +0 -49
  47. {vivarium_public_health-2.3.3.dist-info → vivarium_public_health-3.0.1.dist-info}/LICENSE.txt +0 -0
  48. {vivarium_public_health-2.3.3.dist-info → vivarium_public_health-3.0.1.dist-info}/top_level.txt +0 -0
@@ -1,136 +0,0 @@
1
- """
2
- ================
3
- Disease Observer
4
- ================
5
-
6
- This module contains tools for observing disease incidence and prevalence
7
- in the simulation.
8
-
9
- """
10
- from typing import Any, Dict, List, Optional
11
-
12
- import pandas as pd
13
- from vivarium import Component
14
- from vivarium.framework.engine import Builder
15
- from vivarium.framework.event import Event
16
- from vivarium.framework.population import SimulantData
17
-
18
- from vivarium_public_health.utilities import to_years
19
-
20
-
21
- class DiseaseObserver(Component):
22
- """Observes disease counts and person time for a cause.
23
-
24
- By default, this observer computes aggregate disease state person time and
25
- counts of disease events over the full course of the simulation. It can be
26
- configured to add or remove stratification groups to the default groups
27
- defined by a ResultsStratifier.
28
-
29
- In the model specification, your configuration for this component should
30
- be specified as, e.g.:
31
-
32
- .. code-block:: yaml
33
-
34
- configuration:
35
- stratification:
36
- cause_name:
37
- exclude:
38
- - "sex"
39
- include:
40
- - "sample_stratification"
41
- """
42
-
43
- CONFIGURATION_DEFAULTS = {
44
- "stratification": {
45
- "disease": {
46
- "exclude": [],
47
- "include": [],
48
- }
49
- }
50
- }
51
-
52
- ##############
53
- # Properties #
54
- ##############
55
-
56
- @property
57
- def configuration_defaults(self) -> Dict[str, Any]:
58
- return {
59
- "stratification": {
60
- self.disease: self.CONFIGURATION_DEFAULTS["stratification"]["disease"]
61
- }
62
- }
63
-
64
- @property
65
- def columns_created(self) -> List[str]:
66
- return [self.previous_state_column_name]
67
-
68
- @property
69
- def columns_required(self) -> Optional[List[str]]:
70
- return [self.disease]
71
-
72
- #####################
73
- # Lifecycle methods #
74
- #####################
75
-
76
- def __init__(self, disease: str):
77
- super().__init__()
78
- self.disease = disease
79
- self.current_state_column_name = self.disease
80
- self.previous_state_column_name = f"previous_{self.disease}"
81
-
82
- # noinspection PyAttributeOutsideInit
83
- def setup(self, builder: Builder) -> None:
84
- self.step_size = builder.time.step_size()
85
- self.config = builder.configuration.stratification[self.disease]
86
-
87
- disease_model = builder.components.get_component(f"disease_model.{self.disease}")
88
-
89
- for state in disease_model.states:
90
- builder.results.register_observation(
91
- name=f"{state.state_id}_person_time",
92
- pop_filter=f'alive == "alive" and {self.disease} == "{state.state_id}" and tracked==True',
93
- aggregator=self.aggregate_state_person_time,
94
- requires_columns=["alive", self.disease],
95
- additional_stratifications=self.config.include,
96
- excluded_stratifications=self.config.exclude,
97
- when="time_step__prepare",
98
- )
99
-
100
- for transition in disease_model.transition_names:
101
- filter_string = (
102
- f'{self.previous_state_column_name} == "{transition.from_state}" '
103
- f'and {self.disease} == "{transition.to_state}" '
104
- f"and tracked==True "
105
- f'and alive == "alive"'
106
- )
107
- builder.results.register_observation(
108
- name=f"{transition}_event_count",
109
- pop_filter=filter_string,
110
- requires_columns=[self.previous_state_column_name, self.disease],
111
- additional_stratifications=self.config.include,
112
- excluded_stratifications=self.config.exclude,
113
- when="collect_metrics",
114
- )
115
-
116
- ########################
117
- # Event-driven methods #
118
- ########################
119
-
120
- def on_initialize_simulants(self, pop_data: SimulantData) -> None:
121
- self.population_view.update(
122
- pd.Series("", index=pop_data.index, name=self.previous_state_column_name)
123
- )
124
-
125
- def on_time_step_prepare(self, event: Event) -> None:
126
- # This enables tracking of transitions between states
127
- prior_state_pop = self.population_view.get(event.index)
128
- prior_state_pop[self.previous_state_column_name] = prior_state_pop[self.disease]
129
- self.population_view.update(prior_state_pop)
130
-
131
- ###############
132
- # Aggregators #
133
- ###############
134
-
135
- def aggregate_state_person_time(self, x: pd.DataFrame) -> float:
136
- return len(x) * to_years(self.step_size())
@@ -1,144 +0,0 @@
1
- """
2
- ==================
3
- Mortality Observer
4
- ==================
5
-
6
- This module contains tools for observing cause-specific and
7
- excess mortality in the simulation, including "other causes".
8
-
9
- """
10
- from typing import Callable, List, Optional
11
-
12
- import pandas as pd
13
- from vivarium import Component
14
- from vivarium.framework.engine import Builder
15
-
16
- from vivarium_public_health.disease import DiseaseState, RiskAttributableDisease
17
-
18
-
19
- class MortalityObserver(Component):
20
- """An observer for cause-specific deaths and ylls (including "other causes").
21
-
22
- By default, this counts cause-specific deaths and years of life lost over
23
- the full course of the simulation. It can be configured to add or remove
24
- stratification groups to the default groups defined by a
25
- :class:ResultsStratifier. The aggregate configuration key can be set to
26
- True to aggregate all deaths and ylls into a single observation and remove
27
- the stratification by cause of death to improve runtime.
28
-
29
- In the model specification, your configuration for this component should
30
- be specified as, e.g.:
31
-
32
- .. code-block:: yaml
33
-
34
- configuration:
35
- stratification:
36
- mortality:
37
- exclude:
38
- - "sex"
39
- include:
40
- - "sample_stratification"
41
-
42
- This observer needs to access the has_excess_mortality attribute of the causes
43
- we're observing, but this attribute gets defined in the setup of the cause models.
44
- As a result, the model specification should list this observer after causes.
45
- """
46
-
47
- CONFIGURATION_DEFAULTS = {
48
- "stratification": {
49
- "mortality": {
50
- "exclude": [],
51
- "include": [],
52
- "aggregate": False,
53
- }
54
- }
55
- }
56
-
57
- def __init__(self):
58
- super().__init__()
59
- self.causes_of_death = ["other_causes"]
60
- self.required_death_columns = ["alive", "exit_time"]
61
- self.required_yll_columns = [
62
- "alive",
63
- "cause_of_death",
64
- "exit_time",
65
- "years_of_life_lost",
66
- ]
67
-
68
- ##############
69
- # Properties #
70
- ##############
71
-
72
- @property
73
- def columns_required(self) -> Optional[List[str]]:
74
- return [
75
- "alive",
76
- "years_of_life_lost",
77
- "cause_of_death",
78
- "exit_time",
79
- ]
80
-
81
- #####################
82
- # Lifecycle methods #
83
- #####################
84
-
85
- # noinspection PyAttributeOutsideInit
86
- def setup(self, builder: Builder) -> None:
87
- self.clock = builder.time.clock()
88
- self.config = builder.configuration.stratification.mortality
89
- cause_components = builder.components.get_components_by_type(
90
- (DiseaseState, RiskAttributableDisease)
91
- )
92
- self.causes_of_death += [
93
- cause.state_id for cause in cause_components if cause.has_excess_mortality
94
- ]
95
- if not self.config.aggregate:
96
- for cause_of_death in self.causes_of_death:
97
- self._register_mortality_observations(
98
- builder, cause_of_death, f'cause_of_death == "{cause_of_death}"'
99
- )
100
- else:
101
- self._register_mortality_observations(builder, "all_causes")
102
-
103
- ###################
104
- # Private methods #
105
- ###################
106
-
107
- def _register_mortality_observations(
108
- self, builder: Builder, cause: str, additional_pop_filter: str = ""
109
- ) -> None:
110
- pop_filter = (
111
- 'alive == "dead" and tracked == True'
112
- if additional_pop_filter == ""
113
- else f'alive == "dead" and tracked == True and {additional_pop_filter}'
114
- )
115
- builder.results.register_observation(
116
- name=f"death_due_to_{cause}",
117
- pop_filter=pop_filter,
118
- aggregator=self.count_deaths,
119
- requires_columns=self.required_death_columns,
120
- additional_stratifications=self.config.include,
121
- excluded_stratifications=self.config.exclude,
122
- when="collect_metrics",
123
- )
124
- builder.results.register_observation(
125
- name=f"ylls_due_to_{cause}",
126
- pop_filter=pop_filter,
127
- aggregator=self.calculate_ylls,
128
- requires_columns=self.required_yll_columns,
129
- additional_stratifications=self.config.include,
130
- excluded_stratifications=self.config.exclude,
131
- when="collect_metrics",
132
- )
133
-
134
- ###############
135
- # Aggregators #
136
- ###############
137
-
138
- def count_deaths(self, x: pd.DataFrame) -> float:
139
- died_of_cause = x["exit_time"] > self.clock()
140
- return sum(died_of_cause)
141
-
142
- def calculate_ylls(self, x: pd.DataFrame) -> float:
143
- died_of_cause = x["exit_time"] > self.clock()
144
- return x.loc[died_of_cause, "years_of_life_lost"].sum()
@@ -1,110 +0,0 @@
1
- """
2
- ==============
3
- Risk Observers
4
- ==============
5
-
6
- This module contains tools for observing risk exposure during the simulation.
7
-
8
- """
9
- from typing import Any, Dict, List, Optional
10
-
11
- import pandas as pd
12
- from vivarium import Component
13
- from vivarium.framework.engine import Builder
14
-
15
- from vivarium_public_health.utilities import to_years
16
-
17
-
18
- class CategoricalRiskObserver(Component):
19
- """An observer for a categorical risk factor.
20
-
21
- Observes category person time for a risk factor.
22
-
23
- By default, this observer computes aggregate categorical person time
24
- over the full course of the simulation. It can be configured to add or
25
- remove stratification groups to the default groups defined by a
26
- ResultsStratifier.
27
-
28
- In the model specification, your configuration for this component should
29
- be specified as, e.g.:
30
-
31
- .. code-block:: yaml
32
-
33
- configuration:
34
- stratification:
35
- risk_name:
36
- exclude:
37
- - "sex"
38
- include:
39
- - "sample_stratification"
40
- """
41
-
42
- CONFIGURATION_DEFAULTS = {
43
- "stratification": {
44
- "risk": {
45
- "exclude": [],
46
- "include": [],
47
- }
48
- }
49
- }
50
-
51
- ##############
52
- # Properties #
53
- ##############
54
-
55
- @property
56
- def configuration_defaults(self) -> Dict[str, Any]:
57
- """
58
- A dictionary containing the defaults for any configurations managed by
59
- this component.
60
- """
61
- return {
62
- "stratification": {
63
- f"{self.risk}": self.CONFIGURATION_DEFAULTS["stratification"]["risk"]
64
- }
65
- }
66
-
67
- @property
68
- def columns_required(self) -> Optional[List[str]]:
69
- return ["alive"]
70
-
71
- #####################
72
- # Lifecycle methods #
73
- #####################
74
-
75
- def __init__(self, risk: str):
76
- """
77
- Parameters
78
- ----------
79
- risk :
80
- name of a risk
81
-
82
- """
83
- super().__init__()
84
- self.risk = risk
85
- self.exposure_pipeline_name = f"{self.risk}.exposure"
86
-
87
- # noinspection PyAttributeOutsideInit
88
- def setup(self, builder: Builder) -> None:
89
- self.step_size = builder.time.step_size()
90
- self.config = builder.configuration.stratification[self.risk]
91
- self.categories = builder.data.load(f"risk_factor.{self.risk}.categories")
92
-
93
- for category in self.categories:
94
- builder.results.register_observation(
95
- name=f"{self.risk}_{category}_person_time",
96
- pop_filter=f'alive == "alive" and `{self.exposure_pipeline_name}`=="{category}" and tracked==True',
97
- aggregator=self.aggregate_risk_category_person_time,
98
- requires_columns=["alive"],
99
- requires_values=[self.exposure_pipeline_name],
100
- additional_stratifications=self.config.include,
101
- excluded_stratifications=self.config.exclude,
102
- when="time_step__prepare",
103
- )
104
-
105
- ###############
106
- # Aggregators #
107
- ###############
108
-
109
- def aggregate_risk_category_person_time(self, x: pd.DataFrame) -> float:
110
- return len(x) * to_years(self.step_size())
File without changes
@@ -1,145 +0,0 @@
1
- """
2
- ==================
3
- Mock Data Artifact
4
- ==================
5
-
6
- This module contains a mock version of the artifact manager for use with
7
- testing vivarium_public_health components.
8
-
9
- """
10
- import pandas as pd
11
- from vivarium.framework.artifact import ArtifactManager
12
- from vivarium.testing_utilities import build_table
13
-
14
- from vivarium_public_health.testing.utils import make_age_bins, make_uniform_pop_data
15
-
16
- MOCKERS = {
17
- "cause": {
18
- "prevalence": 0,
19
- "cause_specific_mortality_rate": 0,
20
- "excess_mortality_rate": 0,
21
- "remission_rate": 0,
22
- "incidence_rate": 0.001,
23
- "disability_weight": pd.DataFrame({"value": [0]}),
24
- "restrictions": lambda *args, **kwargs: {"yld_only": False},
25
- },
26
- "risk_factor": {
27
- "distribution": lambda *args, **kwargs: "ensemble",
28
- "exposure": 120,
29
- "exposure_standard_deviation": 15,
30
- "relative_risk": build_table(
31
- [1.5, "continuous", "test_cause", "incidence_rate"],
32
- 1990,
33
- 2017,
34
- (
35
- "age",
36
- "sex",
37
- "year",
38
- "value",
39
- "parameter",
40
- "affected_entity",
41
- "affected_measure",
42
- ),
43
- ),
44
- "population_attributable_fraction": build_table(
45
- [1, "test_cause_1", "incidence_rate"],
46
- 1990,
47
- 2017,
48
- ("age", "sex", "year", "value", "cause", "affected_measure"),
49
- ),
50
- "tmred": lambda *args, **kwargs: {
51
- "distribution": "uniform",
52
- "min": 80,
53
- "max": 100,
54
- "inverted": False,
55
- },
56
- "exposure_parameters": lambda *args, **kwargs: {
57
- "scale": 1,
58
- "max_rr": 10,
59
- "max_val": 200,
60
- "min_val": 0,
61
- },
62
- "ensemble_weights": lambda *args, **kwargs: pd.DataFrame({"norm": 1}, index=[0]),
63
- },
64
- "sequela": {
65
- "prevalence": 0,
66
- "cause_specific_mortality_rate": 0,
67
- "excess_mortality_rate": 0,
68
- "remission_rate": 0,
69
- "incidence_rate": 0.001,
70
- "disability_weight": pd.DataFrame({"value": [0]}),
71
- },
72
- "etiology": {
73
- "population_attributable_fraction": build_table(
74
- [1, "incidence_rate"],
75
- 1990,
76
- 2017,
77
- ("age", "sex", "year", "value", "affected_measure"),
78
- ),
79
- },
80
- "healthcare_entity": {
81
- "cost": build_table(
82
- [0, "outpatient_visits"],
83
- 1990,
84
- 2017,
85
- ("age", "sex", "year", "value", "healthcare_entity"),
86
- ),
87
- "utilization_rate": 0,
88
- },
89
- # FIXME: this is a hack to get the MockArtifact to use the correct value
90
- "population.location": "Kenya",
91
- "population": {
92
- "age_bins": make_age_bins(),
93
- "structure": make_uniform_pop_data(),
94
- "theoretical_minimum_risk_life_expectancy": (
95
- build_table(98.0, 1990, 1990)
96
- .query('sex=="Female"')
97
- .filter(["age_start", "age_end", "value"])
98
- ),
99
- },
100
- }
101
-
102
-
103
- class MockArtifact:
104
- def __init__(self):
105
- self.mocks = MOCKERS.copy()
106
-
107
- def load(self, entity_key):
108
- if entity_key in self.mocks:
109
- return self.mocks[entity_key]
110
-
111
- entity_type, *_, entity_measure = entity_key.split(".")
112
- assert entity_type in self.mocks
113
- assert entity_measure in self.mocks[entity_type]
114
- value = self.mocks[entity_type][entity_measure]
115
-
116
- if callable(value):
117
- value = value(entity_key)
118
- elif not isinstance(value, (pd.DataFrame, pd.Series)):
119
- value = build_table(value, 1990, 2018)
120
-
121
- return value
122
-
123
- def write(self, entity_key, data):
124
- self.mocks[entity_key] = data
125
-
126
-
127
- class MockArtifactManager(ArtifactManager):
128
- def __init__(self):
129
- self.artifact = self._load_artifact(None)
130
-
131
- @property
132
- def name(self):
133
- return "mock_artifact_manager"
134
-
135
- def setup(self, builder):
136
- pass
137
-
138
- def load(self, entity_key, *args, **kwargs):
139
- return self.artifact.load(entity_key)
140
-
141
- def write(self, entity_key, data):
142
- self.artifact.write(entity_key, data)
143
-
144
- def _load_artifact(self, _):
145
- return MockArtifact()
@@ -1,71 +0,0 @@
1
- """
2
- =================
3
- Testing Utilities
4
- =================
5
-
6
- This module contains data generation tools for testing vivarium_public_health
7
- components.
8
-
9
- """
10
- from itertools import product
11
-
12
- import numpy as np
13
- import pandas as pd
14
-
15
-
16
- def make_uniform_pop_data(age_bin_midpoint=False):
17
- age_bins = [(b.age_start, b.age_end) for b in make_age_bins().itertuples()]
18
- sexes = ("Male", "Female")
19
- years = zip(range(1990, 2018), range(1991, 2019))
20
- locations = (1, 2)
21
-
22
- age_bins, sexes, years, locations = zip(*product(age_bins, sexes, years, locations))
23
- mins, maxes = zip(*age_bins)
24
- year_starts, year_ends = zip(*years)
25
-
26
- pop = pd.DataFrame(
27
- {
28
- "age_start": mins,
29
- "age_end": maxes,
30
- "sex": sexes,
31
- "year_start": year_starts,
32
- "year_end": year_ends,
33
- "location": locations,
34
- "value": 100 * (np.array(maxes) - np.array(mins)),
35
- }
36
- )
37
- if age_bin_midpoint: # used for population tests
38
- pop["age"] = pop.apply(lambda row: (row["age_start"] + row["age_end"]) / 2, axis=1)
39
- return pop
40
-
41
-
42
- def make_age_bins():
43
- idx = pd.MultiIndex.from_tuples(
44
- [
45
- (0.0, 0.01917808, "Early Neonatal"),
46
- (0.01917808, 0.07671233, "Late Neonatal"),
47
- (0.07671233, 1.0, "Post Neonatal"),
48
- (1.0, 5.0, "1 to 4"),
49
- (5.0, 10.0, "5 to 9"),
50
- (10.0, 15.0, "10 to 14"),
51
- (15.0, 20.0, "15 to 19"),
52
- (20.0, 25.0, "20 to 24"),
53
- (25.0, 30.0, "25 to 29"),
54
- (30.0, 35.0, "30 to 34"),
55
- (35.0, 40.0, "35 to 39"),
56
- (40.0, 45.0, "40 to 44"),
57
- (45.0, 50.0, "45 to 49"),
58
- (50.0, 55.0, "50 to 54"),
59
- (55.0, 60.0, "55 to 59"),
60
- (60.0, 65.0, "60 to 64"),
61
- (65.0, 70.0, "65 to 69"),
62
- (70.0, 75.0, "70 to 74"),
63
- (75.0, 80.0, "75 to 79"),
64
- (80.0, 85.0, "80 to 84"),
65
- (85.0, 90.0, "85 to 89"),
66
- (90.0, 95.0, "90 to 94"),
67
- (95.0, 125.0, "95 plus"),
68
- ],
69
- names=["age_start", "age_end", "age_group_name"],
70
- )
71
- return pd.DataFrame(index=idx).reset_index()
@@ -1,49 +0,0 @@
1
- vivarium_public_health/__about__.py,sha256=RgWycPypKZS80TpSX7o41cREnG8PfguNHDHLuLyl820,487
2
- vivarium_public_health/__init__.py,sha256=tomMOl3PI7O8GdxDWGBiBjT0Bwd31GpyQTYTzwIv108,361
3
- vivarium_public_health/_version.py,sha256=s0EEVOzZFl_WT6PzFxk9cgtfsNGRuqeXrX3fgGq9Ogs,22
4
- vivarium_public_health/utilities.py,sha256=_X9sZQ7flsi2sVWQ9zrf8GJw8QwZsPZm3NUjx1gu7bM,2555
5
- vivarium_public_health/disease/__init__.py,sha256=RuuiRcvAJfX9WQGt_WZZjxN7Cu3E5rMTmuaRS-UaFPM,419
6
- vivarium_public_health/disease/model.py,sha256=9Ru3mg3UUp3h1W0y-1xkWjQBgxqSq-LXM0ByiEcNmGA,8332
7
- vivarium_public_health/disease/models.py,sha256=uiB2qUlxBsPPPmHJ8Cgot_T1ItZ8RYSNVOBtxtn93Y0,3478
8
- vivarium_public_health/disease/special_disease.py,sha256=gl8aK0z6afCxiCZxgJafLe4xmbR91zk3079hsi2pUAw,14751
9
- vivarium_public_health/disease/state.py,sha256=wTSiWKXgJ4k9kr0p8oC3gAHil0-zQPOifNoBftHnTRw,24837
10
- vivarium_public_health/disease/transition.py,sha256=Or5nucRzeGG-UuE_CGkPZ9qE35-Ed9I9LWHj4rjknCc,5334
11
- vivarium_public_health/metrics/__init__.py,sha256=bWAvvdCm_7RPIazo12qFohA2x5-_EV6ceV8IhKS37sk,209
12
- vivarium_public_health/metrics/disability.py,sha256=zm0vAG00wj44CHjYGdT2_pebgARa3XXIerrR06t80rc,3984
13
- vivarium_public_health/metrics/disease.py,sha256=_WQYjd6FRrxRs1Oj8NR9ZmcbXVvsHqX_hods10hwHzU,4546
14
- vivarium_public_health/metrics/mortality.py,sha256=B1AX-N4aO1Jd2NEJ_yMC1NHaDr4pEXmQxNm5kXoLz8w,4826
15
- vivarium_public_health/metrics/risk.py,sha256=ANwgwpasX-5t0OHMQysV8p_cM86NL2bV6za1FM0JR88,3201
16
- vivarium_public_health/metrics/stratification.py,sha256=_ChQy8yeP09wFKne4UPPiUEfCKDM6UGfHl4moKCjoNQ,4612
17
- vivarium_public_health/mslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- vivarium_public_health/mslt/delay.py,sha256=4JiSID5bt2xB1DQR1FX1f0NV947HKtwfk-D32C54kbg,22581
19
- vivarium_public_health/mslt/disease.py,sha256=JWe_A6X5NyDcTXf-HIeSSUv0DCwj27aIwRXVWzjXCVQ,15683
20
- vivarium_public_health/mslt/intervention.py,sha256=q6-ZHYFuV9o7WKlHMpiFAsEH2fYzwOayY120eDAOQ5U,10335
21
- vivarium_public_health/mslt/magic_wand_components.py,sha256=7sy_7fa0R5pk5XPdt9-AfK005JV3em4Tvu4L4xeg4g0,3980
22
- vivarium_public_health/mslt/observer.py,sha256=Z0aWLrlSjxLuYqzXarNunJ2Xqei4R9nX03dnE6uvr4o,13940
23
- vivarium_public_health/mslt/population.py,sha256=R5Z7aBf63LDbasPVMMI0HTh41FIL_OAhYk0qQWf_-lU,7285
24
- vivarium_public_health/plugins/__init__.py,sha256=oBW_zfgG_LbwfgTDjUe0btfy9FaDvAbtXho1zQFnz0Y,76
25
- vivarium_public_health/plugins/parser.py,sha256=uhBw5t-Lmb8YDN2GvVG93l50ZuCIsg4VocSA5T_wz3w,31789
26
- vivarium_public_health/population/__init__.py,sha256=17rtbcNVK5LtCCxAex7P7Q_vYpwbeTepyf3nazS90Yc,225
27
- vivarium_public_health/population/add_new_birth_cohorts.py,sha256=qNsZjvaJ7Et8_Kw7JNyRshHHRA3pEQMM4TSqCp48Gr4,9092
28
- vivarium_public_health/population/base_population.py,sha256=CeYrocZh5oEJ1HR3Zr_-erUQHElUeV8WtmL-1iVyHEo,17080
29
- vivarium_public_health/population/data_transformations.py,sha256=PsvE1-S-Q_K4viBgF2Ss0DaaoH0WyhRX26ZJYwJ0O84,22322
30
- vivarium_public_health/population/mortality.py,sha256=w1Oxb958LjUkNwxJ0vdA3TZndpeNiaH3d7RukLas_oQ,10085
31
- vivarium_public_health/risks/__init__.py,sha256=XvX12RgD0iF5PBoc2StsOhxJmK1FP-RaAYrjIT9MfDs,232
32
- vivarium_public_health/risks/base_risk.py,sha256=6D7YlxQOdQm-Kw5_vjpQmFqU7spF-lTy14WEEefRQlA,6494
33
- vivarium_public_health/risks/data_transformations.py,sha256=-nEbytxaQEB1zaAacA46A3WATeKle2FvrnePx-NPCeg,19602
34
- vivarium_public_health/risks/distributions.py,sha256=EYMjhOmci4O7orU2-qQ55uOzqplqByn4GokbKgcZgfQ,10800
35
- vivarium_public_health/risks/effect.py,sha256=GH_n5j6RQY-DdV0hSH-_Qo10lXVZRdMyANh6wfrLtiI,7295
36
- vivarium_public_health/risks/implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- vivarium_public_health/risks/implementations/low_birth_weight_and_short_gestation.py,sha256=G8-KMklSwd2Sl29oMX8WFPKKv1tBtRUOqLuAmoxOos0,18027
38
- vivarium_public_health/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- vivarium_public_health/testing/mock_artifact.py,sha256=T6Fw0rSEGfDr7Lqq-YxcJBmZtjhybDTE9w9-SeWYYco,4244
40
- vivarium_public_health/testing/utils.py,sha256=bbAEGw5kRzVB_80uc5u5mp47NMj2xD6Nw7vlEsT_-Wg,2199
41
- vivarium_public_health/treatment/__init__.py,sha256=wONElu9aJbBYwpYIovYPYaN_GYfVhPXtTeFWSdQMgA0,222
42
- vivarium_public_health/treatment/magic_wand.py,sha256=iPKFN3VjfiMy_XvN94UqM-FUrGuI0ULwmOdAGdOepYQ,1979
43
- vivarium_public_health/treatment/scale_up.py,sha256=EkuEAmKaW7AvPWDqDa9WJ2Iy_yiKFytsJu8HVli5Lrg,7078
44
- vivarium_public_health/treatment/therapeutic_inertia.py,sha256=VwZ7t90zzfGoBusduIvcE4lDe5zTvzmHiUNB3u2I52Y,2339
45
- vivarium_public_health-2.3.3.dist-info/LICENSE.txt,sha256=mN4bNLUQNcN9njYRc_3jCZkfPySVpmM6MRps104FxA4,1548
46
- vivarium_public_health-2.3.3.dist-info/METADATA,sha256=KPeMMgLVCQbINIyZatOBh7gOpOqWIxOSpa7144Oocuo,3597
47
- vivarium_public_health-2.3.3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
48
- vivarium_public_health-2.3.3.dist-info/top_level.txt,sha256=VVInlpzCFD0UNNhjOq_j-a29odzjwUwYFTGfvqbi4dY,23
49
- vivarium_public_health-2.3.3.dist-info/RECORD,,