def generate_state_data(means, weights):
x_true = np.dot(means, weights)<EOL>sample = np.random.poisson(x_true)<EOL>return sample.astype(float)<EOL>
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