Skip to content

Installation

Every release attaches prebuilt binaries for Linux and macOS, on x86-64 and arm64, to the GitHub releases page, along with a shell installer script that picks the right one:

Terminal window
curl --proto '=https' --tlsv1.2 -LsSf \
https://github.com/COMBINE-lab/cuttlefish/releases/latest/download/cuttlefish-rs-cli-installer.sh | sh

Cuttlefish is also on bioconda:

Terminal window
conda install -c bioconda cuttlefish

With a Rust toolchain installed:

Terminal window
cargo install cuttlefish-rs-cli

This installs the single binary cuttlefish.

Requirements:

  • A 64-bit Linux or macOS system
  • Rust 1.91 or newer
  • A standard linker and the native build tools for your Rust target
  • Enough temporary disk space for the external-memory intermediates

No C++ compiler, CMake, or system bioinformatics libraries are needed. The Rust implementation has no C++ dependency.

Terminal window
git clone https://github.com/COMBINE-lab/cuttlefish.git
cd cuttlefish
cargo build --release

The executable is written to target/release/cuttlefish. To install it under a Cargo-style prefix:

Terminal window
cargo install --path crates/cuttlefish-rs-cli

The default build links jemalloc, which is what the performance figures were measured with. The system allocator and mimalloc are also available, though neither generally performs as well:

Terminal window
# system allocator
cargo build --release -p cuttlefish-rs-cli --no-default-features
# mimalloc
cargo build --release -p cuttlefish-rs-cli --no-default-features --features mimalloc

The graph construction pipeline is a library crate, so it can be driven from Rust directly rather than through the CLI:

[dependencies]
cuttlefish-rs = "=3.0.0"

API documentation can be generated locally:

Terminal window
cargo doc --workspace --no-deps --open
Terminal window
cargo test --workspace

The compatibility test crate asserts exact unitig and base counts against fixtures checked into the repository, canonicalizing unitig strand and cyclic rotation before comparing.