code: def timescales_(self):
          
          u, lv, rv = self._get_eigensystem()
  
          # make sure to leave off equilibrium distribution
          with np.errstate(invalid='ignore', divide='ignore'):
              timescales = - self.lag_time / np.log(u[1:])
          return timescales
docs: Implied relaxation timescales of the model.
  
          The relaxation of any initial distribution towards equilibrium is
          given, according to this model, by a sum of terms -- each corresponding
          to the relaxation along a specific direction (eigenvector) in state
          space -- which decay exponentially in time. See equation 19. from [1].
  
          Returns
          -------
          timescales : array-like, shape = (n_timescales,)
              The longest implied relaxation timescales of the model, expressed
              in units of time-step between indices in the source data supplied
              to ``fit()``.
  
          References
          ----------
          .. [1] Prinz, Jan-Hendrik, et al. "Markov models of molecular kinetics:
          Generation and validation." J. Chem. Phys. 134.17 (2011): 174105.