Skip to main content

turbo-picard

CI PyPI DOI

Evaluate selected Picard commands in Rust when a known preprocessing or QC step is a runtime or memory bottleneck.

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.

It is for bioinformatics teams maintaining Picard steps in WDL, Nextflow, Snakemake, or shell pipelines. Start with one representative command, compare the outputs your downstream workflow consumes, and keep upstream Picard for commands or options outside the documented native scope.

For coding agents and workflow generators, inspect the complete decision surface in one call:

turbo-picard capabilities --json

The schema-versioned response contains every Picard command's native/fallback status and trial fit together with the checked-in parity-gated benchmark evidence. Use turbo-picard trial --json <PicardCommand> ... for the exact task being considered. See the agentic-coder guide for the selection rule and safe substitution pattern.

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.11 --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 and print a trial contract before changing a workflow:

turbo-picard --version
turbo-picard MarkDuplicates --help
turbo-picard doctor
turbo-picard trial MarkDuplicates I=input.bam O=marked.bam M=metrics.txt

The trial command prints matching Picard and turbo-picard invocations, declared outputs, fallback state, and comparison notes. Then run the chosen command on a representative input:

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. If you run a real one-command evaluation, share the result through the trial report issue form; successful matches, mismatches, and adoption blockers are all useful evidence. If GitHub does not offer new-issue creation, add the same redacted report as a comment on the public trial report thread. From a repository checkout, tools/compare_real_data.py --shareable-report can create a reviewed, privacy-conscious starting point for that report.

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 272.12x top speedup: NormalizeFasta, 22.88x floor speedup: SetNmMdAndUqTags, 99.56x median speedup, and 84.52x geometric mean speedup.

Summary: 32/32 PASS; 272.12x top speedup: NormalizeFasta; 22.88x floor speedup: SetNmMdAndUqTags; 99.56x median speedup; 84.52x 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-08-14
  • Command: python3 tools/bench_suite.py --repeats 3 --skip-build
  • Raw log: docs/site/assets/bench-suite-output.txt
  • benchmark exceptions: AccelerationStatus, capabilities, doctor, explain, and trial are utility commands, not Picard workload comparisons. CollectHsMetrics has separate ALL_READS and sidecar parity coverage, plus a real-data comparator path for pinned WES/capture intervals; representative capture-data performance evidence is still pending.
Command Speedup Parity
NormalizeFasta 272.12x PASS
BuildBamIndex 243.53x PASS
UpdateVcfSequenceDictionary 207.52x PASS
CollectGcBiasMetrics 196.45x PASS
CreateSequenceDictionary 152.62x PASS
GatherVcfs 130.70x PASS
LiftoverVcf 127.28x PASS
CollectMultipleMetrics 122.66x PASS
CollectInsertSizeMetrics 117.34x PASS
CleanSam 115.42x PASS
MergeVcfs 112.13x PASS
MeanQualityByCycle 108.66x PASS
CollectQualityYieldMetrics 108.64x PASS
QualityScoreDistribution 107.17x PASS
ReplaceSamHeader 101.84x PASS
ValidateSamFile 99.56x PASS
IntervalListTools 99.46x PASS
CollectBaseDistributionByCycle 98.01x PASS
SortVcf 89.01x PASS
CollectAlignmentSummaryMetrics 83.49x PASS
BedToIntervalList 79.78x PASS
ViewSam 79.58x PASS
AddOrReplaceReadGroups 77.78x PASS
SamToFastq 77.74x PASS
CollectWgsMetrics 50.81x PASS
MergeSamFiles 35.49x PASS
SortSam 35.15x PASS
FixMateInformation 31.98x PASS
FastqToSam 31.29x PASS
MarkDuplicates 28.70x PASS
RevertSam 24.19x PASS
SetNmMdAndUqTags 22.88x 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 latest provider-verified PyPI release is 0.1.11. It publishes Linux x86_64 and macOS Apple Silicon wheels plus a source distribution. The current source release is 0.1.12; the matching tag, package, container, and provider checks remain separate release gates.

Read the release notes for the release scope and evidence boundaries.

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.12.tar.gz (236.5 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.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (9.5 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

turbo_picard-0.1.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (9.3 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

turbo_picard-0.1.12-py3-none-macosx_11_0_arm64.whl (9.1 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

turbo_picard-0.1.12-py3-none-macosx_10_12_x86_64.whl (8.7 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for turbo_picard-0.1.12.tar.gz
Algorithm Hash digest
SHA256 c2d8404f328e9c667d8983d61f2fb2e335234937942125b8569faf1683d1ab7d
MD5 bd18d6eba01329d43936fc3b4dc96fcf
BLAKE2b-256 790dd40778a527fe479e8f954dcb136d4fe48b6ff8c1536eaee29f940592ab39

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for turbo_picard-0.1.12-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 51905dc43bf34c976394d7fca056e911b54aea69b5a2c8ef1ccb2c60cdb958a8
MD5 d93698749a5ce2b883558bb6f3f6fb35
BLAKE2b-256 889dd8f7b96ff8eb524b8f3a43dcff18e1f193b6599a526f04acb6947b1c2228

See more details on using hashes here.

Provenance

The following attestation bundles were made for turbo_picard-0.1.12-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.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for turbo_picard-0.1.12-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c81878fcc6ac31fd93b15e6b0fca07161618ad2bb40dec90385aeb4f1379921f
MD5 96a180e845e19e9104250e2b650e6f7a
BLAKE2b-256 b91171086716f65030538c89de7aff83bbeeee0db30bcbafd796e30a9f1ef13d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for turbo_picard-0.1.12-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 888e47ea2f34bfb2cc62824c67fac125442863c9ae51c7350182058b0a9f5cb0
MD5 2793b08b6815be1861866277c28a8586
BLAKE2b-256 54b21c3bda37581bdd54f98e3105dd74d47f9dc49eceb7ba6dbdb155a29f7bbe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for turbo_picard-0.1.12-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dc61fafa518a86ec6018153f3472514622af16429df87ae303d87426ec487580
MD5 942751728c692f44cdce60d25ae41238
BLAKE2b-256 67a6f2e19cf3bdf10946e8ae817302287e31a959fdda8d156d6e331fe49ee6e6

See more details on using hashes here.

Provenance

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

0.1.13

5 files

This release

0.1.12 This release

5 files

0.1.11

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

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page