docs: def generate_state_data(means, weights):
      """
      Generates data according to the Poisson Convex Mixture Model.
  
      Args:
          means (array): Cell types- genes x clusters
          weights (array): Cell cluster assignments- clusters x cells
  
      Returns:
          data matrix - genes x cells
      """
      x_true = np.dot(means, weights)
      sample = np.random.poisson(x_true)
      return sample.astype(float)