def aggregate_injuries(self, df): ct = dbtrees.causetree( cause_set_version_id=self.como_version.cause_set_version_id) df = agg_hierarchy(tree=ct, df=df, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") df = df[self.index_cols + self.draw_cols] # aggregate ncodes df = df.merge(self.como_version.ncode_hierarchy) df_agg = df.copy() df_agg = df_agg.groupby([ "age_group_id", "location_id", "year_id", "sex_id", "measure_id", "cause_id", "parent_id" ])[self.draw_cols].sum().reset_index() df_agg = df_agg.rename(columns={"parent_id": "rei_id"}) # set attribute df = df.append(df_agg) df = df[self.index_cols + self.draw_cols] for col in self.index_cols: df[col] = df[col].astype(int) return df
def compute_ylds(self): df = self._NE_ylds df = df.append(self.injury_inputs.short_term_en_ylds) # aggregate cases cause_tree = self.get_cause_tree() df = agg_hierarchy(tree=cause_tree, df=df, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") df = df[self.index_cols + self.draw_cols] # aggregate ncodes df = df.merge(self.como_version.ncode_hierarchy) df_agg = df.copy() df_agg = df.groupby([ "age_group_id", "location_id", "year_id", "sex_id", "measure_id", "cause_id", "parent_id" ])[self.draw_cols].sum().reset_index() df_agg = df_agg.rename(columns={"parent_id": "rei_id"}) # set attribute df = df.append(df_agg) df = df[self.index_cols + self.draw_cols] self.ylds = df
def aggregate_cause(self, df, cause_set_version_id): ct = dbtrees.causetree(cause_set_version_id=cause_set_version_id) df = common.agg_hierarchy(tree=ct, df=df, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") df = df[self.index_cols + self.draw_cols] for col in self.index_cols: df[col] = df[col].astype(int) all_done = df.cause_id.unique().tolist() cflat = view_cause_hierarchy_history( self.como_version.reporting_cause_set_version_id) cflat = cflat[[ 'cause_id', 'path_to_top_parent', 'parent_id', 'cause_name', 'acause', 'cause_outline' ]] roots = cflat[cflat.cause_id == cflat.parent_id].parent_id cts = [] for root in roots: thisflat = cflat[cflat.path_to_top_parent.str.startswith( str(root))] ct = tree.parent_child_to_tree( thisflat, 'parent_id', 'cause_id', info_cols=['cause_name', 'acause', 'cause_outline']) cts.append(ct) reporting_dfs = [] for ct in cts: rep_only = common.agg_hierarchy(tree=ct, df=df.copy(deep=True), index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") reporting_dfs.append(rep_only) reporting_df = pd.concat(reporting_dfs) reporting_df = reporting_df[~reporting_df["cause_id"].isin(all_done)] reporting_df = reporting_df[self.index_cols + self.draw_cols] for col in self.index_cols: reporting_df[col] = reporting_df[col].astype(int) return pd.concat([df, reporting_df]).reset_index(drop=True)
def aggregate_causes(self): ct = dbtrees.causetree( cause_set_version_id=self.como_version.cause_set_version_id) ct = deepcopy(ct) self.imp_df = common.agg_hierarchy(tree=ct, df=self.imp_df, index_cols=self.index_cols + ["cause_id", "rei_id"], data_cols=self.draw_cols, dimension="cause_id")
def compute_incidence(self): cause_tree = self.get_cause_tree() inci = self._most_detailed_incidence.append( self._short_term_injury_incidence) inci = common.agg_hierarchy(tree=cause_tree, df=inci, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") self.incidence = inci
def aggregate_cause(self, df, cause_set_version_id): ct = dbtrees.causetree(cause_set_version_id=cause_set_version_id) df = common.agg_hierarchy(tree=ct, df=df, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") df = df[self.index_cols + self.draw_cols] for col in self.index_cols: df[col] = df[col].astype(int) return df
def aggregate_sequela(self, df): seq_tree = dbtrees.sequelatree( sequela_set_version_id=self.como_version.sequela_set_version_id) df = df[self.index_cols + self.draw_cols] df = df.groupby(self.index_cols).sum().reset_index() df = agg_hierarchy( tree=seq_tree, df=df, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="sequela_id") df = df[self.index_cols + self.draw_cols] for col in self.index_cols: df[col] = df[col].astype(int) return df
def compute_ylds(self): df = self._most_detailed_NE_injuries df = df.append(self._short_term_injury_ylds) df = df.groupby(self.index_cols).sum().reset_index() df = df.append(self._get_simulated_ylds()) df = df.groupby(self.index_cols).sum().reset_index() df = df.append(self._other_drug(df)) df = df.append(self._get_residuals(df)) # aggregate cause_tree = self.get_cause_tree() df = common.agg_hierarchy(tree=cause_tree, df=df, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") df = df[self.index_cols + self.draw_cols] self.ylds = df
def _ecode_prevalence(self): if self.injury_inputs is None: raise AttributeError( "can't access _ecode_prevalence without setting injury_inputs") # get the injuries hierarchy cause_tree = self.get_cause_tree() for node in cause_tree.level_n_descendants(1): if node.id != 687: cause_tree.prune(node.id) # aggregate from most detailed df = self.injury_inputs.ecode_prevalence.copy() df = common.agg_hierarchy(tree=cause_tree, df=df, index_cols=self.index_cols, data_cols=self.draw_cols, dimension="cause_id") df = df[df.cause_id != 294] # drop all cause from injuries return df[self.index_cols + self.draw_cols]
def compute_aggregates(df, dim, cv): # grab the cause tree cause_tree = get_cause_tree(cv) # aggregate ecodes df = agg_hierarchy(tree=cause_tree, df=df, index_cols=dim.index_names, data_cols=dim.data_list(), dimension="cause_id") df = df[dim.index_names + dim.data_list()] # aggregate ncodes df = df.merge(cv.ncode_hierarchy) df_agg = df.copy() df_agg = df.groupby([ "age_group_id", "location_id", "year_id", "sex_id", "cause_id", "parent_id", "measure_id" ])[dim.data_list()].sum().reset_index() df_agg = df_agg.rename(columns={"parent_id": "rei_id"}) # set attribute df = df.append(df_agg) df = df[dim.index_names + dim.data_list()] return df