Exemplo n.º 1
0
def load_pem_disability_weight(key: str, location: str) -> pd.DataFrame:
    try:
        pem_sequelae = {
            data_keys.PEM.MAM_DISABILITY_WEIGHT: [sequelae.moderate_wasting_with_edema,
                                                  sequelae.moderate_wasting_without_edema],
            data_keys.PEM.SAM_DISABILITY_WEIGHT: [sequelae.severe_wasting_with_edema,
                                                  sequelae.severe_wasting_without_edema],
        }[key]
    except KeyError:
        raise ValueError(f'Unrecognized key {key}')

    prevalence_disability_weight = []
    state_prevalence = []
    for s in pem_sequelae:
        sequela_prevalence = interface.get_measure(s, 'prevalence', location)
        sequela_disability_weight = interface.get_measure(s, 'disability_weight', location)

        prevalence_disability_weight += [sequela_prevalence * sequela_disability_weight]
        state_prevalence += [sequela_prevalence]

    gbd_2019_disability_weight = (
        (sum(prevalence_disability_weight) / sum(state_prevalence))
        .fillna(0)
        .droplevel('location')
    )
    disability_weight = utilities.reshape_gbd_2019_data_as_gbd_2020_data(gbd_2019_disability_weight)
    return disability_weight
Exemplo n.º 2
0
    def __init__(self, risk, location):
        # Local import to avoid data dependencies
        from vivarium_inputs.interface import get_measure

        self.mean = get_measure(risk, 'exposure',
                                location).droplevel('parameter')
        self.sd = get_measure(risk, 'exposure_standard_deviation', location)
        self.weights = get_measure(risk, 'exposure_distribution_weights',
                                   location)
def _get_ldl_exposure_data(
    location: int
) -> Tuple[List[Tuple], pd.DataFrame, pd.DataFrame, List[Dict[str, float]]]:
    # Local import to avoid data dependencies
    from vivarium_inputs import interface
    means = (interface.get_measure(
        risk_factors.high_ldl_cholesterol, 'exposure',
        location).reset_index().drop(['parameter'], axis=1).set_index([
            'location', 'sex', 'age_start', 'age_end', 'year_start', 'year_end'
        ]))

    sds = interface.get_measure(risk_factors.high_ldl_cholesterol,
                                'exposure_standard_deviation', location)
    stratifications = [row[0] for row in list(means.draw_0.iteritems())]
    weights = interface.get_measure(risk_factors.high_ldl_cholesterol,
                                    'exposure_distribution_weights', location)
    return stratifications, means, sds, weights
Exemplo n.º 4
0
 def __init__(self, risk, location):
     # Local import to avoid data dependencies
     from vivarium_inputs.interface import get_measure
     rr = get_measure(risk, 'relative_risk',
                      location).droplevel(['affected_measure', 'parameter'])
     self.base = (rr.reorder_levels(['affected_entity'] +
                                    INDEX_COLS).loc[AFFECTED_CAUSES])
     self.tmrel = np.mean([risk.tmred.min, risk.tmred.max])
     self.scale = float(risk.relative_risk_scalar)
Exemplo n.º 5
0
def load_diabetes_mellitus_disability_weight(key: str, location: str) -> pd.DataFrame:
    moderate_sequelae = [
        sequelae.uncomplicated_diabetes_mellitus_type_1,
        sequelae.uncomplicated_diabetes_mellitus_type_2,
    ]

    if key == project_globals.DIABETES_MELLITUS.MODERATE_DIABETES_PREVALENCE:
        seq = moderate_sequelae
    else:
        seq = [s for sc in causes.diabetes_mellitus.sub_causes for s in sc.sequelae if s not in moderate_sequelae]

    prevalence_disability_weights = []
    for s in seq:
        prevalence = interface.get_measure(s, 'prevalence', location)
        disability_weight = interface.get_measure(s, 'disability_weight', location)
        prevalence_disability_weights.append(prevalence * disability_weight)

    diabetes_prevalence = interface.get_measure(causes.diabetes_mellitus, 'prevalence', location)
    diabetes_disability_weight = (sum(prevalence_disability_weights) / diabetes_prevalence).fillna(0)
    return diabetes_disability_weight
