Cell-level covariance on the Suppinger gastruloids

What the benchmark changed

Bastien Chassagnol

2026-11-12

1 · Two weights

i · Independent cells, shared noise, or one profile

Three graphical models. Independent cells of each type add to a bulk whose covariance is the sum of count times covariance. Equicorrelated cells share a type-level effect, and the covariance gains a factor one plus count minus one times rho. Population profiles are one draw per type scaled by the fraction, and the covariance carries the square of the fraction.

Panel (a), a mixture with a random cell label, is omitted. One specimen weights a covariance by a count or a fraction. A population profile puts a square on the fraction.

ii · A square weight shrinks the rare type’s contribution

The proportion of type 1 is the weight in each panel. Filled pixels are the bulk density, population weights on the left and single-cell weights on the right, on one colour scale. Outlines are each type’s own covariance, one standard deviation, on that type’s mean. The axes stay fixed.

iii · The square weight is not the wider interval

Expected Fisher information of one Gaussian bulk: the mean contrast \(\delta=\mu_1-\mu_2\), plus half the trace of \(\Sigma^{-1}\Sigma'\Sigma^{-1}\Sigma'\). Opening setting, checked separately: variances 16, correlation 0.6 against 0, proportion 0.05, half-widths 0.92 (square) and 2.09 (linear). The square weight is tighter because \(p^2+(1-p)^2\) still moves. The dashed lines on the right are the likelihood-ratio cuts, 1.92 below each maximum, which is 3.84 on the deviance scale.

2 · From one cell to the bulk

i · Symbols for the averaged mixture

Symbol Meaning on the next two slides
\(p_{ji}\) Cell fraction of type \(j\) in bulk \(i\)
\(n_i\) Number of cells behind that bulk
\(a_i\) capture ratio from the reference to the bulk
\(c_i = a_i n_i\) Scale of the mean
\(\phi_i = a_i^2 n_i\) Scale of the within-type covariance
\(\boldsymbol{S}_W(\boldsymbol{p}) = \sum_j p_j \boldsymbol{\Sigma}_{W,j}\) Linear mixture of within-type covariances
\(\boldsymbol{D}_i\) Diagonal noise added by the bulk

Per-cell means wear a tilde. \(\boldsymbol{\Sigma}_{W,j}\) is the cell-to-cell covariance of one specimen.

ii · Three layers, from a missing count to a diagonal

The per-cell average

\[\tilde{\boldsymbol{y}}\mid\boldsymbol{p},n\sim\mathcal{N}\!\left(\tilde{\boldsymbol{\mu}}\boldsymbol{p},\,n^{-1}\boldsymbol{S}_W(\boldsymbol{p})\right)\]

\(n\) is missing. It can come from the covariance magnitude, from a paired bulk, or from an external count.

Two scales

\[\boldsymbol{y}\mid\boldsymbol{p},a,n\sim\mathcal{N}\!\left(c\,\tilde{\boldsymbol{\mu}}\boldsymbol{p},\,\phi\,\boldsymbol{S}_W(\boldsymbol{p})\right)\]

\[c = an,\qquad \phi = a^{2}n\]

The simplex lets the mean pin \(c\). \(\phi\) is what is left in the covariance.

A diagonal the bulk adds

\[\boldsymbol{\Sigma}=\phi\,\boldsymbol{S}_W(\boldsymbol{p})+\boldsymbol{D}\]

The off-diagonal entries pin \(\phi\). The diagonal excess is \(\boldsymbol{D}\).

The raw \(\boldsymbol{\Sigma}_{W,j}\) matches the bulk only at capture ratio 1. Otherwise the bulk adds its own diagonal. This fit does not use that diagonal.

iii · Measurement, then expression

Plate diagram. Inside a plate over cell types j, fixed mu_j and Sigma lambda_j generate the latent expression lambda_c. Inside a nested plate over cells, the latent biological size factor s bio multiplies lambda_c to give the deterministic molecule content m_c, and the latent technical size factor s tech together with the fixed gene capture vector b outside the plates generate the observed counts x_c through a Poisson law.

