vivarium-public-health 3.1.0__py3-none-any.whl → 3.1.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. vivarium_public_health/_version.py +1 -1
  2. vivarium_public_health/disease/model.py +40 -28
  3. vivarium_public_health/disease/special_disease.py +7 -8
  4. vivarium_public_health/disease/state.py +23 -22
  5. vivarium_public_health/disease/transition.py +11 -10
  6. vivarium_public_health/mslt/delay.py +5 -5
  7. vivarium_public_health/mslt/disease.py +5 -5
  8. vivarium_public_health/mslt/intervention.py +8 -8
  9. vivarium_public_health/mslt/magic_wand_components.py +3 -3
  10. vivarium_public_health/mslt/observer.py +4 -6
  11. vivarium_public_health/mslt/population.py +4 -6
  12. vivarium_public_health/plugins/parser.py +57 -30
  13. vivarium_public_health/population/add_new_birth_cohorts.py +3 -5
  14. vivarium_public_health/population/base_population.py +8 -10
  15. vivarium_public_health/population/data_transformations.py +4 -5
  16. vivarium_public_health/population/mortality.py +7 -7
  17. vivarium_public_health/results/disability.py +1 -3
  18. vivarium_public_health/results/disease.py +5 -5
  19. vivarium_public_health/results/mortality.py +3 -3
  20. vivarium_public_health/results/observer.py +7 -7
  21. vivarium_public_health/results/risk.py +3 -3
  22. vivarium_public_health/risks/base_risk.py +4 -4
  23. vivarium_public_health/risks/distributions.py +15 -15
  24. vivarium_public_health/risks/effect.py +10 -10
  25. vivarium_public_health/risks/implementations/low_birth_weight_and_short_gestation.py +17 -16
  26. vivarium_public_health/treatment/magic_wand.py +3 -3
  27. vivarium_public_health/treatment/scale_up.py +6 -5
  28. vivarium_public_health/utilities.py +4 -5
  29. {vivarium_public_health-3.1.0.dist-info → vivarium_public_health-3.1.2.dist-info}/METADATA +2 -2
  30. vivarium_public_health-3.1.2.dist-info/RECORD +49 -0
  31. {vivarium_public_health-3.1.0.dist-info → vivarium_public_health-3.1.2.dist-info}/WHEEL +1 -1
  32. vivarium_public_health-3.1.0.dist-info/RECORD +0 -49
  33. {vivarium_public_health-3.1.0.dist-info → vivarium_public_health-3.1.2.dist-info}/LICENSE.txt +0 -0
  34. {vivarium_public_health-3.1.0.dist-info → vivarium_public_health-3.1.2.dist-info}/top_level.txt +0 -0