Exemplo n.º 6
0
def load_ihd_disability_weight(key: str, location: str) -> pd.DataFrame:
    acute_sequelae = [
        sequelae.acute_myocardial_infarction_first_2_days,
        sequelae.acute_myocardial_infarction_3_to_28_days,
    ]

    if key == project_globals.IHD.ACUTE_MI_PREVALENCE:
        seq = acute_sequelae
    else:
        seq = [s for s in causes.ischemic_heart_disease.sequelae if s not in acute_sequelae]

    prevalence_disability_weights = []
    for s in seq:
        prevalence = interface.get_measure(s, 'prevalence', location)
        disability_weight = interface.get_measure(s, 'disability_weight', location)
        prevalence_disability_weights.append(prevalence * disability_weight)

    ihd_prevalence = interface.get_measure(causes.ischemic_heart_disease, 'prevalence', location)
    ihd_disability_weight = (sum(prevalence_disability_weights) / ihd_prevalence).fillna(0)
    return ihd_disability_weight
Exemplo n.º 7
0
def load_iron_responsive_proportion(key: str, location: str):
    sequela_map = {
        project_globals.IRON_DEFICIENCY_MILD_ANEMIA_IRON_RESPONSIVE_PROPORTION:
            project_globals.ANEMIA_SEQUELAE_ID_MAP['mild'],
        project_globals.IRON_DEFICIENCY_MODERATE_ANEMIA_IRON_RESPONSIVE_PROPORTION:
            project_globals.ANEMIA_SEQUELAE_ID_MAP['moderate'],
        project_globals.IRON_DEFICIENCY_SEVERE_ANEMIA_IRON_RESPONSIVE_PROPORTION:
            project_globals.ANEMIA_SEQUELAE_ID_MAP['severe'],
    }
    responsive_ids, non_responsive_ids = sequela_map[key]

    responsive_prevalence = []
    for s_id in responsive_ids:
        sequela = [s for s in sequelae if s.gbd_id == s_id]
        if sequela:
            sequela = sequela.pop()
        else:
            continue
        try:
            prevalence = interface.get_measure(sequela, 'prevalence', location)
        except (extract.DataDoesNotExistError, extract.DataAbnormalError):
            continue
        responsive_prevalence.append(prevalence)
    responsive_prevalence = sum(responsive_prevalence)

    non_responsive_prevalence = []
    for s_id in non_responsive_ids:
        sequela = [s for s in sequelae if s.gbd_id == s_id]
        if sequela:
            sequela = sequela.pop()
        else:
            continue
        try:
            prevalence = interface.get_measure(sequela, 'prevalence', location)
        except (extract.DataDoesNotExistError, extract.DataAbnormalError):
            continue
        non_responsive_prevalence.append(prevalence)
    non_responsive_prevalence = sum(non_responsive_prevalence)

    return (responsive_prevalence / (responsive_prevalence + non_responsive_prevalence)).fillna(0)
Exemplo n.º 8
0
def load_diabetes_mellitus_prevalence(key: str, location: str) -> pd.DataFrame:
    moderate_sequelae = [
        sequelae.uncomplicated_diabetes_mellitus_type_1,
        sequelae.uncomplicated_diabetes_mellitus_type_2,
    ]

    if key == project_globals.DIABETES_MELLITUS.MODERATE_DIABETES_PREVALENCE:
        seq = moderate_sequelae
    else:
        seq = [s for sc in causes.diabetes_mellitus.sub_causes for s in sc.sequelae if s not in moderate_sequelae]

    prevalence = sum(interface.get_measure(s, 'prevalence', location) for s in seq)
    return prevalence
