def generate_nb_states(n_states, n_cells, n_genes):
W = np.random.dirichlet([<NUM_LIT:1>]*n_states, size=(n_cells,))<EOL>W = W.T<EOL>M = np.random.random((n_genes, n_states))*<NUM_LIT:100><EOL>R = np.random.randint(<NUM_LIT:1>, <NUM_LIT:100>, n_genes)<EOL>return M, W, R<EOL>
Generates means and weights for the Negative Binomial Mixture Model.
Weights are distributed Dirichlet(1,1,...), means are rand(0, 1).
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
    R - genes x 1 - randint(1, 100)