@@ -9,7 +9,7 @@ exposure distributions.
9
9
  """
10
10
 
11
11
  from abc import ABC, abstractmethod
12
- from typing import Callable, Dict, List, Optional, Union
12
+ from collections.abc import Callable
13
13
 
14
14
  import numpy as np
15
15
  import pandas as pd
@@ -38,7 +38,7 @@ class RiskExposureDistribution(Component, ABC):
38
38
  self,
39
39
  risk: EntityString,
40
40
  distribution_type: str,
41
- exposure_data: Optional[Union[int, float, pd.DataFrame]] = None,
41
+ exposure_data: int | float | pd.DataFrame | None = None,
42
42
  ) -> None:
43
43
  super().__init__()
44
44
  self.risk = risk
@@ -51,14 +51,14 @@ class RiskExposureDistribution(Component, ABC):
51
51
  # Setup methods #
52
52
  #################
53
53
 
54
- def get_configuration(self, builder: "Builder") -> Optional[LayeredConfigTree]:
54
+ def get_configuration(self, builder: "Builder") -> LayeredConfigTree | None:
55
55
  return builder.configuration[self.risk]
56
56
 
57
57
  @abstractmethod
58
58
  def build_all_lookup_tables(self, builder: "Builder") -> None:
59
59
  raise NotImplementedError
60
60
 
61
- def get_exposure_data(self, builder: Builder) -> Union[int, float, pd.DataFrame]:
61
+ def get_exposure_data(self, builder: Builder) -> int | float | pd.DataFrame:
62
62
  if self._exposure_data is not None:
63
63
  return self._exposure_data
64
64
  return self.get_data(builder, self.configuration["data_sources"]["exposure"])
@@ -92,11 +92,11 @@ class EnsembleDistribution(RiskExposureDistribution):
92
92
  ##############
93
93
 
94
94
  @property
95
- def columns_created(self) -> List[str]:
95
+ def columns_created(self) -> list[str]:
96
96
  return [self._propensity]
97
97
 
98
98
  @property
99
- def initialization_requirements(self) -> Dict[str, List[str]]:
99
+ def initialization_requirements(self) -> dict[str, list[str]]:
100
100
  return {
101
101
  "requires_columns": [],
102
102
  "requires_values": [],
@@ -265,7 +265,7 @@ class ContinuousDistribution(RiskExposureDistribution):
265
265
 
266
266
  class PolytomousDistribution(RiskExposureDistribution):
267
267
  @property
268
- def categories(self) -> List[str]:
268
+ def categories(self) -> list[str]:
269
269
  # These need to be sorted so the cumulative sum is in the ocrrect order of categories
270
270
  # and results are therefore reproducible and correct
271
271
  return sorted(self.lookup_tables["exposure"].value_columns)
@@ -286,8 +286,8 @@ class PolytomousDistribution(RiskExposureDistribution):
286
286
  )
287
287
 
288
288
  def get_exposure_value_columns(
289
- self, exposure_data: Union[int, float, pd.DataFrame]
290
- ) -> Optional[List[str]]:
289
+ self, exposure_data: int | float | pd.DataFrame
290
+ ) -> list[str] | None:
291
291
  if isinstance(exposure_data, pd.DataFrame):
292
292
  return list(exposure_data["parameter"].unique())
293
293
  return None
@@ -342,7 +342,7 @@ class DichotomousDistribution(RiskExposureDistribution):
342
342
  )
343
343
  self.lookup_tables["paf"] = self.build_lookup_table(builder, 0.0)
344
344
 
345
- def get_exposure_data(self, builder: Builder) -> Union[int, float, pd.DataFrame]:
345
+ def get_exposure_data(self, builder: Builder) -> int | float | pd.DataFrame:
346
346
  exposure_data = super().get_exposure_data(builder)
347
347
 
348
348
  if isinstance(exposure_data, (int, float)):
@@ -373,8 +373,8 @@ class DichotomousDistribution(RiskExposureDistribution):
373
373
  return exposure_data
374
374
 
375
375
  def get_exposure_value_columns(
376
- self, exposure_data: Union[int, float, pd.DataFrame]
377
- ) -> Optional[List[str]]:
376
+ self, exposure_data: int | float | pd.DataFrame
377
+ ) -> list[str] | None:
378
378
  if isinstance(exposure_data, pd.DataFrame):
379
379
  return self.get_value_columns(exposure_data)
380
380
  return None
@@ -470,9 +470,9 @@ def clip(q):
470
470
 
471
471
 
472
472
  def get_risk_distribution_parameter(
473
- value_columns_getter: Callable[[Union[pd.DataFrame]], List[str]],
474
- data: Union[float, pd.DataFrame],
475
- ) -> Union[float, pd.Series]:
473
+ value_columns_getter: Callable[[pd.DataFrame], list[str]],
474
+ data: float | pd.DataFrame,
475
+ ) -> float | pd.Series:
476
476
  if isinstance(data, pd.DataFrame):
477
477
  value_columns = value_columns_getter(data)
478
478
  if len(value_columns) > 1:
@@ -7,9 +7,9 @@ This module contains tools for modeling the relationship between risk
7
7
  exposure models and disease models.
8
8
 
9
9
  """
10
-
10
+ from collections.abc import Callable
11
11
  from importlib import import_module
12
- from typing import Any, Callable, Dict, List, Tuple, Union
12
+ from typing import Any
13
13
 
14
14
  import numpy as np
15
15
  import pandas as pd
@@ -58,7 +58,7 @@ class RiskEffect(Component):
58
58
  return f"risk_effect.{risk.name}_on_{target}"
59
59
 
60
60
  @property
61
- def configuration_defaults(self) -> Dict[str, Any]:
61
+ def configuration_defaults(self) -> dict[str, Any]:
62
62
  """Default values for any configurations managed by this component."""
63
63
  return {
64
64
  self.name: {
@@ -150,7 +150,7 @@ class RiskEffect(Component):
150
150
  self,
151
151
  builder: Builder,
152
152
  configuration=None,
153
- ) -> Union[str, float, pd.DataFrame]:
153
+ ) -> str | float | pd.DataFrame:
154
154
  if configuration is None:
155
155
  configuration = self.configuration
156
156
 
@@ -173,8 +173,8 @@ class RiskEffect(Component):
173
173
  return rr_data
174
174
 
175
175
  def get_filtered_data(
176
- self, builder: "Builder", data_source: Union[str, float, pd.DataFrame]
177
- ) -> Union[float, pd.DataFrame]:
176
+ self, builder: "Builder", data_source: str | float | pd.DataFrame
177
+ ) -> float | pd.DataFrame:
178
178
  data = super().get_data(builder, data_source)
179
179
 
180
180
  if isinstance(data, pd.DataFrame):
@@ -191,8 +191,8 @@ class RiskEffect(Component):
191
191
  return data
192
192
 
193
193
  def process_categorical_data(
194
- self, builder: Builder, rr_data: Union[str, float, pd.DataFrame]
195
- ) -> Tuple[Union[str, float, pd.DataFrame], List[str]]:
194
+ self, builder: Builder, rr_data: str | float | pd.DataFrame
195
+ ) -> tuple[str | float | pd.DataFrame, list[str]]:
196
196
  if not isinstance(rr_data, pd.DataFrame):