Exemplo n.º 9
0
def load_ihd_prevalence(key: str, location: str) -> pd.DataFrame:
    acute_sequelae = [
        sequelae.acute_myocardial_infarction_first_2_days,
        sequelae.acute_myocardial_infarction_3_to_28_days,
    ]

    if key == project_globals.IHD.ACUTE_MI_PREVALENCE:
        seq = acute_sequelae
    else:
        seq = [s for s in causes.ischemic_heart_disease.sequelae if s not in acute_sequelae]

    prevalence = sum(interface.get_measure(s, 'prevalence', location) for s in seq)
    return prevalence
Exemplo n.º 10
0
def load_sids_csmr(key: str, location: str) -> pd.DataFrame:
    if key == data_keys.AFFECTED_UNMODELED_CAUSES.SIDS_CSMR:
        key = EntityKey(key)
        entity: Cause = utilities.get_entity(key)

        # get around the validation rejecting yll only causes
        entity.restrictions.yll_only = False
        entity.restrictions.yld_age_group_id_start = min(metadata.AGE_GROUP.GBD_2019_SIDS)
        entity.restrictions.yld_age_group_id_end = max(metadata.AGE_GROUP.GBD_2019_SIDS)

        data = interface.get_measure(entity, key.measure, location).droplevel('location')
        return data
    else:
        raise ValueError(f'Unrecognized key {key}')
Exemplo n.º 11
0
def load_ischemic_stroke_disability_weight(key: str, location: str) -> pd.DataFrame:
    acute_sequelae = [
        sequelae.acute_ischemic_stroke_severity_level_1,
        sequelae.acute_ischemic_stroke_severity_level_2,
        sequelae.acute_ischemic_stroke_severity_level_3,
        sequelae.acute_ischemic_stroke_severity_level_4,
        sequelae.acute_ischemic_stroke_severity_level_5,
    ]

    if key == project_globals.IHD.ACUTE_MI_PREVALENCE:
        seq = acute_sequelae
    else:
        seq = [s for s in causes.ischemic_heart_disease.sequelae if s not in acute_sequelae]

    prevalence_disability_weights = []
    for s in seq:
        prevalence = interface.get_measure(s, 'prevalence', location)
        disability_weight = interface.get_measure(s, 'disability_weight', location)
        prevalence_disability_weights.append(prevalence * disability_weight)

    ischemic_stroke_prevalence = interface.get_measure(causes.ischemic_stroke, 'prevalence', location)
    ischemic_stroke_disability_weight = (sum(prevalence_disability_weights) / ischemic_stroke_prevalence).fillna(0)
    return ischemic_stroke_disability_weight
Exemplo n.º 12
0
def load_no_anemia_iron_responsive_proportion(key: str, location: str):
    responsive_ids, non_responsive_ids = [], []
    for responsive, non_responsive in project_globals.ANEMIA_SEQUELAE_ID_MAP.values():
        responsive_ids.extend(responsive)
        non_responsive_ids.extend(non_responsive)

    responsive_sequelae = [s for s in sequelae if s.gbd_id in responsive_ids]
    non_responsive_sequelae = [s for s in sequelae if s.gbd_id in non_responsive_ids]

    all_prevalence = []
    iron_responsive_prevalence = []
    for sequela in responsive_sequelae:
        try:
            prevalence = interface.get_measure(sequela, 'prevalence', location)
        except (extract.DataDoesNotExistError, extract.DataAbnormalError):
            continue
        all_prevalence.append(prevalence)
        iron_responsive_prevalence.append(prevalence)
    for sequela in non_responsive_sequelae:
        try:
            prevalence = interface.get_measure(sequela, 'prevalence', location)
        except (extract.DataDoesNotExistError, extract.DataAbnormalError):
            continue
        all_prevalence.append(prevalence)
    all_prevalence = sum(all_prevalence)
    iron_responsive_prevalence = sum(iron_responsive_prevalence)
    non_responsive_prevalence = all_prevalence - iron_responsive_prevalence

    other_anemias_prevalence = interface.get_measure(causes.hemoglobinopathies_and_hemolytic_anemias,
                                                     'prevalence', location)
    hiv_prevalence = interface.get_measure(causes.hiv_aids, 'prevalence', location)
    malaria_prevalence = interface.get_measure(causes.malaria, 'prevalence', location)
    reverse_causal_prevalence = other_anemias_prevalence + hiv_prevalence + malaria_prevalence

    proportion = (1 - all_prevalence
                  - (reverse_causal_prevalence - non_responsive_prevalence)/(1 - all_prevalence)).fillna(0)
    return proportion
