Skip to main content

Turbo Picard

CI PyPI DOI

Documentation · Command coverage · Evaluate on your data · Research

Run a selected Picard step in Rust

Run selected Picard tools in Rust, using the command names and arguments your pipelines already understand. Evaluate one command before changing a pipeline.

Turbo Picard is built for teams maintaining SAM/BAM/CRAM, VCF and sequencing-QC steps in Nextflow, WDL, Snakemake and shell workflows. Native commands avoid the JVM; the documented interface keeps migration local to the task you replace.

Start with one representative input. Native coverage is command- and option-specific; this is not the full upstream suite. Keep Picard for work outside the documented 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.

Compact, native-only automation

Version 0.1.15 improves native MarkDuplicates handling for coordinate ties, unplaced reads, and repeated read names across read groups. It bounds a speculative shortcut and lowers peak memory on the checked-in large spill fixtures. See the release notes for the measured runtime and memory trade-off and the evidence limits.

Version 0.1.13 adds capabilities --json --command MarkDuplicates for compact discovery, executable argument arrays in trial JSON, and the strict TURBO_PICARD_REQUIRE_NATIVE=1 policy. See the agentic-coder guide. Inspection reports describe command scope, not proof that a particular input or option is validated.

Quick Start

Install from PyPI:

python3 -m pip install turbo-picard==0.1.15

For a containerized trial, use the published release image:

docker run --rm ghcr.io/dnncha/turbo-picard:0.1.15 --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

Compare before changing a workflow

The repository includes an evaluator that runs both implementations in separate output paths and records versions, timings and output digests. It does not upload your data. See the real-data evaluation guide for a copyable command and the interpretation of a match or mismatch.

The evaluator in this source checkout uses disk-backed sorting for large comparisons, preserves existing evaluation directories, and retains failed runs for diagnosis. The evaluator records command runtimes separately from comparison work; improvements to its sorting helper do not establish faster native commands.

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: installation, command scope, evaluation, and maintenance.

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.

Benchmark evidence

The saved suite records 32 command comparisons against Picard 3.4.0, each checked against its specified output contract. These are small-fixture results: startup overhead contributes substantially to the measured ratios. The saved suite reports a 22.88x minimum, 84.52x geometric mean, and 272.12x maximum speedup on those fixtures. In the saved MarkDuplicates case, the generator used reads=50000; median wall times were 0.075464 seconds for Turbo Picard and 2.238986 seconds for Picard across three runs. This is not a whole-genome performance estimate.

See the benchmark guide for methods and real-data scope, the saved record for all 32 measurements and reproduction commands, and the parity guide for what was compared. Metrics-text agreement does not establish Picard-equivalent charts.

Cheerful Duck Research publishes our broader bioinformatics software investigations, reproduction material, and corrections.

Saved benchmark record

Expand all measurements, input provenance, and reproduction commands

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.51x median speedup, and 84.52x geometric mean speedup.

Read these as small-fixture measurements, not whole-genome speedups. For example, the saved MarkDuplicates case used the generator's reads=50000 setting, with median wall times of 0.075464 seconds for Turbo Picard and 2.238986 seconds for Picard across three runs. Startup overhead matters at this scale. The reported speedup is the median of paired-run ratios, which need not equal the ratio of those independent medians. The machine-readable evidence now preserves timings, repeat counts and generator parameters alongside ratios.

Summary: 32/32 PASS; 272.12x top speedup: NormalizeFasta; 22.88x floor speedup: SetNmMdAndUqTags; 99.51x 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.

Check the saved real-data record

The benchmarks/real-data/ manifest records pinned inputs for gatk-na12878-mito, picard-snvq, and gatk-na12878-mito-cram. From a checkout, use the existing evidence tools:

python3 tools/update_real_data_manifest.py
python3 tools/verify_real_data_evidence.py
python3 tools/verify_real_data_evidence.py --release-ready

These commands check the repository's saved evidence. They do not validate a new input file or replace a comparison of your own workflow.

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 current source release is 0.1.15. Release builds target Linux x86_64 and ARM64, macOS Intel and Apple Silicon, plus a source distribution. Publication is gated on artifact validation and installation smoke tests; the release page and PyPI identify the published artifacts. The Linux ARM64 wheel is cross-built and artifact-validated.

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.

Metadata

Release files for turbo-picard 0.1.15

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for turbo-picard 0.1.15
File Size Uploaded
turbo_picard-0.1.15.tar.gz 256.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for turbo-picard 0.1.15
File
turbo_picard-0.1.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64 Details
turbo_picard-0.1.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl Python 3 none Linux glibc 2.17+ ARM64 Details
turbo_picard-0.1.15-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
turbo_picard-0.1.15-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 37.0 MB

Release files / turbo_picard-0.1.15.tar.gz

Download URL turbo_picard-0.1.15.tar.gz
Size 256.9 kB
Tags Source
SHA-256 checksum
How to use checksums
99f74d5b6ad545dcbe822722ea01084e90e9e91827689adec3b5562eb0fb3061
BLAKE2b-256 checksum
How to use checksums
5a7875d47211f21551ace0f849c49e7df135effd9e9feae657ab9bade810d12e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / turbo_picard-0.1.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL turbo_picard-0.1.15-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 9.5 MB
Tags Linux glibc 2.17+ x86-64 Python 3
SHA-256 checksum
How to use checksums
c80b7366a91da987cc67279b95a08930988c22516d031a41da4983308beaea25
BLAKE2b-256 checksum
How to use checksums
0fe0bd745bfdbe10c63e86226aabc0abbe6ef52e49213811f0a672bfc35c1072
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / turbo_picard-0.1.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL turbo_picard-0.1.15-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 9.4 MB
Tags Linux glibc 2.17+ ARM64 Python 3
SHA-256 checksum
How to use checksums
11ab20d327a990ac84a6e7593ab43bc5e6571da6efe29aeb03c04a90cbe6b43c
BLAKE2b-256 checksum
How to use checksums
81f0a7fd201c4569769ef9ab8e2397164d81427f7eed8cf57cdef06df36c8cb7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / turbo_picard-0.1.15-py3-none-macosx_11_0_arm64.whl

Download URL turbo_picard-0.1.15-py3-none-macosx_11_0_arm64.whl
Size 9.1 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
691a31cacf427d10fba5b7a393bc19b585358ad49c719327915db04f03e13095
BLAKE2b-256 checksum
How to use checksums
e4738cb3b0cc0c9a8040b1a325876e14ba4b9db0ff84bdfb1d703368124aaea0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / turbo_picard-0.1.15-py3-none-macosx_10_12_x86_64.whl

Download URL turbo_picard-0.1.15-py3-none-macosx_10_12_x86_64.whl
Size 8.7 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
4ae8b4ddff9e6aa2b8e9261897d0ea50f6ddeb279e83d74446fd86a5fa4a2535
BLAKE2b-256 checksum
How to use checksums
46229ac45b932e4590fa0896efb7031a703d4a26404f15b17bf8bcf861165953
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.15 This release

5 release files

0.1.14

5 release files

0.1.12

5 release files

0.1.11

5 release files

0.1.10

3 release files

0.1.9

3 release files

0.1.8

3 release files

0.1.7

3 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

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