197
197
  cat1 = builder.data.load("population.demographic_dimensions")
198
198
  cat1["parameter"] = "cat1"
@@ -347,7 +347,7 @@ class NonLogLinearRiskEffect(RiskEffect):
347
347
  ##############
348
348
 
349
349
  @property
350
- def configuration_defaults(self) -> Dict[str, Any]:
350
+ def configuration_defaults(self) -> dict[str, Any]:
351
351
  """Default values for any configurations managed by this component."""
352
352
  return {
353
353
  self.name: {
@@ -419,7 +419,7 @@ class NonLogLinearRiskEffect(RiskEffect):
419
419
  self,
420
420
  builder: Builder,
421
421
  configuration=None,
422
- ) -> Union[str, float, pd.DataFrame]:
422
+ ) -> str | float | pd.DataFrame:
423
423
  if configuration is None:
424
424
  configuration = self.configuration
425
425
 
@@ -9,7 +9,8 @@ implementation that has been used in several public health models.
9
9
  """
10
10
 
11
11
  import pickle
12
- from typing import Any, Callable, Dict, List, Optional, Tuple
12
+ from collections.abc import Callable
13
+ from typing import Any
13
14
 
14
15
  import numpy as np
15
16
  import pandas as pd
@@ -39,7 +40,7 @@ class LBWSGDistribution(PolytomousDistribution):
39
40
  super().setup(builder)
40
41
  self.category_intervals = self.get_category_intervals(builder)
41
42
 
42
- def get_category_intervals(self, builder: Builder) -> Dict[str, Dict[str, pd.Interval]]:
43
+ def get_category_intervals(self, builder: Builder) -> dict[str, dict[str, pd.Interval]]:
43
44
  """Gets the intervals for each category.
44
45
 
45
46
  Parameters
@@ -51,7 +52,7 @@ class LBWSGDistribution(PolytomousDistribution):
51
52
  -------
52
53
  The intervals for each category.
53
54
  """
54
- categories: Dict[str, str] = builder.data.load(f"{self.risk}.categories")
55
+ categories: dict[str, str] = builder.data.load(f"{self.risk}.categories")
55
56
  category_intervals = {
56
57
  axis: {
57
58
  category: self._parse_description(axis, description)
@@ -96,8 +97,8 @@ class LBWSGDistribution(PolytomousDistribution):
96
97
  self,
97
98
  axis: str,
98
99
  propensity: pd.Series,
99
- categorical_propensity: Optional[pd.Series] = None,
100
- categorical_exposure: Optional[pd.Series] = None,
100
+ categorical_propensity: pd.Series | None = None,
101
+ categorical_exposure: pd.Series | None = None,
101
102
  ) -> pd.Series:
102
103
  """Calculate continuous exposures from propensities for a single axis.
103
104
 
@@ -199,13 +200,13 @@ class LBWSGRisk(Risk):
199
200
  ##############
200
201
 
201
202
  @property
202
- def configuration_defaults(self) -> Dict[str, Any]:
203
+ def configuration_defaults(self) -> dict[str, Any]:
203
204
  configuration_defaults = super().configuration_defaults
204
205
  configuration_defaults[self.name]["distribution_type"] = "lbwsg"
205
206
  return configuration_defaults
206
207
 
207
208
  @property
208
- def columns_created(self) -> List[str]:
209
+ def columns_created(self) -> list[str]:
209
210
  return [self.get_exposure_column_name(axis) for axis in self.AXES]
210
211
 
211
212
  #####################
@@ -224,15 +225,15 @@ class LBWSGRisk(Risk):
224
225
  # Setup methods #
225
226
  #################
226
227
 
227
- def get_propensity_pipeline(self, builder: Builder) -> Optional[Pipeline]:
228
+ def get_propensity_pipeline(self, builder: Builder) -> Pipeline | None:
228
229
  # Propensity only used on initialization; not being saved to avoid a cycle
229
230
  return None
230
231
 
231
- def get_exposure_pipeline(self, builder: Builder) -> Optional[Pipeline]:
232
+ def get_exposure_pipeline(self, builder: Builder) -> Pipeline | None:
232
233
  # Exposure only used on initialization; not being saved to avoid a cycle
233
234
  return None
234
235
 
235
- def get_birth_exposure_pipelines(self, builder: Builder) -> Dict[str, Pipeline]:
236
+ def get_birth_exposure_pipelines(self, builder: Builder) -> dict[str, Pipeline]:
236
237
  required_columns = get_lookup_columns(
237
238
  self.exposure_distribution.lookup_tables.values()
238
239
  )
@@ -291,15 +292,15 @@ class LBWSGRiskEffect(RiskEffect):
291
292
  ##############
292
293
 
293
294
  @property
294
- def columns_created(self) -> List[str]:
295
+ def columns_created(self) -> list[str]:
295
296
  return self.rr_column_names
296
297
 
297
298
  @property
