def check_table_one()

in causalml/match.py [0:0]


    def check_table_one(self, tableone, matched, score_cols, pihat_threshold, caliper):
        # check if better than past runs
        smd_values = np.abs(tableone[tableone.index != "n"]["SMD"].astype(float))
        num_cols_over_smd = (smd_values >= self.max_smd).sum()
        self.cols_to_fix = (
            smd_values[smd_values >= self.max_smd]
            .sort_values(ascending=False)
            .index.values
        )
        if self.user_col is None:
            num_users_per_group = (
                matched.reset_index().groupby(self.treatment_col)["index"].count().min()
            )
        else:
            num_users_per_group = (
                matched.groupby(self.treatment_col)[self.user_col].count().min()
            )
        deviations = [
            np.abs(
                self.original_stats[col]
                / matched[matched[self.treatment_col] == 1][col].mean()
                - 1
            )
            for col in self.dev_cols_transformations.keys()
        ]

        score = num_cols_over_smd
        score += len(
            [col for col in self.smd_cols if smd_values.loc[col] >= self.max_smd]
        )
        score += np.sum([dev * 10 * self.dev_factor for dev in deviations])

        # check if can be considered as best score
        if score < self.best_score and num_users_per_group > self.min_users_per_group:
            self.best_score = score
            self.best_params = {
                "score_cols": score_cols.copy(),
                "pihat": pihat_threshold,
                "caliper": caliper,
            }
            self.best_matched = matched.copy()
        if self.verbose:
            logger.info(
                "\tScore: {:.03f} (Best Score: {:.03f})\n".format(
                    score, self.best_score
                )
            )

        # check if passes all criteria
        self.pass_all = (
            (num_users_per_group > self.min_users_per_group)
            and (num_cols_over_smd == 0)
            and all(dev < self.max_deviation for dev in deviations)
        )