docs: def generate_poisson_states(n_states, n_cells, n_genes):
      """
      Generates means and weights for the Poisson Convex Mixture Model.
      Weights are distributed Dirichlet(1,1,...), means are rand(0, 100).
      Returned values can be passed to generate_state_data(M, W).
  
      Args:
          n_states (int): number of states or clusters
          n_cells (int): number of cells
          n_genes (int): number of genes
  
      Returns:
          M - genes x clusters
          W - clusters x cells
      """
      W = np.random.dirichlet([1]*n_states, size=(n_cells,))
      W = W.T
      M = np.random.random((n_genes, n_states))*100
      return M, W