298
- def columns_required(self) -> Optional[List[str]]:
299
+ def columns_required(self) -> list[str] | None:
299
300
  return ["age", "sex"] + self.lbwsg_exposure_column_names
300
301
 
301
302
  @property
302
- def initialization_requirements(self) -> Dict[str, List[str]]:
303
+ def initialization_requirements(self) -> dict[str, list[str]]:
303
304
  return {
304
305
  "requires_columns": ["sex"] + self.lbwsg_exposure_column_names,
305
306
  "requires_values": [],
@@ -307,7 +308,7 @@ class LBWSGRiskEffect(RiskEffect):
307
308
  }
308
309
 
309
310
  @property
310
- def rr_column_names(self) -> List[str]:
311
+ def rr_column_names(self) -> list[str]:
311
312
  return [self.relative_risk_column_name(age_group) for age_group in self.age_intervals]
312
313
 
313
314
  #####################
@@ -356,7 +357,7 @@ class LBWSGRiskEffect(RiskEffect):
356
357
 
357
358
  def get_population_attributable_fraction_source(
358
359
  self, builder: Builder
359
- ) -> Tuple[pd.DataFrame, List[str]]:
360
+ ) -> tuple[pd.DataFrame, list[str]]:
360
361
  paf_key = f"{self.risk}.population_attributable_fraction"
361
362
  paf_data = builder.data.load(paf_key)
362
363
  return paf_data, builder.data.value_columns()(paf_key)
@@ -376,7 +377,7 @@ class LBWSGRiskEffect(RiskEffect):
376
377
  requires_values=[self.relative_risk_pipeline_name],
377
378
  )
378
379
 
379
- def get_age_intervals(self, builder: Builder) -> Dict[str, pd.Interval]:
380
+ def get_age_intervals(self, builder: Builder) -> dict[str, pd.Interval]:
380
381
  age_bins = builder.data.load("population.age_bins").set_index("age_start")
381
382
  exposure = builder.data.load(f"{self.risk}.exposure")
382
383
  exposure = exposure[exposure["age_end"] > 0]
@@ -8,7 +8,7 @@ level by providing direct shifts to epidemiological measures.
8
8
 
9
9
  """
10
10
 
11
- from typing import Any, Dict, List, Optional
11
+ from typing import Any
12
12
 
13
13
  from vivarium import Component
14
14
  from vivarium.framework.engine import Builder
@@ -30,13 +30,13 @@ class AbsoluteShift(Component):
30
30
  ##############
31
31
 
32
32
  @property
33
- def configuration_defaults(self) -> Dict[str, Any]:
33
+ def configuration_defaults(self) -> dict[str, Any]:
34
34
  return {
35
35
  f"intervention_on_{self.target.name}": self.CONFIGURATION_DEFAULTS["intervention"]
36
36
  }
37
37
 
38
38
  @property
39
- def columns_required(self) -> Optional[List[str]]:
39
+ def columns_required(self) -> list[str] | None:
40
40
  return ["age"]
41
41
 
42
42
  #####################
@@ -7,7 +7,8 @@ This module contains tools for applying a linear scale-up to an intervention
7
7
 
8
8
  """
9
9
 
10
- from typing import Any, Callable, Dict, Tuple
10
+ from collections.abc import Callable
11
+ from typing import Any
11
12
 
12
13
  import pandas as pd
13
14
  from vivarium import Component
@@ -61,7 +62,7 @@ class LinearScaleUp(Component):
61
62
  ##############
62
63
 
63
64
  @property
64
- def configuration_defaults(self) -> Dict[str, Any]:
65
+ def configuration_defaults(self) -> dict[str, Any]:
65
66
  return {self.configuration_key: self.CONFIGURATION_DEFAULTS["treatment"]}
66
67
 
67
68
  @property
@@ -108,11 +109,11 @@ class LinearScaleUp(Component):
108
109
  return builder.time.clock()
109
110
 
110
111
  # noinspection PyMethodMayBeStatic
111
- def get_scale_up_dates(self, builder: Builder) -> Tuple[pd.Timestamp, pd.Timestamp]:
112
+ def get_scale_up_dates(self, builder: Builder) -> tuple[pd.Timestamp, pd.Timestamp]:
112
113
  scale_up_config = builder.configuration[self.configuration_key]["date"]
113
114
  return pd.Timestamp(scale_up_config["start"]), pd.Timestamp(scale_up_config["end"])
114
115
 
115
- def get_scale_up_values(self, builder: Builder) -> Tuple[LookupTable, LookupTable]:
116
+ def get_scale_up_values(self, builder: Builder) -> tuple[LookupTable, LookupTable]:
116
117
  """Get the values at the start and end of the scale-up period.
117
118
 
118
119
  Parameters
@@ -137,7 +138,7 @@ class LinearScaleUp(Component):
137
138
  return get_endpoint_value("start"), get_endpoint_value("end")
138
139
 
139
140
  # noinspection PyMethodMayBeStatic
140
- def get_required_pipelines(self, builder: Builder) -> Dict[str, Pipeline]:
141
+ def get_required_pipelines(self, builder: Builder) -> dict[str, Pipeline]:
141
142
  return {}
142
143
 
143
144
  def register_intervention_modifiers(self, builder: Builder):
@@ -7,9 +7,8 @@ This module contains utility classes and functions for use across
7
7
  vivarium_public_health components.
8
8
 
9
9
  """
