MCPcopy Index your code
hub / github.com/COMBINE-lab/salmon

github.com/COMBINE-lab/salmon @v2.3.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.3.1 ↗ · + Follow
887 symbols 2,931 edges 66 files 378 documented · 43% updated 2d agov2.3.1 · 2026-07-02★ 908382 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

salmon

CI install with bioconda

[!IMPORTANT] This is salmon 2.0 — a from-scratch Rust rewrite of salmon. It keeps the same workflow (salmon indexsalmon quantquant.sf) and the same output formats downstream tools read, but it is a new major version with some breaking changes. The most important one: the index format changed, so you must rebuild your index. See MIGRATION.md for the full list of changed/removed/new options.

The final C++ release (salmon 1.12.0) lives on the cpp branch and remains installable as the salmon-cpp conda package.

Single-cell quantification moved to the alevin-fry ecosystem (salmon alevin is removed).

What is salmon?

salmon is a wicked-fast program for highly-accurate, transcript-level quantification from RNA-seq data. It pairs a fast mapping stage — selective alignment, or alignment-free sketch mode (--sketch) — with a massively-parallel statistical model (EM/VBEM over equivalence classes) to estimate transcript abundances. You can give salmon raw sequencing reads, or regular alignments to the transcriptome (an unsorted BAM), and it uses the same inference engine either way.

salmon 2.0 ships as a single portable binary: no compiler, Boost, or system libraries to install.

Installation

# install script (prebuilt binaries: Linux & macOS, x86-64 & aarch64)
curl --proto '=https' --tlsv1.2 -LsSf \
  https://github.com/COMBINE-lab/salmon/releases/latest/download/salmon-cli-installer.sh | sh

# or via cargo (Rust ≥ 1.91)
cargo install salmon-cli

# or via conda
conda install -c bioconda -c conda-forge salmon

# or Docker
docker run --rm combinelab/salmon:latest salmon --version

Quick start

# 1) build a reusable index from a transcriptome
salmon index -t transcripts.fa -i salmon_index -p 16

# 2) quantify (-l A auto-detects the library type)
salmon quant -i salmon_index -l A \
  -1 reads_1.fastq.gz -2 reads_2.fastq.gz -p 16 -o sample_quant

Results land in sample_quant/quant.sf (drop-in for tximport / tximeta / fishpond / swish).

Documentation

Full docs are at https://combine-lab.github.io/salmon — installation, library types, selective-alignment vs. sketch mode, inferential replicates, the migration guide, the CLI reference, and a precise specification of every output file.

Decoy-aware indexing

Accounting for fragments of unexpected origin improves quantification. salmon can index decoy sequence (e.g. the genome) alongside the transcriptome so reads that would otherwise be spuriously assigned to a transcript are absorbed by the decoy. Pass a decoy-name file with -d/--decoys (the decoy records must appear last in the FASTA). See the docs for building a decoy-aware index.

Citation

If you use salmon, please cite:

Patro, R., Duggal, G., Love, M. I., Irizarry, R. A., & Kingsford, C. (2017). Salmon provides fast and bias-aware quantification of transcript expression. Nature Methods. https://doi.org/10.1038/nmeth.4197

License

BSD-3-Clause. See LICENSE.

Extension points exported contracts — how you extend this code

RefProvider (Interface)
Access to reference sequences for alignment validation. The mapper needs the forward-strand bytes of a reference to ali [4 …
crates/salmon-core/src/refprovider.rs
GroupWorker (Interface)
One reader thread groups records by canonical read name into minibatches; a pool of these workers turns each group into [3 …
crates/salmon-align/src/bam_rad.rs
RadFragment (Interface)
A RAD record that can be turned into placements. [2 implementers]
crates/salmon-align/src/rad.rs

Core symbols most depended-on inside this repo

len
called by 256
crates/salmon-eqclass/src/lib.rs
clone
called by 136
crates/salmon-quant/src/processor.rs
is_empty
called by 103
crates/salmon-eqclass/src/lib.rs
context
called by 74
crates/salmon-rad/src/writer.rs
load
called by 41
crates/salmon-index/src/lib.rs
get
called by 41
crates/salmon-align/src/error_model.rs
clear
called by 36
crates/salmon-align/src/error_model.rs
ref_start
called by 34
crates/salmon-map/src/chain.rs

Shape

Function 510
Method 252
Class 109
Enum 13
Interface 3

Languages

Rust100%

Modules by API surface

crates/salmon-index/src/lib.rs40 symbols
crates/salmon-model/src/gcbias.rs38 symbols
crates/salmon-map/src/align.rs37 symbols
crates/salmon-eqclass/src/lib.rs35 symbols
crates/salmon-align/src/lib.rs34 symbols
crates/salmon-model/src/seqbias.rs33 symbols
crates/salmon-model/src/fld.rs31 symbols
crates/salmon-align/src/error_model.rs28 symbols
crates/salmon-cli/src/main.rs27 symbols
crates/salmon-map/src/pair.rs26 symbols
crates/salmon-core/src/libtype.rs26 symbols
crates/salmon-map/src/score.rs25 symbols

For agents

$ claude mcp add salmon \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact