code: def generate_synthetic_observation_trajectories(self, ntrajectories, length, initial_Pi=None):
          
          O = list()  # observations
          S = list()  # state trajectories
          for trajectory_index in range(ntrajectories):
              o_t, s_t = self.generate_synthetic_observation_trajectory(length=length, initial_Pi=initial_Pi)
              O.append(o_t)
              S.append(s_t)
  
          return O, S
docs: Generate a number of synthetic realization of observables from this model.
  
          Parameters
          ----------
          ntrajectories : int
              The number of trajectories to be generated.
          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 : list of np.array of shape (nstates,) of dtype=np.float32
              The trajectories of observations
          S : list of np.array of shape (nstates,) of dtype=np.int32
              The trajectories of hidden states
  
          Examples
          --------
  
          Generate a number of synthetic trajectories.
  
          >>> from bhmm import testsystems
          >>> model = testsystems.dalton_model()
          >>> O, S = model.generate_synthetic_observation_trajectories(ntrajectories=10, length=100)
  
          Use an initial nonequilibrium distribution.
  
          >>> from bhmm import testsystems
          >>> model = testsystems.dalton_model(nstates=3)
          >>> O, S = model.generate_synthetic_observation_trajectories(ntrajectories=10, length=100, initial_Pi=np.array([1,0,0]))