Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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)
Пример #4
0
 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")
Пример #5
0
 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
Пример #6
0
 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
Пример #7
0
 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
Пример #8
0
    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
Пример #9
0
    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]
Пример #10
0
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