code: def generate_synthetic_observation_trajectory(self, length, initial_Pi=None):
          
          # First, generate synthetic state trajetory.
          s_t = self.generate_synthetic_state_trajectory(length, initial_Pi=initial_Pi)
  
          # Next, generate observations from these states.
          o_t = self.output_model.generate_observation_trajectory(s_t)
  
          return [o_t, s_t]
docs: Generate a synthetic realization of observables.
  
          Parameters
          ----------
          length : int
              Length of synthetic state trajectory to be generated.
          initial_Pi : np.array of shape (nstates,), optional, default=None
              The initial probability distribution, if samples are not to be taken from equilibrium.
  
          Returns
          -------
          o_t : np.array of shape (nstates,) of dtype=np.float32
              The trajectory of observations.
          s_t : np.array of shape (nstates,) of dtype=np.int32
              The trajectory of hidden states, with each element in range(0,nstates).
  
          Examples
          --------
  
          Generate a synthetic observation trajectory for an equilibrium realization.
  
          >>> from bhmm import testsystems
          >>> model = testsystems.dalton_model()
          >>> [o_t, s_t] = model.generate_synthetic_observation_trajectory(length=100)
  
          Use an initial nonequilibrium distribution.
  
          >>> from bhmm import testsystems
          >>> model = testsystems.dalton_model()
          >>> [o_t, s_t] = model.generate_synthetic_observation_trajectory(length=100, initial_Pi=np.array([1,0,0]))