\(\boldsymbol{\lambda}_{\cdot c}\) is the size-free expression. \(s^{\mathrm{bio}}\), \(s^{\mathrm{tech}}\) and \(\boldsymbol{b}\) are measurement. Sarkar and Stephens, and Fang and Pachter, separate the two. The \(\lambda\) of the covariance slides is the shrinkage intensity, a different quantity.

iv · UMIs make the measurement Poisson

\[x_{gc}\sim\mathrm{Poisson}\bigl(s^{\mathrm{tech}}_c\, b_g\, m_{gc}\bigr)\]

  • Inside one protocol, \(b_g\) is absorbed into the reference. It cancels from a within-protocol contrast.
  • Between the reference and the bulk it need not cancel. That ratio is the gene scale the benchmark tried, and did not keep.
  • Spike-in controls in those papers put the extra variance in the expression, not in the capture.

v · What the sample covariance mixes

The sample covariance of raw UMI counts mixes three objects. Only part of it belongs in the bulk.

  • The Poisson diagonal is single-cell sampling, at single-cell depth. A bulk has its own sampling noise.
  • The technical size factor is a protocol artefact. It correlates every gene with every other gene.
  • The biological size factor belongs in the bulk. Cells differ in volume, and the tissue sums them as they are.

vi · What the winning row keeps

  • Gaussian likelihood on the raw counts, with the linear weight. The Poisson diagonal stays in the plug-in.
  • Denoising that diagonal is the weak row: RMSE 0.47 at 96 h on the Welch panel, a wrong split inside the mesoderm lineage.
  • A Poisson–log-normal convolution, integrating the expression noise instead of plugging in two moments, is an extension. It is not a row of this benchmark.

vii · Capture and depth are different powers of \(a\)

Proportion of type 1 fixed at 0.35. Variances 16. Type 1 correlation 0.5, type 2 correlation 0. The ellipse is \(\phi\boldsymbol{S}_W\) only. The fitted model does not add a diagonal.

viii · The best fit profiles out two scales and nothing else

Technical factor In the raw-covariance fit at \(\lambda = 0.5\)
Mean scale \(c\) Used. Profiled out in closed form
Variance scale \(\phi\) Used. Profiled out in closed form; fitted values \(10^{6}\) to \(10^{8}\)
Cell count \(n\) and capture \(a\), separately Not fitted. \(\hat n = c^{2}/\phi\) is below one cell
Diagonal \(\boldsymbol{D}\) Not used. A gene-wise variance scale did not converge in 13 of 18 chains
Gene scale \(b_g\) on the bulk Not used. It helps on the small panels and hurts on the Welch panel at 96 h
Library-size normalisation None. Raw counts on both sides

The covariance plug-in is the raw covariance of each type, with its off-diagonal terms multiplied to reach \(\lambda = 0.5\); variances are untouched. Of the three layers, the fit keeps the second.

3 · Which genes

i · The authors’ cell filters stand

Detected genes against library size, and the log library size by type, for the cells the authors kept.

Detected genes against library size, and the log library size by type, for the cells the authors kept.

Cells kept above 1,800 genes and below 10% mitochondrial counts stay kept. Genes whose non-zero entries are more than 90% fractional are dropped. That fractional cut is not a detection rule. The presence gate is the detection rule, and it is the next slide.

ii · Two detection rules, and neither contains the other

UpSet of genes outside the presence gate or below 20 percent detection in every type, one panel per time.

Outside the presence gate: under 5% of the cells of some scored type, or zero within-type variance. Under 20% in every type: no scored type reaches that rate. deMixSC at 5% of all cells is not drawn, because those genes are already outside the presence gate. All-zero genes, and the mitochondrial, ribosomal and Gm rules, are already absent.

iii · At 48 h the same scores, by type and by cell line

PCA and PLS-DA at 48 hours, coloured by cell type and again by cell line.

Pearson residuals of \(M_0\), two components, cell type as the response. The lower row colours the same scores by cell line.

iv · At 72 h the projection is by cell type

PCA and PLS-DA at 72 hours, coloured by cell type.

