Esempio n. 1
0
    def _get_eigensystem(self):
        if not self._is_dirty:
            return (self._all_eigenvalues,
                    self._all_left_eigenvectors,
                    self._all_right_eigenvectors)

        n_timescales = self.n_timescales
        if n_timescales is None:
            n_timescales = self.n_states_ - 1

        k = n_timescales + 1
        self._all_eigenvalues = []
        self._all_left_eigenvectors = []
        self._all_right_eigenvectors = []

        for transmat in self.all_transmats_:
            u, lv, rv = _solve_msm_eigensystem(transmat, k)
            self._all_eigenvalues.append(u)
            self._all_left_eigenvectors.append(lv)
            self._all_right_eigenvectors.append(rv)

        self._all_eigenvalues = np.array(self._all_eigenvalues)
        self._all_left_eigenvectors = np.array(self._all_left_eigenvectors)
        self._all_right_eigenvectors = np.array(self._all_right_eigenvectors)
        self._is_dirty = False

        return (self._all_eigenvalues,
                self._all_left_eigenvectors,
                self._all_right_eigenvectors)
Esempio n. 2
0
    def _get_eigensystem(self):
        if not self._is_dirty:
            return (self._eigenvalues, self._left_eigenvectors, self._right_eigenvectors)

        n_timescales = self.n_timescales
        if n_timescales is None:
            n_timescales = self.n_states_ - 1

        k = n_timescales + 1
        u, lv, rv = _solve_msm_eigensystem(self.transmat_, k)
        self._eigenvalues = u
        self._left_eigenvectors = lv
        self._right_eigenvectors = rv

        self._is_dirty = False

        return u, lv, rv