Installation
Prebuilt binaries
Section titled “Prebuilt binaries”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:
curl --proto '=https' --tlsv1.2 -LsSf \ https://github.com/COMBINE-lab/cuttlefish/releases/latest/download/cuttlefish-rs-cli-installer.sh | shCuttlefish is also on bioconda:
conda install -c bioconda cuttlefishFrom crates.io
Section titled “From crates.io”With a Rust toolchain installed:
cargo install cuttlefish-rs-cliThis installs the single binary cuttlefish.
From source
Section titled “From source”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.
git clone https://github.com/COMBINE-lab/cuttlefish.gitcd cuttlefishcargo build --releaseThe executable is written to target/release/cuttlefish. To install it under a
Cargo-style prefix:
cargo install --path crates/cuttlefish-rs-cliAllocators
Section titled “Allocators”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:
# system allocatorcargo build --release -p cuttlefish-rs-cli --no-default-features
# mimalloccargo build --release -p cuttlefish-rs-cli --no-default-features --features mimallocAs a library
Section titled “As a library”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:
cargo doc --workspace --no-deps --openVerifying the build
Section titled “Verifying the build”cargo test --workspaceThe compatibility test crate asserts exact unitig and base counts against fixtures checked into the repository, canonicalizing unitig strand and cyclic rotation before comparing.