One cell line at 72 h. Same residuals, same two components, cell type as the response.

v · At 96 h the projection is by cell type

PCA and PLS-DA at 96 hours, coloured by cell type.

One cell line at 96 h. Same construction as the 72 h slide.

vi · Three of the four tests assume independent cells

Test Reference law What has to be true
Likelihood ratio \(\chi^2_{J-1}\) on the deviance Negative-binomial mean and dispersion, dispersion treated as known, independent cells
ANOVA on the shifted log \(F_{J-1,\,C-J}\) Independent normal cells after \(\log(x/s+y_0)\)
Quasi-likelihood \(F\) \(F\), dispersion estimated Extra-Poisson variance is allowed; cells are still independent
Permuted Welch \(G\) Freedman–Lane label permutation Residuals of the null model are exchangeable within batch; type variances may differ

The first three refer a sum of squares, or a deviance, to a table that independence justifies. Only the permutation uses the residual cloud.

vii · At 48 h the analytic tests read cell line as type

Null calibration: observed against expected minus log10 p after one within-batch permutation of the labels, one panel per test.

Null calibration: observed against expected minus log10 p after one within-batch permutation of the labels, one panel per test.

At the 0.01 level and at 48 h, the likelihood ratio rejects 2.9 times the nominal rate, the quasi-likelihood \(F\) 2.8 times, and the shifted-log ANOVA 3.4 times. The permuted Welch \(G\) rejects 0.63 times. A within-batch permutation keeps the cell-line shift, and the analytic tests do not model the cell line.

viii · Dispersion widens two intervals; correlation fools the within-cell ones

A Gaussian sketch, not the Suppinger likelihoods. Forty cells and ten cells. Type 2’s cell variance is four times type 1’s, and \(\varphi\) multiplies both. In the count model that factor is the negative binomial dispersion: variance \(\mu+\varphi\mu^{2}\), biological variability of the expression or of the size factor. For a Poisson point process over a long window, variance over mean tends to the Fano factor, and the extra above 1 is this dispersion. The capture is taken to be long enough for that regime. The likelihood-ratio interval uses a fixed variance. The quasi-likelihood interval multiplies the Poisson standard error by \(\sqrt{\varphi}\). ANOVA and Welch use within-type variances, which shrink as the correlation grows, while the variance of the mean grows. Definitions: Fano factor, Poisson point process.

4 · The covariance

i · A covariance entry is a property of the gene pair

  • Deleting a gene leaves the other covariance entries as they were. A precision entry is a Schur complement of the panel, so it changes when a neighbour is removed.
  • The likelihood inverts a sum of type covariances. That sum is dense even when every type precision is sparse.
  • The shrinkage intensity spends variance against bias. The sparse precision estimators stay in the benchmark as sensitivity analyses, not as the plug-in.

ii · The closed form minimises the wrong risk

\[\hat\Sigma_{gg}=V_{gg},\qquad \hat\Sigma_{gg'}=(1-\lambda)\,R_{gg'}\sqrt{V_{gg}V_{g'g'}}\]

