Fit a per-gene NB GLM over an arbitrary design (R fitNB).
log(mu) = W @ alpha.T (+ offset) with no built-in intercept (gmean is zero). Y is genes x cells, W cells x covariates. Returns alpha, gmean, psi, loglik, sampling.
Examples
import numpy as npimport spanormpy as snrng = np.random.default_rng(1)Y = rng.poisson(5, size=(20, 50)) # counts, genes x cellsW = np.column_stack([np.ones(50), np.linspace(-1, 1, 50)]) # intercept + one covariatefit = sn.fit_nb(Y, W, verbose=False, backend="cpu")fit["alpha"].shape # genes x covariates