code: def score(self, X, lengths=None):
          
          check_is_fitted(self, "startprob_")
          self._check()
  
          X = check_array(X)
          # XXX we can unroll forward pass for speed and memory efficiency.
          logprob = 0
          for i, j in iter_from_X_lengths(X, lengths):
              framelogprob = self._compute_log_likelihood(X[i:j])
              logprobij, _fwdlattice = self._do_forward_pass(framelogprob)
              logprob += logprobij
          return logprob
docs: Compute the log probability under the model.
  
          Parameters
          ----------
          X : array-like, shape (n_samples, n_features)
              Feature matrix of individual samples.
  
          lengths : array-like of integers, shape (n_sequences, ), optional
              Lengths of the individual sequences in ``X``. The sum of
              these should be ``n_samples``.
  
          Returns
          -------
          logprob : float
              Log likelihood of ``X``.
  
          See Also
          --------
          score_samples : Compute the log probability under the model and
              posteriors.
          decode : Find most likely state sequence corresponding to ``X``.