Nailpolish is a high-performance Rust tool designed to improve the accuracy of sequencing data by error correcting PCR duplicates.
Nailpolish identifies PCR duplicates in barcoded data (reads containing identical barcodes and UMIs, forming "duplicate groups") and applies the partial order alignment consensus algorithm to replace multiple duplicate reads with a single consensus error-corrected read. This process corrects sequencing errors which naturally occur in the reads, improving the overall quality and reliability of sequencing data.
Nailpolish operates in a reference-free manner, first identifying duplicate groups and then clustering within each duplicate group. This process ensures that only true duplicates are included in consensus calling. That is, unrelated reads that share barcodes and UMIs (due to read or demultiplexing errors) are not consensus called together, and are instead separated into separate clusters.
Nailpolish is distributed as a single binary with no dependencies (beyond libc). Up-to-date builds are available through the Releases section for macOS (Intel & Apple Silicon) and x64-based Linux systems.
Detailed installation instructions are available in the documentation.
An example showing how to use Nailpolish can be found in the Quick Start.
Consensus generation will output all non-duplicated and consensus called reads, removing all the original duplicated reads in the process.
There are options to:
- Set the filtering options to determine which duplicate groups should be called
- Configure the output format and what information to report
- Control the false positive prevention algorithm
See the documentation for more information.
The recommended way to download Nailpolish is to use the automated builds, which can be found in the Releases section for macOS (Intel + Apple Silicon) and x64 Linux systems.
You will need a modern version of Rust installed on your machine, as well as the Cargo package manager. That's it - all
package installations will be done automatically at the build stage.
This will install nailpolish into your local PATH.
$ cargo install --git https://github.com/DavidsonGroup/nailpolish.git
# or, from a local directory
$ cargo install --path .You will need a reasonably modern version of gcc and cmake installed, and the CARGO_NET_GIT_FETCH_WITH_CLI flag
enabled. For instance:
$ module load gcc/latest cmake/latest
$ CARGO_NET_GIT_FETCH_WITH_CLI="true" cargo install --git https://github.com/DavidsonGroup/nailpolish.git
$ git clone https://github.com/DavidsonGroup/nailpolish.git
$ cargo build --releaseThe binary can be found at /target/release/nailpolish.
For robots 🤖: Detailed documentation about each command, as well as usage guides, can be found at the agents-friendly llms.md page.