INNER CODE UNIT · Python
disp_residuals
scverse/PyDESeq2 · src/pydeseq2/dds.py:829
disp_residuals = np.log(
self[:, self.non_zero_genes].var["genewise_dispersions"]
) - np.log(self[:, self.non_zero_genes].var["fitted_dispersions"])
# Compute squared log-residuals and prior variance based on genes whose
# dispersions are above 100 * min_disp. This is to reproduce DESeq2's behaviour.
above_min_disp = self[:, self.non_zero_genes].var["genewise_dispersions"] >= (
100 * self.min_disp
)
self.uns["_squared_logres"] = (
mean_absolute_deviation(disp_residuals[above_min_disp]) ** 2
)
self.uns["prior_disp_var"] = np.maximum(
self.uns["_squared_logres"] - polygamma(1, (num_samples - num_vars) / 2),
0.25,
)