Research report 01: the de novo signature-extraction method panorama and the NMF compute engines
Source:vignettes/articles/research-01-extraction-methods.qmd
ℹ️ Document nature: this piece is a research snapshot (archival snapshot; the verification date is in the text). Live decisions are governed by architecture.qmd §0 (D1–D16) and review-00-synthesis.qmd; the method names in the text (e.g. MSU-Extract, MSU-Corr) are the wording of the time, the current naming is in ARCHITECTURE §5; the benchmark metrics are governed by capability-matrix.qmd and ARCHITECTURE §8.
Research date: 2026-09-27. Annotation convention: [V] = verified by reading the source/full text; [search] = abstract-level verification only; [unverified] = could not be confirmed, keep in doubt.
1. Cornet / Sonata — the single most important finding (the user-designated biorxiv paper)
The paper: Jin H, Geiger B, Glodzik D, Gulhan DC, Park PJ. “Correlation-aware discovery of co-occurring mutational signatures in cancer.” bioRxiv 2026.09.14.751548 (posted 2026-09-21, the original MuSiCal team). DOI 10.64898/2026.09.14.751548 (bioRxiv switched to the 10.64898 prefix from 2026; the old 10.1101/... does not resolve). CC-BY-NC, version 1. [V — the Europe PMC metadata + the full text (via a jina.ai mirror to sidestep the bioRxiv 403)]
The software: parklab/Sonata, Python, MIT license, pip name sonata-tools, AnnData native. It carries three models: so.models.NMF (the KL-NMF), so.models.MvNMF (the minimum-volume NMF), so.models.Cornet. Integrated into a MuSiCal-style de novo pipeline (bootstrap → fit → filter → cluster → K selection). [V — the source]
1.1 The exact model form (source src/sonata/models/cornet.py, _utils_cornet.py)
-
The generative model:
X_vd ~ Poisson((WH)_vd), the signatures being W’s columns (column normalization on the probability simplex), the key innovation — the exposure is parameterized as a low-rank bilinear form in log space:h_kd = exp(α_k + β_d + l_k · u_d)where
α_kis the signature bias (K-dim),β_dthe sample bias (D-dim, absorbing the sequencing depth),l_k ∈ R^mthe signature embedding,u_d ∈ R^mthe sample embedding,m ≤ K(default m=K). The embedding’s Gaussian prior
N(0, σ²I)with σ² adaptively learned.The objective (called the ELBO in the code):
Σ_vd [x_vd log((WH)_vd) − (WH)_vd](the Poisson KL)− Σ_k‖l_k‖²/(2σ²) − Σ_d‖u_d‖²/(2σ²) − (K+D)m·log(2πσ²).The lineage: Paisley, Blei & Jordan (2014) correlated NMF (the stochastic variational inference) → Cornet replaces it with a deterministic MAP coordinate ascent. The docstring cites it explicitly. [V]
1.2 The optimization algorithm (the exact update order of _update_parameters)
Each iteration: 1. The sample bias (in closed form): β_d = log Σ_v x_vd − log Σ_k exp(α_k + l_k·u_d) (the log-sum-exp softmax, enforcing Σ_k h_kd = the sample’s total counts). 2. Recompute the exposure h = exp(α + β + L Uᵀ) (numba JIT). 3. The auxiliary sufficient statistic (the KL-MU responsibility trick, avoiding materialising a 3-dim tensor): aux_kd = Σ_v x_vd·p_vkd, where p_vkd = w_kv h_kd/(WH)_vd, i.e. aux = Hᵀ ⊙ (W (V ⊘ WH))ᵀ. 4. The signature bias (in closed form): α_k = log Σ_d aux_kd − log Σ_d exp(β_d + l_k·u_d). 5. The embeddings: for each l_k (with U fixed) and u_d (with L fixed) solve the concave subproblem max_l Σ_d aux_kd(l·u_d) − Σ_d exp(α_k+β_d+l·u_d) − ‖l‖²/(2σ²) — the scipy Newton-CG with analytic gradient and Hessian (the Hessian only m×m); the sample embedding maxiter=3. 6. The variance (in closed form): σ² = mean(concat(L,U)²) (clipped ε). 7. The signatures: after the standard KL multiplicative update, column-normalize.
The defaults: the NNDSVD initialisation, min_iterations=500, max_iterations=10000, tol=1e-7, convergence checked every 10 iterations. [V]
1.3 The paper’s claims [V — the full text checked sentence by sentence]
- The synthetic benchmark (1000 datasets; 3 signatures, induced exposure correlation): the standard NMF+NNLS degrades sharply past pairwise correlation r ≳ 0.8 (a median of 20–41% of the weights gets attributed to cross-contamination), while Cornet stays correct to r ≈ 0.98. The bit-for-bit numbers: NMF median cosine error 0.032–0.13 (0.8 < r ≤ 0.98), cross-contamination median 20–41%; Cornet median cosine error 0.0039–0.033, cross-contamination 2–11%.
- The real-data findings: a cleanly resolved SBS88 (colibactin) in PCAWG colorectal (where NMF splits it fuzzily); SBS88 in the GEL head-and-neck; SBS84/85 in BNHL without clustering constraints; SBS93 shown to be a composite; bladder cancer’s SBS4/SBS92 split into 92a/92b, with 92a tracking the ERCC2 (cisplatin) status.
- The preprocessing rule the paper declares: rescale the catalog so the mean sample TMB = 10–40× the channel count V (the original wording “average tumor mutational burden across samples was between 10 V and 40 V”; SBS96 → ~1000–4000 counts/sample) — it sets the “temperature” of the log-normal exposure distribution and controls the sparse/cluster behaviour. [V]
1.4 The significance for msuiter
The whole Cornet model ≈ 400 lines of dense linear algebra (the elementwise exp/log-sum-exp + one O(VMK) matmul + a tiny Newton solve) — the cheapest solution to the correlated-signature problem (Wu 2022 proved it breaks the NMF). MIT-licensed, directly referenceable. MvNMF and the input-rescaling rule are likewise worth adopting.
2. SignatureAnalyzer (Broad/PCAWG) — the ARD automatic K determination (source-level verification)
The code: sigminer/R/bayesianNMF.R (the Broad Institute BSD-3 copyright header, “Copyright (c) 2017, Broad Institute”); the algorithm’s origin: Tan & Févotte, IEEE TPAMI 35:1592–1605 (2013) (the ARD of the beta-divergence NMF). [V]
- The prior: the default variant
BayesNMF.L1W.L2H= W exponential (L1) + H half-normal (L2); alsoL1KL(exponential/exponential) andL2KL. - The inference: neither Gibbs nor variational — a deterministic type-II maximum likelihood (evidence maximisation) ARD. The per-component prior precision
λ_k = 1/β_kupdates in closed form:- L1W/L2H:
β_k ← C / (Σ_i w_ik + ½ Σ_j h_jk² + b0),C = N + M/2 + a0 − 1 - L1KL:
λ_k ← (Σ_i w_ik + Σ_j h_jk + b0)/C,C = N + M + a0 + 1,b0 = sqrt((a0−1)(a0−2)·mean(V)/K0)
- L1W/L2H:
- The factor updates: the KL multiplicative update with the ARD penalty
H ← H ⊙ (Wᵀ(V ⊘ WH)) ⊘ (Wᵀ1 + diag(β)H); the L2 variants use the square-root MU. -
The K-determination mechanism: start from
K0=max (e.g. 96); the ARD shrinks useless components until the prior precision crosses the hard threshold (β.cut = (C/b0)/1.25; dead whencolSums(W) < 1e-5orβ > β.cut). Convergence:max|Δβ/β| < 1e-5or n.iter (default 2,000,000 iterations!). The defaults a0=10, b0=5. - The known defects: in the SUITOR simulation SignatureAnalyzer misreported 17/20 times on single-signature data (prone to splitting flat signatures) [search — the SUITOR paper]; BayesPowerNMF 2026 reports high cosine errors for some cancer types.
Assessment: the ARD is the only production-grade rank-sweep-free automatic K determination; 10⁶ iterations in R are extremely slow → a Rust fused kernel can speed it up by orders of magnitude.
3. SUITOR — the entry-wise CV K determination (not optimal transport)
Lee D, Wang D, Yang XR, Shi J, Landi MT, Zhu B. “SUITOR: Selecting the number of mutational signatures.” PLoS Comput Biol 18(4):e1009309, 2022 (NCI DCEG). The code binzhulab/SUITOR (R/Bioc). [V — the PMC9009674 full text]
- The Poisson NMF + entry-wise unsupervised K-fold CV: holdout by matrix cell (the index modulo 10 within each tumour) → the training matrix with MCAR missingness → the missing counts imputed by the conditional mean (the E step), i.e. the ECM algorithm (provably equivalent to the KL-MU, monotone in likelihood).
- The selection:
ERR_r = Σ_folds −log Pr(held-out|fit), take the argmin; the defaults tol 1e-5, max 2000 iterations, 300 random initialisations. - The results: the smallest held-out error on PCAWG (2,540 tumours); 91% sensitivity (cosine>0.8) on the in-vitro mutagenesis benchmark vs 45–82% for the competitors; zero misreports on single-signature data.
- The porting note: entry-wise CV in Rust is just a mask + partial-sum reduction; simple to implement and the best-calibrated K-selection method.
4. signeR — the empirical-Bayesian Gibbs NMF
Rosales RA et al., Bioinformatics 33(1):8–16 (2017). Bioconductor. [V — read signeR.R on rdrr.io]
- The Poisson NMF + Gamma priors (for the signatures P and the exposures E), with an exponential hyperprior over the shape of the Gamma rate hyperparameter (the hierarchical Gamma–exponential, not a Dirichlet); the hyperparameters estimated by the empirical-Bayesian EM (≤100 rounds).
- The inference: Gibbs sampling (a C backend); with K known: 10,000 burn-in + 2,000 posterior samples; for the K-determining run: 1,000+1,000. The K selection: the Gibbs likelihood BIC, a coarse-to-fine grid.
- The posterior → the credible intervals of the signatures and exposures; the 2023 follow-up (Drummond, BMC Bioinformatics) propagates the exposure posterior into the clinical association (PMC10664385).
- Runtime: 10⁴-scale MCMC × the candidate K’s → the slowest mainstream tool, unfit for large cohorts.
5. BayesPowerNMF — the power posterior (NEW 2026)
Xue C, Miller JW, Carter SL. PLoS Comput Biol 2026, DOI 10.1371/journal.pcbi.1014372. The code TARPS-group/BayesPowerNMF (Python, MIT). [V — repo+full text]
- The Poisson NMF + a row-wise Dirichlet prior on the signatures + a compressive Gamma prior on the exposures (the Zito & Miller compressive Bayesian NMF) → the column-sparse shrinkage determines K automatically.
- The key trick: the likelihood raised to a power α∈[0,1] (the power posterior) to resist model mis-specification (contamination, over-dispersion, perturbation); α is picked via simulation calibration.
- Stan NUTS/HMC, 4 chains × 10k warmup + 10k draws; claims the best precision/recall under mis-specification (vs SigProfilerExtractor/SignatureAnalyzer/SigMoS), recovering the truth from as few as ~30 samples; 95% credible intervals.
- For msuiter: the α-power likelihood is a one-line change to the KL/Poisson engine (multiply the gradient by α), usable as a noise-resistant “robustness knob”.
6. BASCULE — the Bayesian NMF + DP clustering + GPU SVI (NEW late 2025)
Buscaroli E et al., Genome Biology 27:15 (2025), DOI 10.1186/s13059-025-03835-9. [V — the PMC full text]
- The SBS/DBS/ID joint tensor; the Poisson likelihood; Dirichlet priors on the exposures and the de novo signatures; the construction of the de novo prior ω gives low prior concentration to features already explained by the fixed COSMIC catalog — i.e. residual-aware de novo extraction (fit the catalog first, the de novo absorbs only the residual).
- Pyro stochastic variational inference (GPU); two stages (first fit the catalog, then add de novo); post pruning (de novo with cosine ≥ ~0.9 to an existing one is dropped); the BIC for K; a DP mixture over the exposures for automatic clustering.
- Speed: GPU, 1,000 samples ~6 min vs SigProfiler/SparseSignatures/FitMS 30–559 min.
- For msuiter: the “residual-aware prior” is the most practical idea of 2025 (killing the repeated re-splitting of SBS40/5), adoptable inside a deterministic MU.
7. The Shiraishi model family: pmsignature and HiLDA
-
pmsignature (Shiraishi 2015 PLoS Genet e1005657;
friend1ws/pmsignature, R+C++): a signature = the product of per-feature independent multinomialsP(m|k) = Π_l F[k,l,feature_l(m)](the 6 substitution classes, any flank length, strand, transcript orientation). The EM inference (C++EMalgorithm.cpp), sparse data storage (mutation, sample, count). [V — the source] - The failure analysis: (a) the output is not in the 96-channel format, cannot be compared to COSMIC directly; (b) the per-feature independence assumption cannot express certain correlated flank structures; (c) the PCAWG/SigProfiler ecosystem lock-in. [partly search]
- HiLDA (PLoS Genet 2019, PMC6717498; USCbiostats): the hLDA on the Shiraishi representation, positioned as the hierarchical test of the two groups’ exposure difference (Gibbs + the permutation test) rather than discovery. Also Matsutani 2019 Bioinformatics 35:4543 (the VB-LDA automatic K).
- The keep/drop: keep the Shiraishi-style factorised representation as an internal feature-engineering option (the strand/flank extension for free); the exchange format stays the SBS96/1536 one.
8. The deep-learning route — an honest assessment
| The method | What it is | The source | The conclusion |
|---|---|---|---|
| MUSE-XAE | an autoencoder: the nonlinear encoder + the non-negative linear decoder + the minimum-volume regularisation, Adam + the Poisson NLL | Bioinformatics 40(5):btae320, 2024; compbiomed-unito/MUSE-XAE
|
peer-reviewed and credible; but the fidelity is not visibly better than running MV-NMF directly; low adoption |
| SigNet | an ANN refitter (learns the inverse of the NNLS, gives prediction intervals, usable at low counts) | bioRxiv 2023.12.06.570467; weghornlab/SigNet
|
useful for the low-TMB fit/uncertainty, not an extractor, niche |
| Egendal 2025 | an NN for signature-based patient stratification | DOI 10.54337/aau815838821 | no methodological contribution |
| “deep unfolding NMF” (Nasser 2022) | an unrolled optimization network | [unverified — the original source not found] | skip |
Conclusion: as of 2026-09, not one deep-learning extractor became a credible winner. The frontier turned to (a) better-posed linear models + identifiability regularisation (Cornet/MvNMF), (b) Bayesian uncertainty, (c) rigorous model selection. “SigDC/MSNet/DeepMS” do not exist (name collisions with unrelated literature). DL does not deserve an engine seat; a SigNet-style amortised refit is a possible future feature.
9. The other extraction methods and the benchmarking landscape
-
Sonata
so.models.MvNMF(read from theparklab/Sonatasource):KL(V‖WH) + λ·log det(WᵀW + δI)(Leplat, Gillis & Ang, IEEE TSP 68:3400–3410, 2020); the MM multiplicative update + the backtracking line search + the W column normalization. The linear-world antidote for the identifiability of correlated/overcomplete signatures. [V] - SparseSignatures: the L1-penalized Poisson NMF + bi-cross-validation (known); the SUITOR benchmark shows fragility to mutation-calling errors.
- SigMoS (the Rosenberg group; cited as a comparator by BayesPowerNMF): overfits large cohorts. [search]
- mSigHdp: the HDP; the best sensitivity to rare signatures, slow (known).
- “Sigmoid” appears only in Islam 2022 [unverified]; Clomial is a clonal genotype deconvolution, not a signature tool; “MutationalSignatureAnalysis MATLAB / SP-Signatures / AutoSig / Gaussian-process extractor” were none found.
- The benchmarking literature: Islam 2022 Cell Genomics (the standard extractor benchmark); Wu 2022 Sci Rep 12:390 (the correlated-signature failure benchmark); no new systematic extraction benchmark in 2023–2026 (excluding each tool’s own benchmark) — this is msuiter’s paper’s direct opportunity.
10. The compute-engine zoo (with the update equations)
Notation: V ∈ R_+^{M×N} (M channels × N samples), V ≈ WH, W ∈ R_+^{M×K} the signatures, H ∈ R_+^{K×N} the exposures.
(a) The KL-divergence multiplicative update (Lee–Seung 2001; = the EM of the multinomial PCA / Poisson likelihood, Cemgil 2009):
H ← H ⊙ (Wᵀ(V ⊘ WH)) ⊘ (Wᵀ 1_M)
W ← W ⊙ ((V ⊘ WH)Hᵀ) ⊘ (1_M Hᵀ)
Cost: 3 GEMM + 2 elementwise divisions ≈ 4·MNK flops/iteration. Monotone non-increasing KL (Zangwill: global convergence to a stationary point); locally linearly convergent; sensitive to the initialisation; supports sparse V. Users: SigProfilerExtractor (PyTorch), MutationalPatterns (brunet), rust-NMF brunet, Sonata NMF, Cornet’s W step.
(b) The Frobenius/EU MU: H ← H ⊙ (WᵀV) ⊘ (WᵀWH) — same cost; a Gram-ised implementation drops it to O(MK²+NK²+MNK) (NNLM lee_ls, rust-NMF lee). On count data it makes the wrong noise assumption.
(c) HALS (Cichocki 2007–2009; RcppML): per-component h_k ← max(0, h_k + (g_k − G h_k)/G_kk), the Gram G = WᵀW incrementally updated; a sweep costs MNK + (M+N)K², cheaper when K≪M,N. The monotonicity guarantee holds under the Frobenius (KL-HALS has no general guarantee).
(d) The ANLS active set (Kim & Park 2007): each NNLS block solved exactly; the fewest iterations, the priciest iteration, the most complex implementation. NNLm (linxihui) implements the related sequential coordinate descent SCD: the KL version uses a quadratic surrogate minimized per coordinate, provably convergent, supporting L1/L2/missing masks. [V — base_algorithms.cpp]
(e) Projected gradient / acceleration: Lin 2007 Armijo line search; the Nesterov acceleration; rust-NMF dnmf is 26% faster than lee with no quality loss. [V — README]
(f) The beta-divergence MM (Févotte & Idier 2011; Marmin 2023 Signal Processing, cited by Cornet):
H ← H ⊙ [Wᵀ(V ⊘ WH)^{β̃}] ⊘ [Wᵀ(WH)^{β̃}], β̃ = β−1 (1≤β≤2)
β=2 Frobenius / β=1 KL / β=0 IS. The MM construction guarantees monotonicity for every β; Marmin 2023 gives the joint MM updating W and H simultaneously. The same O(MNK) cost, one extra pow. “One kernel, three noise models” — the recommended engine.
(g) The Poisson NMF via EM/CCCP: the soft EM latent-count assignment c_vkd = x_vd·w_kv h_kd/(WH)_vd + closed-form M steps — algebrically equivalent to the KL-MU (which is the basis of the SUITOR ECM argument), but it opens the stochastic/mini-batch/mirror-descent variants and the latent-count priors (the BASCULE/BayesPowerNMF route). Cornet’s aux statistic is exactly this latent-count aggregation.
The rust-NMF measured facts [V — lib.rs + README]: bit-equivalent to R NMF: brunet/lee/offset/nsNMF/snmf-r/snmf-l/hals/ehals/dnmf/lsnmf + NNDSVD; ndarray 0.16 + rayon (no BLAS); pbmc8k (3000×1500, rank 8, 16 threads): lee+NNDSVD@25 iter = 0.19 s, brunet 0.41 s, hals 0.13 s; the best ARI = lee+NNDSVD 0.889 vs lee+random 0.568. The core empirical law: “the NNDSVD initialisation is the magic, not the algorithm”. ~76× over R (Lee, bit-equivalent) up to ~215× (HALS+NNDSVD@25 iter). License GPL≥2 (inherited from the R NMF port) — reference only, its code must not be copied.
11. The initialisation and K-selection best practices
-
NNDSVD (Boutsidis & Gallopoulos 2008): the deterministic SVD initialisation; the variants NNDSVDa (zeros filled with the mean), NNDSVDar (zeros filled with small random). Sonata also has the
flat+ random + separable-NMF (SEMF) initialisations. At M≈100–1500, K≤30 the SVD is microsecond-scale. -
The trustworthiness ranking of the K-selection methods:
- Held-out CV (SUITOR) — the best calibrated, costly (K×folds×restarts) but perfectly parallel;
- the MuSiCal stability/significance after pruning (see the 02 report);
- the ARD automatic K (no sweep but a recorded over-splitting);
- the consensus stability: the silhouette over the replicate exposures (the SigProfiler default; the cophenetic of Brunet 2004 and the dispersion of Kim-Park 2007 are its ancestors). Using the cophenetic alone is no longer defensible (insensitive to rare signatures: Islam 2022; unstable under correlated signatures: Wu 2022), auxiliary diagnostic only;
- the BIC (signeR/BASCULE, reasonable within a likelihood framework);
- the HDP/shrinkage automatic K (truly non-parametric but slow/sensitive).
- The recommendation: the multi-start NNDSVD+random consensus silhouette (for compatibility) + the SUITOR-style CV error as the flagship statistic (the differentiator) + an optional ARD mode (the fast automatic K triage), reporting all three.
12. The pre-extraction catalog preprocessing
-
The hypermutators: SigProfiler uses a 1-D GMM (
GaussianMixture(n_components=2, covariance_type="full")) over the per-sample total mutation counts to determine the cutoff, the default manual_cutoff=9600 (subroutines.py:149get_normalization_cutoff), then rescales permatrix_normalization: the default"gmm", optional"100X","log2","none", or pass a positive integer directly as a manual cutoff (sigpro.py~L318;README.md:93;docs/3. Using the Tool - Input.md:64). [V — the SigProfilerSuite/SigProfilerExtractor source] (note: the repository migrated from AlexandrovLab to the SigProfilerSuite organization). The fixed literature thresholds >10 mut/Mb (hypermutated), >100 (ultra). -
The common-then-rare two stages (Degasperi 2022 Science 376:eabl9283): FitMS = Fit Multi-Step (PMID 35949260, PMC7613262). First fix the common signatures (the organ’s RefSig T1–T4;
constrainedFituses the limSolve constrained NNLS), then search the rare signatures against the residual; the two strategiesconstrainedFitvserrorReduction, the paper’s conclusion errorReduction wins: “A rare signature is considered present if the reduction in error is at least 15%”; the second step assumes 1 or 2 rare signatures exist. Implemented insignature.tools.lib(the Zenodo Code S1/S2). [V] - The opportunity normalization / exome↔︎genome: the exposures keep both concepts of “activity share” and “per-Mb rate”; the sig_convert-style conversions are preserved.
- The 2023–2026 new ideas: ①the Cornet/Sonata input rescaling (10–40× the channel count); ②the MuSiCal denoising and consistency loop; ③the BASCULE residual-aware prior; ④the BayesPowerNMF α-power likelihood; ⑤the SUITOR entry-wise masking doubling as a QC score.
13. The Rust engine candidate designs (the shortlist)
| # | The design | The kernel | The K selection | The advantages | The disadvantages |
|---|---|---|---|---|---|
| E1 | the MM beta-divergence kernel (β=1 default) + the ARD mode + the NNDSVDa initialisation | MU/MM (4MNK) + the ARD hyperparameter update | the ARD automatic + the consensus silhouette | compatible with SigProfiler/MP; provably monotone; GPL-clean (reimplemented from Tan–Févotte/the paper formulas) | the MU converges slowly in the tail (cheap at this scale); the ARD over-splits flat signatures |
| E2 | E1 + the SUITOR-style entry-wise CV module | as above + the masked KL evaluation | the CV error as the flagship | the best-calibrated K; a strong paper differentiator; reuses E1 (needs mask support) | the K×folds extra cost (perfectly parallel) |
| E3 | the Cornet port | the MU over W + the O(MNK) aux + the tiny Newton | inheriting the MuSiCal-style pipeline | solves the correlated-signature problem; an MIT reference; positioned for the next generation | sensitive to the input rescaling; the embeddings introduce a tuning surface; no posterior at a single point |
| E4 | the MvNMF volume-regularisation mode | the MU class + the K×K logdet + the line search | same as E1 | identifiability under correlation without embeddings; a switch-style regularisation of E1 | λ/δ need choosing; over-regularisation distorts pure signatures |
| E5 | the Bayesian mode (the compressive/shrinkage-prior MAP or SVI) | MU+the prior term (the ARD is its α→MAP limit) or a hand-written ADVI | the shrinkage automatic K + CI | the posterior uncertainty (no Rust suite has it); the residual-aware catalog prior | the highest complexity; a hand-written SVI in Rust is a large undertaking |
The recommendation: E1+E2 as the core (sharing 90% of the code), E3 as the flagship second model, E4 as a flag of E1, E5 deferred. The engine surface ≈ 6 kernels + 1 SVD + 1 Newton/L-BFGS utility.
14. The citation list
(the key entries; the full ones are the inline citations in the body) 1. Jin et al. Cornet. bioRxiv 2026.09.14.751548, DOI 10.64898/2026.09.14.751548; Sonata: github.com/parklab/Sonata (MIT) 2. Paisley, Blei & Jordan 2014 (the correlated-NMF lineage) 3. Lee et al. SUITOR. PLoS Comput Biol 18(4):e1009309 (2022). PMC9009674 4. Rosales et al. signeR. Bioinformatics 33(1):8–16 (2017); Drummond 2023 PMC10664385 5. Xue et al. BayesPowerNMF. PLoS Comput Biol (2026) doi:10.1371/journal.pcbi.1014372 6. Buscaroli et al. BASCULE. Genome Biol 27:15 (2025) doi:10.1186/s13059-025-03835-9 7. Kim et al. SignatureAnalyzer. Nat Genet 2016 doi:10.1038/ng.3557; Tan & Févotte IEEE TPAMI 35:1592–1605 (2013) 8. Shiraishi et al. PLoS Genet 11(12):e1005657 (2015); Yang et al. HiLDA PMC6717498; Matsutani Bioinformatics 35:4543 (2019) 9. Pancotti et al. MUSE-XAE. Bioinformatics 40(5):btae320 (2024); Serrano et al. SigNet bioRxiv 2023.12.06.570467 10. Leplat, Gillis & Ang. IEEE TSP 68:3400–3410 (2020); Boutsidis & Gallopoulos SIAM J Matrix Anal Appl 30:60 (2008) 11. Lee & Seung NIPS 2000 / Nature 401:788 (1999) / Nature 2001 (KL); Févotte & Idier Neural Comput 23:2421 (2011); Marmin, Goulart & Févotte, Signal Processing 209:109048 (2023) doi:10.1016/j.sigpro.2023.109048 12. Kim & Park 2007/2008; Brunet PNAS 101:4164 (2004); Cichocki 2007–2009; Cemgil 2009 13. Islam et al. Cell Genomics 2:100131 (2022); Degasperi et al. Science 376:eabl9283 (2022); Wu et al. Sci Rep 12:390 (2022) - The code: parklab/Sonata (MIT), binzhulab/SUITOR, TARPS-group/BayesPowerNMF (MIT), friend1ws/pmsignature, USCbiostats/HiLDA, omicverse/rust-NMF (GPL≥2, reference), linxihui/NNLM (BSD-2), zdebruine/RcppML (GPL≥3, the ideas), weghornlab/SigNet, compbiomed-unito/MUSE-XAE, sigminer R/bayesianNMF.R (Broad BSD-3, portable)
15. The explicitly unverified items
- The SigMoS citation details; the Sigmoid details (grepping “sigmoid” in the Islam 2022 full text = 0 hits — the term does not exist); mmsig2/MATLAB-MSA/SP-Signatures/AutoSig (not found, most likely do not exist)
-
Closed (this verification round, 2026-09-28):
- the Cornet quantitative-benchmark numbers → verified in full (see §1.3); the DOI prefix corrected to
10.64898(see §1) - the SigProfilerExtractor hypermutator parameters → the original
gmm_cutoff/rescale/quadraticalclaims were falsified; the true parameter ismatrix_normalization(default"gmm"; see §12) - the Degasperi rare-stage weighting → verified: the FitMS
errorReductionstrategy, the error-reduction ≥15% threshold (see §12) - the RcppML license → GPL (>= 3), v1.0.0 (confirmed)
- the Marmin 2023 DOI →
10.1016/j.sigpro.2023.109048(Signal Processing 209, art. 109048, Aug 2023; the authors Marmin, Henrique de Morais Goulart, Févotte) - the rust-NMF speedup ratios → the headline numbers should be 76× (bit-equivalent, lee) and ~215× (hals+NNDSVD, 25 iter);
280×is an extrapolation from the single-row loose configuration (10 iter, 0.45 s) and is not fit as a headline
- the Cornet quantitative-benchmark numbers → verified in full (see §1.3); the DOI prefix corrected to
- The license mines: rust-NMF is GPL≥2 for its odd-parity-check implementation; RcppML GPL≥3; Sonata is MIT-safe; sigminer bayesianNMF.R is the Broad BSD-3 (portable with attribution); in every case the algorithm itself is published and can be freely reimplemented