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
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
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)
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
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
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)
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
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
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}')
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
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
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')
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
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)
def test_get_measure_covariatelike(entity, measure, location): df = get_measure(entity, measure, utility_data.get_location_id(location))
def fail_expected(entity_name, measure_name, location): with pytest.raises(Exception): df = get_measure(entity_name, measure_name, location)
def success_expected(entity_name, measure_name, location): df = get_measure(entity_name, measure_name, location) return df