Exemplo n.º 13
0
def load_ischemic_stroke_prevalence(key: str, location: str) -> pd.DataFrame:
    acute_sequelae = [
        sequelae.acute_ischemic_stroke_severity_level_1,
        sequelae.acute_ischemic_stroke_severity_level_2,
        sequelae.acute_ischemic_stroke_severity_level_3,
        sequelae.acute_ischemic_stroke_severity_level_4,
        sequelae.acute_ischemic_stroke_severity_level_5,
    ]

    if key == project_globals.ISCHEMIC_STROKE.ACUTE_STROKE_PREVALENCE:
        seq = acute_sequelae
    else:
        seq = [s for s in causes.ischemic_stroke.sequelae if s not in acute_sequelae]

    prevalence = sum(interface.get_measure(s, 'prevalence', location) for s in seq)
    return prevalence
def load_standard_data(key: str, location: str) -> pd.DataFrame:
    key = EntityKey(key)
    entity = get_entity(key)
    return interface.get_measure(entity, key.measure,
                                 location).droplevel('location')
Exemplo n.º 15
0
def load_ikf_disability_weight(key: str, location: str) -> pd.DataFrame:
    category_sequelae_map = {
        project_globals.IKF.CAT_4_DISABILITY_WEIGHT: [
            sequelae.albuminuria_with_preserved_gfr_due_to_glomerulonephritis,
            sequelae.albuminuria_with_preserved_gfr_due_to_hypertension,
            sequelae.albuminuria_with_preserved_gfr_due_to_other_and_unspecified_causes,
            sequelae.albuminuria_with_preserved_gfr_due_to_type_1_diabetes_mellitus,
            sequelae.albuminuria_with_preserved_gfr_due_to_type_2_diabetes_mellitus,
        ],
        project_globals.IKF.CAT_3_DISABILITY_WEIGHT: [
            sequelae.stage_iii_chronic_kidney_disease_and_mild_anemia_due_to_hypertension,
            sequelae.stage_iii_chronic_kidney_disease_and_moderate_anemia_due_to_hypertension,
            sequelae.stage_iii_chronic_kidney_disease_and_severe_anemia_due_to_hypertension,
            sequelae.stage_iii_chronic_kidney_disease_without_anemia_due_to_hypertension,
            sequelae.stage_iii_chronic_kidney_disease_and_mild_anemia_due_to_glomerulonephritis,
            sequelae.stage_iii_chronic_kidney_disease_and_moderate_anemia_due_to_glomerulonephritis,
            sequelae.stage_iii_chronic_kidney_disease_and_severe_anemia_due_to_glomerulonephritis,
            sequelae.stage_iii_chronic_kidney_disease_without_anemia_due_to_glomerulonephritis,
            sequelae.stage_iii_chronic_kidney_disease_and_mild_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iii_chronic_kidney_disease_and_moderate_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iii_chronic_kidney_disease_and_severe_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iii_chronic_kidney_disease_without_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iii_chronic_kidney_disease_and_severe_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iii_chronic_kidney_disease_and_severe_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_iii_chronic_kidney_disease_and_moderate_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iii_chronic_kidney_disease_and_moderate_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_iii_chronic_kidney_disease_and_mild_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iii_chronic_kidney_disease_and_mild_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_iii_chronic_kidney_disease_without_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iii_chronic_kidney_disease_without_anemia_due_to_type_2_diabetes_mellitus,
        ],
        project_globals.IKF.CAT_2_DISABILITY_WEIGHT: [
            sequelae.stage_iv_chronic_kidney_disease_untreated_without_anemia_due_to_hypertension,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_mild_anemia_due_to_hypertension,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_hypertension,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_severe_anemia_due_to_hypertension,
            sequelae.stage_iv_chronic_kidney_disease_untreated_without_anemia_due_to_glomerulonephritis,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_mild_anemia_due_to_glomerulonephritis,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_glomerulonephritis,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_severe_anemia_due_to_glomerulonephritis,
            sequelae.stage_iv_chronic_kidney_disease_untreated_without_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_mild_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_severe_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_severe_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_severe_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_mild_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iv_chronic_kidney_disease_untreated_and_mild_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_iv_chronic_kidney_disease_untreated_without_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_iv_chronic_kidney_disease_untreated_without_anemia_due_to_type_2_diabetes_mellitus,
        ],
        project_globals.IKF.CAT_1_DISABILITY_WEIGHT: [
            sequelae.end_stage_renal_disease_after_transplant_due_to_hypertension,
            sequelae.end_stage_renal_disease_on_dialysis_due_to_hypertension,
            sequelae.end_stage_renal_disease_after_transplant_due_to_glomerulonephritis,
            sequelae.end_stage_renal_disease_on_dialysis_due_to_glomerulonephritis,
            sequelae.end_stage_renal_disease_after_transplant_due_to_other_and_unspecified_causes,
            sequelae.end_stage_renal_disease_on_dialysis_due_to_other_and_unspecified_causes,
            sequelae.stage_v_chronic_kidney_disease_untreated_without_anemia_due_to_hypertension,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_mild_anemia_due_to_hypertension,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_hypertension,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_severe_anemia_due_to_hypertension,
            sequelae.stage_v_chronic_kidney_disease_untreated_without_anemia_due_to_glomerulonephritis,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_mild_anemia_due_to_glomerulonephritis,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_glomerulonephritis,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_severe_anemia_due_to_glomerulonephritis,
            sequelae.stage_v_chronic_kidney_disease_untreated_without_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_mild_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_other_and_unspecified_causes,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_severe_anemia_due_to_other_and_unspecified_causes,
            sequelae.end_stage_renal_disease_after_transplant_due_to_type_1_diabetes_mellitus,
            sequelae.end_stage_renal_disease_after_transplant_due_to_type_2_diabetes_mellitus,
            sequelae.end_stage_renal_disease_on_dialysis_due_to_type_1_diabetes_mellitus,
            sequelae.end_stage_renal_disease_on_dialysis_due_to_type_2_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_severe_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_severe_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_moderate_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_mild_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_and_mild_anemia_due_to_type_2_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_without_anemia_due_to_type_1_diabetes_mellitus,
            sequelae.stage_v_chronic_kidney_disease_untreated_without_anemia_due_to_type_2_diabetes_mellitus,
        ]
    }

    sequelae_for_category = category_sequelae_map[key]

    prevalence_disability_weights = []
    category_prevalences = []
    for sequela in sequelae_for_category:
        prevalence = interface.get_measure(sequela, 'prevalence', location)
        category_prevalences.append(prevalence)

        disability_weight = interface.get_measure(sequela, 'disability_weight', location)
        prevalence_disability_weights.append(prevalence * disability_weight)

    ikf_category_disability_weight = (sum(prevalence_disability_weights) / sum(category_prevalences)).fillna(0)
    return ikf_category_disability_weight
Exemplo n.º 16
0
def load_ckd_standard_data(key: str, location: str) -> pd.DataFrame:
    key_mapping = {
        project_globals.IKF.EMR: 'excess_mortality_rate',
        project_globals.IKF.CSMR: 'cause_specific_mortality_rate'
    }
    return interface.get_measure(causes.chronic_kidney_disease, key_mapping[key], location)
Exemplo n.º 17
0
def test_get_measure_covariatelike(entity, measure, location):
    df = get_measure(entity, measure, utility_data.get_location_id(location))
Exemplo n.º 18
0
def fail_expected(entity_name, measure_name, location):
    with pytest.raises(Exception):
        df = get_measure(entity_name, measure_name, location)
Exemplo n.º 19
0
def success_expected(entity_name, measure_name, location):
    df = get_measure(entity_name, measure_name, location)
    return df