turbo-picard
Faster Rust implementations of common Picard commands, built for Picard-shaped pipelines.
turbo-picard keeps the workflow interface familiar: Picard command names,
KEY=VALUE arguments, and an optional picard compatibility shim. Accelerated
commands run natively. Commands outside the native surface can delegate to
upstream Picard when fallback is configured.
Use it when you already have Picard steps in WDL, Nextflow, Snakemake, or shell pipelines and want to test faster execution without rewriting task interfaces.
Quick Start
Install from PyPI:
python3 -m pip install turbo-picard
Installing from PyPI currently gives you both commands:
turbo-picard: the explicit command for evaluation and normal use.picard: a compatibility shim for environments where you deliberately want existingpicardcalls to resolve to this package.
Use the explicit turbo-picard command while testing. Add the shim to a
pipeline environment only after the specific commands you need have been
checked.
Check the install:
turbo-picard --version
turbo-picard MarkDuplicates --help
turbo-picard doctor
turbo-picard trial MarkDuplicates I=input.bam O=marked.bam M=metrics.txt
Run one familiar command:
turbo-picard MarkDuplicates I=input.bam O=marked.bam M=metrics.txt
From a repository checkout:
cargo install --locked --path crates/turbo-picard-cli --bin turbo-picard --bin picard
When It Helps
- You already run Picard commands and want to trial one slow step first.
- You need Picard-style command names and
KEY=VALUEarguments to stay stable. - You want a command-by-command rollout with upstream Picard available for unsupported or unchecked behavior.
- You can compare outputs on a representative BAM, CRAM, FASTQ, VCF, or metrics file before changing the workflow.
Good first trials are usually MarkDuplicates, SortSam, SamToFastq,
FastqToSam, FixMateInformation, BuildBamIndex, and repeated metrics
commands.
Use turbo-picard trial <PicardCommand> ... to print a side-by-side Picard and
turbo-picard evaluation contract before changing a workflow.
When To Stay With Picard
- You need an option or command that is not inside the documented native scope and cannot use fallback.
- You require Picard-equivalent chart rendering rather than checked metrics text.
- You have not compared the exact command, input shape, sidecars, metrics, exit code, and error behavior your workflow depends on.
- You need broad cohort evidence before trying a representative shard.
Documentation
The full docs are on Read the Docs:
https://turbo-picard.readthedocs.io/en/latest/
Useful starting points:
- Quickstart
- Is this for you?
- Choose your first command
- Evaluation playbook
- Command coverage
- Picard alternatives
- Trying it in a pipeline
- Parity guide
- Fallback to Picard
- Benchmarks
- Citation
- Packaging
- Troubleshooting
Starter workflow files live in packaging/workflows/.
The smallest trial shape is
packaging/workflows/one-command-trial.md.
Migration patterns that usually keep the surrounding workflow stable include
per-read-group SamToFastq, sequential-shard FastqToSam, and
mate-repair boundaries around FixMateInformation.
Benchmarks
The saved public benchmark suite compares native turbo-picard commands against
Picard 3.4.0 and checks stable outputs before reporting speed. Current saved
results report 32/32 parity checks passing, with 94.36x top speedup:
UpdateVcfSequenceDictionary, 6.86x floor speedup: RevertSam, 26.72x
median speedup, and 24.94x geometric mean speedup.
Summary: 32/32 PASS; 94.36x top speedup: UpdateVcfSequenceDictionary;
6.86x floor speedup: RevertSam; 26.72x median speedup; 24.94x
geometric mean speedup.
Benchmark details, scope notes, real-data evidence, and reproduction commands
are in the benchmark docs.
The parity guide
explains what the comparisons do and do not prove.
For CollectBaseDistributionByCycle, CollectGcBiasMetrics,
CollectInsertSizeMetrics, MeanQualityByCycle, and
QualityScoreDistribution, metrics text is the parity target; chart outputs are
lightweight PDF summaries, not Picard-equivalent rendered plots.
Saved benchmark run:
- Date:
2026-06-13 - Command:
python3 tools/bench_suite.py --repeats 3 --skip-build - Raw log:
docs/site/assets/bench-suite-output.txt - benchmark exceptions:
AccelerationStatus,doctor,explain, andtrialare utility commands, not Picard workload comparisons.
| Command | Speedup | Parity |
|---|---|---|
| UpdateVcfSequenceDictionary | 94.36x | PASS |
| BuildBamIndex | 69.26x | PASS |
| NormalizeFasta | 67.11x | PASS |
| GatherVcfs | 53.80x | PASS |
| CreateSequenceDictionary | 47.83x | PASS |
| MergeVcfs | 47.23x | PASS |
| CollectInsertSizeMetrics | 40.66x | PASS |
| MeanQualityByCycle | 36.74x | PASS |
| QualityScoreDistribution | 34.04x | PASS |
| CollectBaseDistributionByCycle | 33.08x | PASS |
| SamToFastq | 29.06x | PASS |
| CollectMultipleMetrics | 28.39x | PASS |
| IntervalListTools | 27.89x | PASS |
| CollectGcBiasMetrics | 27.72x | PASS |
| ValidateSamFile | 27.62x | PASS |
| SortSam | 26.72x | PASS |
| SortVcf | 25.67x | PASS |
| CollectAlignmentSummaryMetrics | 25.63x | PASS |
| AddOrReplaceReadGroups | 24.48x | PASS |
| CleanSam | 21.61x | PASS |
| ViewSam | 21.11x | PASS |
| BedToIntervalList | 19.89x | PASS |
| MarkDuplicates | 17.68x | PASS |
| CollectQualityYieldMetrics | 17.58x | PASS |
| MergeSamFiles | 17.16x | PASS |
| CollectWgsMetrics | 15.42x | PASS |
| ReplaceSamHeader | 14.20x | PASS |
| LiftoverVcf | 14.17x | PASS |
| FixMateInformation | 10.35x | PASS |
| SetNmMdAndUqTags | 9.34x | PASS |
| FastqToSam | 7.40x | PASS |
| RevertSam | 6.86x | PASS |
Release evidence checks:
python3 tools/update_real_data_manifest.py
python3 tools/verify_benchmark_log_evidence.py
python3 tools/verify_benchmark_suite_coverage.py
python3 tools/verify_benchmark_thresholds.py
python3 tools/verify_real_data_evidence.py
python3 tools/verify_real_data_evidence.py --release-ready
Real-data evidence lives in benchmarks/real-data/ and records pinned input
sources, command scopes, and input SHA-256 hashes. Current release-candidate
dataset IDs are gatk-na12878-mito, picard-snvq, and
gatk-na12878-mito-cram.
Workflow evaluation
The project publishes a workflow validation protocol, a compatibility contract, and a production-scale benchmark format. Use these before changing a workflow. The opt-in Nextflow process candidate is documented under packaging/nf-core.
A command-level speedup is not a universal replacement claim. Keep upstream Picard available until representative BAM/CRAM evidence, output parity, failure behaviour, and independent review pass for the exact workflow.
Packaging Status
The live PyPI release is 0.1.9. It publishes Linux x86_64 and macOS Apple
Silicon wheels plus a source distribution.
Bioconda recipes are tracked under packaging/bioconda/.
The main package installs turbo-picard; the separate shim package installs the
picard command only for environments that choose it.
Citation
Cite the archived turbo-picard release you used with CITATION.cff.
Benchmark and validation inputs should be cited separately with immutable source
URLs, commits or accessions, and input SHA-256 hashes.
Docs source lives in docs/. JOSS submission notes are tracked in
docs/joss-submission.rst.
Contributing
Bug reports, parity evidence, documentation fixes, and small command-coverage
improvements are welcome. Start with CONTRIBUTING.md and
the development docs.
Support: SUPPORT.md. Security: SECURITY.md.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file turbo_picard-0.1.9.tar.gz.
File metadata
- Download URL: turbo_picard-0.1.9.tar.gz
- Upload date:
- Size: 199.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a2191f6e728961e9dae5a74adc0dac82254fe867a6e2f6d93a6edc50dac4ad28
|
|
| MD5 |
422cf779273576a6784c7e387cbf3284
|
|
| BLAKE2b-256 |
2820d45eec9f38105f4f81476e32b09f8b64f585af3dfe4af38f03420b4bffb2
|
Provenance
The following attestation bundles were made for turbo_picard-0.1.9.tar.gz:
Publisher:
publish-pypi.yml on dnncha/turbo-picard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turbo_picard-0.1.9.tar.gz -
Subject digest:
a2191f6e728961e9dae5a74adc0dac82254fe867a6e2f6d93a6edc50dac4ad28 - Sigstore transparency entry: 2189950439
- Sigstore integration time:
-
Permalink:
dnncha/turbo-picard@7ebef02d8db346c55ba8bb5a82558875e8aa3cfa -
Branch / Tag:
refs/tags/v0.1.9 - Owner: https://github.com/dnncha
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@7ebef02d8db346c55ba8bb5a82558875e8aa3cfa -
Trigger Event:
release
-
Statement type:
File details
Details for the file turbo_picard-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: turbo_picard-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 8.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67f31f7be623dcee0705c5d0f6739da0ca8c642b3913b80d60f90ea684a2eb5e
|
|
| MD5 |
0f73ba2ee66515e2f8009530e29d1a13
|
|
| BLAKE2b-256 |
47a37360e413a2a9c1992070f6f3ea49239282c5c9a19356f03c395ed1278c65
|
Provenance
The following attestation bundles were made for turbo_picard-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
publish-pypi.yml on dnncha/turbo-picard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turbo_picard-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
67f31f7be623dcee0705c5d0f6739da0ca8c642b3913b80d60f90ea684a2eb5e - Sigstore transparency entry: 2189950518
- Sigstore integration time:
-
Permalink:
dnncha/turbo-picard@7ebef02d8db346c55ba8bb5a82558875e8aa3cfa -
Branch / Tag:
refs/tags/v0.1.9 - Owner: https://github.com/dnncha
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@7ebef02d8db346c55ba8bb5a82558875e8aa3cfa -
Trigger Event:
release
-
Statement type:
File details
Details for the file turbo_picard-0.1.9-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: turbo_picard-0.1.9-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 7.9 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28a932c460f28f2335c4f5613ef1405b0321a743b27d71a6225d44ec70c61974
|
|
| MD5 |
c26bd1225885eb9e96fb3e95d66d820e
|
|
| BLAKE2b-256 |
b5c5a2007d3f1989bc5a0e13cf71c030689e6e57f1308cbfbbe7caa69e0491bb
|
Provenance
The following attestation bundles were made for turbo_picard-0.1.9-py3-none-macosx_11_0_arm64.whl:
Publisher:
publish-pypi.yml on dnncha/turbo-picard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
turbo_picard-0.1.9-py3-none-macosx_11_0_arm64.whl -
Subject digest:
28a932c460f28f2335c4f5613ef1405b0321a743b27d71a6225d44ec70c61974 - Sigstore transparency entry: 2189950596
- Sigstore integration time:
-
Permalink:
dnncha/turbo-picard@7ebef02d8db346c55ba8bb5a82558875e8aa3cfa -
Branch / Tag:
refs/tags/v0.1.9 - Owner: https://github.com/dnncha
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@7ebef02d8db346c55ba8bb5a82558875e8aa3cfa -
Trigger Event:
release
-
Statement type: