def reindex()

in src/rime/util/score_array.py [0:0]


    def reindex(self, index, axis=0, fill_value=float("nan"), old_index=None):
        """ reindex with new hidden dim to express fill_value(0) as act(-inf * 1) """
        if axis == 1:
            return self.T.reindex(index, fill_value=fill_value).T

        assert old_index is None or np.all(self.index == old_index), \
                f"old index must be compatible {self.index} vs {old_index}"

        ind_logits = np.vstack([self.ind_logits, self.ind_default])
        ind_logits = np.hstack([ind_logits, np.zeros_like(ind_logits[:, :1])])
        ind_default = np.hstack([self.ind_default, np.zeros_like(self.ind_default[:1])])

        with warnings.catch_warnings():
            warnings.filterwarnings("ignore", "divide by zero encountered in log")

            if self.act in ['exp', 'softplus']:
                ind_logits[-1, -1] = np.log(fill_value)
            elif self.act == 'sigmoid':
                ind_logits[-1, -1] = np.log(fill_value) - np.log(1 - fill_value)
            elif self.act == '_nnmf':
                ind_logits[-1, -1] = fill_value
            else:
                raise NotImplementedError

        col_logits = np.hstack([self.col_logits, np.ones_like(self.col_logits[:, :1])])
        col_default = np.hstack([self.col_default, np.ones_like(self.col_default[:1])])

        new_ind = pd.Series(
            np.arange(len(self)), index=self.index
        ).reindex(index, fill_value=-1).values

        return self.__class__(
            ind_logits[new_ind], col_logits, index, self.columns, self.act,
            ind_default, col_default)