v2.3.3
salmon 2.3.3
A features-and-fixes release on 2.3.2. The default salmon quant output is
unchanged β the new inference accelerators are opt-in (default off), the
profiling additions are pure instrumentation, and the one bug fix is
behavior-neutral. No index rebuild is required.
Optional EM/VBEM acceleration (--emAccel)
salmon's abundance estimation is a fixed-point EM (or VBEM under --useVBOpt)
that converges only linearly; on high-ambiguity / slow-mixing problems it can
crawl, and every bootstrap replicate pays the cost again. Two off-the-shelf
accelerators are now available (thanks
@BenjaminDEMAILLE, #1051, #1052):
--emAccel squaremβ SQUAREM (Varadhan & Roland 2008): a squared
extrapolation from the last two EM maps plus a stabilizing step. Near-zero
overhead; a small, safe speedup on typical runs and a large one on
slow-mixing problems.--emAccel daaremβ DAAREM (Henderson & Varadhan 2019): damped Anderson
acceleration over a window of residuals (a multi-secant quasi-Newton step),
with a self-contained eigensolver (no new dependency). Wins big on hard,
ill-conditioned problems; because of its per-iteration overhead it is best
reserved for those cases (it can be slower than plain EM when the base EM
already converges quickly).
Both reach the same fixed point as plain EM/VBEM (validated: TPM Pearson
β 0.9998β0.99999 vs. the default, total mass conserved, identical accuracy vs.
simulation ground truth), and both accelerate the point estimate and every
bootstrap replicate (Gibbs is unaffected). The default is none, so
existing results and --deterministic output are unchanged; the accelerators
are not byte-identical to none (differences are at the convergence-tolerance
level), which is why they are opt-in.
Profiling harness + per-phase timing
- A reproducible profiling harness (#1051, @BenjaminDEMAILLE): a
profiling
build profile, acriterionEM/VBEM M-step benchmark, andscripts/profile.sh
(samply). - Per-phase wall-clock timing on the
salmon::timingtracing target
(index_load / mapping / eff_length_collapse / em_bias / posterior / output),
available inline atinfoor in isolation viaRUST_LOG=salmon::timing=info.
It now covers all quantification paths β reads (online and
--deterministic), alignment (-a), and--radβ so the EM phase is visible
regardless of input mode. Pure instrumentation; no effect on output or
determinism.
Fixes
- Radix-sort scratch fill (#1055): the
(transcript, orientation)uni-MEM
radix grouping added in 2.3.2 constructed a zero-lengthMemas a
never-read scratch placeholder, which tripped a debug assertion and panicked
debug builds on real reads. Release builds (all shipped binaries) were
unaffected β the assertion is compiled out and the placeholder was always
overwritten β so this changes no results (verified byte-identicalquant.sf).
The fix restores usable debug builds and closes the invariant hole.
Other
- Tidier
salmon --help: the removedalevinsubcommand is hidden and the
(Rust port)parenthetical is dropped (#1053, @BenjaminDEMAILLE).
Upgrading
Drop-in from 2.3.2: no index rebuild, and default quantification results are
unchanged. Try --emAccel squarem (or daarem for slow-mixing / large
bootstrap workloads) if you want faster inference.
Install salmon-cli 2.3.3
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/COMBINE-lab/salmon/releases/download/v2.3.3/salmon-cli-installer.sh | shDownload salmon-cli 2.3.3
| File | Platform | Checksum |
|---|---|---|
| salmon-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| salmon-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| salmon-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| salmon-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |