vivarium-public-health 2.1.0__py3-none-any.whl → 2.1.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- __version__ = "2.1.0"
1
+ __version__ = "2.1.2"
@@ -11,10 +11,11 @@ from typing import Callable, Dict, List, Optional
11
11
  import numpy as np
12
12
  import pandas as pd
13
13
  from vivarium.framework.engine import Builder
14
- from vivarium.framework.lookup import LookupTableData
14
+ from vivarium.framework.lookup import LookupTable, LookupTableData
15
15
  from vivarium.framework.population import PopulationView, SimulantData
16
+ from vivarium.framework.randomness import RandomnessStream
16
17
  from vivarium.framework.state_machine import State, Transient, Transition, Trigger
17
- from vivarium.framework.values import list_combiner, union_post_processor
18
+ from vivarium.framework.values import Pipeline, list_combiner, union_post_processor
18
19
 
19
20
  from vivarium_public_health.disease.transition import (
20
21
  ProportionTransition,
@@ -323,65 +324,41 @@ class DiseaseState(BaseDiseaseState):
323
324
  self.clock = builder.time.clock()
324
325
 
325
326
  prevalence_data = self.load_prevalence_data(builder)
326
- self.prevalence = builder.lookup.build_table(
327
- prevalence_data, key_columns=["sex"], parameter_columns=["age", "year"]
328
- )
327
+ self.prevalence = self.get_prevalence(builder, prevalence_data)
329
328
 
330
329
  birth_prevalence_data = self.load_birth_prevalence_data(builder)
331
- self.birth_prevalence = builder.lookup.build_table(
332
- birth_prevalence_data, key_columns=["sex"], parameter_columns=["year"]
333
- )
330
+ self.birth_prevalence = self.get_birth_prevalence(builder, birth_prevalence_data)
334
331
 
335
332
  dwell_time_data = self.load_dwell_time_data(builder)
336
- self.dwell_time = builder.value.register_value_producer(
337
- f"{self.state_id}.dwell_time",
338
- source=builder.lookup.build_table(
339
- dwell_time_data, key_columns=["sex"], parameter_columns=["age", "year"]
340
- ),
341
- requires_columns=["age", "sex"],
342
- )
333
+ self.dwell_time = self.get_dwell_time_pipeline(builder, dwell_time_data)
343
334
 
344
335
  disability_weight_data = self.load_disability_weight_data(builder)
345
336
  self.has_disability = is_non_zero(disability_weight_data)
346
- self.base_disability_weight = builder.lookup.build_table(
347
- disability_weight_data, key_columns=["sex"], parameter_columns=["age", "year"]
348
- )
349
- self.disability_weight = builder.value.register_value_producer(
350
- f"{self.state_id}.disability_weight",
351
- source=self.compute_disability_weight,
352
- requires_columns=["age", "sex", "alive", self.model],
337
+ self.base_disability_weight = self.get_base_disability_weight(
338
+ builder, disability_weight_data
353
339
  )
340
+
341
+ self.disability_weight = self.get_disability_weight_pipeline(builder)
342
+
354
343
  builder.value.register_value_modifier(
355
344
  "disability_weight", modifier=self.disability_weight
356
345
  )
357
346
 
358
347
  excess_mortality_data = self.load_excess_mortality_rate_data(builder)
359
348
  self.has_excess_mortality = is_non_zero(excess_mortality_data)
360
- self.base_excess_mortality_rate = builder.lookup.build_table(
361
- excess_mortality_data, key_columns=["sex"], parameter_columns=["age", "year"]
362
- )
363
- self.excess_mortality_rate = builder.value.register_rate_producer(
364
- self.excess_mortality_rate_pipeline_name,
365
- source=self.compute_excess_mortality_rate,
366
- requires_columns=["age", "sex", "alive", self.model],
367
- requires_values=[self.excess_mortality_rate_paf_pipeline_name],
368
- )
369
- paf = builder.lookup.build_table(0)
370
- self.joint_paf = builder.value.register_value_producer(
371
- self.excess_mortality_rate_paf_pipeline_name,
372
- source=lambda idx: [paf(idx)],
373
- preferred_combiner=list_combiner,
374
- preferred_post_processor=union_post_processor,
349
+ self.base_excess_mortality_rate = self.get_base_excess_mortality_rate(
350
+ builder, excess_mortality_data
375
351
  )
352
+ self.excess_mortality_rate = self.get_excess_mortality_rate_pipeline(builder)
353
+ self.joint_paf = self.get_joint_paf(builder)
354
+
376
355
  builder.value.register_value_modifier(
377
356
  "mortality_rate",
378
357
  modifier=self.adjust_mortality_rate,
379
358
  requires_values=[self.excess_mortality_rate_pipeline_name],
380
359
  )
381
360
 
382
- self.randomness_prevalence = builder.randomness.get_stream(
383
- f"{self.state_id}_prevalent_cases"
384
- )
361
+ self.randomness_prevalence = self.get_randomness_prevalence(builder)
385
362
 
386
363
  #################
387
364
  # Setup methods #
@@ -393,12 +370,55 @@ class DiseaseState(BaseDiseaseState):
393
370
  else:
394
371
  return builder.data.load(f"{self.cause_type}.{self.state_id}.prevalence")
395
372
 
373
+ def get_prevalence(
374
+ self, builder: Builder, prevalence_data: LookupTableData
375
+ ) -> LookupTable:
376
+ """Builds a LookupTable for the prevalence of this state.
377
+
378
+ Parameters
379
+ ----------
380
+ builder
381
+ Interface to access simulation managers.
382
+ prevalence_data
383
+ The data to use to build the LookupTable.
384
+
385
+ Returns
386
+ -------
387
+ LookupTable
388
+ The LookupTable for the prevalence of this state.
389
+ """
390
+ return builder.lookup.build_table(
391
+ prevalence_data, key_columns=["sex"], parameter_columns=["age", "year"]
392
+ )
393
+
396
394
  def load_birth_prevalence_data(self, builder: Builder) -> LookupTableData:
397
395
  if "birth_prevalence" in self._get_data_functions:
398
396
  return self._get_data_functions["birth_prevalence"](builder, self.state_id)
399
397
  else:
400
398
  return 0
401
399
 
400
+ def get_birth_prevalence(
401
+ self, builder: Builder, birth_prevalence_data: LookupTableData
402
+ ) -> LookupTable:
403
+ """
404
+ Builds a LookupTable for the birth prevalence of this state.
405
+
406
+ Parameters
407
+ ----------
408
+ builder
409
+ Interface to access simulation managers.
410
+ birth_prevalence_data
411
+ The data to use to build the LookupTable.
412
+
413
+ Returns
414
+ -------
415
+ LookupTable
416
+ The LookupTable for the birth prevalence of this state.
417
+ """
418
+ return builder.lookup.build_table(
419
+ birth_prevalence_data, key_columns=["sex"], parameter_columns=["year"]
420
+ )
421
+
402
422
  def load_dwell_time_data(self, builder: Builder) -> LookupTableData:
403
423
  if "dwell_time" in self._get_data_functions:
404
424
  dwell_time = self._get_data_functions["dwell_time"](builder, self.state_id)
@@ -414,6 +434,17 @@ class DiseaseState(BaseDiseaseState):
414
434
 
415
435
  return dwell_time
416
436
 
437
+ def get_dwell_time_pipeline(
438
+ self, builder: Builder, dwell_time_data: LookupTableData
439
+ ) -> Pipeline:
440
+ return builder.value.register_value_producer(
441
+ f"{self.state_id}.dwell_time",
442
+ source=builder.lookup.build_table(
443
+ dwell_time_data, key_columns=["sex"], parameter_columns=["age", "year"]
444
+ ),
445
+ requires_columns=["age", "sex"],
446
+ )
447
+
417
448
  def load_disability_weight_data(self, builder: Builder) -> LookupTableData:
418
449
  if "disability_weight" in self._get_data_functions:
419
450
  disability_weight = self._get_data_functions["disability_weight"](
@@ -429,6 +460,35 @@ class DiseaseState(BaseDiseaseState):
429
460
 
430
461
  return disability_weight
431
462
 
463
+ def get_base_disability_weight(
464
+ self, builder: Builder, disability_weight_data: LookupTableData
465
+ ) -> LookupTable:
466
+ """
467
+ Builds a LookupTable for the base disability weight of this state.
468
+
469
+ Parameters
470
+ ----------
471
+ builder
472
+ Interface to access simulation managers.
473
+ disability_weight_data
474
+ The data to use to build the LookupTable.
475
+
476
+ Returns
477
+ -------
478
+ LookupTable
479
+ The LookupTable for the disability weight of this state.
480
+ """
481
+ return builder.lookup.build_table(
482
+ disability_weight_data, key_columns=["sex"], parameter_columns=["age", "year"]
483
+ )
484
+
485
+ def get_disability_weight_pipeline(self, builder: Builder) -> Pipeline:
486
+ return builder.value.register_value_producer(
487
+ f"{self.state_id}.disability_weight",
488
+ source=self.compute_disability_weight,
489
+ requires_columns=["age", "sex", "alive", self.model],
490
+ )
491
+
432
492
  def load_excess_mortality_rate_data(self, builder: Builder) -> LookupTableData:
433
493
  if "excess_mortality_rate" in self._get_data_functions:
434
494
  return self._get_data_functions["excess_mortality_rate"](builder, self.state_id)
@@ -439,6 +499,48 @@ class DiseaseState(BaseDiseaseState):
439
499
  f"{self.cause_type}.{self.state_id}.excess_mortality_rate"
440
500
  )
441
501
 
502
+ def get_base_excess_mortality_rate(
503
+ self, builder: Builder, excess_mortality_data: LookupTableData
504
+ ) -> LookupTable:
505
+ """
506
+ Builds a LookupTable for the base excess mortality rate of this state.
507
+
508
+ Parameters
509
+ ----------
510
+ builder
511
+ Interface to access simulation managers.
512
+ excess_mortality_data
513
+ The data to use to build the LookupTable.
514
+
515
+ Returns
516
+ -------
517
+ LookupTable
518
+ The LookupTable for the base excess mortality rate of this state.
519
+ """
520
+ return builder.lookup.build_table(
521
+ excess_mortality_data, key_columns=["sex"], parameter_columns=["age", "year"]
522
+ )
523
+
524
+ def get_excess_mortality_rate_pipeline(self, builder: Builder) -> Pipeline:
525
+ return builder.value.register_rate_producer(
526
+ self.excess_mortality_rate_pipeline_name,
527
+ source=self.compute_excess_mortality_rate,
528
+ requires_columns=["age", "sex", "alive", self.model],
529
+ requires_values=[self.excess_mortality_rate_paf_pipeline_name],
530
+ )
531
+
532
+ def get_joint_paf(self, builder: Builder) -> Pipeline:
533
+ paf = builder.lookup.build_table(0)
534
+ return builder.value.register_value_producer(
535
+ self.excess_mortality_rate_paf_pipeline_name,
536
+ source=lambda idx: [paf(idx)],
537
+ preferred_combiner=list_combiner,
538
+ preferred_post_processor=union_post_processor,
539
+ )
540
+
541
+ def get_randomness_prevalence(self, builder: Builder) -> RandomnessStream:
542
+ return builder.randomness.get_stream(f"{self.state_id}_prevalent_cases")
543
+
442
544
  ##################
443
545
  # Public methods #
444
546
  ##################
@@ -128,6 +128,19 @@ class Mortality(Component):
128
128
 
129
129
  # noinspection PyMethodMayBeStatic
130
130
  def get_all_cause_mortality_rate(self, builder: Builder) -> Union[LookupTable, Pipeline]:
131
+ """
132
+ Load all cause mortality rate data and build a lookup table or pipeline.
133
+
134
+ Parameters
135
+ ----------
136
+ builder
137
+ Interface to access simulation managers.
138
+
139
+ Returns
140
+ -------
141
+ Union[LookupTable, Pipeline]
142
+ A lookup table or pipeline returning the all cause mortality rate.
143
+ """
131
144
  acmr_data = builder.data.load("cause.all_causes.cause_specific_mortality_rate")
132
145
  return builder.lookup.build_table(
133
146
  acmr_data, key_columns=["sex"], parameter_columns=["age", "year"]
@@ -135,6 +148,19 @@ class Mortality(Component):
135
148
 
136
149
  # noinspection PyMethodMayBeStatic
137
150
  def get_life_expectancy(self, builder: Builder) -> Union[LookupTable, Pipeline]:
151
+ """
152
+ Load life expectancy data and build a lookup table or pipeline.
153
+
154
+ Parameters
155
+ ----------
156
+ builder
157
+ Interface to access simulation managers.
158
+
159
+ Returns
160
+ -------
161
+ Union[LookupTable, Pipeline]
162
+ A lookup table or pipeline returning the life expectancy.
163
+ """
138
164
  life_expectancy_data = builder.data.load(
139
165
  "population.theoretical_minimum_risk_life_expectancy"
140
166
  )
@@ -142,6 +168,20 @@ class Mortality(Component):
142
168
 
143
169
  # noinspection PyMethodMayBeStatic
144
170
  def get_raw_unmodeled_csmr(self, builder: Builder) -> Union[LookupTable, Pipeline]:
171
+ """
172
+ Load unmodeled cause specific mortality rate data and build a lookup
173
+ table or pipeline.
174
+
175
+ Parameters
176
+ ----------
177
+ builder
178
+ Interface to access simulation managers.
179
+
180
+ Returns
181
+ -------
182
+ Union[LookupTable, Pipeline]
183
+ A lookup table or pipeline returning the unmodeled csmr.
184
+ """
145
185
  unmodeled_causes = builder.configuration.unmodeled_causes
146
186
  raw_csmr = 0.0
147
187
  for idx, cause in enumerate(unmodeled_causes):
@@ -121,12 +121,40 @@ class RiskEffect(Component):
121
121
  return builder.value.get_value(self.exposure_pipeline_name)
122
122
 
123
123
  def get_relative_risk_source(self, builder: Builder) -> LookupTable:
124
+ """
125
+ Get the relative risk source for this risk effect model.
126
+
127
+ Parameters
128
+ ----------
129
+ builder
130
+ Interface to access simulation managers.
131
+
132
+ Returns
133
+ -------
134
+ LookupTable
135
+ A lookup table containing the relative risk data for this risk
136
+ effect model.
137
+ """
124
138
  relative_risk_data = get_relative_risk_data(builder, self.risk, self.target)
125
139
  return builder.lookup.build_table(
126
140
  relative_risk_data, key_columns=["sex"], parameter_columns=["age", "year"]
127
141
  )
128
142
 
129
143
  def get_population_attributable_fraction_source(self, builder: Builder) -> LookupTable:
144
+ """
145
+ Get the population attributable fraction source for this risk effect model.
146
+
147
+ Parameters
148
+ ----------
149
+ builder
150
+ Interface to access simulation managers.
151
+
152
+ Returns
153
+ -------
154
+ LookupTable
155
+ A lookup table containing the population attributable fraction data
156
+ for this risk effect model.
157
+ """
130
158
  paf_data = get_population_attributable_fraction_data(builder, self.risk, self.target)
131
159
  return builder.lookup.build_table(
132
160
  paf_data, key_columns=["sex"], parameter_columns=["age", "year"]
@@ -127,6 +127,20 @@ class LinearScaleUp(Component):
127
127
  return get_endpoint("start"), get_endpoint("end")
128
128
 
129
129
  def get_scale_up_values(self, builder: Builder) -> Tuple[LookupTable, LookupTable]:
130
+ """
131
+ Get the values at the start and end of the scale-up period.
132
+
133
+ Parameters
134
+ ----------
135
+ builder
136
+ Interface to access simulation managers.
137
+
138
+ Returns
139
+ -------
140
+ LookupTable
141
+ A tuple of lookup tables returning the values at the start and end
142
+ of the scale-up period.
143
+ """
130
144
  scale_up_config = builder.configuration[self.configuration_key]["value"]
131
145
 
132
146
  def get_endpoint_value(endpoint_type: str) -> LookupTable:
@@ -172,6 +186,23 @@ class LinearScaleUp(Component):
172
186
  def get_endpoint_value_from_data(
173
187
  self, builder: Builder, endpoint_type: str
174
188
  ) -> LookupTable:
189
+ """
190
+ Get the value at the start or end of the scale-up period from data.
191
+
192
+ Parameters
193
+ ----------
194
+ builder
195
+ Interface to access simulation managers.
196
+ endpoint_type
197
+ The type of endpoint to get the value for. Allowed values are
198
+ "start" and "end".
199
+
200
+ Returns
201
+ -------
202
+ LookupTable
203
+ A lookup table returning the value at the start or end of the
204
+ scale-up period.
205
+ """
175
206
  if endpoint_type == "start":
176
207
  endpoint_data = builder.data.load(f"{self.treatment}.exposure")
177
208
  elif endpoint_type == "end":
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vivarium-public-health
3
- Version: 2.1.0
3
+ Version: 2.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
@@ -1,12 +1,12 @@
1
1
  vivarium_public_health/__about__.py,sha256=RgWycPypKZS80TpSX7o41cREnG8PfguNHDHLuLyl820,487
2
2
  vivarium_public_health/__init__.py,sha256=tomMOl3PI7O8GdxDWGBiBjT0Bwd31GpyQTYTzwIv108,361
3
- vivarium_public_health/_version.py,sha256=Xybt2skBZamGMNlLuOX1IG-h4uIxqUDGAO8MIGWrJac,22
3
+ vivarium_public_health/_version.py,sha256=UiuBcRXPtXxPUBDdp0ZDvWl0U9Db1kMNfT3oAfhxqLg,22
4
4
  vivarium_public_health/utilities.py,sha256=_X9sZQ7flsi2sVWQ9zrf8GJw8QwZsPZm3NUjx1gu7bM,2555
5
5
  vivarium_public_health/disease/__init__.py,sha256=RuuiRcvAJfX9WQGt_WZZjxN7Cu3E5rMTmuaRS-UaFPM,419
6
6
  vivarium_public_health/disease/model.py,sha256=7xFGo6JqPjQjm2VUZ3u3ThXWSzmitTOCZ8N9PTTL6MU,8253
7
7
  vivarium_public_health/disease/models.py,sha256=uiB2qUlxBsPPPmHJ8Cgot_T1ItZ8RYSNVOBtxtn93Y0,3478
8
8
  vivarium_public_health/disease/special_disease.py,sha256=gl8aK0z6afCxiCZxgJafLe4xmbR91zk3079hsi2pUAw,14751
9
- vivarium_public_health/disease/state.py,sha256=yZ76I4mRHfa-KG2lhCJZpVWkgxip0j6r3AkQD5SpTzg,21165
9
+ vivarium_public_health/disease/state.py,sha256=TBbUQ8zALN5BdpJM2WPUYYhlZ4xcu-UXKc3rOZUj72Y,24403
10
10
  vivarium_public_health/disease/transition.py,sha256=Or5nucRzeGG-UuE_CGkPZ9qE35-Ed9I9LWHj4rjknCc,5334
11
11
  vivarium_public_health/metrics/__init__.py,sha256=bWAvvdCm_7RPIazo12qFohA2x5-_EV6ceV8IhKS37sk,209
12
12
  vivarium_public_health/metrics/disability.py,sha256=zm0vAG00wj44CHjYGdT2_pebgARa3XXIerrR06t80rc,3984
@@ -25,12 +25,12 @@ vivarium_public_health/population/__init__.py,sha256=17rtbcNVK5LtCCxAex7P7Q_vYpw
25
25
  vivarium_public_health/population/add_new_birth_cohorts.py,sha256=qNsZjvaJ7Et8_Kw7JNyRshHHRA3pEQMM4TSqCp48Gr4,9092
26
26
  vivarium_public_health/population/base_population.py,sha256=U9FibBoPuYWvUqPFCUIVwjBxQVuhTb58cUy-2EJSzio,15345
27
27
  vivarium_public_health/population/data_transformations.py,sha256=M1qZlDyWGQsVR33LtrKW2ts1OIXOT2TYoQEtjzXQ_1k,21804
28
- vivarium_public_health/population/mortality.py,sha256=Cv7OSSPLb6e9N0TaEBKz2mPbmDWVk3eEpdaKrzXQu6M,9004
28
+ vivarium_public_health/population/mortality.py,sha256=w1Oxb958LjUkNwxJ0vdA3TZndpeNiaH3d7RukLas_oQ,10085
29
29
  vivarium_public_health/risks/__init__.py,sha256=XvX12RgD0iF5PBoc2StsOhxJmK1FP-RaAYrjIT9MfDs,232
30
30
  vivarium_public_health/risks/base_risk.py,sha256=6D7YlxQOdQm-Kw5_vjpQmFqU7spF-lTy14WEEefRQlA,6494
31
31
  vivarium_public_health/risks/data_transformations.py,sha256=-nEbytxaQEB1zaAacA46A3WATeKle2FvrnePx-NPCeg,19602
32
32
  vivarium_public_health/risks/distributions.py,sha256=EYMjhOmci4O7orU2-qQ55uOzqplqByn4GokbKgcZgfQ,10800
33
- vivarium_public_health/risks/effect.py,sha256=chpFI4UGqO_uaUjB9LCCPaHeVorHeYv0sTjXzphdwPo,6555
33
+ vivarium_public_health/risks/effect.py,sha256=GH_n5j6RQY-DdV0hSH-_Qo10lXVZRdMyANh6wfrLtiI,7295
34
34
  vivarium_public_health/risks/implementations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
35
  vivarium_public_health/risks/implementations/low_birth_weight_and_short_gestation.py,sha256=G8-KMklSwd2Sl29oMX8WFPKKv1tBtRUOqLuAmoxOos0,18027
36
36
  vivarium_public_health/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -38,10 +38,10 @@ vivarium_public_health/testing/mock_artifact.py,sha256=T6Fw0rSEGfDr7Lqq-YxcJBmZt
38
38
  vivarium_public_health/testing/utils.py,sha256=bbAEGw5kRzVB_80uc5u5mp47NMj2xD6Nw7vlEsT_-Wg,2199
39
39
  vivarium_public_health/treatment/__init__.py,sha256=wONElu9aJbBYwpYIovYPYaN_GYfVhPXtTeFWSdQMgA0,222
40
40
  vivarium_public_health/treatment/magic_wand.py,sha256=iPKFN3VjfiMy_XvN94UqM-FUrGuI0ULwmOdAGdOepYQ,1979
41
- vivarium_public_health/treatment/scale_up.py,sha256=zTPMfKG38dGBj14QpBeLlmUixx1y_XIMElmTpkklydA,6714
41
+ vivarium_public_health/treatment/scale_up.py,sha256=7QKBgAII4dwkds9gdbQ5d6oDaD02iwcQCVcYRN-B4Mg,7573
42
42
  vivarium_public_health/treatment/therapeutic_inertia.py,sha256=VwZ7t90zzfGoBusduIvcE4lDe5zTvzmHiUNB3u2I52Y,2339
43
- vivarium_public_health-2.1.0.dist-info/LICENSE.txt,sha256=mN4bNLUQNcN9njYRc_3jCZkfPySVpmM6MRps104FxA4,1548
44
- vivarium_public_health-2.1.0.dist-info/METADATA,sha256=qmXdDtOXL1ZEE6zsUdDGG8CUPAvloE3-oQzToUduRnA,3430
45
- vivarium_public_health-2.1.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
46
- vivarium_public_health-2.1.0.dist-info/top_level.txt,sha256=VVInlpzCFD0UNNhjOq_j-a29odzjwUwYFTGfvqbi4dY,23
47
- vivarium_public_health-2.1.0.dist-info/RECORD,,
43
+ vivarium_public_health-2.1.2.dist-info/LICENSE.txt,sha256=mN4bNLUQNcN9njYRc_3jCZkfPySVpmM6MRps104FxA4,1548
44
+ vivarium_public_health-2.1.2.dist-info/METADATA,sha256=3LZgXExgpesqC24nJKzasGyEaGqiS9NVAmbuVUNMEAM,3430
45
+ vivarium_public_health-2.1.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
46
+ vivarium_public_health-2.1.2.dist-info/top_level.txt,sha256=VVInlpzCFD0UNNhjOq_j-a29odzjwUwYFTGfvqbi4dY,23
47
+ vivarium_public_health-2.1.2.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.2)
2
+ Generator: bdist_wheel (0.42.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5