code: def score(self, sequences, y=None):
          
          # eigenvectors from the model we're scoring, `self`
          V = self.right_eigenvectors_
  
          m2 = self.__class__(**self.get_params())
          m2.fit(sequences)
  
          if self.mapping_ != m2.mapping_:
              V = self._map_eigenvectors(V, m2.mapping_)
  
          S = np.diag(m2.populations_)
          C = S.dot(m2.transmat_)
  
          try:
              trace = np.trace(V.T.dot(C.dot(V)).dot(np.linalg.inv(V.T.dot(S.dot(V)))))
          except np.linalg.LinAlgError:
              trace = np.nan
  
          return trace
docs: Score the model on new data using the generalized matrix Rayleigh
          quotient
  
          Parameters
          ----------
          sequences : list of array-like
              List of sequences, or a single sequence. Each sequence should be a
              1D iterable of state labels. Labels can be integers, strings, or
              other orderable objects.
  
          Returns
          -------
          gmrq : float
              Generalized matrix Rayleigh quotient. This number indicates how
              well the top ``n_timescales+1`` eigenvectors of this model perform
              as slowly decorrelating collective variables for the new data in
              ``sequences``.
  
          References
          ----------
          .. [1] McGibbon, R. T. and V. S. Pande, "Variational cross-validation
             of slow dynamical modes in molecular kinetics" J. Chem. Phys. 142,
             124105 (2015)