10
-
10
+ from collections.abc import Iterable
11
11
  from pathlib import Path
12
- from typing import Any, Dict, Iterable, List, Optional, Union
13
12
 
14
13
  import pandas as pd
15
14
  from vivarium.framework.lookup import LookupTable, ScalarValue
@@ -77,7 +76,7 @@ DAYS_PER_YEAR = 365.25
77
76
  DAYS_PER_MONTH = DAYS_PER_YEAR / 12
78
77
 
79
78
 
80
- def to_time_delta(span_in_days: Union[int, float, str]):
79
+ def to_time_delta(span_in_days: int | float | str):
81
80
  span_in_days = float(span_in_days)
82
81
  days, remainder = span_in_days // 1, span_in_days % 1
83
82
  hours, remainder = (24 * remainder) // 24, (24 * remainder) % 24
@@ -90,7 +89,7 @@ def to_years(time: pd.Timedelta) -> float:
90
89
  return time / pd.Timedelta(days=DAYS_PER_YEAR)
91
90
 
92
91
 
93
- def is_non_zero(data: Union[Iterable[ScalarValue], ScalarValue, pd.DataFrame]) -> bool:
92
+ def is_non_zero(data: Iterable[ScalarValue] | ScalarValue | pd.DataFrame) -> bool:
94
93
  if isinstance(data, pd.DataFrame):
95
94
  attribute_sum = data.value.sum()
96
95
  elif isinstance(data, Iterable):
@@ -103,7 +102,7 @@ def is_non_zero(data: Union[Iterable[ScalarValue], ScalarValue, pd.DataFrame]) -
103
102
 
104
103
  def get_lookup_columns(
105
104
  lookup_tables: Iterable[LookupTable], necessary_columns: Iterable = ()
106
- ) -> List[str]:
105
+ ) -> list[str]:
107
106
  necessary_columns = set(necessary_columns)
108
107
  for lookup_table in lookup_tables:
109
108
  necessary_columns.update(set(lookup_table.key_columns))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vivarium_public_health
3
- Version: 3.1.0
3
+ Version: 3.1.2
4
4
  Summary: Components for modelling diseases, risks, and interventions with ``vivarium``
5
5
  Home-page: https://github.com/ihmeuw/vivarium_public_health
6
6
  Author: The vivarium developers
@@ -26,7 +26,7 @@ Classifier: Topic :: Scientific/Engineering :: Medical Science Apps.
26
26
  Classifier: Topic :: Scientific/Engineering :: Physics
27
27
  Classifier: Topic :: Software Development :: Libraries
28
28
  License-File: LICENSE.txt
29
- Requires-Dist: vivarium >=3.0.3
29
+ Requires-Dist: vivarium >=3.2.0
30
30
  Requires-Dist: layered-config-tree >=1.0.1
31
31
  Requires-Dist: loguru
32
32
  Requires-Dist: numpy <2.0.0
