Skip to content

What changed in 2.0

salmon 2.0 is a from-scratch Rust rewrite. It keeps the same core workflow (salmon indexsalmon quantquant.sf) and the same output formats downstream tools consume, but it is a new major version and makes some breaking changes. This page maps C++ options and behavior to 2.0.

quant.sf is unchanged (drop-in for tximport/tximeta). Inferential replicates (aux_info/bootstrap/… for both --numBootstraps and --numGibbsSamples) are written in the same format C++ salmon used, so tximport/fishpond/swish keep working. The bias-model diagnostic dumps in aux_info/ are in a documented Rust format (see the output format specification); they are not consumed by the standard downstream R packages.

C++2.0
salmon alevinRemoved. Use the alevin-fry ecosystem for single-cell. salmon alevin … prints a redirect and exits.

Passing any of these errors out with a pointer to this guide. They are gone because the underlying feature was removed or has no equivalent in 2.0.

OptionSubcommandWhy / alternative
--featuresindexIndex-feature dump not supported by the cf1-rs/piscem-rs index builder.
--mimicBT2, --mimicStrictBT2quantbowtie2-mimicking presets removed; selective alignment is the single supported mode.
--minAssignedFragsquantThe “zero the output below N assigned fragments” guard was removed; 2.0 reports what it quantifies.
--alternativeInitMode, --bootstrapReproject, --noGammaDrawquantInference-internal toggles not present in the 2.0 optimizer/Gibbs implementation.
--numBiasSamplesquant2.0 collects bias samples online (abundance-aware, dual-phase), so a fixed sample budget no longer applies.
--auxTargetFile, --writeOrphanLinksquant -aRemoved alignment-mode features.

These still parse so existing scripts run; 2.0 logs a warning and ignores them (the behavior is either the default now or handled differently).

  • index: --filterSize
  • quant: --eqclasses, --noFragLengthDist, --noSingleFragProb, --mismatchSeedSkip, --disableChainingHeuristic, --hitFilterPolicy, --maxRecoverReadOcc, --validateMappings (selective alignment is the default)
  • quant -a: --mappingCacheMemoryLimit, -s/--sampleOut, -u/--sampleUnaligned, --writeQualities
  • --sketch — alignment-free pseudoalignment mode (faster). See mapping modes.
  • --sketchStrictOrphans — in --sketch, only orphan a pair when the other mate had no matching k-mers at all (the conservative rule). The default is the relaxed rule, which tracks selective alignment more closely.
  • --allowDovetail — now honored in --sketch as well.
  • Sketch orphan rule defaults to the relaxed policy (see --sketchStrictOrphans).
  • Selective-alignment chain pruning: 2.0 defaults --orphanChainSubThresh and --postMergeChainSubThresh to 0.0 (off) — it aligns every candidate, marginally more sensitive than C++ (0.95 / 0.9). Quantification is essentially unaffected (per-transcript Pearson ≈ 0.999); pass --orphanChainSubThresh 0.95 --postMergeChainSubThresh 0.9 to reproduce C++ mapping counts exactly.

Index/quant basics, quant.sf, cmd_info.json, lib_format_counts.json, aux_info/meta_info.json, --libType/-l, --threads/-p, --seqBias, --gcBias, --posBias, --numBootstraps, --numGibbsSamples, --useEM, --dumpEq, -g/--geneMap, decoys, and salmon quantmerge.