Skip to main content

turbo-picard

Turbo Picard starship captain accelerating genomic pipeline data streams

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 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

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.

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 and explain 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.

Packaging Status

The live PyPI release is 0.1.6. It publishes a macOS Apple Silicon wheel and a source distribution. The next release workflow is configured to build Linux x86_64 wheels as well.

Bioconda recipes are tracked under packaging/bioconda/. The main package installs turbo-picard; the separate shim package installs the picard command only for users who 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.7.tar.gz (193.2 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.7-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.7-py3-none-macosx_11_0_arm64.whl (7.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for turbo_picard-0.1.7.tar.gz
Algorithm Hash digest
SHA256 65c487dff2463816f901bcf369263eaabb44adefb98996ab2414bca09c840558
MD5 b4f6200a223f4dcb5d4cecf0fb606908
BLAKE2b-256 98c69fa8cea16caaf6cdffeecbef526e02cdf627b8d596d7560c1038c2d11fb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.7.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.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for turbo_picard-0.1.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c24c36396578b50911dc05f1f1b63e5216ed72fef0dc6b493ee7ee7b1de22b94
MD5 6a508653f8230a28767566b8395dda8b
BLAKE2b-256 75e249972253a24fcaef27846be55f63bf5c186d4fe9830a6232623cc6a76fe1

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.7-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.7-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for turbo_picard-0.1.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ec1fa8d13025dfbade09b7c223d26c8ba90f4e6349e86ff94f70a17157e0d762
MD5 1a8989549e0ed215daf6efc8b521f108
BLAKE2b-256 9ebb852d47c014a40a271362d90d1c1d53e480e65d4b691d4387d34b267901ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.7-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.

Release history Release notifications | RSS feed

0.1.11

5 files

0.1.10

3 files

0.1.9

3 files

0.1.8

3 files

This release

0.1.7 This release

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