\[R(\lambda)=\mathbb{E}\bigl\|\hat{\boldsymbol{\Sigma}}(\lambda)-\boldsymbol{\Sigma}\bigr\|_{F}^{2}=\sum_{g,g'}\mathbb{E}\bigl(\hat\Sigma_{gg'}-\Sigma_{gg'}\bigr)^{2}\]

\(\lambda=0\) keeps the sample correlations. \(\lambda=1\) keeps only the variances, a bias toward no correlation. The closed form minimises the Frobenius risk. That minimum is a bias–variance trade-off on the covariance entries. This risk is not the deconvolution loss. DeCovarT’s selection criterion is a Gaussian log-density of held-out cells. That cell-wise score is written and has not been run. The reported level was read on the composition error.

  • Welch panel, 96 h, mean over three standard-Wnt replicates: raw covariance at \(\lambda = 0.5\) has RMSE 0.034. The closed-form \(\lambda\) has RMSE 0.36.
  • \(\lambda = 0.5\) is the best of the four levels \(0.25, 0.5, 0.75, 1\) on those same nine samples. It is the bulk-RMSE level, not a completed nested cross-validation. The 0.034 is optimistic.

iii · On the smallest panel, the three mesoderm profiles correlate at 0.97 and above

Correlation between the mean profiles of the cell types on the genes with a deviance share of at least 5%. Top row Pearson on mean raw counts, bottom row Kendall’s tau; columns 48 h, 72 h and 96 h.

Correlation between the mean profiles of the cell types on the genes with a deviance share of at least 5%. Top row Pearson on mean raw counts, bottom row Kendall’s tau; columns 48 h, 72 h and 96 h.

Genes whose type effect explains at least 5% of the deviance: 17, 140 and 635 genes at 48, 72 and 96 h. Top row: Pearson correlation of the mean raw counts per cell, the scale the solvers see. Bottom row: Kendall’s tau. Types are ordered by clustering. At 96 h: caudal against pre-somitic mesoderm 0.98, caudal against somite front 0.97, pre-somitic against somite front 1.00.

iv · On the Welch panel the mesoderm lineage stays at 0.98 to 0.99

Correlation between the mean profiles of the cell types on the Welch-gated genes, same layout as the previous figure.

Correlation between the mean profiles of the cell types on the Welch-gated genes, same layout as the previous figure.
  • Unweighted least squares fails. On one 96 h sample, non-negative least squares gives 100% to caudal mesoderm, observed at 0.22, and nothing to pre-somitic mesoderm, observed at 0.73. With the full raw covariance as weight, the same programme returns 0.22 and 0.78.
  • A condition number is the wrong gene filter here. It reads the mean signature only. Minimising it keeps the genes that separate distant lineages and drops those that split neighbours. This is an argument, not a measurement: no condition number was computed.

Welch-gated genes: 1,417, 3,420 and 5,821 at 48, 72 and 96 h. The cosine similarity of the closest pair is 0.98 at 48 h and 72 h and 0.99 at 96 h.

5 · The benchmark

i · Eight comparators, four ways to model the bulk

Click a paradigm to fold its methods. DeCovarT is a multivariate likelihood: the covariance of the bulk depends on the composition.

ii · Seven rungs, and where this benchmark sits

Ladder of noise models for the bulk error, from one common variance at the bottom to a mixed model at the top.

The vignette ladder, reduced to the slide. DeCovarT sits on the dense covariance. MEAD puts dependence in the sandwich. Weighted least squares are diagonal.

iii · Same likelihood, and the plug-in decides the error

DeCovarT variant Welch panel, 96 h, or what the figure states
Raw covariance, \(\lambda = 0.5\), L-BFGS-B RMSE 0.034. Best of the four levels, on the samples that score it
Raw covariance, closed-form \(\lambda\) RMSE 0.36
Denoised covariance RMSE 0.47
Newton against L-BFGS-B Largest RMSE gap on the figure: 0.321
Bulk divided by the gene scale \(b_g\) The figure’s own summary: mean RMSE 0.18, against 0.31 on the bulk as is

Blue on the next two figures is trust-region Newton. Orange is L-BFGS-B. Black is a comparator, or the quadratic programme of the multivariate RNA-Sieve.

iv · Root mean squared error, three replicates

Root mean squared error of each method at 48 h, 72 h and 96 h. Small points are replicates. Large points are means. Black, blue and orange mark comparators, Newton and L-BFGS-B.

Root mean squared error of each method at 48 h, 72 h and 96 h. Small points are replicates. Large points are means. Black, blue and orange mark comparators, Newton and L-BFGS-B.

Small points: the three standard-Wnt replicates. Large point: their mean. Rows are methods. Columns are the bulk times.

v · Aitchison distance ranks the rare types

Aitchison distance of each method to the observed composition, same layout as the RMSE figure.

Aitchison distance of each method to the observed composition, same layout as the RMSE figure.

Compare methods inside one time only: 3 parts at 48 h and 72 h, 5 parts at 96 h. Zeros are replaced at 0.001 before the centred log-ratio. A rare type set to zero costs more here than a shift between two abundant types, so this is not a copy of the RMSE ranking.

vi · What this benchmark supports

  • The penalty on the covariance moves the error more than the choice of optimiser: 0.36 against 0.034 at 96 h on the Welch panel.
  • The fit is not missing the mode. Its likelihood beats the observed composition in all 36 cases.
  • A quadratic programme on the same raw plug-ins reaches RMSE 0.060. The plug-in, not the solver, is the gap.
  • Refining the mean profiles from one bulk raises the error to about 0.50.
  • Summing caudal mesoderm, pre-somitic mesoderm and the somite front at 96 h puts twelve of thirteen methods at 0.04 or below.

\(\lambda = 0.5\) is the bulk-RMSE level on the samples that define the error. The cell-wise nested score has not chosen it. That score is still required before the row is compared with MEAD or RNA-Sieve.

6 · What remains

i · Five directions, ranked by this evidence

  1. Choose the shrinkage level without the answer. Score each level on pseudo-bulks of held-out cells. Compare one common level with one per type.
  2. Estimate the composition from the mean equation. Keep the covariance as a weight, and take the variance from a jackknife over gene clusters.
  3. Treat close types as a lineage. Fit the lineage first, then its split. This helps every method.
  4. Add a measurement layer between bulk and reference. A mean–variance law per gene across bulks.
  5. Carry the precision of the reference. Replicates or a delete-a-group jackknife, instead of refitting the reference from the bulk.

Which direction matters most depends on the regime. Three indicators were measured: cosine similarity of the profiles, bulk-to-reference shift, cells per gene. Covariance changes between conditions cannot be measured, because the reference follows one protocol.

ii · An aliquot is the external check

The Suppinger reference is not a split of the bulk. An aliquot is a physical split of one specimen, so the bulk and the single-cell library measure the same material.

  • Dong and colleagues, 10.1093/bib/bbz166. Mouse mammary suspension, GEO GSE136148. SCDC, already a comparator, was published on that split. Two animals. The truth is the single-cell recovery.
  • Guo and colleagues, 10.1101/gr.278822.123. Healthy retina, 24 specimens, same nuclei suspension. DeMixSC, already a comparator. Bulk GSE175937.
  • Dai and colleagues, 10.1126/sciadv.adh2588, on Jourdon and colleagues, 10.1038/s41593-023-01399-0. About 60 forebrain-organoid samples at TD0, TD30 and TD60. A preparation may pool organoids. Access is NIMH Data Archive study 1482.

He and colleagues and the BEDwARS analysis of Ghaffari and colleagues are not split aliquots. A usable set needs traceable identifiers, a published deconvolution, and an independent count when the single-cell recovery would be the only truth.

iii · How is a rare type weighted?

  • By the cell count under both laws
  • By \(p^{2}\) under the population law and by \(p\) under the single-cell law
  • By \(p\) under both laws
  • Not at all, once the types are independent

iv · What chose \(\lambda = 0.5\)?

  • The nested score on held-out cells
  • The best composition error on the scored samples; the cell-wise nested score has not chosen it
  • The closed form of the Frobenius risk
  • A match of pseudo-bulks to the real bulks

v · Where does \(b_g\) cancel?

  • Between the reference and the bulk, always
  • Inside one protocol. It need not cancel between the reference and the bulk
  • It never cancels, with or without UMIs
  • Only after library-size normalisation

Appendix: three optimisers for the same likelihood

Trust-region Newton

\[\Delta=\arg\max_{\lVert\Delta\rVert\le r}\;\nabla_{\boldsymbol{\rho}}\ell^{\top}\Delta+\tfrac12\Delta^{\top}\mathbf{H}_{\boldsymbol{\rho}}\Delta\]

  • Needs the score and the Hessian in ILR coordinates.
  • Every step stays inside the simplex.
  • Few steps, each with a factorisation of the \(G\times G\) covariance.
  • Cannot reach a face: fell short by up to 7.4 log-likelihood units in the vignette’s simulations.

L-BFGS-B

\[\boldsymbol{w}^{+}=\bigl[\boldsymbol{w}+\alpha\,\mathbf{B}\,\nabla_{\boldsymbol{w}}\ell\bigr]_{+},\qquad \boldsymbol{p}=\frac{\boldsymbol{w}}{\mathbf{1}^{\top}\boldsymbol{w}}\]

  • Needs the score only. \(\mathbf{B}\) is built from the last few gradients.
  • The box \(\boldsymbol{w}\ge 0\) gives \(p_j=0\) exactly.
  • Cheaper steps, more of them.
  • Fell short by at most \(8\times10^{-4}\) in the same simulations.

Marquardt–Levenberg

\[\Delta=\bigl(-\mathbf{H}_{\boldsymbol{\rho}}+\kappa\mathbf{I}\bigr)^{-1}\nabla_{\boldsymbol{\rho}}\ell\]

  • Needs the score and the Hessian. The damping \(\kappa\ge 0\) keeps the matrix positive definite.
  • ILR coordinates, as Newton.
  • Stops on the ratio of optimisation error to statistical error.
  • On a plateau it halts nearer the barycentre than the face. Dropped from the figures.

The three steps are the textbook forms; the vignette describes them in words. \(\boldsymbol{\rho}\): ILR coordinates of \(\boldsymbol{p}\). \(r\): trust radius. \(\alpha\): step length. \([\cdot]_{+}\): projection on \(\boldsymbol{w}\ge 0\). On the benchmark figures, the largest RMSE gap between Newton and L-BFGS-B is 0.321.

Appendix: three ways to stay on the simplex

Quadratic programme

\[\min_{\boldsymbol{p}}\;(\boldsymbol{y}-\boldsymbol{\mu}\boldsymbol{p})^{\top}\mathbf{W}(\boldsymbol{y}-\boldsymbol{\mu}\boldsymbol{p})\]

\[\boldsymbol{p}\ge 0,\qquad \mathbf{1}^{\top}\boldsymbol{p}=1\]

  • Convex. The solver handles the constraints and reaches a face in finitely many steps.
  • The weight \(\mathbf{W}\) is fixed: the covariance cannot depend on \(\boldsymbol{p}\).
  • With collinear profiles the solution tends to a vertex.

ILR chart

\[\boldsymbol{\rho}=\mathbf{V}^{\top}\log\boldsymbol{p},\qquad \boldsymbol{p}=\operatorname{softmax}(\mathbf{V}\boldsymbol{\rho})\]

\[\mathbf{V}^{\top}\mathbf{V}=\mathbf{I}_{J-1},\qquad \mathbf{V}^{\top}\mathbf{1}_{J}=\boldsymbol{0}\]

  • \(J-1\) free coordinates, no constraint left, any likelihood.
  • No privileged type; a change of basis is a rotation.
  • A share of zero sits at infinity. True zeros need an active set and a check.

Lagrangian and KKT

\[\mathcal{L}=\ell(\boldsymbol{p})-\eta\,(\mathbf{1}^{\top}\boldsymbol{p}-1)+\boldsymbol{\nu}^{\top}\boldsymbol{p}\]

\[\nabla_{\boldsymbol{p}}\ell-\eta\mathbf{1}+\boldsymbol{\nu}=\boldsymbol{0},\quad \boldsymbol{\nu}\ge\boldsymbol{0},\quad \nu_j p_j=0\]

  • Interior: every \(\partial\ell/\partial p_j\) equals \(\eta=\boldsymbol{p}^{\top}\nabla_{\boldsymbol{p}}\ell\).
  • On a face: \(\partial\ell/\partial p_j\le\eta\) for the absent types.
  • Used as the check of any solution, interior or not.

The ILR score is the KKT residual weighted by the shares: \(\mathbf{S}(\boldsymbol{p})\nabla_{\boldsymbol{p}}\ell=\operatorname{diag}(\boldsymbol{p})\,(\nabla_{\boldsymbol{p}}\ell-\eta\mathbf{1})\). The multiplier is written \(\eta\) here because \(\lambda\) is the shrinkage level of this deck.