Skip to content

v2.7.0

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Aug 14:17

⚠️ You must rebuild your indexes

salmon 2.7.0 changes the on-disk index format (index format v2). Every
index built by an earlier salmon is rejected at load time with a message
like the one below, and must be rebuilt with salmon index:

<dir> was built by salmon 2.6.0 (index format v1), which this salmon cannot
read (requires index format v2+). ... rebuild it with
`salmon index -t <transcripts> [-d <decoys>] -i <dir>`.

Quantification results are unchanged — verified byte-identical against
2.6.0 (see below). The rebuild buys a smaller, faster index.

What changed

This release adopts the unified canonical k-mer dictionary (a port of C++
SSHash v6.0.0 into sshash-rs 0.7 / piscem-rs 0.10). SSHash previously kept
two indexing modalities; canonical answers — the only kind mapping needs —
paid a ~4/3 super-k-mer density penalty. The v6 scheme selects the minimizer
by hashing the canonical m-mer at each position: mirror-equivariant (one
probe answers both strands, with orientation) at plain forward density, with
a centre-closest tie-break that makes the scheme forward. The dictionary
header now also records the build seed and a hash-library guard, so
environment drift fails loudly instead of silently degrading mapping.

Results: provably unchanged

Against the released 2.6.0, quant.sf and the per-fragment RAD mapping
records
are byte-identical on every validation set: sample_data
(selective-alignment and sketch, with and without decoys) and GRCh38 cDNA ×
36M real read pairs (193,760 transcripts, identical num_mapped). Below
salmon, per-k-mer dictionary results were verified byte-identical to the
previous implementation over ~30M lookups and to C++ SSHash v6 itself.

Performance (vs 2.6.0, same machine)

  • Index build (GRCh38 cDNA): ~23% lower peak RSS (4.2 → 3.3 GB), ~3% faster
  • Index size: dictionary bytes shrink 8–13%
  • Sketch-mode mapping: ~5.5% faster wall / ~5.7% less CPU (36M pairs, 16 threads)

Also in this release

  • A future-format index is now rejected with an "upgrade salmon" message
    instead of a cryptic I/O error; info.json records sshash_format_version.
  • Fixes in the dictionary layer that rode along: wide-k (k ≥ 33) streaming
    lookups were wrong in release builds (salmon's default k = 31 unaffected),
    and non-default build seeds produced unusable indexes.
  • No salmon command-line options changed.

Full details: docs/release-notes-2.7.0.md and docs/sshash-v6-port.md.