code: def collect_observations_in_state(self, observations, state_index):
          # TODO: this would work well in a subclass with data
          
          if not self.hidden_state_trajectories:
              raise RuntimeError('HMM model does not have a hidden state trajectory.')
  
          dtype = observations[0].dtype
          collected_observations = np.array([], dtype=dtype)
          for (s_t, o_t) in zip(self.hidden_state_trajectories, observations):
              indices = np.where(s_t == state_index)[0]
              collected_observations = np.append(collected_observations, o_t[indices])
  
          return collected_observations
docs: Collect a vector of all observations belonging to a specified hidden state.
  
          Parameters
          ----------
          observations : list of numpy.array
              List of observed trajectories.
          state_index : int
              The index of the hidden state for which corresponding observations are to be retrieved.
          dtype : numpy.dtype, optional, default=numpy.float64
              The numpy dtype to use to store the collected observations.
  
          Returns
          -------
          collected_observations : numpy.array with shape (nsamples,)
              The collected vector of observations belonging to the specified hidden state.
  
          Raises
          ------
          RuntimeError
              A RuntimeError is raised if the HMM model does not yet have a hidden state trajectory associated with it.