@@ -0,0 +1,49 @@
1
+ vivarium_public_health/__about__.py,sha256=RgWycPypKZS80TpSX7o41cREnG8PfguNHDHLuLyl820,487
2
+ vivarium_public_health/__init__.py,sha256=GDeeP-7OlCBwPuv_xQoB1wNmvCaFsqfTB7qnnYApm0w,1343
3
+ vivarium_public_health/_version.py,sha256=EkxTxShULe9D7KtZB_iICEO13IyzloAxfYgXHGwpMhQ,22
4
+ vivarium_public_health/utilities.py,sha256=QNXQ6fhAr1HcV-GwKw7wQLz6QyuNxqNvMA-XujKjTgs,3035
5
+ vivarium_public_health/disease/__init__.py,sha256=VUJHDLlE6ngo2qHNQUtZ8OWH5H_T7_ao-xsYKDkRmHw,443
6
+ vivarium_public_health/disease/model.py,sha256=ZwhhQCc8jj_QeJZO2zLtp_yWzqRxvLjuzW7iDUmmBGA,8852
7
+ vivarium_public_health/disease/models.py,sha256=01UK7yB2zGPFzmlIpvhd-XnGe6vSCMDza3QTidgY7Nc,3479
8
+ vivarium_public_health/disease/special_disease.py,sha256=kTVuE5rQjUK62ysComG8nB2f61aCKdca9trRB1zsDCQ,14537
9
+ vivarium_public_health/disease/state.py,sha256=NwTnxB_i05magsJuEc1_Z_0xMMKsqSPXIpibUdxPrWY,22333
10
+ vivarium_public_health/disease/transition.py,sha256=4g_F8L3Godb4yQjHRr42n95QXo6m0ldI6c8_vu6cTfo,6429
11
+ vivarium_public_health/mslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ vivarium_public_health/mslt/delay.py,sha256=TrFp9nmv-PSu6xdQXfyeM4X8RrXTLUnQMxOuhdvD-Wk,22787
13
+ vivarium_public_health/mslt/disease.py,sha256=DONSItBiOUk1qBE6Msw0vrV0XLW4BPzWVxwVK90GK1I,16638
14
+ vivarium_public_health/mslt/intervention.py,sha256=jgzyDYEypsJDlKeLHDDqcgiwiCTA31VIz7_keS-Jww4,10325
15
+ vivarium_public_health/mslt/magic_wand_components.py,sha256=TUh0fJ6FLZz0qiknOQAD3T7pZN9GWjGDmtNC6Fnhd9E,3975
16
+ vivarium_public_health/mslt/observer.py,sha256=r0XqDIGrSO0BjlU1uCeFenuz-NRfpLMtug24LLg60g4,15178
17
+ vivarium_public_health/mslt/population.py,sha256=LnN9ch_FoPGNbKeIT5BaEFfeAn5itZgZ0q_ZEaZTJEI,7211
18
+ vivarium_public_health/plugins/__init__.py,sha256=oBW_zfgG_LbwfgTDjUe0btfy9FaDvAbtXho1zQFnz0Y,76
19
+ vivarium_public_health/plugins/parser.py,sha256=WoUisq0d-PfJtSzKYZ6C-s-fYdQpNiRBE14vKaYE27Y,32921
20
+ vivarium_public_health/population/__init__.py,sha256=x_9rB93q64Krw-kbBDI1-_U_JsPO1_QrL03AwiFlwXI,243
21
+ vivarium_public_health/population/add_new_birth_cohorts.py,sha256=Xc3NukpbZQpXCtGJsaaN4_arSjOMZ1YJHGyAVTUhGjU,9034
22
+ vivarium_public_health/population/base_population.py,sha256=f7eDqqP0Nxj2W0Q9fwSh_GcN1wzoaQPr--iX8QIV-sE,18827
23
+ vivarium_public_health/population/data_transformations.py,sha256=yxuZuKZt-s8X6XPULbKWXn2w3kAmNLHYvGQ4sWBKlpc,22216
24
+ vivarium_public_health/population/mortality.py,sha256=komiAsM4ONm6emChAbkiMTYey-5jbnUKjq4B4Q1DOnM,10223
25
+ vivarium_public_health/results/__init__.py,sha256=rKUZGlRXJgEyFY4a_WJeg3XnC0l34S5guYZ0N9JJS4E,319
26
+ vivarium_public_health/results/columns.py,sha256=V-L3JgTcsk51Zx9PcUwSgaE1iZjuGyfZ8aShPjynadU,495
27
+ vivarium_public_health/results/disability.py,sha256=27lXk68KRTxGIhDJ2BXT1IE2XWSVl7ktoXYUCCBJFOM,9844
28
+ vivarium_public_health/results/disease.py,sha256=NwKDtHNEjPJUB-DqhE-gVCC1TNRbX5qbQBDL06XT3Pg,12517
29
+ vivarium_public_health/results/mortality.py,sha256=-gxA9t1nSuKe1CiBje6Kkl985yAUkRWj3Cl9PFYLcQc,9644
30
+ vivarium_public_health/results/observer.py,sha256=ADikaV6TvHVaysWoeux_DcvmzAFT7kpD6KtRSl16SaY,7277
31
+ vivarium_public_health/results/risk.py,sha256=VArTuuW-xoeuE-EkgAIMVb5la_YGRulIPMLoOmsMnik,6597
32
+ vivarium_public_health/results/simple_cause.py,sha256=ibdE6KwhDfQWntCVkOEooBcmUydEoupmd3_poHSHyu8,1007
33
+ vivarium_public_health/results/stratification.py,sha256=4I3YGHVabNAZENE7YboOtWsWU4X-8LUBJ9iwYMbpl6E,5387
34
+ vivarium_public_health/risks/__init__.py,sha256=z8DcnZGxqNVAyFZm2WAV-IVNGvrSS4izju_0DNe2Ghw,212
35
+ vivarium_public_health/risks/base_risk.py,sha256=XQ_7rYJS5gh0coEKDqcc_zYdjPDBZlj6-THsIQxL3zs,10888
36
+ vivarium_public_health/risks/data_transformations.py,sha256=SgdPKc95BBqgMNUdlAQM8k6iaXcpxnjk5B2ySTES1Yg,9269
37
+ vivarium_public_health/risks/distributions.py,sha256=a63-ihg2itxqgowDZbUix8soErxs_y8TRwsdtTCIUU4,18121
38
+ vivarium_public_health/risks/effect.py,sha256=BN7XzmCutG5yCIcw9uxl_yKBTtqrL_Y4trrj5wND62w,20735
39
+ vivarium_public_health/risks/implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
+ vivarium_public_health/risks/implementations/low_birth_weight_and_short_gestation.py,sha256=8L-19voqV0URpkbJlgIfdGSJAwEu-y-J9_KGJUJUYgY,17931
41
+ vivarium_public_health/treatment/__init__.py,sha256=wONElu9aJbBYwpYIovYPYaN_GYfVhPXtTeFWSdQMgA0,222
42
+ vivarium_public_health/treatment/magic_wand.py,sha256=zGIhrNgB9q6JD7fHlvbDQb3H5e_N_QsROO4Y0kl_JQM,1955
43
+ vivarium_public_health/treatment/scale_up.py,sha256=hVz0ELXDqlpcExI31rKdepxqcW_hy2hZSa6qCzv6udU,7020
44
+ vivarium_public_health/treatment/therapeutic_inertia.py,sha256=8Z97s7GfcpfLu1U1ESJSqeEk4L__a3M0GbBV21MFg2s,2346
45
+ vivarium_public_health-3.1.2.dist-info/LICENSE.txt,sha256=mN4bNLUQNcN9njYRc_3jCZkfPySVpmM6MRps104FxA4,1548
46
+ vivarium_public_health-3.1.2.dist-info/METADATA,sha256=m30cn1jwJksbLgxSqetpor3zYnZZdHQ6BqDBQ3l2hnA,4061
47
+ vivarium_public_health-3.1.2.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
48
+ vivarium_public_health-3.1.2.dist-info/top_level.txt,sha256=VVInlpzCFD0UNNhjOq_j-a29odzjwUwYFTGfvqbi4dY,23
49
+ vivarium_public_health-3.1.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.4.0)
2
+ Generator: setuptools (75.5.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,49 +0,0 @@
1
- vivarium_public_health/__about__.py,sha256=RgWycPypKZS80TpSX7o41cREnG8PfguNHDHLuLyl820,487
2
- vivarium_public_health/__init__.py,sha256=GDeeP-7OlCBwPuv_xQoB1wNmvCaFsqfTB7qnnYApm0w,1343
3
- vivarium_public_health/_version.py,sha256=YVoF76lT0p3dIsqphNnDWuqSia3gZP1S1eQYXZ9FbSE,22
4
- vivarium_public_health/utilities.py,sha256=5cl9jjVkOQ1UeXT4DjDMAhaBNNjAsDo-SVJwpv6FDw0,3071
5
- vivarium_public_health/disease/__init__.py,sha256=VUJHDLlE6ngo2qHNQUtZ8OWH5H_T7_ao-xsYKDkRmHw,443
6
- vivarium_public_health/disease/model.py,sha256=0WIYDEx-hwlUJp6Zl8m8bUMoWxuVkOWsJvh_YlZiOPs,8234
7
- vivarium_public_health/disease/models.py,sha256=01UK7yB2zGPFzmlIpvhd-XnGe6vSCMDza3QTidgY7Nc,3479
8
- vivarium_public_health/disease/special_disease.py,sha256=3vS1WsO__IwOK0Oe_CUmh3aaKrXIf2CANtmiqlS3pjc,14614
9
- vivarium_public_health/disease/state.py,sha256=PUSDE1UlvoCPT6jPEyCTQO1bXjjYxqzdIa6-Bxpd-7I,22370
10
- vivarium_public_health/disease/transition.py,sha256=fgeVMy86GLrNpZ3J9E4AC0iA5z3aVdP0ZQ0AWa_odTY,6452
11
- vivarium_public_health/mslt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- vivarium_public_health/mslt/delay.py,sha256=aOYjMpMSHEVlJs0FuC2gdq3uj6_vKmkhDjoBtC4i9G0,22812
13
- vivarium_public_health/mslt/disease.py,sha256=TBqa7yj6k1oUbgkAe0rIgLpbdMLMFs4DiZ1Igi2BQBg,16663
14
- vivarium_public_health/mslt/intervention.py,sha256=m6LT0CdJNwhz9X0FQNap1y9K5N4MhUDcvfDaHVukJZQ,10331
15
- vivarium_public_health/mslt/magic_wand_components.py,sha256=pnl-7MwIJIus6UjtvVmM15pIZOCbSS1mNfP7nS2bAtw,3981
16
- vivarium_public_health/mslt/observer.py,sha256=O4rysQzAGE5oDkdXb0E-qjD9TPFphQHTn7_3Qj7pBL0,15225
17
- vivarium_public_health/mslt/population.py,sha256=v_p5VkjndAVJMuXaJQc3lAdzUWHlWCEQWH4A-c4phPA,7255
18
- vivarium_public_health/plugins/__init__.py,sha256=oBW_zfgG_LbwfgTDjUe0btfy9FaDvAbtXho1zQFnz0Y,76
19
- vivarium_public_health/plugins/parser.py,sha256=v78mj8awpdrB-oqK8udPI_7MZBChoKJOQN_e17fNEj8,31841
20
- vivarium_public_health/population/__init__.py,sha256=x_9rB93q64Krw-kbBDI1-_U_JsPO1_QrL03AwiFlwXI,243
21
- vivarium_public_health/population/add_new_birth_cohorts.py,sha256=k65Li0LYWl-JFHBUvLjJxkRv12EJw_FVxrOYgbd44q8,9078
22
- vivarium_public_health/population/base_population.py,sha256=jJMVWv_EO0ckUZHhh01dRbsRgL491Eg3thRxPwNiAeg,18866
23
- vivarium_public_health/population/data_transformations.py,sha256=YmqyrlrIBtHGp1nFyhesqlNryvB7Vr33eVu4fU4HWsA,22260
24
- vivarium_public_health/population/mortality.py,sha256=w7b_TUssHjRcnULdXu7MXKfZBjCrlYWbB94oO3JWogI,10264
25
- vivarium_public_health/results/__init__.py,sha256=rKUZGlRXJgEyFY4a_WJeg3XnC0l34S5guYZ0N9JJS4E,319
26
- vivarium_public_health/results/columns.py,sha256=V-L3JgTcsk51Zx9PcUwSgaE1iZjuGyfZ8aShPjynadU,495
27
- vivarium_public_health/results/disability.py,sha256=JQm3Q7CoGCT2AgxaoH6MKkvnq4xF83wfFmEvEOvTmvA,9876
28
- vivarium_public_health/results/disease.py,sha256=OwxhPrfDsCnCZSaw8Yiq2AnibWikoqI-gM7xDdhFLcM,12529
29
- vivarium_public_health/results/mortality.py,sha256=imH5OGze_rb0i60hmFs-JUjE6XXoH8Gt9wWeut0sk_M,9656
30
- vivarium_public_health/results/observer.py,sha256=SQmKL1OCs2gDS8clIuJvZ3WiuspMkGEVDhnuNMJAvHc,7300
31
- vivarium_public_health/results/risk.py,sha256=GS4qJVjW3MqsDeRDDac2etFQlqIluxOxIZFMy1Ytmp8,6622
32
- vivarium_public_health/results/simple_cause.py,sha256=ibdE6KwhDfQWntCVkOEooBcmUydEoupmd3_poHSHyu8,1007
33
- vivarium_public_health/results/stratification.py,sha256=4I3YGHVabNAZENE7YboOtWsWU4X-8LUBJ9iwYMbpl6E,5387
34
- vivarium_public_health/risks/__init__.py,sha256=z8DcnZGxqNVAyFZm2WAV-IVNGvrSS4izju_0DNe2Ghw,212
35
- vivarium_public_health/risks/base_risk.py,sha256=fNQZIgGHYnWFWdLA9qmtTA66ujCGq2jgA5S1-MadWT8,10900
36
- vivarium_public_health/risks/data_transformations.py,sha256=SgdPKc95BBqgMNUdlAQM8k6iaXcpxnjk5B2ySTES1Yg,9269
37
- vivarium_public_health/risks/distributions.py,sha256=7xCI2zSpnKUEWow4ywRirVbvbpeJaxo6g9us0-Lh0kE,18197
38
- vivarium_public_health/risks/effect.py,sha256=fc_MrhmJLQcpaiZk12klric2c5-BY1gZaWMbsEjBUlY,20766
39
- vivarium_public_health/risks/implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
- vivarium_public_health/risks/implementations/low_birth_weight_and_short_gestation.py,sha256=kxuJwkpJzGF8CqwNEemEA7CrohcxKQJtvUXLJtD1xm0,17948
41
- vivarium_public_health/treatment/__init__.py,sha256=wONElu9aJbBYwpYIovYPYaN_GYfVhPXtTeFWSdQMgA0,222
42
- vivarium_public_health/treatment/magic_wand.py,sha256=i9N57-MEuQv5B6dQ5iVMTAdOPghYcgiRRz-dTzigf1s,1980
43
- vivarium_public_health/treatment/scale_up.py,sha256=9Cl3_MaCNPtUPPKXf3hWYepIwMCFlFY24jt2jeyFQO4,7006
44
- vivarium_public_health/treatment/therapeutic_inertia.py,sha256=8Z97s7GfcpfLu1U1ESJSqeEk4L__a3M0GbBV21MFg2s,2346
45
- vivarium_public_health-3.1.0.dist-info/LICENSE.txt,sha256=mN4bNLUQNcN9njYRc_3jCZkfPySVpmM6MRps104FxA4,1548
46
- vivarium_public_health-3.1.0.dist-info/METADATA,sha256=YGem2GjFv7jkEz7_3VkJMsJjMtHolbwiFgBgL0LF4Mk,4061
47
- vivarium_public_health-3.1.0.dist-info/WHEEL,sha256=a7TGlA-5DaHMRrarXjVbQagU3Man_dCnGIWMJr5kRWo,91
48
- vivarium_public_health-3.1.0.dist-info/top_level.txt,sha256=VVInlpzCFD0UNNhjOq_j-a29odzjwUwYFTGfvqbi4dY,23
49
- vivarium_public_health-3.1.0.dist-info/RECORD,,