vivarium-public-health 2.0.2__py3-none-any.whl → 2.1.1__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- vivarium_public_health/_version.py +1 -1
- vivarium_public_health/disease/state.py +83 -40
- {vivarium_public_health-2.0.2.dist-info → vivarium_public_health-2.1.1.dist-info}/METADATA +1 -1
- {vivarium_public_health-2.0.2.dist-info → vivarium_public_health-2.1.1.dist-info}/RECORD +7 -7
- {vivarium_public_health-2.0.2.dist-info → vivarium_public_health-2.1.1.dist-info}/LICENSE.txt +0 -0
- {vivarium_public_health-2.0.2.dist-info → vivarium_public_health-2.1.1.dist-info}/WHEEL +0 -0
- {vivarium_public_health-2.0.2.dist-info → vivarium_public_health-2.1.1.dist-info}/top_level.txt +0 -0
@@ -1 +1 @@
|
|
1
|
-
__version__ = "2.
|
1
|
+
__version__ = "2.1.1"
|
@@ -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 =
|
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 =
|
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 =
|
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 =
|
347
|
-
|
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 =
|
361
|
-
|
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 =
|
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,26 @@ 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
|
+
return builder.lookup.build_table(
|
377
|
+
prevalence_data, key_columns=["sex"], parameter_columns=["age", "year"]
|
378
|
+
)
|
379
|
+
|
396
380
|
def load_birth_prevalence_data(self, builder: Builder) -> LookupTableData:
|
397
381
|
if "birth_prevalence" in self._get_data_functions:
|
398
382
|
return self._get_data_functions["birth_prevalence"](builder, self.state_id)
|
399
383
|
else:
|
400
384
|
return 0
|
401
385
|
|
386
|
+
def get_birth_prevalence(
|
387
|
+
self, builder: Builder, birth_prevalence_data: LookupTableData
|
388
|
+
) -> LookupTable:
|
389
|
+
return builder.lookup.build_table(
|
390
|
+
birth_prevalence_data, key_columns=["sex"], parameter_columns=["year"]
|
391
|
+
)
|
392
|
+
|
402
393
|
def load_dwell_time_data(self, builder: Builder) -> LookupTableData:
|
403
394
|
if "dwell_time" in self._get_data_functions:
|
404
395
|
dwell_time = self._get_data_functions["dwell_time"](builder, self.state_id)
|
@@ -414,6 +405,17 @@ class DiseaseState(BaseDiseaseState):
|
|
414
405
|
|
415
406
|
return dwell_time
|
416
407
|
|
408
|
+
def get_dwell_time_pipeline(
|
409
|
+
self, builder: Builder, dwell_time_data: LookupTableData
|
410
|
+
) -> Pipeline:
|
411
|
+
return builder.value.register_value_producer(
|
412
|
+
f"{self.state_id}.dwell_time",
|
413
|
+
source=builder.lookup.build_table(
|
414
|
+
dwell_time_data, key_columns=["sex"], parameter_columns=["age", "year"]
|
415
|
+
),
|
416
|
+
requires_columns=["age", "sex"],
|
417
|
+
)
|
418
|
+
|
417
419
|
def load_disability_weight_data(self, builder: Builder) -> LookupTableData:
|
418
420
|
if "disability_weight" in self._get_data_functions:
|
419
421
|
disability_weight = self._get_data_functions["disability_weight"](
|
@@ -429,6 +431,20 @@ class DiseaseState(BaseDiseaseState):
|
|
429
431
|
|
430
432
|
return disability_weight
|
431
433
|
|
434
|
+
def get_base_disability_weight(
|
435
|
+
self, builder: Builder, disability_weight_data: LookupTableData
|
436
|
+
) -> LookupTable:
|
437
|
+
return builder.lookup.build_table(
|
438
|
+
disability_weight_data, key_columns=["sex"], parameter_columns=["age", "year"]
|
439
|
+
)
|
440
|
+
|
441
|
+
def get_disability_weight_pipeline(self, builder: Builder) -> Pipeline:
|
442
|
+
return builder.value.register_value_producer(
|
443
|
+
f"{self.state_id}.disability_weight",
|
444
|
+
source=self.compute_disability_weight,
|
445
|
+
requires_columns=["age", "sex", "alive", self.model],
|
446
|
+
)
|
447
|
+
|
432
448
|
def load_excess_mortality_rate_data(self, builder: Builder) -> LookupTableData:
|
433
449
|
if "excess_mortality_rate" in self._get_data_functions:
|
434
450
|
return self._get_data_functions["excess_mortality_rate"](builder, self.state_id)
|
@@ -439,6 +455,33 @@ class DiseaseState(BaseDiseaseState):
|
|
439
455
|
f"{self.cause_type}.{self.state_id}.excess_mortality_rate"
|
440
456
|
)
|
441
457
|
|
458
|
+
def get_base_excess_mortality_rate(
|
459
|
+
self, builder: Builder, excess_mortality_data: LookupTableData
|
460
|
+
) -> LookupTable:
|
461
|
+
return builder.lookup.build_table(
|
462
|
+
excess_mortality_data, key_columns=["sex"], parameter_columns=["age", "year"]
|
463
|
+
)
|
464
|
+
|
465
|
+
def get_excess_mortality_rate_pipeline(self, builder: Builder) -> Pipeline:
|
466
|
+
return builder.value.register_rate_producer(
|
467
|
+
self.excess_mortality_rate_pipeline_name,
|
468
|
+
source=self.compute_excess_mortality_rate,
|
469
|
+
requires_columns=["age", "sex", "alive", self.model],
|
470
|
+
requires_values=[self.excess_mortality_rate_paf_pipeline_name],
|
471
|
+
)
|
472
|
+
|
473
|
+
def get_joint_paf(self, builder: Builder) -> Pipeline:
|
474
|
+
paf = builder.lookup.build_table(0)
|
475
|
+
return builder.value.register_value_producer(
|
476
|
+
self.excess_mortality_rate_paf_pipeline_name,
|
477
|
+
source=lambda idx: [paf(idx)],
|
478
|
+
preferred_combiner=list_combiner,
|
479
|
+
preferred_post_processor=union_post_processor,
|
480
|
+
)
|
481
|
+
|
482
|
+
def get_randomness_prevalence(self, builder: Builder) -> RandomnessStream:
|
483
|
+
return builder.randomness.get_stream(f"{self.state_id}_prevalent_cases")
|
484
|
+
|
442
485
|
##################
|
443
486
|
# Public methods #
|
444
487
|
##################
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: vivarium-public-health
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.1.1
|
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=
|
3
|
+
vivarium_public_health/_version.py,sha256=zPJIgPGcoSNiD0qme18OnYJYE3A9VVytlhO-V5DaAW0,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=
|
9
|
+
vivarium_public_health/disease/state.py,sha256=V_X3DPioZJ3SlR8Rp4o8fkdyeBPmEDDjLYOBq6JOcqA,22778
|
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
|
@@ -40,8 +40,8 @@ vivarium_public_health/treatment/__init__.py,sha256=wONElu9aJbBYwpYIovYPYaN_GYfV
|
|
40
40
|
vivarium_public_health/treatment/magic_wand.py,sha256=iPKFN3VjfiMy_XvN94UqM-FUrGuI0ULwmOdAGdOepYQ,1979
|
41
41
|
vivarium_public_health/treatment/scale_up.py,sha256=zTPMfKG38dGBj14QpBeLlmUixx1y_XIMElmTpkklydA,6714
|
42
42
|
vivarium_public_health/treatment/therapeutic_inertia.py,sha256=VwZ7t90zzfGoBusduIvcE4lDe5zTvzmHiUNB3u2I52Y,2339
|
43
|
-
vivarium_public_health-2.
|
44
|
-
vivarium_public_health-2.
|
45
|
-
vivarium_public_health-2.
|
46
|
-
vivarium_public_health-2.
|
47
|
-
vivarium_public_health-2.
|
43
|
+
vivarium_public_health-2.1.1.dist-info/LICENSE.txt,sha256=mN4bNLUQNcN9njYRc_3jCZkfPySVpmM6MRps104FxA4,1548
|
44
|
+
vivarium_public_health-2.1.1.dist-info/METADATA,sha256=QrLx-cPWz8E_pgj_6ZG3qO0y5KiywQsqVKSBdviNZ3A,3430
|
45
|
+
vivarium_public_health-2.1.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
46
|
+
vivarium_public_health-2.1.1.dist-info/top_level.txt,sha256=VVInlpzCFD0UNNhjOq_j-a29odzjwUwYFTGfvqbi4dY,23
|
47
|
+
vivarium_public_health-2.1.1.dist-info/RECORD,,
|
{vivarium_public_health-2.0.2.dist-info → vivarium_public_health-2.1.1.dist-info}/LICENSE.txt
RENAMED
File without changes
|
File without changes
|
{vivarium_public_health-2.0.2.dist-info → vivarium_public_health-2.1.1.dist-info}/top_level.txt
RENAMED
File without changes
|