Skip to main content

turbo-picard

CI PyPI DOI

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

For a containerized trial, use the published release image:

docker run --rm ghcr.io/dnncha/turbo-picard:0.1.10 --version

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 existing picard calls 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=VALUE arguments 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:

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, and trial are 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.11. It publishes Linux x86_64 and macOS Apple Silicon wheels plus a source distribution.

The submitted Bioconda recipe PR covers the main package and an optional shim. Use PyPI or the container image until Bioconda accepts the PR and the packages appear in its indexes. 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

turbo_picard-0.1.11.tar.gz (208.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

turbo_picard-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

turbo_picard-0.1.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (8.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

turbo_picard-0.1.11-py3-none-macosx_11_0_arm64.whl (7.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

turbo_picard-0.1.11-py3-none-macosx_10_12_x86_64.whl (7.5 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file turbo_picard-0.1.11.tar.gz.

File metadata

  • Download URL: turbo_picard-0.1.11.tar.gz
  • Upload date:
  • Size: 208.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for turbo_picard-0.1.11.tar.gz
Algorithm Hash digest
SHA256 d3a5ad7964d0e6dcf2f91f010431c10bf2099af9c11e5dc1b00e58f33e83e687
MD5 a41b69114b9ce1faa5ba8784e3bfbade
BLAKE2b-256 c1d504ac571ec4d5efe925bdb4a9c8083931edfa76088570f3125d103c76fffc

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.11.tar.gz:

Publisher: publish-pypi.yml on dnncha/turbo-picard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbo_picard-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for turbo_picard-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f72bad4f045d435450cfc8f11e405324a20fa8c2db14ab42d3bb8bcc0fc72c49
MD5 b33f159d06e668a737f95585dbdb45b2
BLAKE2b-256 bf4b5d3c018a1bdb6c87b55bc22eeef81710b28e38393d7975f364c99e20319f

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.11-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on dnncha/turbo-picard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbo_picard-0.1.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for turbo_picard-0.1.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a0a50d9bf2adefb4b437ac9be7f1e7cdc0d9faa8253d151a32620275e7752fbd
MD5 38cf078f132c8d124fcb2c6cfca58a76
BLAKE2b-256 05e15b36ec9607ef25b663de01be497a06c1c0a7ccd43c83bbc8668c93023769

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.11-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on dnncha/turbo-picard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbo_picard-0.1.11-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turbo_picard-0.1.11-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2ed9819b42ce7d184b5f5c9bd165c333889128c18b6e5dd17d8cc194a8b509df
MD5 f0e01f80345124d0e30c7dc64b0ad65b
BLAKE2b-256 77c64097e471400fac3bece1ee321d734264131ad80ba40e37a6ee953a45facd

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.11-py3-none-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on dnncha/turbo-picard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file turbo_picard-0.1.11-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for turbo_picard-0.1.11-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6f4fc055af32bce1eff60a1f19288648c44d6d12c26b1f2b28160fef09d382ec
MD5 761a094d4cda0d9a880c0c4e520d4074
BLAKE2b-256 73e17a8a8cf03a5c22cac78e57035bceda54ce426173bdc317254973d80665ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.11-py3-none-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on dnncha/turbo-picard

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.11 This release

5 files

0.1.10

3 files

0.1.9

3 files

0.1.8

3 files

0.1.7

3 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page