def run(self, data):
if self.normalize_data:<EOL><INDENT>data = cell_normalize(data)<EOL><DEDENT>M, W, ll = poisson_estimate_state(data, **self.params)<EOL>outputs = []<EOL>if self.return_w:<EOL><INDENT>outputs.append(W)<EOL><DEDENT>if self.return_m:<EOL><INDENT>outputs.append(M)<EOL><DEDENT>if self.return_mw:<EOL><INDENT>outputs.append(M.dot(W))<EOL><DEDENT>if self.return_mds:<EOL><INDENT>X = dim_reduce(M, W, <NUM_LIT:2>)<EOL>outputs.append(X.T.dot(W))<EOL><DEDENT>return outputs, ll<EOL>
Returns:
    list of W, M*W
    ll