diff --git a/library-skills/parabricks/SKILL.md b/library-skills/parabricks/SKILL.md index 33d4dc70..c9d40b4f 100644 --- a/library-skills/parabricks/SKILL.md +++ b/library-skills/parabricks/SKILL.md @@ -6,7 +6,7 @@ description: >- license: CC-BY-4.0 AND Apache-2.0 metadata: author: "Angel Pizarro " - version: "1.3.0" + version: "1.4.0" tags: - parabricks - genomics @@ -85,9 +85,9 @@ clinical interpretation, or promise exact runtime without benchmark data. ## Instructions -1. Identify the requested release. The option references cover v4.7.1; examples +1. Identify the requested release. The option references cover v4.8.0; examples from another release are labeled. A software version and image tag can - differ: NVIDIA's 4.7.1 image is tagged `4.7.1-1`. Preserve the user's verified + differ: NVIDIA's 4.8.0 image is tagged `4.8.0-1`. Preserve the user's verified image selection; use [command-conventions.md](references/command-conventions.md) for the shared launch and validation contract. 2. Classify the request: @@ -209,3 +209,5 @@ the `pbrun` portion; the shared container envelope is documented once in - Overview: +- 4.8.0 release notes (changes from 4.7.1): + diff --git a/library-skills/parabricks/evals/evals.json b/library-skills/parabricks/evals/evals.json index f6ea82c1..55ca38ee 100644 --- a/library-skills/parabricks/evals/evals.json +++ b/library-skills/parabricks/evals/evals.json @@ -77,12 +77,12 @@ }, { "id": "parabricks-006", - "prompt": "I am preparing pbrun rna_fq2bam with Parabricks 4.7.1. My reference FASTA is GRCh37, but the STAR genome library was built from GRCh38. Can I use these together if I rename the contigs? Explain what needs to match and how to prepare a valid command. This is a planning question; do not run anything.", - "expected_output": "The agent rejects mixing a GRCh37 FASTA with a GRCh38 STAR genome library. Renaming contigs cannot reconcile different assemblies. It advises choosing one reference and rebuilding or obtaining a compatible STAR index from that reference, checking annotation/build consistency and the STAR version supported by Parabricks 4.7.1, then substituting those matching assets into a template. Any runnable template includes a read-input mode, --ref, --genome-lib-dir, --output-dir, and --out-bam; the output directory and final BAM are separate required arguments.", + "prompt": "I am preparing pbrun rna_fq2bam with Parabricks 4.8.0. My reference FASTA is GRCh37, but the STAR genome library was built from GRCh38. Can I use these together if I rename the contigs? Explain what needs to match and how to prepare a valid command. This is a planning question; do not run anything.", + "expected_output": "The agent rejects mixing a GRCh37 FASTA with a GRCh38 STAR genome library. Renaming contigs cannot reconcile different assemblies. It advises choosing one reference and rebuilding or obtaining a compatible STAR index from that reference, checking annotation/build consistency and the STAR version supported by Parabricks 4.8.0, then substituting those matching assets into a template. Any runnable template includes a read-input mode, --ref, --genome-lib-dir, --output-dir, and --out-bam; the output directory and final BAM are separate required arguments.", "assertions": [ "The agent identifies GRCh37 and GRCh38 as different assemblies and states that contig renaming cannot make the supplied FASTA and STAR index compatible.", "The agent recommends a STAR genome library built from the same reference sequence/build used by --ref, with consistent contig names and annotation where used.", - "The agent identifies the documented STAR 2.7.2a compatibility baseline for Parabricks 4.7.1 or verifies the supported STAR/index version from that release manual instead of recommending an arbitrary latest index.", + "The agent identifies the documented STAR 2.7.2a compatibility baseline for Parabricks 4.8.0 or verifies the supported STAR/index version from that release manual instead of recommending an arbitrary latest index.", "The proposed command uses matching --ref and --genome-lib-dir placeholders, includes a read-input mode and both --output-dir and --out-bam, and does not present the original mismatched assets as runnable.", "The agent provides planning guidance without executing commands or modifying reference assets." ], @@ -92,7 +92,7 @@ }, { "id": "parabricks-007", - "prompt": "With Parabricks 4.7.1, I need to index /data/sample.g.vcf.gz using pbrun indexgvcf. In Docker, /data is mounted read-only, and /results is writable. Can I use --out /results/sample.g.vcf.gz.tbi? Explain the actual output naming and give me a safe command plan that preserves the original GVCF. Do not execute it.", + "prompt": "With Parabricks 4.8.0, I need to index /data/sample.g.vcf.gz using pbrun indexgvcf. In Docker, /data is mounted read-only, and /results is writable. Can I use --out /results/sample.g.vcf.gz.tbi? Explain the actual output naming and give me a safe command plan that preserves the original GVCF. Do not execute it.", "expected_output": "The agent explains that indexgvcf uses --input and derives the .tbi path by appending .tbi to the input filename, with no documented --out override. It proposes a writable copy of the GVCF in /results and indexing that copy, giving /results/sample.g.vcf.gz.tbi while preserving /data and checking existing destination files before copying.", "assertions": [ "The agent states that pbrun indexgvcf does not document an --out option and does not invent an output-path override.", @@ -107,8 +107,8 @@ }, { "id": "parabricks-008", - "prompt": "Review the next step of a Parabricks 4.7.1 germline workflow. fq2bam produced /work/sample.markdup.bam and /work/sample.recal.txt using matching known-sites resources; ApplyBQSR has not been run. The reference is /ref/genome.fa. I need HaplotypeCaller to produce a diploid per-sample gVCF at /results/sample.g.vcf.gz, retaining the CPU GATK settings --min-pruning 4 and --pcr-indel-model NONE, without writing another BAM. Give the next pbrun command and explain whether the existing BAM qualities have changed and how the caller uses the report. All paths are inside the intended container and all resources match the sample and reference. This is command planning only; do not execute anything.", - "expected_output": "The agent distinguishes a BQSR report from an already recalibrated BAM and uses pbrun haplotypecaller with the existing BAM and --in-recal-file to apply recalibrated qualities during calling. It requests gVCF emission explicitly, preserves diploid calling, and passes the supported pruning/PCR settings as one --haplotypecaller-options string using the Parabricks 4.7.1 single-hyphen spelling. No separate ApplyBQSR BAM or rerun of fq2bam is needed.", + "prompt": "Review the next step of a Parabricks 4.8.0 germline workflow. fq2bam produced /work/sample.markdup.bam and /work/sample.recal.txt using matching known-sites resources; ApplyBQSR has not been run. The reference is /ref/genome.fa. I need HaplotypeCaller to produce a diploid per-sample gVCF at /results/sample.g.vcf.gz, retaining the CPU GATK settings --min-pruning 4 and --pcr-indel-model NONE, without writing another BAM. Give the next pbrun command and explain whether the existing BAM qualities have changed and how the caller uses the report. All paths are inside the intended container and all resources match the sample and reference. This is command planning only; do not execute anything.", + "expected_output": "The agent distinguishes a BQSR report from an already recalibrated BAM and uses pbrun haplotypecaller with the existing BAM and --in-recal-file to apply recalibrated qualities during calling. It requests gVCF emission explicitly, preserves diploid calling, and passes the supported pruning/PCR settings as one --haplotypecaller-options string using the Parabricks 4.8.0 single-hyphen spelling. No separate ApplyBQSR BAM or rerun of fq2bam is needed.", "assertions": [ "The agent explains that generating sample.recal.txt does not itself rewrite the base qualities in sample.markdup.bam; the caller can use the recalibration report internally.", "The proposed pbrun haplotypecaller command uses --ref /ref/genome.fa, --in-bam /work/sample.markdup.bam, and --in-recal-file /work/sample.recal.txt without requiring a second BAM or another fq2bam run.", @@ -122,7 +122,7 @@ }, { "id": "parabricks-009", - "prompt": "I am moving paired somatic calling to Parabricks 4.7.1. I already have /work/panel.vcf.gz and its .tbi, but the panel's ##contig headers include IDs without lengths. The matching GRCh38 reference is /work/GRCh38.fa with its .fai. The prepared BAMs are /work/tumor.bam (sample T1) and /work/normal.bam (sample N1). Give a command plan to use this existing panel in calling and produce a VCF with PON INFO annotations. Explain the header repair and which index/resources are needed at each step. Preserve the original panel and do not rebuild the panel from normal-sample BAMs. /work and /results are writable container paths; use new output names and do not execute anything.", + "prompt": "I am moving paired somatic calling to Parabricks 4.8.0. I already have /work/panel.vcf.gz and its .tbi, but the panel's ##contig headers include IDs without lengths. The matching GRCh38 reference is /work/GRCh38.fa with its .fai. The prepared BAMs are /work/tumor.bam (sample T1) and /work/normal.bam (sample N1). Give a command plan to use this existing panel in calling and produce a VCF with PON INFO annotations. Explain the header repair and which index/resources are needed at each step. Preserve the original panel and do not rebuild the panel from normal-sample BAMs. /work and /results are writable container paths; use new output names and do not execute anything.", "expected_output": "The agent repairs missing contig lengths in a new PON VCF.GZ using the matching reference .fai, builds a fresh tabix index for that changed file, and runs prepon to generate the additional .pon resource. It then runs paired mutectcaller with the repaired PON VCF.GZ path in --pon and the supplied tumor/normal sample labels. It uses postpon with the caller VCF and the same PON to create an annotated output, preserving the original panel and treating all commands as a plan.", "assertions": [ "The agent identifies contig names and lengths as prepon prerequisites and proposes repairing a new PON copy from /work/GRCh38.fa.fai, for example with bcftools reheader --fai; it preserves the original panel and does not suggest constructing a new panel from the BAMs.", @@ -137,10 +137,10 @@ }, { "id": "parabricks-010", - "prompt": "Review this planned Parabricks 4.7.1 command for Illumina WGS: pbrun deepvariant --ref /ref/GRCh38.fa --in-bam /data/sample.bam --mode shortread --proposed-variants /ref/candidates.vcf.gz --gvcf --run-partition --out-variants /results/sample.g.vcf.gz. I require both the proposed-candidate input and gVCF output. I added partitioning to improve throughput; should I also force more streams per GPU? Explain how these options interact and give the minimal revised command while preserving the analysis requirements. Hardware details and benchmark timings are not available. Do not inspect this machine or execute the command.", - "expected_output": "The agent identifies the documented Parabricks 4.7.1 interaction: combining --run-partition, --proposed-variants, and --gvcf produces a warning, ignores --run-partition, and can cause substantial slowdown. It retains the required proposed variants and gVCF output, omits the ignored partition flag, and keeps stream tuning at auto without hardware/benchmark evidence. It explains that removing an ignored flag clarifies effective behavior but does not prove a speedup.", + "prompt": "Review this planned Parabricks 4.8.0 command for Illumina WGS: pbrun deepvariant --ref /ref/GRCh38.fa --in-bam /data/sample.bam --mode shortread --proposed-variants /ref/candidates.vcf.gz --gvcf --run-partition --out-variants /results/sample.g.vcf.gz. I require both the proposed-candidate input and gVCF output. I added partitioning to improve throughput; should I also force more streams per GPU? Explain how these options interact and give the minimal revised command while preserving the analysis requirements. Hardware details and benchmark timings are not available. Do not inspect this machine or execute the command.", + "expected_output": "The agent identifies the documented Parabricks 4.8.0 interaction: combining --run-partition, --proposed-variants, and --gvcf produces a warning, ignores --run-partition, and can cause substantial slowdown. It retains the required proposed variants and gVCF output, omits the ignored partition flag, and keeps stream tuning at auto without hardware/benchmark evidence. It explains that removing an ignored flag clarifies effective behavior but does not prove a speedup.", "assertions": [ - "The agent identifies the specific three-option interaction in Parabricks 4.7.1 and states that --run-partition is ignored with a warning when --proposed-variants and --gvcf are both enabled.", + "The agent identifies the specific three-option interaction in Parabricks 4.8.0 and states that --run-partition is ignored with a warning when --proposed-variants and --gvcf are both enabled.", "The revised command retains --proposed-variants /ref/candidates.vcf.gz and --gvcf and removes --run-partition rather than dropping a required analysis input or output to obtain partitioning.", "The revised pbrun deepvariant command preserves the supplied reference, BAM, shortread mode or its documented default, and --out-variants /results/sample.g.vcf.gz.", "The agent explains that forcing more streams does not restore partition mode for this combination and leaves --num-streams-per-gpu at its documented auto default or omits the flag pending separate benchmarking.", @@ -152,7 +152,7 @@ }, { "id": "parabricks-011", - "prompt": "Review this draft for Parabricks 4.7.1: pbrun giraffe --gbz-name /ref/panel.gbz --dist-name /ref/panel.dist --minimizer-name /ref/panel.min --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --sample S1 --read-group lane1 --align-only --out-bam /results/S1.bam. I need a coordinate-sorted BAM without duplicate marking, in a single pbrun invocation. The validated, mutually compatible graph bundle also includes /ref/panel.zipcodes and /ref/paths.txt; use that path list for the BAM sequence-header order. Preserve read-group ID lane1, SM S1, LB libA, PL ILLUMINA, and PU FC1.1. Explain what is wrong with the draft and give the corrected command. These are container paths, hardware details are unavailable, and this is planning only: do not execute commands or inspect this machine.", + "prompt": "Review this draft for Parabricks 4.8.0: pbrun giraffe --gbz-name /ref/panel.gbz --dist-name /ref/panel.dist --minimizer-name /ref/panel.min --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --sample S1 --read-group lane1 --align-only --out-bam /results/S1.bam. I need a coordinate-sorted BAM without duplicate marking, in a single pbrun invocation. The validated, mutually compatible graph bundle (a GBZ version 1 graph with indexes built by vg v1.75.1) also includes /ref/panel.zipcodes and /ref/paths.txt; use that path list for the BAM sequence-header order. Preserve read-group ID lane1, SM S1, LB libA, PL ILLUMINA, and PU FC1.1. Explain what is wrong with the draft and give the corrected command. These are container paths, hardware details are unavailable, and this is planning only: do not execute commands or inspect this machine.", "expected_output": "The agent recognizes that giraffe --align-only emits an unsorted alignment BAM and replaces it with --no-markdups to retain sorting while skipping duplicate marking. It supplies the required zipcodes index and requested reference-path list from the compatible bundle, preserves the existing graph inputs, FASTQs and output, and maps every read-group field to the Giraffe-specific flags. It does not add a separate CPU sorting step, invent resources, or tune streams without hardware evidence.", "assertions": [ "The agent explains that --align-only does not coordinate-sort the BAM and removes it; the corrected command uses --no-markdups to produce sorted output without duplicate marking in one pbrun giraffe invocation.", @@ -167,12 +167,12 @@ }, { "id": "parabricks-012", - "prompt": "I want to migrate this upstream STAR-Fusion command to Parabricks 4.7.1: STAR-Fusion --genome_lib_dir /ref/ctat --chimeric_junction /data/Chimeric.out.junction --left_fq /data/R1.fq.gz --right_fq /data/R2.fq.gz --output_dir /results/fusions --out_prefix S1 --CPU 8 --min_FFPM 0.5 --FusionInspector inspect --verbose_level 3. The junction file, paired FASTQs, and CTAT library are compatible. A plain STAR alignment index is also available at /ref/star_index. The FFPM threshold and FusionInspector inspection are mandatory analysis requirements. Can pbrun starfusion replace this whole invocation? Give its supported command portion using the supplied paths, explain the non-equivalent options, and state how to preserve the mandatory analysis requirements. Do not execute anything or inspect hardware.", + "prompt": "I want to migrate this upstream STAR-Fusion command to Parabricks 4.8.0: STAR-Fusion --genome_lib_dir /ref/ctat --chimeric_junction /data/Chimeric.out.junction --left_fq /data/R1.fq.gz --right_fq /data/R2.fq.gz --output_dir /results/fusions --out_prefix S1 --CPU 8 --min_FFPM 0.5 --FusionInspector inspect --verbose_level 3. The junction file, paired FASTQs, and CTAT library are compatible. A plain STAR alignment index is also available at /ref/star_index. The FFPM threshold and FusionInspector inspection are mandatory analysis requirements. Can pbrun starfusion replace this whole invocation? Give its supported command portion using the supplied paths, explain the non-equivalent options, and state how to preserve the mandatory analysis requirements. Do not execute anything or inspect hardware.", "expected_output": "The agent explains that pbrun starfusion consumes the existing junction file and CTAT/STAR-Fusion resource library rather than raw FASTQs or a plain STAR index. It maps the supported I/O, prefix and worker options to the Parabricks spelling, treats verbosity as a boolean rather than a numeric equivalent, and identifies min_FFPM and FusionInspector as unsupported in this wrapper. It labels the pbrun command a partial migration and preserves mandatory analysis behavior by retaining the upstream stage or requiring a separately validated downstream implementation, with the read inputs retained for FusionInspector.", "assertions": [ "The pbrun starfusion command uses --chimeric-junction /data/Chimeric.out.junction, --genome-lib-dir /ref/ctat, --output-dir /results/fusions, --out-prefix S1, and --num-threads 8.", "The agent distinguishes the CTAT/STAR-Fusion resource library from /ref/star_index and explains that this pbrun tool consumes junctions; it does not pass the raw FASTQ flags to pbrun starfusion or rerun alignment unnecessarily.", - "The agent identifies --min_FFPM 0.5 and --FusionInspector inspect as upstream features not exposed by pbrun starfusion 4.7.1 and does not invent hyphenated equivalents or a generic pass-through mechanism.", + "The agent identifies --min_FFPM 0.5 and --FusionInspector inspect as upstream features not exposed by pbrun starfusion 4.8.0 and does not invent hyphenated equivalents or a generic pass-through mechanism.", "The agent explains that --verbose is boolean and cannot preserve upstream --verbose_level 3 exactly; any proposed pbrun command omits verbosity or uses --verbose without a numeric argument.", "The agent labels the pbrun command a partial migration, keeps the mandatory FFPM and FusionInspector work in the upstream workflow or a separately validated downstream stage with the FASTQs available, and does not claim full parity or execution after simply dropping those options." ], @@ -182,10 +182,10 @@ }, { "id": "parabricks-013", - "prompt": "Review this RNA migration draft for Parabricks 4.7.1: pbrun rna_fq2bam --ref /ref/GRCh38.fa --genome-lib-dir /ref/star --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --read-files-command zcat --out-bam /results/S1.bam --out-sam-unmapped Within_KeepPairs --out-chim-type WithinBAM HardClip --min-chim-segment 12 --two-pass-mode Basic --num-threads 16. My upstream STAR run used --outSAMunmapped Within KeepPairs, --chimOutType WithinBAM HardClip, and --runThreadN 16. For a multi-mapping mapped mate, our consumer requires a separate unmapped-mate record for every reported alignment, not just one copy somewhere in the BAM. Upstream STAR produced these records in unsorted BAM before a separate coordinate-sort step. This record-level contract is mandatory; separate FASTQs do not satisfy it. I also require coordinate sorting without duplicate marking and hard-clipped supplementary chimeric alignments. The supplied FASTA and STAR 2.7.2a index match. Explain whether one rna_fq2bam invocation can meet the whole contract, provide its valid supported portion with STAR outputs under /results/star, and identify what must remain on another path. These are container paths. Do not run anything or probe hardware.", - "expected_output": "The agent identifies that rna_fq2bam 4.7.1 cannot preserve the mandatory per-alignment unmapped-mate copies: Within_KeepPairs behaves like Within in its sorted output. It distinguishes this from ordinary unmapped-read inclusion and does not claim that every unmapped mate is absent. Fastx files are not an equivalent substitute. It explicitly labels the supported pbrun command a partial migration and retains an upstream path meeting the mandatory contract or a separately validated reconstruction. The command includes both --output-dir /results/star and an explicitly identified --out-bam for the supported portion; retaining /results/S1.bam or using a clearly labeled alternate filename to distinguish it from the complete upstream result is acceptable. It uses the single value WithinBAM_HardClip, keeps --min-chim-segment 12 and --two-pass-mode Basic, adds --no-markdups, and omits copied --num-threads 16 or uses auto while explaining workers per GPU stream. A command that silently drops the required per-alignment records does not achieve the requested replacement.", + "prompt": "Review this RNA migration draft for Parabricks 4.8.0: pbrun rna_fq2bam --ref /ref/GRCh38.fa --genome-lib-dir /ref/star --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --read-files-command zcat --out-bam /results/S1.bam --out-sam-unmapped Within_KeepPairs --out-chim-type WithinBAM HardClip --min-chim-segment 12 --two-pass-mode Basic --num-threads 16. My upstream STAR run used --outSAMunmapped Within KeepPairs, --chimOutType WithinBAM HardClip, and --runThreadN 16. For a multi-mapping mapped mate, our consumer requires a separate unmapped-mate record for every reported alignment, not just one copy somewhere in the BAM. Upstream STAR produced these records in unsorted BAM before a separate coordinate-sort step. This record-level contract is mandatory; separate FASTQs do not satisfy it. I also require coordinate sorting without duplicate marking and hard-clipped supplementary chimeric alignments. The supplied FASTA and STAR 2.7.2a index match. Explain whether one rna_fq2bam invocation can meet the whole contract, provide its valid supported portion with STAR outputs under /results/star, and identify what must remain on another path. These are container paths. Do not run anything or probe hardware.", + "expected_output": "The agent identifies that rna_fq2bam 4.8.0 cannot preserve the mandatory per-alignment unmapped-mate copies: Within_KeepPairs behaves like Within in its sorted output. It distinguishes this from ordinary unmapped-read inclusion and does not claim that every unmapped mate is absent. Fastx files are not an equivalent substitute. It explicitly labels the supported pbrun command a partial migration and retains an upstream path meeting the mandatory contract or a separately validated reconstruction. The command includes both --output-dir /results/star and an explicitly identified --out-bam for the supported portion; retaining /results/S1.bam or using a clearly labeled alternate filename to distinguish it from the complete upstream result is acceptable. It uses the single value WithinBAM_HardClip, keeps --min-chim-segment 12 and --two-pass-mode Basic, adds --no-markdups, and omits copied --num-threads 16 or uses auto while explaining workers per GPU stream. A command that silently drops the required per-alignment records does not achieve the requested replacement.", "assertions": [ - "The agent states that --out-sam-unmapped Within_KeepPairs behaves like Within in Parabricks 4.7.1 sorted output and cannot reproduce the required extra unmapped-mate record for each alignment of a multi-mapping mate; it distinguishes this from ordinary unmapped-read inclusion.", + "The agent states that --out-sam-unmapped Within_KeepPairs behaves like Within in Parabricks 4.8.0 sorted output and cannot reproduce the required extra unmapped-mate record for each alignment of a multi-mapping mate; it distinguishes this from ordinary unmapped-read inclusion.", "The agent rejects full migration under the mandatory per-alignment BAM-record contract and retains an upstream path or a separately validated reconstruction. It does not offer separate Fastx files as a substitute; an explicit discussion of that rejected alternative is unnecessary when the plan already satisfies this constraint.", "The supported pbrun rna_fq2bam portion includes the supplied FASTA, STAR library, paired FASTQs and zcat handler, --output-dir /results/star, and an explicit --out-bam. A clearly identified alternate BAM filename is acceptable for the partial result, especially when the upstream path produces /results/S1.bam.", "The command uses --out-chim-type WithinBAM_HardClip as one value, preserves --min-chim-segment 12 and --two-pass-mode Basic, and adds --no-markdups to keep sorting without duplicate marking.", @@ -197,7 +197,7 @@ }, { "id": "parabricks-014", - "prompt": "We are recovering reads from /data/archive.cram before realigning to GRCh38. The CRAM was encoded against /ref/GRCh37.fa; /ref/GRCh38.fa is the future alignment reference. Review this Parabricks 4.7.1 draft: pbrun bam2fq --ref /ref/GRCh38.fa --in-bam /data/archive.cram --out-prefix /results/recovered --out-suffixF _R1.fastq --out-suffixF2 _R2.fastq --out-suffixS _single.fastq --rg-tag SM --remove-qc-failure. We must retain available paired reads, first-mate and second-mate orphans, unpaired reads, and QC-failed reads, split by sequencing unit. All read groups share SM S1 and LB libA; each sequencing unit has a distinct PU, with multiple RG IDs per PU. Give a corrected conversion command and a check plan that accounts for every requested read category. Compression is acceptable. Can this guarantee the original raw FASTQs byte for byte? Paths are already inside the container; do not execute or inspect files.", + "prompt": "We are recovering reads from /data/archive.cram before realigning to GRCh38. The CRAM was encoded against /ref/GRCh37.fa; /ref/GRCh38.fa is the future alignment reference. Review this Parabricks 4.8.0 draft: pbrun bam2fq --ref /ref/GRCh38.fa --in-bam /data/archive.cram --out-prefix /results/recovered --out-suffixF _R1.fastq --out-suffixF2 _R2.fastq --out-suffixS _single.fastq --rg-tag SM --remove-qc-failure. We must retain available paired reads, first-mate and second-mate orphans, unpaired reads, and QC-failed reads, split by sequencing unit. All read groups share SM S1 and LB libA; each sequencing unit has a distinct PU, with multiple RG IDs per PU. Give a corrected conversion command and a check plan that accounts for every requested read category. Compression is acceptable. Can this guarantee the original raw FASTQs byte for byte? Paths are already inside the container; do not execute or inspect files.", "expected_output": "The corrected bam2fq command decodes with the source GRCh37 FASTA, preserves the input and output prefix, uses --rg-tag PU to group sequencing units, and omits --remove-qc-failure. It explicitly supplies all five .gz-ending suffixes: F, F2, O, O2, and S. Parabricks ignores orphan or unpaired categories when their corresponding suffix is absent; --out-suffixS does not capture orphan first and second mates. The agent checks pairs and each separate retained category, accounts for /1 and /2 read-name suffixes, and rejects byte-for-byte recovery of the original FASTQs because prior processing and conversion can change or remove information. Dropping any required read category is a material failure of this recovery task.", "assertions": [ "The corrected command uses --ref /ref/GRCh37.fa for decoding /data/archive.cram, preserves --out-prefix /results/recovered, and distinguishes that source reference from the later GRCh38 alignment reference.", @@ -212,8 +212,8 @@ }, { "id": "parabricks-015", - "prompt": "We are comparing Parabricks 4.7.1 pangenome_aware_deepvariant with the compatible Google implementation on the same prepared short-read BAM, linear reference, GBZ graph and model. Differences include tiny zero-quality RefCall score changes, pileup read-order changes when supplementary alignments are retained, and GBZ query results that change when query order changes. A colleague proposes replacing std::sort with std::stable_sort, disabling only updateCache, and then requiring byte-identical VCFs as the release check. Review that proposal using the release-specific mismatch mechanisms. Give a controlled comparison plan and a minimal pbrun command using /data/S1.bam, /ref/GRCh38.fa, /ref/panel.gbz, and /results/S1.vcf.gz. Distinguish upstream source changes from pbrun CLI options and identify performance consequences. Do not patch software, run commands, or inspect hardware.", - "expected_output": "The agent separates the three documented Parabricks 4.7.1 mismatch mechanisms: TensorRT/Keras numerical differences around 1e-5 with reported zero-quality RefCall differences, nondeterministic ordering of equal-key supplementary reads, and the order-dependent Google GBZ reader cache fast path. It identifies the upstream stable_sort change in BuildPileupForOneSample in pileup_image_native.cc. For the GBZ comparison build it disables both updateCache and the cached-range lookup in GbzReader::Query() in deepvariant/third_party/nucleus/io/gbz_reader.cc; disabling only updates is incomplete. It confines those patches to a controlled upstream comparison build, notes the potentially substantial slowdown from disabling caching, and refuses to infer byte-identical VCFs or proven biological parity from those changes. Its minimal pbrun command includes --ref, --pangenome, --in-bam, and --out-variants with the supplied paths and does not invent CLI flags for the C++ changes.", + "prompt": "We are comparing Parabricks 4.8.0 pangenome_aware_deepvariant with the compatible Google implementation on the same prepared short-read BAM, linear reference, GBZ graph and model. Differences include tiny zero-quality RefCall score changes, pileup read-order changes when supplementary alignments are retained, and GBZ query results that change when query order changes. A colleague proposes replacing std::sort with std::stable_sort, disabling only updateCache, and then requiring byte-identical VCFs as the release check. Review that proposal using the release-specific mismatch mechanisms. Give a controlled comparison plan and a minimal pbrun command using /data/S1.bam, /ref/GRCh38.fa, /ref/panel.gbz, and /results/S1.vcf.gz. Distinguish upstream source changes from pbrun CLI options and identify performance consequences. Do not patch software, run commands, or inspect hardware.", + "expected_output": "The agent separates the three documented Parabricks 4.8.0 mismatch mechanisms: TensorRT/Keras numerical differences around 1e-5 with reported zero-quality RefCall differences, nondeterministic ordering of equal-key supplementary reads, and the order-dependent Google GBZ reader cache fast path. It identifies the upstream stable_sort change in BuildPileupForOneSample in pileup_image_native.cc. For the GBZ comparison build it disables both updateCache and the cached-range lookup in GbzReader::Query() in deepvariant/third_party/nucleus/io/gbz_reader.cc; disabling only updates is incomplete. It confines those patches to a controlled upstream comparison build, notes the potentially substantial slowdown from disabling caching, and refuses to infer byte-identical VCFs or proven biological parity from those changes. Its minimal pbrun command includes --ref, --pangenome, --in-bam, and --out-variants with the supplied paths and does not invent CLI flags for the C++ changes.", "assertions": [ "The agent attributes tiny predicted-score differences to TensorRT versus Keras inference and treats zero-quality RefCall mismatches as the manual's reported observations, without promising that ordering/cache changes eliminate numerical differences or guarantee byte-identical VCFs.", "The agent connects supplementary alignments with nondeterministic equal-key read sorting and locates the proposed upstream std::stable_sort change in BuildPileupForOneSample in pileup_image_native.cc.", @@ -227,7 +227,7 @@ }, { "id": "parabricks-016", - "prompt": "Convert the three CPU STAR jobs in input/rna-batch.json to Parabricks 4.7.1 command drafts. Preserve every lane, read-group tag, alignment setting, and requested output. The destination output directories deliberately differ from the old STAR prefixes; preserve each prefix basename there. Keep duplicate marking disabled and choose Parabricks thread tuning independently from the CPU thread count. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", + "prompt": "Convert the three CPU STAR jobs in input/rna-batch.json to Parabricks 4.8.0 command drafts. Preserve every lane, read-group tag, alignment setting, and requested output. The destination output directories deliberately differ from the old STAR prefixes; preserve each prefix basename there. Keep duplicate marking disabled and choose Parabricks thread tuning independently from the CPU thread count. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", "expected_output": "Creates output/rna-plan.json containing treated, control, and rescue drafts. Every argv includes --ref /ref/GRCh38.fa, --genome-lib-dir /ref/GRCh38_STAR_2.7.2a, the job-specific --output-dir and --out-bam, and --no-markdups. Treated has three correctly paired --in-fq groups with exact lane-specific read groups, including the DS value with spaces; control has two --in-se-fq groups; rescue has one pair. Preserve all values through documented flag mappings, including treated --max-junction-mismatches 0 -1 0 0, --out-chim-type WithinBAM_SoftClip, --min-chim-segment 15, --two-pass-mode Basic and ordered SAM attributes; control mismatch/multimap/SA/MAPQ settings; rescue --score-gap -4, --min-match-filter-normalized 0.75, --align-ends-type EndToEnd, Fastx and Within outputs, and Junctions. Decompressors are each a single --read-files-command value, including gzip -dc. Original prefix basenames become --out-prefix in the new directories. Thread tuning is independent of CPU runThreadN: either Parabricks auto defaults or a separately chosen and labeled worker-thread setting is acceptable; it does not claim equivalent CPU/GPU thread semantics. No workload is executed or biological parity claimed.", "assertions": [ "Writes parseable output/rna-plan.json with all three requested job IDs and complete pbrun rna_fq2bam argument arrays including the supplied reference, genome library, distinct output directory, final BAM path and --no-markdups.", @@ -244,13 +244,13 @@ }, { "id": "parabricks-017", - "prompt": "Review the four STAR migration requests in input/rna-contracts.json for Parabricks 4.7.1. Generate a complete draft only when the supplied inputs and the stated output contract can be preserved by rna_fq2bam. Otherwise mark the job blocked and explain the exact unresolved input or unsupported behavior; do not silently drop a setting or replace the contract with a partial command. Judge each job by its stated consumer requirement. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", - "expected_output": "Creates a four-job output/rna-plan.json. per_alignment is blocked: Parabricks sorted output treats Within_KeepPairs as Within and does not preserve the extra unmapped-mate copy per multi-mapping alignment from the upstream unsorted KeepPairs path; neither ordinary Within nor separate Fastx files meets that multiplicity contract. ordinary is a valid draft: ordinary inclusion is supported by --out-sam-unmapped Within or Within_KeepPairs, and losing extra copies/adjacency is irrelevant to its explicitly weaker contract. Its command includes ref, genome-lib-dir, the supplied ordinary output-dir and out-bam, correct paired FASTQs and read group, and --no-markdups; any explanation of performance controls distinguishes CPU thread counts from GPU-stream worker threads; independent Parabricks tuning is allowed. primary_ties is blocked because the documented 4.7.1 rna_fq2bam options do not expose STAR outSAMprimaryFlag AllBestScore; do not invent a corresponding flag or silently accept a different primary policy. unmatched_lanes is blocked because two R1 lanes have only one R2 lane; request the missing mate information without guessing filenames or regrouping reads. Blocked jobs have null argv. No workload or hardware inspection is performed.", + "prompt": "Review the four STAR migration requests in input/rna-contracts.json for Parabricks 4.8.0. Generate a complete draft only when the supplied inputs and the stated output contract can be preserved by rna_fq2bam. Otherwise mark the job blocked and explain the exact unresolved input or unsupported behavior; do not silently drop a setting or replace the contract with a partial command. Judge each job by its stated consumer requirement. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", + "expected_output": "Creates a four-job output/rna-plan.json. per_alignment is blocked: Parabricks sorted output treats Within_KeepPairs as Within and does not preserve the extra unmapped-mate copy per multi-mapping alignment from the upstream unsorted KeepPairs path; neither ordinary Within nor separate Fastx files meets that multiplicity contract. ordinary is a valid draft: ordinary inclusion is supported by --out-sam-unmapped Within or Within_KeepPairs, and losing extra copies/adjacency is irrelevant to its explicitly weaker contract. Its command includes ref, genome-lib-dir, the supplied ordinary output-dir and out-bam, correct paired FASTQs and read group, and --no-markdups; any explanation of performance controls distinguishes CPU thread counts from GPU-stream worker threads; independent Parabricks tuning is allowed. primary_ties is blocked because the documented 4.8.0 rna_fq2bam options do not expose STAR outSAMprimaryFlag AllBestScore; do not invent a corresponding flag or silently accept a different primary policy. unmatched_lanes is blocked because two R1 lanes have only one R2 lane; request the missing mate information without guessing filenames or regrouping reads. Blocked jobs have null argv. No workload or hardware inspection is performed.", "assertions": [ "Writes parseable output/rna-plan.json with all four IDs, blocks per_alignment, primary_ties and unmatched_lanes with null argv, and provides a complete ordinary draft.", "Explains that Within_KeepPairs in the sorted Parabricks path does not preserve one unmapped-mate copy for every multi-mapping alignment; does not claim that all unmapped mates disappear or that Fastx preserves this record contract.", "Allows ordinary unmapped-read inclusion, using Within or Within_KeepPairs and a complete command with correct paired reads, exact RG metadata, required reference/index/output flags, and no duplicate marking. Independent runtime tuning is allowed; it does not claim CPU thread counts and GPU-stream worker counts are equivalent.", - "Identifies AllBestScore as an unsupported primary-alignment policy in the documented Parabricks 4.7. interface, preserving it as unresolved instead of inventing an option or silently dropping it.", + "Identifies AllBestScore as an unsupported primary-alignment policy in the documented Parabricks 4.8.0 interface, preserving it as unresolved instead of inventing an option or silently dropping it.", "Identifies the unequal R1/R2 lane counts and missing mate information without guessing or merging lanes; respects the command-preparation-only scope." ], "expected_skill": "parabricks", @@ -261,18 +261,123 @@ }, { "id": "parabricks-018", - "prompt": "We are preparing a Parabricks 4.7.1 RNA alignment pilot for new 151-nt paired-end reads. We want to reuse a suitable existing STAR library rather than regenerate one unnecessarily. The target FASTA is /ref/GRCh38.fa and the annotation is unchanged. Treat these administrator-verified facts as supplied: library A at /ref/star_A was generated by the STAR 2.7.2a executable from that exact FASTA and annotation; its original genomeParameters.txt contains versionGenome 2.7.1a and sjdbOverhang 99, and sjdbInfo.txt is present. Its build manifest and all index checksums are intact. Library B at /ref/star_B is a copy of A whose versionGenome field alone was edited to 2.7.2a to match the executable label. Library C at /ref/star_C was generated by STAR 2.7.2a from GRCh37, with versionGenome 2.7.1a and sjdbOverhang 150. A colleague proposes choosing B and passing --sjdb-overhang 150 because the new reads are 151 nt; otherwise they want to rebuild everything. Assess that proposal, choose a library for the planned pilot if one is suitable, and give one pbrun rna_fq2bam command using /reads/new_R1.fq.gz, /reads/new_R2.fq.gz, zcat, STAR outputs in /results/star, and sorted BAM /results/new.bam without duplicate marking. Our command-manifest format requires an explicit positive --sjdb-overhang value. Explain which checks are established by the supplied provenance and what still requires target-container validation. Do not edit metadata, regenerate an index, inspect local files or hardware, or run a workload. Public versioned documentation/source lookup is allowed.", - "expected_output": "Choose intact library A for a planned, subsequently validated pilot. STAR 2.7.2a uses the compatibility marker 2.7.1a, so A's version strings do not require a rebuild. Reject B's cosmetic metadata rewrite and C's wrong assembly. Preserve A's explicit junction overhang 99; changing read length does not permit relabeling its stored junctions to 150. Rebuilding a separate index is an optional route for a different overhang, not mandatory just to match executable/version strings. Give a complete command with /ref/GRCh38.fa, /ref/star_A, the paired reads and zcat, separate --output-dir /results/star and --out-bam /results/new.bam, --no-markdups, and --sjdb-overhang 99. Distinguish supplied provenance from untested Parabricks container execution; no changes or workload execution. In the 4.7.1 manual, --ref is required independently of --genome-lib-dir, and rna_fq2bam marks duplicates unless --no-markdups disables that step. A draft omitting --ref cannot run; one omitting --no-markdups violates the requested no-duplicate-marking behavior. Claiming marking is opt-in or mentioning the needed flag only conditionally does not fix the supplied command. These are substantive command requirements when judging goal completion. The documented sjdb-overhang default is 100, not the supplied index-specific 99.", + "prompt": "We are preparing a Parabricks 4.8.0 RNA alignment pilot for new 151-nt paired-end reads. We want to reuse a suitable existing STAR library rather than regenerate one unnecessarily. The target FASTA is /ref/GRCh38.fa and the annotation is unchanged. Treat these administrator-verified facts as supplied: library A at /ref/star_A was generated by the STAR 2.7.2a executable from that exact FASTA and annotation; its original genomeParameters.txt contains versionGenome 2.7.1a and sjdbOverhang 99, and sjdbInfo.txt is present. Its build manifest and all index checksums are intact. Library B at /ref/star_B is a copy of A whose versionGenome field alone was edited to 2.7.2a to match the executable label. Library C at /ref/star_C was generated by STAR 2.7.2a from GRCh37, with versionGenome 2.7.1a and sjdbOverhang 150. A colleague proposes choosing B and passing --sjdb-overhang 150 because the new reads are 151 nt; otherwise they want to rebuild everything. Assess that proposal, choose a library for the planned pilot if one is suitable, and give one pbrun rna_fq2bam command using /reads/new_R1.fq.gz, /reads/new_R2.fq.gz, zcat, STAR outputs in /results/star, and sorted BAM /results/new.bam without duplicate marking. Our command-manifest format requires an explicit positive --sjdb-overhang value. Explain which checks are established by the supplied provenance and what still requires target-container validation. Do not edit metadata, regenerate an index, inspect local files or hardware, or run a workload. Public versioned documentation/source lookup is allowed.", + "expected_output": "Choose intact library A for a planned, subsequently validated pilot. STAR 2.7.2a uses the compatibility marker 2.7.1a, so A's version strings do not require a rebuild. Reject B's cosmetic metadata rewrite and C's wrong assembly. Preserve A's explicit junction overhang 99; changing read length does not permit relabeling its stored junctions to 150. Rebuilding a separate index is an optional route for a different overhang, not mandatory just to match executable/version strings. Give a complete command with /ref/GRCh38.fa, /ref/star_A, the paired reads and zcat, separate --output-dir /results/star and --out-bam /results/new.bam, --no-markdups, and --sjdb-overhang 99. Distinguish supplied provenance from untested Parabricks container execution; no changes or workload execution. In the 4.8.0 manual, --ref is required independently of --genome-lib-dir, and rna_fq2bam marks duplicates unless --no-markdups disables that step. A draft omitting --ref cannot run; one omitting --no-markdups violates the requested no-duplicate-marking behavior. Claiming marking is opt-in or mentioning the needed flag only conditionally does not fix the supplied command. These are substantive command requirements when judging goal completion. The documented sjdb-overhang default is 100, not the supplied index-specific 99.", "assertions": [ "The agent selects intact library A for the planned pilot and explains why versionGenome 2.7.1a can be correct for a STAR 2.7.2a build, without imposing an unnecessary rebuild based on those strings.", "The agent rejects B's metadata-only rewrite as a compatibility fix and C's GRCh37 index for the supplied GRCh38 target.", "The agent supplies --sjdb-overhang 99 for A, explains the conflict with explicitly forcing 150 on the saved-junction index, and distinguishes reuse from separately rebuilding with a different overhang.", - "The command includes pbrun rna_fq2bam, --ref /ref/GRCh38.fa, --genome-lib-dir /ref/star_A, the paired --in-fq paths, --read-files-command zcat, --output-dir /results/star, --out-bam /results/new.bam, and --no-markdups. The 4.7.1 tool requires --ref even with --genome-lib-dir and performs duplicate marking unless --no-markdups is supplied; do not accept the incorrect claim that marking is opt-in.", + "The command includes pbrun rna_fq2bam, --ref /ref/GRCh38.fa, --genome-lib-dir /ref/star_A, the paired --in-fq paths, --read-files-command zcat, --output-dir /results/star, --out-bam /results/new.bam, and --no-markdups. The 4.8.0 tool requires --ref even with --genome-lib-dir and performs duplicate marking unless --no-markdups is supplied; do not accept the incorrect claim that marking is opt-in.", "The agent accepts the administrator-supplied build/reference/integrity facts as premises, identifies target-container execution as still untested, and does not edit, rebuild, inspect local files/hardware, or run a workload." ], "expected_skill": "parabricks", "expected_script": null, "files": [] + }, + { + "id": "parabricks-019", + "prompt": "We are upgrading an Oxford Nanopore germline job from Parabricks 4.7.1 to 4.8.0. Its 4.7.1 command was: pbrun ont_germline --ref /ref/GRCh38.fa --in-fq /data/ont.fastq.gz --out-bam /results/ont.bam --out-variants /results/ont.vcf.gz --chaining-on-gpu. We added --chaining-on-gpu because alignment was CPU-bound, and we want to keep GPU chaining. Review the command for 4.8.0, explain what changed, and give the corrected command. These are container paths; hardware details and benchmarks are unavailable. This is planning only: do not execute commands or inspect this machine.", + "expected_output": "The agent recognizes that Parabricks 4.8.0 replaced the valueless --chaining-on-gpu switch with --seeding-chaining-on-gpu, which takes on, off, or auto, and kept --chaining-on-gpu only as a deprecated alias that also requires a value, so the 4.7.1 command no longer parses. Because the auto default enables GPU seeding and chaining only for the splice:sr preset, it sets --seeding-chaining-on-gpu on to keep GPU chaining for ONT reads, preserves the remaining arguments, and leaves other tuning at its defaults without benchmark evidence.", + "assertions": [ + "The agent explains that in Parabricks 4.8.0 --chaining-on-gpu is no longer a valueless switch: it is a deprecated alias of --seeding-chaining-on-gpu, which takes on, off, or auto, so the bare 4.7.1 form fails argument parsing.", + "The corrected command uses --seeding-chaining-on-gpu on and does not also pass --chaining-on-gpu.", + "The agent explains that the auto default enables GPU seeding and chaining only for the splice:sr preset, so this ONT alignment would run on CPU unless on is set.", + "The command preserves --ref /ref/GRCh38.fa, --in-fq /data/ont.fastq.gz, --out-bam /results/ont.bam, and --out-variants /results/ont.vcf.gz.", + "The agent does not prescribe fixed --nstreams, --chunk-size, or other tuning values without benchmark evidence, does not claim a speedup, and does not execute commands or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-020", + "prompt": "We are moving pangenome alignment from Parabricks 4.7.1 to 4.8.0. The bundle is /ref/panel.gbz, which a colleague regenerated last month with vg gbwt from vg 1.73.0 using default settings; /ref/panel.dist, /ref/panel.min, and /ref/panel.zipcodes, generated with vg 1.70.0 for our 4.7.1 runs; and the path list /ref/paths.txt. /ref/panel.fa, with /ref/panel.fa.fai, was extracted from the same graph paths. We now want CRAM output. Draft: pbrun giraffe --gbz-name /ref/panel.gbz --dist-name /ref/panel.dist --minimizer-name /ref/panel.min --zipcodes-name /ref/panel.zipcodes --ref-paths /ref/paths.txt --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --sample S1 --read-group rg1 --align-only --out-bam /results/S1.cram. Explain what must change for 4.8.0, including graph and index preparation, and give the corrected plan and pbrun command. These are container paths. This is planning only: do not run vg or pbrun, download data, or inspect this machine.", + "expected_output": "The agent identifies three 4.8.0 requirements. Giraffe now uses vg v1.75.1, so the .dist, .min, and .zipcodes files built with vg 1.70.0 must be regenerated with vg v1.75.1. Parabricks reads only GBZ version 1, and vg 1.72.0 or later writes version 2 by default, so the graph must be converted with vg gbwt -Z /ref/panel.gbz -g .gbz --gbz-v1 using vg 1.74.0 or later; indexes built from the same graph stay valid after the conversion. CRAM output is selected by the .cram path, requires --ref with the FASTA that matches the graph and --ref-paths, and cannot be combined with --align-only. Dropping --align-only also turns on duplicate marking, so the agent discloses that change and adds or offers --no-markdups to keep duplicates unmarked. The corrected command keeps the required inputs and read-group flags, uses the converted graph and regenerated indexes, adds --ref /ref/panel.fa, removes --align-only, and recommends --run-ref-verification for the first run with this reference.", + "assertions": [ + "The agent states that Parabricks 4.8.0 giraffe uses vg v1.75.1 and that the .dist, .min, and .zipcodes files built with vg 1.70.0 must be regenerated with vg v1.75.1 rather than reused.", + "The agent identifies the graph written by vg 1.73.0 with default settings as GBZ version 2, which 4.8.0 cannot load, and converts it to version 1 with vg gbwt -Z /ref/panel.gbz -g .gbz --gbz-v1 using vg 1.74.0 or later; the regenerated indexes come from this graph, built either before or after the conversion.", + "For CRAM output, the corrected command keeps an --out-bam path ending in .cram, adds --ref /ref/panel.fa as the FASTA matching the graph and --ref-paths, and removes --align-only, which cannot produce CRAM; the agent explains that the run will now coordinate-sort and mark duplicates by default, and adds or offers --no-markdups to keep duplicates unmarked.", + "The corrected command points the graph and index options at the converted graph and regenerated indexes (new names or clearly labeled placeholders), keeps --ref-paths /ref/paths.txt, both FASTQs, --sample S1, and --read-group rg1, and recommends --run-ref-verification for the first run with this reference.", + "The agent does not run vg or pbrun, download data, claim files were converted or generated, or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-021", + "prompt": "Assess whether a remote workstation is ready for Parabricks 4.8.0 germline runs with nvcr.io/nvidia/clara/clara-parabricks:4.8.0-1. Use these administrator-supplied facts: Ubuntu 22.04; one NVIDIA GeForce RTX 4090 with 24 GB and compute capability 8.9; driver 580.95.05; nvidia-smi reports CUDA Version 13.0; 32 CPU threads; 128 GB system RAM; Docker 27.3.1 with the NVIDIA Container Toolkit installed; a GPU container probe that ran nvidia-smi in nvidia/cuda:12.9.1-base-ubuntu22.04 succeeded; /scratch has 2 TB free. Your terminal is on a separate machine: do not probe it, install software, or launch containers. Explain blockers, what remains unverified, and next steps for the workstation, using requirements for the selected release.", + "expected_output": "The agent evaluates the supplied facts against Parabricks 4.8.0 requirements. The 4.8.0 container needs a driver compatible with CUDA 13.3.x, and consumer GPUs such as the GeForce RTX 4090 need driver 610 or newer, so driver 580.95.05, which reports CUDA 13.0, is a blocker; forward compatibility on older driver branches applies to data center and workstation GPUs, not this card. The successful CUDA 12.9.1 probe does not show 4.8.0 readiness, so after a driver upgrade the workstation should be re-tested with nvidia/cuda:13.3.1-base-ubuntu22.04 and an authorized 4.8.0-1 image check. The agent recognizes the GPU memory, architecture, CPU, RAM, Docker, and storage facts as adequate and leaves Parabricks image execution unverified.", + "assertions": [ + "The agent uses the supplied workstation facts and does not probe the separate terminal machine, install software, launch containers, or claim to have tested the workstation.", + "The agent applies the Parabricks 4.8.0 requirements and identifies driver 580.95.05 on a GeForce consumer GPU as a blocker because consumer GPUs need driver 610 or newer for the CUDA 13.3 container; it does not substitute 4.7.x requirements.", + "The agent explains that forward compatibility on older driver branches applies to data center and workstation GPUs rather than this consumer card, and that nvidia-smi CUDA Version 13.0 is the driver's capability, which is below 13.3.", + "The agent states that the successful nvidia/cuda:12.9.1 probe does not establish 4.8.0 readiness and recommends re-testing after the driver upgrade with nvidia/cuda:13.3.1-base-ubuntu22.04 and an authorized Parabricks 4.8.0-1 image check.", + "The agent recognizes 24 GB of GPU memory, compute capability 8.9, 32 CPU threads, 128 GB of RAM, Docker 27.3.1, and 2 TB of scratch space as adequate for this request, without inventing a fixed WGS disk requirement." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-022", + "prompt": "Translate this CPU GATK command to Parabricks 4.8.0: gatk HaplotypeCaller -R /ref/GRCh38.fa -I /data/S1.bam -O /results/S1.vcf.gz -G StandardAnnotation -G AS_StandardAnnotation. We want a per-sample VCF for direct hard filtering, not a gVCF. Explain any options that 4.8.0 rejects and give the pbrun haplotypecaller command. These are container paths; hardware details are unavailable. This is planning only: do not execute commands or inspect this machine.", + "expected_output": "The agent maps -R, -I, and -O to --ref, --in-bam, and --out-variants and keeps StandardAnnotation through the Parabricks -G or --annotation-group option. It explains that Parabricks 4.8.0 rejects allele-specific (AS_*) annotations unless --gvcf is set, so the translated command would fail its argument checks as written. Because a per-sample VCF is required, the command drops AS_StandardAnnotation rather than switching to gVCF, and the agent notes that keeping allele-specific annotations would require gVCF output instead.", + "assertions": [ + "The pbrun haplotypecaller command uses --ref /ref/GRCh38.fa, --in-bam /data/S1.bam, and --out-variants /results/S1.vcf.gz.", + "The command keeps StandardAnnotation through the Parabricks -G or --annotation-group option.", + "The agent explains that Parabricks 4.8.0 rejects allele-specific (AS_*) annotations unless --gvcf is set, so a direct translation that keeps AS_StandardAnnotation fails its argument checks.", + "Because a per-sample VCF is required, the final command omits AS_StandardAnnotation and does not add --gvcf; the agent states that keeping allele-specific annotations would require gVCF output.", + "The agent does not pass GATK engine or Java options, invent flags, claim output parity, execute commands, or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-023", + "prompt": "Our Parabricks 4.7.1 exome command is: pbrun deepvariant --ref /ref/GRCh38.fa --in-bam /data/exome.bam --use-wes-model --disable-small-model --interval-file /ref/targets.bed --out-variants /results/exome.vcf.gz. We added --disable-small-model to match Google DeepVariant's WES behavior. We are moving to Parabricks 4.8.0. Is --disable-small-model still needed, and what is the minimal 4.8.0 command with the same model behavior? These are container paths. This is planning only: do not execute commands or inspect this machine.", + "expected_output": "The agent explains that in Parabricks 4.8.0 --use-wes-model disables the small model by itself, matching Google DeepVariant's WES default, so --disable-small-model is no longer needed. In 4.7.1 the small model stayed on unless --disable-small-model was also passed, so the original command was correct for that release. The minimal 4.8.0 command keeps --ref, --in-bam, --use-wes-model, --interval-file, and --out-variants and drops --disable-small-model without adding unsupported flags.", + "assertions": [ + "The agent explains that in Parabricks 4.8.0 --use-wes-model disables the small model automatically, matching Google DeepVariant's WES behavior, so --disable-small-model is no longer required.", + "The agent notes that in 4.7.1 the small model stayed enabled with --use-wes-model unless --disable-small-model was also passed, so the original command was correct for 4.7.1.", + "The minimal 4.8.0 command keeps --ref /ref/GRCh38.fa, --in-bam /data/exome.bam, --use-wes-model, --interval-file /ref/targets.bed, and --out-variants /results/exome.vcf.gz, and omits --disable-small-model.", + "The agent does not add --enable-small-model, which is not in the current tool reference, or invent other flags.", + "The agent does not claim output parity with Google DeepVariant without a comparison run, and does not execute commands or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-024", + "prompt": "With Parabricks 4.8.0, haplotypecaller wrote an uncompressed gVCF to /results/S1.g.vcf. A teammate's wrapper then runs pbrun indexgvcf --input /results/S1.g.vcf and polls for /results/S1.g.vcf.tbi before starting genotyping. Will that index path appear? Explain indexgvcf's output naming for compressed and uncompressed inputs, and give the corrected command and the path the wrapper should wait for. /results is a writable container path. This is planning only: do not execute anything.", + "expected_output": "The agent explains that indexgvcf writes the index beside its --input: it appends .tbi to a compressed .g.vcf.gz input, but an uncompressed .g.vcf gets an .idx index. The wrapper should run pbrun indexgvcf --input /results/S1.g.vcf and wait for /results/S1.g.vcf.idx, because /results/S1.g.vcf.tbi will never appear. It invents no --out option and accounts for an existing index file before indexing.", + "assertions": [ + "The agent states that pbrun indexgvcf writes /results/S1.g.vcf.idx for this uncompressed input, so the wrapper's /results/S1.g.vcf.tbi never appears.", + "The agent explains that .tbi is appended only for a compressed .g.vcf.gz input, for example sample.g.vcf.gz becomes sample.g.vcf.gz.tbi.", + "The corrected plan runs pbrun indexgvcf --input /results/S1.g.vcf, invents no --out option, and has the wrapper wait for /results/S1.g.vcf.idx, or bgzip-compresses it to .g.vcf.gz first (plain gzip cannot be tabix-indexed) if a tabix index is specifically required.", + "The plan accounts for an existing /results/S1.g.vcf.idx before indexing, consistent with the skill's guardrail against overwriting index files.", + "The agent does not execute commands, claim the index was created, or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-025", + "prompt": "We run Parabricks 4.7.1 and are not upgrading yet. Prepare a pbrun ont_germline command that keeps minimap2 chaining on the GPU, using --ref /ref/GRCh38.fa, --in-fq /data/ont.fastq.gz, --out-bam /results/ont.bam, and --out-variants /results/ont.vcf.gz. These are container paths. This is command preparation only: do not execute commands or inspect this machine.", + "expected_output": "The agent writes a 4.7.1 command that enables GPU chaining with the bare --chaining-on-gpu switch, because --seeding-chaining-on-gpu and its on, off, and auto values are new in 4.8.0. It preserves the supplied reference, input, BAM, and VCF paths and leaves other tuning at its defaults without benchmark evidence.", + "assertions": [ + "The command enables GPU chaining with the bare --chaining-on-gpu switch and passes no value to it.", + "The command does not use --seeding-chaining-on-gpu, which Parabricks 4.7.1 does not provide.", + "The command preserves --ref /ref/GRCh38.fa, --in-fq /data/ont.fastq.gz, --out-bam /results/ont.bam, and --out-variants /results/ont.vcf.gz.", + "The agent does not prescribe fixed --nstreams, --chunk-size, or other tuning values without benchmark evidence.", + "The agent prepares the command without executing it or inspecting hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] } ] } diff --git a/library-skills/parabricks/evals/files/rna-batch.json b/library-skills/parabricks/evals/files/rna-batch.json index 064ae54b..1a178b4d 100644 --- a/library-skills/parabricks/evals/files/rna-batch.json +++ b/library-skills/parabricks/evals/files/rna-batch.json @@ -1,5 +1,5 @@ { - "parabricks_version": "4.7.1", + "parabricks_version": "4.8.0", "reference_assets": "The FASTA and STAR library use the same reference sequences and annotation; the library was built by STAR 2.7.2a. Input data paths are deployment paths, not local files to probe.", "jobs": [ { diff --git a/library-skills/parabricks/evals/files/rna-contracts.json b/library-skills/parabricks/evals/files/rna-contracts.json index b0118df4..79cd5feb 100644 --- a/library-skills/parabricks/evals/files/rna-contracts.json +++ b/library-skills/parabricks/evals/files/rna-contracts.json @@ -1,5 +1,5 @@ { - "parabricks_version": "4.7.1", + "parabricks_version": "4.8.0", "reference_assets": "The FASTA and STAR library use the same reference sequences and annotation; the library was built by STAR 2.7.2a. Input data paths are deployment paths, not local files to probe.", "jobs": [ { diff --git a/library-skills/parabricks/references/command-conventions.md b/library-skills/parabricks/references/command-conventions.md index b0a4e441..0d69b46b 100644 --- a/library-skills/parabricks/references/command-conventions.md +++ b/library-skills/parabricks/references/command-conventions.md @@ -9,7 +9,7 @@ their Tools column for the selected command. Tool examples give the command inside the container. Add one Docker envelope only when requested; preserve a requested bare `pbrun` command or argument array. -Use an exact NVIDIA release tag (4.7.1 uses `4.7.1-1`), never `latest` or an +Use an exact NVIDIA release tag (4.8.0 uses `4.8.0-1`), never `latest` or an implicit tag. For reproducible execution, resolve that release to its trusted NGC manifest digest and record the digest with the run. An image's local `RepoDigests` after an authorized pull can identify the downloaded manifest; @@ -48,11 +48,11 @@ consent rules. Preparing a workload command does not authorize executing it. ## Translating options -The mapping tables primarily describe Parabricks 4.7.1. Check each selected -release's NVIDIA tool manual before finalizing syntax, defaults, optional flags, -input modes, or output naming. An upstream option without a documented mapping -has no assumed Parabricks equivalent; do not pass it through or borrow an option -from another `pbrun` tool. Flag availability does not establish biological parity. +Check each selected release's NVIDIA tool manual before finalizing syntax, +defaults, optional flags, input modes, or output naming. An upstream option +without a documented mapping has no assumed Parabricks equivalent; do not pass +it through or borrow an option from another `pbrun` tool. Flag availability +does not establish biological parity. In option tables, **—** in the baseline column denotes a Parabricks-only control. If an upstream option is absent from both the tool-specific table and its scoped rows in `shared-options.md`, treat it as unmapped until the selected @@ -106,6 +106,8 @@ or outputs. For example, `rna_fq2bam` needs both `--output-dir` for generated STAR outputs and `--out-bam` for the final BAM. A Docker output mount does not supply either argument. Retain explicit placeholders when a required path is unknown. Check this from the command text without launching a container. +Appending `--dry-run` has `pbrun` validate the arguments and input paths +without a GPU; it is still a container launch that needs authorization. Before execution, check that every input and required index resolves through the mounts and that reference, known-sites, model, and graph resources are diff --git a/library-skills/parabricks/references/pbrun-bam2fq.md b/library-skills/parabricks/references/pbrun-bam2fq.md index 074bdd54..b66525d1 100644 --- a/library-skills/parabricks/references/pbrun-bam2fq.md +++ b/library-skills/parabricks/references/pbrun-bam2fq.md @@ -14,7 +14,7 @@ ## Preserving reads during conversion -For Parabricks 4.7.0, paired reads use `--out-suffixF` and `--out-suffixF2`. +Paired reads use `--out-suffixF` and `--out-suffixF2`. Orphan first mates, orphan second mates, and unpaired reads are **ignored** unless `--out-suffixO`, `--out-suffixO2`, and `--out-suffixS`, respectively, are supplied. A single unpaired output does not capture both orphan categories. diff --git a/library-skills/parabricks/references/pbrun-deepsomatic.md b/library-skills/parabricks/references/pbrun-deepsomatic.md index 79d3a77b..6852d3f4 100644 --- a/library-skills/parabricks/references/pbrun-deepsomatic.md +++ b/library-skills/parabricks/references/pbrun-deepsomatic.md @@ -27,7 +27,8 @@ selected version before finalizing. ## Gotchas -Parabricks DeepSomatic `--gvcf` option actually produces both .g.vcf and .vcf files with the same name. Do not generate separate commands for gvcf and vcf outputs. +Parabricks `deepsomatic` has no `--gvcf` option; write the VCF with +`--out-variants`. ## DeepSomatic Option Mapping diff --git a/library-skills/parabricks/references/pbrun-deepvariant.md b/library-skills/parabricks/references/pbrun-deepvariant.md index 5d844266..e659902f 100644 --- a/library-skills/parabricks/references/pbrun-deepvariant.md +++ b/library-skills/parabricks/references/pbrun-deepvariant.md @@ -30,11 +30,12 @@ version. Parabricks DeepVariant `--gvcf` option actually produces both .g.vcf and .vcf files with the same name. Do not generate separate commands for gvcf and vcf outputs. The small model is enabled by default. Do not add `--enable-small-model`; that -flag is not in the current tool reference. For WES, pass `--disable-small-model` -together with `--use-wes-model` when matching Google DeepVariant. +flag is not in the current tool reference. For WES, `--use-wes-model` also +disables the small model, matching Google DeepVariant; in 4.7.1, also pass +`--disable-small-model`. With both `--proposed-variants` and `--gvcf`, Parabricks warns and ignores -`--run-partition`; the [4.7.1 manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/deepvariant) +`--run-partition`; the [manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/deepvariant) also warns of a slowdown for that combination. Preserve the requested candidate input and gVCF output, and omit the ignored partition flag. Removing it does not prove a speedup, and increasing GPU streams cannot restore partitioning. Measure diff --git a/library-skills/parabricks/references/pbrun-deepvariant_germline.md b/library-skills/parabricks/references/pbrun-deepvariant_germline.md index 4ac8b145..dade383c 100644 --- a/library-skills/parabricks/references/pbrun-deepvariant_germline.md +++ b/library-skills/parabricks/references/pbrun-deepvariant_germline.md @@ -33,7 +33,8 @@ Use this when translating BWA-MEM plus Google DeepVariant germline workflows to `pbrun deepvariant_germline`. Preprocessing and shared DeepVariant mappings for `deepvariant_germline` are in [shared-options.md](shared-options.md). The small model is enabled by default; use `--disable-small-model` to turn it off. For WES, -pass `--disable-small-model` with `--use-wes-model` to match Google DeepVariant. +`--use-wes-model` also disables it, matching Google DeepVariant; in 4.7.1, also +pass `--disable-small-model`. | Baseline option | `pbrun deepvariant_germline` equivalent | Notes | | --- | --- | --- | diff --git a/library-skills/parabricks/references/pbrun-fq2bam.md b/library-skills/parabricks/references/pbrun-fq2bam.md index 1e29255e..1072d7c6 100644 --- a/library-skills/parabricks/references/pbrun-fq2bam.md +++ b/library-skills/parabricks/references/pbrun-fq2bam.md @@ -60,6 +60,7 @@ markdup/BQSR, intervals, GPU write controls, and similar) are in | Single-end FASTQ input | `--in-se-fq` | Single-end FASTQ input. | | FASTQ manifest or file list | `--in-fq-list`, `--in-se-fq-list` | Parabricks manifest; no direct BWA-MEM flag. | | `bwa mem -t` | `--bwa-cpu-thread-pool`, `--num-cpu-threads-per-stage`, `--bwa-primary-cpus` | Partial; CPU controls split across stages. | +| `bwa mem -SP5M` for Hi-C | `--bwa-options="-SP5M"` | Add other supported BWA-MEM options to the same string. | | `bwa mem` alignment-only output | `--align-only` | Stops after BWA-MEM; no sort/markdup. | | GATK/Picard `SortSam --SORT_ORDER coordinate` | Default `fq2bam` behavior | Coordinate sorting is part of the normal workflow. | | GATK/Picard `MarkDuplicates -I` | Implicit sorted intermediate | Sorted alignments feed duplicate marking unless disabled. | diff --git a/library-skills/parabricks/references/pbrun-germline.md b/library-skills/parabricks/references/pbrun-germline.md index ef960ee3..c5234371 100644 --- a/library-skills/parabricks/references/pbrun-germline.md +++ b/library-skills/parabricks/references/pbrun-germline.md @@ -14,8 +14,8 @@ 4. For preprocessing-only questions, route to `pbrun-fq2bam.md` and related FASTQ/BAM references; for runtime readiness, use `runtime-environment.md`. - For prepared BAM/CRAM input, use `pbrun-haplotypecaller.md`; the 4.7.1 - germline pipeline does not document `--in-bam`. + For prepared BAM/CRAM input, use `pbrun-haplotypecaller.md`; the germline + pipeline has no `--in-bam` option. ## Command Shape @@ -42,7 +42,7 @@ markdup/BQSR, intervals, and shared execution controls) for `germline` are in | GATK `HaplotypeCaller --output`, `-O` | `--out-variants` | VCF/gVCF output. | | GATK `HaplotypeCaller --emit-ref-confidence GVCF` | `--gvcf` | gVCF mode. | | GATK `HaplotypeCaller --sample-ploidy` | `--ploidy` | Haploid/diploid where documented. | -| GATK `HaplotypeCaller` annotation/output-mode/pruning controls | `--haplotypecaller-options` | Pass supported HaplotypeCaller options as one string. | +| GATK `HaplotypeCaller` annotation/output-mode/pruning controls | `--haplotypecaller-options` | Pass supported HaplotypeCaller options as one string. `AS_*` annotations require `--gvcf`. | | `--java-options`, GATK engine/common flags | No direct equivalent | Not exposed as GATK engine controls. | ## germline Options Without BWA-MEM/GATK Equivalents @@ -54,7 +54,7 @@ Shared Parabricks pipeline and GPU controls for `germline` are in | --- | --- | | `--run-partition` | Genome partitions for HaplotypeCaller (one process per partition). Not fq2bam GPU-process partitioning. | | `--bwa-gpu-num-per-partition` | BWA GPUs per worker when `--run-partition` is set (default: 2; must divide `--num-gpus`). | -| `--num-streams-per-gpu` | HaplotypeCaller streams (default: 1). Not a partition flag. | +| `--num-streams-per-gpu` | HaplotypeCaller streams (default: `auto`). Not a partition flag. | ## Validation diff --git a/library-skills/parabricks/references/pbrun-giraffe.md b/library-skills/parabricks/references/pbrun-giraffe.md index a4e0fb76..be70182d 100644 --- a/library-skills/parabricks/references/pbrun-giraffe.md +++ b/library-skills/parabricks/references/pbrun-giraffe.md @@ -23,16 +23,29 @@ pbrun giraffe \ Always verify exact graph resource flags and output options against the selected version before finalizing. Do not guess graph/index file combinations. -For **4.7.0**, the GBZ graph, distance index, minimizer index, and zipcodes file +The GBZ graph, distance index, minimizer index, and zipcodes file are required inputs. Supply `--zipcodes-name` explicitly; do not infer a compatible zipcodes file from a minimizer filename. Use `--ref-paths` when the output BAM needs a supplied path order or sequence dictionary. +Giraffe uses vg v1.75.1: generate index files with vg v1.75.1, regenerating any +built with an older vg, and supply a GBZ version 1 graph. vg 1.72.0 and later +write version 2 by default, which fails to load; convert it with +`vg gbwt -Z graph.gbz -g graph-v1.gbz --gbz-v1` (vg 1.74.0 or later). Indexes +built from the same graph stay valid after that conversion. In 4.7.1, giraffe +uses vg v1.70.0; build its indexes with that version. + To produce a **coordinate-sorted BAM without duplicate marking**, use `--no-markdups`. `--align-only` stops before coordinate sorting and therefore does not meet that output requirement. Preserve the supplied sample and all read-group fields using the Giraffe-specific flags in the mapping below. +An `--out-bam` path ending in `.cram` writes CRAM. It requires a +`--ref` FASTA that matches the graph and the paths in `--ref-paths`, cannot be +combined with `--align-only`, and `--run-ref-verification` is recommended the +first time a reference is used. Dropping `--align-only` for CRAM also turns on +duplicate marking; add `--no-markdups` if duplicates should stay unmarked. + ## Performance Guidance Prefer the documented automatic stream selection for general commands: leave @@ -73,8 +86,9 @@ equivalent. | `vg giraffe` fragment length controls | `--max-fragment-length`, `--fragment-mean`, `--fragment-stdev` | Same fragment-distribution role. | | `vg giraffe --max-multimaps`, `-M` | `--max-multimaps` | Max alignments per read (default: 1). | | `vg giraffe --copy-comment` | `--copy-comment` | Appends FASTQ comment to BAM output via auxiliary tag. | +| `vg giraffe --supplementary` | `--supplementary` | Identify and report supplementary alignments (off by default). | | Alignment-only output | `--align-only` | Stops after `vg giraffe` alignment output; does not coordinate-sort. | -| GATK/Picard `SortSam --OUTPUT`, `-O` | `--out-bam` | Final BAM output path. | +| GATK/Picard `SortSam --OUTPUT`, `-O` | `--out-bam` | Final BAM output path, or CRAM for a `.cram` path. | | GATK/Picard duplicate-marking behavior | `--markdups-*`, `--optical-duplicate-pixel-distance`, `--no-markdups` | Parabricks exposes the duplicate-marking controls documented for this pipeline. | | GATK/Picard `--version` | `--version` | Same version-reporting role. | | Upstream `vg giraffe` options not listed here | No direct equivalent | Not exposed by current Parabricks docs for `pbrun giraffe`. | @@ -88,6 +102,8 @@ equivalent. | `--nstreams`, `--num-cpu-threads-per-gpu`, `--batch-size`, `--write-threads`, `--work-queue-capacity` | Parabricks GPU/CPU pipeline scheduling controls. Prefer `--nstreams auto` for default guidance; use integer stream counts only for benchmarked/manual tuning. | | `--minimizers-gpu` | Parabricks GPU offload for minimizers/seeds in supported single-end runs. | | `--memory-limit`, `--low-memory` | Parabricks host/GPU memory controls for the pipeline. | +| `--in-se-cram`, `--in-cram-ref`, `--cram-read-threads` | Single-end CRAM input; aligned reads are re-aligned and need `--in-cram-ref` to decode. Paired-end CRAM is not supported. | +| `--ultima-tags`, `--tp-output-order` | Carry Ultima per-base `tp`/`t0` tags from `--in-se-cram` input to the output. | ## Validation diff --git a/library-skills/parabricks/references/pbrun-haplotypecaller.md b/library-skills/parabricks/references/pbrun-haplotypecaller.md index 90d002dd..a1656028 100644 --- a/library-skills/parabricks/references/pbrun-haplotypecaller.md +++ b/library-skills/parabricks/references/pbrun-haplotypecaller.md @@ -30,8 +30,11 @@ GPU-accelerated HaplotypeCaller counterpart, but the CLI is not one-to-one: some GATK flags are direct Parabricks flags, while other supported original HaplotypeCaller options must be passed through `--haplotypecaller-options`. Use the spelling documented for that inner parser, which differs from GATK's -top-level CLI for some options. For example, 4.7.1 accepts one quoted value -`'-min-pruning 4 -pcr-indel-model NONE'`; those are single-hyphen inner flags. +top-level CLI for some options. For example, the inner parser takes one quoted +value `'-min-pruning 4 -pcr-indel-model NONE'`; those are single-hyphen inner +flags. Allele-specific (`AS_*`) annotations, whether from `-G` or from `-A` +inside `--haplotypecaller-options`, require `--gvcf`; Parabricks rejects them +during argument checking. `--in-recal-file` applies the supplied recalibration table during calling; creating that table earlier did not itself rewrite the input BAM. A separate ApplyBQSR BAM is unnecessary when using this caller input. @@ -66,7 +69,7 @@ ApplyBQSR BAM is unnecessary when using this caller input. | `--adaptive-pruning` | Parabricks-exposed graph pruning control. | | `--force-call-filtered-alleles` | Parabricks force-calling behavior tied to its documented allele input. | | `--filter-reads-too-long`, `--no-alt-contigs` | Parabricks read/contig filtering conveniences. | -| `--htvc-low-memory`, `--num-htvc-threads`, `--num-streams-per-gpu`, `--run-partition`, `--gpu-num-per-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` default 1. | +| `--htvc-low-memory`, `--num-htvc-threads`, `--num-streams-per-gpu`, `--run-partition`, `--gpu-num-per-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` defaults to `auto`. | ## Validation diff --git a/library-skills/parabricks/references/pbrun-indexgvcf.md b/library-skills/parabricks/references/pbrun-indexgvcf.md index 3fc32317..bb228ea7 100644 --- a/library-skills/parabricks/references/pbrun-indexgvcf.md +++ b/library-skills/parabricks/references/pbrun-indexgvcf.md @@ -2,11 +2,13 @@ ## First Steps -1. Confirm the input is a GVCF that needs indexing. +1. Confirm the input is a GVCF that needs indexing. `haplotypecaller` and + `deepvariant` already write `.tbi` for `.gz` output, so check for + that index before planning an `indexgvcf` run. 2. Collect required inputs: - Input GVCF path, and whether its directory is writable inside the container. - Where the index must end up. There is no documented output-path option; the - `.tbi` is written next to the input (see Output Naming below). + index is written next to the input (see Output Naming below). 3. Ask whether the output will be consumed by `genotypegvcf` or another tool. ## Command Shape @@ -21,9 +23,10 @@ Verify exact flags against the selected version. ## Output Naming and Read-Only Inputs -- The index name is the input filename with `.tbi` appended - (`sample.g.vcf.gz` → `sample.g.vcf.gz.tbi`). Do not use or invent an `--out` - flag; none is documented for `indexgvcf`. +- The index name is the input filename with `.tbi` appended for a `.gz` input + (`sample.g.vcf.gz` → `sample.g.vcf.gz.tbi`), or `.idx` for an uncompressed + `.g.vcf`. Do not use or invent an `--out` flag; none is documented for + `indexgvcf`. - If the original GVCF is on a read-only mount (for example `/data`), indexing it in place fails. Index a **writable copy** instead and leave the original untouched. @@ -36,19 +39,19 @@ Verify exact flags against the selected version. cp -p /data/ /results/ ``` - Ask the user before replacing an existing GVCF or `.tbi`, and make clear the - commands are a plan until the user runs them. + For an uncompressed `.g.vcf`, check for `.idx` instead of the + `.tbi`. Ask the user before replacing an existing GVCF or index, and make + clear the commands are a plan until the user runs them. ## IndexFeatureFile Option Mapping Use this mapping when translating a GATK `IndexFeatureFile` command for GVCF -indexing to `pbrun indexgvcf`. Parabricks documents `indexgvcf` as -creating a `.tbi` index by appending `.tbi` to the input GVCF filename. +indexing to `pbrun indexgvcf`. | GATK option | `pbrun indexgvcf` equivalent | Notes | | --- | --- | --- | | `--input`, `-I` | `--input` | Required gVCF/gVCF.GZ input. | -| Implicit output index path | Implicit `.tbi` next to input | Parabricks docs state the output name is determined by appending `.tbi` to the input GVCF filename. | +| Implicit output index path | Implicit `.tbi` (`.gz` input) or `.idx` (`.g.vcf`) next to input | Not configurable; see Output Naming and Read-Only Inputs. | | GATK output path override, cloud flags, `--arguments_file`, and Java options | No direct equivalent | Not exposed by current Parabricks docs for `indexgvcf`. | ## Validation @@ -58,9 +61,10 @@ creating a `.tbi` index by appending `.tbi` to the input GVCF filename. ## Guardrails -- Do not use this for ordinary VCF indexing unless the selected version - documents that use. +- Index only GVCFs and ordinary `.vcf.gz` files; other inputs are not + documented. - Do not run genotyping here; route to `pbrun-genotypegvcf.md`. - Do not invent output index suffixes; verify version behavior. -- Do not overwrite an existing GVCF or `.tbi`, and do not index a read-only - original in place; use a writable copy after checking the destination. +- Do not overwrite an existing GVCF or index (`.tbi`, or `.idx` for an + uncompressed `.g.vcf`), and do not index a read-only original in place; use + a writable copy after checking the destination. diff --git a/library-skills/parabricks/references/pbrun-minimap2.md b/library-skills/parabricks/references/pbrun-minimap2.md index 9d26acdd..533c7e0a 100644 --- a/library-skills/parabricks/references/pbrun-minimap2.md +++ b/library-skills/parabricks/references/pbrun-minimap2.md @@ -36,6 +36,7 @@ to several upstream commands rather than one single tool. | Baseline option | `pbrun minimap2` equivalent | Notes | | --- | --- | --- | | `minimap2 ` | `--ref` | Required reference FASTA path. | +| `minimap2 ` paired-end FASTQ | `--in-fq ` | Two files per `--in-fq` are aligned as a pair; one file is single-end. Interleaved FASTQ is not supported. Pairing is new in 4.8.0; do not rely on it in 4.7.1. | | BAM/CRAM input for preprocessing workflow | `--in-bam` | Parabricks input BAM/CRAM mode. | | `minimap2 -x` | `--preset` | Parabricks supports documented presets such as `map-pbmm2`, `map-hifi`, `map-ont`, `lr:hq`, `splice`, `splice:hq`, and `splice:sr`. | | `minimap2 -t` | `--num-threads` | Processing thread count. | @@ -60,8 +61,8 @@ to several upstream commands rather than one single tool. | `--pbmm2`, `--pbmm2-unmapped` | Parabricks compatibility mode for pbmm2-style output and unmapped records. | | `--out-qc-metrics-dir` | Parabricks workflow output for QC metrics. | | `--standalone-bqsr` | Parabricks mode control for running BQSR after sorted BAM generation. | -| `--nstreams`, `--max-queue-chunks`, `--max-queue-reads`, `--chunk-size` | Parabricks GPU/CPU pipeline queue and chunk controls. | -| `--chaining-on-gpu` | GPU offload for minimap2 chaining; may help CPU-bound runs. | +| `--nstreams`, `--max-queue-chunks`, `--max-queue-reads`, `--chunk-size`, `--estimated-read-length`, `--estimated-anchor-per-read`, `--stage2-large-chaining-size` | Parabricks GPU/CPU pipeline tuning controls. `--nstreams` and `--chunk-size` default to `auto`, tuned from device memory and preset; set values only for benchmarked tuning. | +| `--seeding-chaining-on-gpu on\|off\|auto` | GPU seeding and chaining; `auto` uses the GPU only for `splice:sr`, so `on` may help CPU-bound runs with other presets. Replaces 4.7.1's bare `--chaining-on-gpu` switch, now a deprecated alias that requires a value. | | `--low-memory` | Parabricks memory-reduction mode. | ## Validation diff --git a/library-skills/parabricks/references/pbrun-mutectcaller.md b/library-skills/parabricks/references/pbrun-mutectcaller.md index 7bd475ce..d6963d2f 100644 --- a/library-skills/parabricks/references/pbrun-mutectcaller.md +++ b/library-skills/parabricks/references/pbrun-mutectcaller.md @@ -24,7 +24,7 @@ pbrun mutectcaller \ Verify exact tumor/normal, resource, interval, and filtering flags against the selected version. -For a panel of normals in **4.7.0**, follow +For a panel of normals, follow [prepon](pbrun-prepon.md) for contig-header validation and the required `.pon` resource. Pass the prepared **VCF.GZ** to `--pon`, then use [postpon](pbrun-postpon.md) for PON INFO annotation of the caller's VCF. @@ -57,7 +57,7 @@ but common GATK engine and Java controls do not. | --- | --- | | PON index handoff from `prepon` / `postpon` workflow flags | Parabricks decomposes PON handling into preprocessing, calling, and postprocessing steps. | | Parabricks-specific filtering or compatibility flags documented for the selected version | These are wrapper-specific controls; verify current docs before use. | -| `--num-streams-per-gpu`, `--mutect-low-memory`, `--run-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` default 1. | +| `--num-streams-per-gpu`, `--mutect-low-memory`, `--run-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` defaults to `auto`. | ## Validation diff --git a/library-skills/parabricks/references/pbrun-ont_germline.md b/library-skills/parabricks/references/pbrun-ont_germline.md index a910f13b..a0872790 100644 --- a/library-skills/parabricks/references/pbrun-ont_germline.md +++ b/library-skills/parabricks/references/pbrun-ont_germline.md @@ -46,9 +46,10 @@ calling. The DeepVariant small model is enabled by default; use | `pbrun ont_germline` option | Why it has no direct baseline equivalent | | --- | --- | -| `--standalone-bqsr`, `--out-qc-metrics-dir` | Parabricks pipeline mode/output controls. | +| `--standalone-bqsr` | Parabricks pipeline mode control. | | DeepVariant channel/allele-counter flags exposed directly by Parabricks | Parabricks first-class controls for DeepVariant internals. | -| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--chaining-on-gpu` | Parabricks minimap2 GPU pipeline controls. `--chaining-on-gpu` may help CPU-bound alignment. | +| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--estimated-*`, `--stage2-large-chaining-size` | Parabricks minimap2 GPU pipeline tuning controls; set values only for benchmarked tuning. | +| `--seeding-chaining-on-gpu` | `on` may help CPU-bound alignment (`auto` keeps this preset on CPU). Replaces 4.7.1's bare `--chaining-on-gpu` switch, now a deprecated alias that requires a value. | | `--disable-small-model` | Opt-out for the default-on DeepVariant small model. | | `--low-memory` | Parabricks memory-reduction mode. | diff --git a/library-skills/parabricks/references/pbrun-pacbio_germline.md b/library-skills/parabricks/references/pbrun-pacbio_germline.md index c1479918..cefe8238 100644 --- a/library-skills/parabricks/references/pbrun-pacbio_germline.md +++ b/library-skills/parabricks/references/pbrun-pacbio_germline.md @@ -48,9 +48,10 @@ DeepVariant calling. The DeepVariant small model is enabled by default; use | `pbrun pacbio_germline` option | Why it has no direct baseline equivalent | | --- | --- | | `--pbmm2`, `--pbmm2-unmapped` | Parabricks compatibility controls for pbmm2-style output. | -| `--standalone-bqsr`, `--out-qc-metrics-dir` | Parabricks pipeline mode/output controls. | +| `--standalone-bqsr` | Parabricks pipeline mode control. | | DeepVariant channel/allele-counter flags exposed directly by Parabricks | Parabricks first-class controls for DeepVariant internals. | -| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--chaining-on-gpu` | Parabricks minimap2 GPU pipeline controls. `--chaining-on-gpu` may help CPU-bound alignment. | +| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--estimated-*`, `--stage2-large-chaining-size` | Parabricks minimap2 GPU pipeline tuning controls; set values only for benchmarked tuning. | +| `--seeding-chaining-on-gpu` | `on` may help CPU-bound alignment (`auto` keeps PacBio presets on CPU). Replaces 4.7.1's bare `--chaining-on-gpu` switch, now a deprecated alias that requires a value. | | `--disable-small-model` | Opt-out for the default-on DeepVariant small model. | | `--low-memory` | Parabricks memory-reduction mode. | diff --git a/library-skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md b/library-skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md index e1ddecaf..5b3d9c81 100644 --- a/library-skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md +++ b/library-skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md @@ -28,7 +28,7 @@ For Roche SBX-D or SBX-Fast BAMs, add `--sbx`. That selects the shipped `deepvariant_pangenome_aware_sbx.eng` model unless `--pb-model-file` overrides it, and applies SBX make-examples/postprocess defaults. -## Parabricks 4.7.0 command +## Prepared-alignment command For prepared BAM/CRAM input, the four required arguments are `--ref`, `--pangenome` (the GBZ graph), `--in-bam`, and `--out-variants`: @@ -47,8 +47,8 @@ alignments; it does not require rerunning the `pangenome_germline` FASTQ pipelin ## Comparing with Google's implementation -The 4.7.0 manual documents three sources of output differences. Investigate -them separately after matching inputs, model versions, and comparison settings: +Three known sources cause output differences. Investigate them separately +after matching inputs, model versions, and comparison settings: - **CNN inference:** TensorRT and Keras can differ by about `10^-5` in predicted scores. The manual reports observed differing variants among zero-quality diff --git a/library-skills/parabricks/references/pbrun-pangenome_germline.md b/library-skills/parabricks/references/pbrun-pangenome_germline.md index d5a5aa79..3ac64127 100644 --- a/library-skills/parabricks/references/pbrun-pangenome_germline.md +++ b/library-skills/parabricks/references/pbrun-pangenome_germline.md @@ -41,6 +41,7 @@ pipeline-level rather than one-to-one. | DeepVariant custom model | `--pb-model-file` | Optional TensorRT model. Default is the shipped pangenome-aware engine, or the SBX engine when `--sbx` is set. | | Roche SBX Google case-study settings | `--sbx` | Roche SBX-D / SBX-Fast mode on the pangenome-aware DeepVariant stage. | | `vg giraffe --max-multimaps`, `-M` | `--max-multimaps` | Max alignments per read (default: 1). | +| `vg giraffe --supplementary` | `--supplementary` | Identify and report supplementary alignments (off by default). | | Intervals/regions | `--interval` or `--interval-file` | Verify pangenome workflow support for interval restriction. | | Upstream `vg giraffe` or DeepVariant options not listed here | No direct equivalent | Not exposed by current Parabricks docs for `pangenome_germline`. | @@ -50,12 +51,15 @@ pipeline-level rather than one-to-one. | --- | --- | | `--sbx` | Roche SBX mode for the pangenome-aware DeepVariant stage. | | GPU graph-alignment stream, batch, queue, and minimizer controls | Parabricks GPU implementation tuning. | +| `--in-se-cram`, `--in-cram-ref`, `--cram-read-threads` | Single-end CRAM input, as in `giraffe`; the Ultima tag options are giraffe-only. | | GPU write/sort/storage controls | Parabricks accelerated output pipeline. | | DeepVariant channel/allele-counter flags exposed directly by Parabricks | Parabricks first-class controls for DeepVariant internals. | ## Validation - Pangenome resources are complete and compatible with the reference build. +- The graph is GBZ version 1 and the indexes were built with vg v1.75.1 + (v1.70.0 for 4.7.1; see `pbrun-giraffe.md`). - Output VCF/gVCF or output directory exists. ## Guardrails diff --git a/library-skills/parabricks/references/pbrun-postpon.md b/library-skills/parabricks/references/pbrun-postpon.md index 667f360a..9e9d7dfb 100644 --- a/library-skills/parabricks/references/pbrun-postpon.md +++ b/library-skills/parabricks/references/pbrun-postpon.md @@ -13,7 +13,7 @@ pbrun postpon \ --out-vcf /outputdir/ ``` -All three paths are required in 4.7.1. Use the same assembly-compatible PON as +All three paths are required. Use the same assembly-compatible PON as in prepon and mutectcaller, including its matching tabix index. Preserve the unannotated calls by selecting a distinct output path. Verify the annotated VCF and intended INFO changes after an authorized run; an output directory @@ -24,4 +24,4 @@ Runtime controls follow the shared command contract. Read the prepon reference for header repair and PON preparation; ordinary GATK engine flags do not have assumed Parabricks equivalents. -Source: [NVIDIA postpon 4.7.1 manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/postpon). +Source: [NVIDIA postpon manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/postpon). diff --git a/library-skills/parabricks/references/pbrun-prepon.md b/library-skills/parabricks/references/pbrun-prepon.md index 062f9ac0..e72980ff 100644 --- a/library-skills/parabricks/references/pbrun-prepon.md +++ b/library-skills/parabricks/references/pbrun-prepon.md @@ -18,7 +18,7 @@ running prepon. Do not reuse the original index for changed compressed content. pbrun prepon --in-pon-file /workdir/ ``` -Run in a writable working area for generated resources. The 4.7.1 interface +Run in a writable working area for generated resources. `prepon` exposes no `--out` option; retain the prepared PON and generated companion resources for the caller. Supply that same PON path to `mutectcaller --pon`. Then use postpon to annotate the resulting calls. Keep all three commands as @@ -28,4 +28,4 @@ The only required tool input is `--in-pon-file`; runtime controls follow the shared command contract. Check prepon completion and the caller's access to its resources before calling. Do not infer graph or cohort inputs from the name. -Source: [NVIDIA prepon 4.7.1 manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/prepon). +Source: [NVIDIA prepon manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/prepon). diff --git a/library-skills/parabricks/references/pbrun-rna_fq2bam.md b/library-skills/parabricks/references/pbrun-rna_fq2bam.md index d21f3120..c6d9f483 100644 --- a/library-skills/parabricks/references/pbrun-rna_fq2bam.md +++ b/library-skills/parabricks/references/pbrun-rna_fq2bam.md @@ -14,7 +14,7 @@ ## Command Shape -For Parabricks 4.7.0/4.7.1, every command needs a read-input mode, `--ref`, +Every command needs a read-input mode, `--ref`, `--genome-lib-dir`, **`--output-dir`**, and **`--out-bam`**. The output directory and final BAM are separate required arguments; a BAM path or Docker mount does not replace `--output-dir`. Check that both remain present after translating diff --git a/library-skills/parabricks/references/pbrun-somatic.md b/library-skills/parabricks/references/pbrun-somatic.md index 0c1718ef..80b92cb2 100644 --- a/library-skills/parabricks/references/pbrun-somatic.md +++ b/library-skills/parabricks/references/pbrun-somatic.md @@ -31,11 +31,9 @@ of the pipeline: longer than 512 bp. Valid values are 512 or 1024. Reads above the selected value still use CPU recovery, and processing longer reads at all also requires raising `--max-read-length`. -- `--run-partition`: genome/Mutect partitions, not fq2bam GPU-process partitioning. -- `--bwa-gpu-num-per-partition` (default: 2): BWA GPUs per worker when - `--run-partition` is set; must divide `--num-gpus`. -- `--gpu-num-per-partition`: Mutect GPUs per partition. -- `--num-streams-per-gpu` (default: 1): Mutect streams, not a partition flag. +- Partition and stream controls (`--run-partition`, + `--bwa-gpu-num-per-partition`, `--gpu-num-per-partition`, + `--num-streams-per-gpu`): roles and defaults are in the options table below. - `--mutect-low-memory` and `--low-memory` for memory-pressure troubleshooting. ## Somatic Pipeline Option Mapping @@ -73,7 +71,7 @@ single-tool mapping. | `--run-partition` | Genome/Mutect partitions (one process per partition). Not fq2bam GPU-process partitioning. | | `--bwa-gpu-num-per-partition` | BWA GPUs per worker when `--run-partition` is set (default: 2; must divide `--num-gpus`). | | `--gpu-num-per-partition` | Mutect GPUs per partition. | -| `--num-streams-per-gpu` | Mutect streams (default: 1). Not a partition flag. | +| `--num-streams-per-gpu` | Mutect streams (default: `auto`). Not a partition flag. | | `--mutect-low-memory` | Parabricks low-memory mode for the Mutect stage. | | GPU alignment/calling stream, queue, and memory controls | Parabricks GPU runtime tuning. | | GPU write/sort/storage controls | Parabricks accelerated output pipeline. | diff --git a/library-skills/parabricks/references/performance.md b/library-skills/parabricks/references/performance.md index e482d9a1..40d53134 100644 --- a/library-skills/parabricks/references/performance.md +++ b/library-skills/parabricks/references/performance.md @@ -1,15 +1,14 @@ # Parabricks Alignment Performance Guidance -Shared BWA-stream tuning guidance for the `fq2bam` and `fq2bam_meth` commands. +Shared BWA tuning guidance for `fq2bam`, `fq2bam_meth`, and the `germline`, +`deepvariant_germline`, and `somatic` pipelines. (Giraffe uses `--nstreams`; see `pbrun-giraffe.md`.) ## BWA Streams -Prefer the documented automatic stream selection for general commands: leave -`--bwa-nstreams` unset, or set `--bwa-nstreams auto` only when making the -default explicit. NVIDIA Parabricks 4.7.0 documentation says Parabricks -automatically chooses an optimal number of BWA streams from the GPU device -memory specification. +Prefer automatic stream selection for general commands: leave `--bwa-nstreams` +unset, or set `--bwa-nstreams auto` only when making the default explicit. +Parabricks picks the number of BWA streams from the GPU's device memory. Use integer `--bwa-nstreams` values only for benchmark-driven tuning or memory-pressure troubleshooting after confirming the selected Parabricks @@ -24,10 +23,13 @@ should not be part of conservative default command templates. requires raising `--max-read-length`. - `--run-partition`: try on systems with 4 or more GPUs. It forks one worker process per partition. `--bwa-gpu-num-per-partition` controls GPUs per - partition (default: 2) and must divide `--num-gpus` evenly. -- For `fq2bam_meth`, `--bwa-primary-cpus` and `--bwa-cpu-thread-pool` tune - CPU-stage threading (`--bwa-cpu-thread-pool` defaults to 1; check the selected - release before reusing an older fq2bam default). + partition (default: 2) and must divide `--num-gpus` evenly. The total + `--bwa-primary-cpus` must also divide evenly across the partitions. +- `--bwa-primary-cpus` and `--bwa-cpu-thread-pool` tune CPU-stage threading. + `fq2bam`, `fq2bam_meth`, and the `germline`, `deepvariant_germline`, and + `somatic` pipelines default to `auto` (16 primary threads per GPU) and a pool + of 1. A manual `--bwa-primary-cpus` is the run total, not per GPU; keep its + product with `--bwa-cpu-thread-pool` within the host's CPU threads. -Official performance guidance: - +Official performance guidance (4.8.0): + diff --git a/library-skills/parabricks/references/rna-translation.md b/library-skills/parabricks/references/rna-translation.md index ec116c6f..558a3319 100644 --- a/library-skills/parabricks/references/rna-translation.md +++ b/library-skills/parabricks/references/rna-translation.md @@ -1,15 +1,16 @@ # STAR argument translation -Use `scripts/translate_star_to_parabricks.py` for Parabricks 4.7.0 or 4.7.1 -alignment drafts. It reads a JSON request object or array and never opens the -FASTQs, invokes the decompressor, contacts a service, or launches Parabricks. +Use `scripts/translate_star_to_parabricks.py` for Parabricks 4.7.0, 4.7.1, or +4.8.0 alignment drafts. It reads a JSON request object or array and never +opens the FASTQs, invokes the decompressor, contacts a service, or launches +Parabricks. Requires Python 3.7 or newer; no third-party packages are needed. ## Request schema | Field | Meaning | | --- | --- | -| `version` | Explicit `4.7.0` or `4.7.1`; this is the software release, not an image tag | +| `version` | Explicit `4.7.0`, `4.7.1`, or `4.8.0`; this is the software release, not an image tag | | `star_args` | Original STAR argv as strings, including every flag/value; optional leading `STAR` | | `ref` | Target reference FASTA | | `output_dir` | Directory for STAR's generated outputs | diff --git a/library-skills/parabricks/references/runtime-environment.md b/library-skills/parabricks/references/runtime-environment.md index 4dc25f0a..508e1e40 100644 --- a/library-skills/parabricks/references/runtime-environment.md +++ b/library-skills/parabricks/references/runtime-environment.md @@ -151,7 +151,7 @@ specify driver **525.60.13 or newer**, Docker **20.10 or newer**, and supported NVIDIA GPUs with at least 16 GB each. `fq2bam` needs 24 GB by default, or 16 GB with `--low-memory`. For eight GPUs, the documented host baseline is 392 GB RAM and 48 CPU threads. The manual's container probe uses CUDA 12.0.0; do not -test a 4.2 host against the helper's default CUDA 12.9.1 image. +test a 4.2 host against the helper's default CUDA 13.3.1 image. For authorized container probes on a Parabricks 4.2 host, explicitly select the CUDA image from that manual: @@ -164,6 +164,25 @@ bash scripts/check_parabricks_runtime.sh \ --parabricks-version 4.2-1 ``` +For **4.7.1 (`4.7.1-1`)**, the manual's container probe uses CUDA 12.9.1. Pass +`--cuda-test-image nvidia/cuda:12.9.1-base-ubuntu22.04`; the helper's 13.3.1 +default can fail on a driver that supports 4.7.1. + +For **4.8.0 (`4.8.0-1`)**, the +[requirements](https://docs.nvidia.com/clara/parabricks/v4.8.0/get-started/installation-requirements) +specify a driver compatible with CUDA 13.3.x. Data center and workstation GPUs +can use CUDA forward compatibility on the 535+, 570+, 580+, 590+, 595+, or 610+ +driver branches; consumer GPUs need driver 610 or newer. The manual's container +probe uses CUDA 13.3.1, which is also the helper's default probe image: + +```bash +bash scripts/check_parabricks_runtime.sh \ + --run-container-check \ + --cuda-test-image nvidia/cuda:13.3.1-base-ubuntu22.04 \ + --run-parabricks-check \ + --parabricks-version 4.8.0-1 +``` + If a CUDA probe fails, inspect the reported image and error before treating `runtime-incomplete` as evidence of a Container Toolkit problem. An incompatible probe image can fail on a host that supports the selected Parabricks release; @@ -285,8 +304,8 @@ Open questions: - Parabricks 4.2 requirements: -- Current installation requirements (use only for that release): - +- 4.8.0 installation requirements: + - NVIDIA Container Toolkit installation: - Docker Engine installation: diff --git a/library-skills/parabricks/references/shared-options.md b/library-skills/parabricks/references/shared-options.md index 52d57206..3c619bb1 100644 --- a/library-skills/parabricks/references/shared-options.md +++ b/library-skills/parabricks/references/shared-options.md @@ -20,9 +20,10 @@ establish support in another. The release verification rules in | `--regions` | `--interval` or `--interval-file` | Separates inline intervals from BED interval files. | `deepsomatic`, `deepvariant` | | Paired-end FASTQ inputs | `--in-fq ` | Repeat for multiple pairs; keep each optional read group with its pair. | `germline` | | `bwa mem -R ` / BWA-Meth `--read-group` | read group string after FASTQ inputs, or `--read-group-*` flags | Preserve supplied per-lane tags; do not invent values. | `deepvariant_germline`, `fq2bam_meth`, `germline` | -| `bwa mem -M`, `-Y`, `-C`, `-T`, `-B`, `-U`, `-L`, `-I`, `-K` | `--bwa-options` | Pass supported BWA-MEM options as one string. | `deepvariant_germline`, `fq2bam`, `fq2bam_meth`, `germline` | +| `bwa mem -M`, `-Y`, `-C`, `-T`, `-B`, `-U`, `-L`, `-I`, `-K`, `-S`, `-P`, `-5`, `-q` | `--bwa-options` | Pass supported BWA-MEM options as one string. | `deepvariant_germline`, `fq2bam`, `fq2bam_meth`, `germline`, `somatic` | +| BWA-MEM before 0.7.16 (no `MC` tags) | `--no-mate-cigar` | Parabricks targets BWA-MEM 0.7.17 and adds mate-CIGAR tags to paired records; this flag omits them. Cannot be combined with `--fix-mate`. | `deepvariant_germline`, `fq2bam`, `fq2bam_meth`, `germline`, `somatic` | | — | `--max-read-length`, `--min-read-length`, `--filter-flag`, `--skip-multiple-hits` | Pipeline read/SAM filtering controls. | `deepvariant_germline`, `germline` | -| — | `--bwa-nstreams`, `--bwa-cpu-thread-pool`, `--bwa-primary-cpus`, `--bwa-normalized-queue-capacity` | CPU/GPU alignment scheduling controls. | `deepvariant_germline`, `germline` | +| — | `--bwa-nstreams`, `--bwa-cpu-thread-pool`, `--bwa-primary-cpus`, `--bwa-normalized-queue-capacity` | CPU/GPU alignment scheduling controls; BWA stream and thread defaults are in [performance.md](performance.md). | `deepvariant_germline`, `germline`, `somatic` | | GATK/Picard `SortSam --OUTPUT`, `-O` | `--out-bam` | Final BAM/CRAM output path. | `fq2bam`, `fq2bam_meth` | | GATK/Picard sorted, duplicate-marked BAM output | `--out-bam` | Required alignment output alongside the variant output. | `germline` | | — | `--max-read-length`, `--min-read-length` | FASTQ filtering/alignment bounds. | `fq2bam`, `fq2bam_meth`, `giraffe` | @@ -48,7 +49,7 @@ establish support in another. The release verification rules in | GATK `BaseRecalibrator --intervals`, `-L` | `--interval`, `--interval-file` | Separates inline intervals from interval files. | `fq2bam`, `fq2bam_meth`, `minimap2` | | GATK `BaseRecalibrator --interval-padding`, `-ip` | `--interval-padding`, `-ip` | Same padding role. | `fq2bam`, `fq2bam_meth`, `minimap2` | | — | `--out-qc-metrics-dir` | Workflow output for QC metrics. | `fq2bam`, `fq2bam_meth`, `minimap2` | -| — | `--standalone-bqsr`, `--out-qc-metrics-dir` | Pipeline mode/output controls. | `ont_germline`, `pacbio_germline` | +| — | `--standalone-bqsr` | Pipeline mode control. | `ont_germline`, `pacbio_germline` | | GATK `BaseRecalibrator --known-sites` | `--knownSites` | Repeatable known-sites VCF input when BQSR is used. | `pacbio_germline`, `somatic` | ## Variant calling and models @@ -59,15 +60,15 @@ establish support in another. The release verification rules in | `--reads` | `--in-bam` | Prepared aligned reads for variant calling. | `deepvariant` | | `--output_gvcf` | `--gvcf` plus `--out-variants` | Also produces the corresponding VCF; see the tool reference for partitioning restrictions. | `deepvariant` | | `--model_type` | `--mode`, `--use-wes-model`, or selected model file | The manual documents short-read, PacBio, and ONT modes plus WES/model-file controls. | `deepsomatic`, `deepvariant` | -| `--customized_model` | `--pb-model-file` | Non-default Parabricks model file. | `deepsomatic`, `deepvariant` | +| `--customized_model` | `--pb-model-file` | Non-default Parabricks model file; build it with TensorRT 11.3.0.99 (10.14.1.48 for 4.7.1) to match the shipped engines. | `deepsomatic`, `deepvariant` | | — | `--disable-use-window-selector-model` | Inverse/compatibility control for window selector behavior. | `deepsomatic`, `deepvariant` | | DeepVariant `--output_vcf` | `--out-variants` | VCF/gVCF output. | `deepvariant_germline`, `ont_germline`, `pacbio_germline`, `pangenome_aware_deepvariant`, `pangenome_germline` | | DeepVariant `--output_gvcf` / gVCF mode | `--gvcf` plus `--out-variants` | Output path extension controls VCF/gVCF naming. | `deepvariant_germline`, `ont_germline`, `pacbio_germline` | -| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files. | `deepvariant_germline`, `ont_germline`, `pacbio_germline` | +| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files built for the selected release. | `deepvariant_germline`, `ont_germline`, `pacbio_germline` | | minimap2 reference / DeepVariant `--ref` | `--ref` | Required reference FASTA path. | `ont_germline`, `pacbio_germline` | | — | DeepVariant channel/allele-counter flags exposed directly by Parabricks | First-class controls for DeepVariant internals. | `ont_germline`, `pacbio_germline`, `pangenome_germline` | -| DeepVariant `--output_gvcf` / gVCF mode | `--gvcf` plus `--out-variants` | Output path extension controls VCF/gVCF naming when documented. | `pangenome_aware_deepvariant`, `pangenome_germline` | -| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files where supported. | `pangenome_aware_deepvariant`, `pangenome_germline` | +| DeepVariant `--output_gvcf` / gVCF mode | No direct equivalent | These tools do not expose `--gvcf`. | `pangenome_aware_deepvariant`, `pangenome_germline` | +| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files built for the selected release, where supported. | `pangenome_aware_deepvariant`, `pangenome_germline` | ## Execution controls @@ -84,7 +85,7 @@ establish support in another. The release verification rules in | — | `--align-only`, `--standalone-bqsr`, `--fix-mate` | Pipeline mode controls. | `deepvariant_germline`, `germline` | | — | `--monitor-usage`, `--no-warnings` | Runtime reporting controls. | `deepvariant_germline`, `germline` | | — | `--cigar-on-gpu`, `--gpuwrite`, `--gpuwrite-deflate-algo`, `--gpusort`, `--use-gds` | GPU-accelerated write/sort/storage controls. | `deepvariant_germline`, `germline` | -| — | `--memory-limit`, `--low-memory` | Host/GPU memory controls. | `deepvariant_germline`, `germline` | +| — | `--memory-limit`, `--low-memory` | Host/GPU memory controls. | `deepvariant_germline`, `germline`, `somatic` | | — | `--no-warnings` | Warning suppression. | `fq2bam`, `fq2bam_meth` | | — | `--filter-flag` | SAM flag-based filtering during output generation. | `fq2bam`, `fq2bam_meth` | | — | `--skip-multiple-hits` | SA-tag-based output filtering. | `fq2bam`, `fq2bam_meth` | diff --git a/library-skills/parabricks/references/tool-index.md b/library-skills/parabricks/references/tool-index.md index b536b44f..ffd37893 100644 --- a/library-skills/parabricks/references/tool-index.md +++ b/library-skills/parabricks/references/tool-index.md @@ -17,7 +17,7 @@ Read only the selected tool reference and its relevant shared mappings. | [`bqsr`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/bqsr) | [pbrun-bqsr.md](pbrun-bqsr.md) | Generate base quality score recalibration data for later `applybqsr`. | | [`fq2bam`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/fq2bam) | [pbrun-fq2bam.md](pbrun-fq2bam.md) | Raw paired short-read DNA FASTQ → aligned BAM/CRAM with common preprocessing (align/sort/dedup/BQSR path). | | [`fq2bam_meth`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/fq2bam_meth) | [pbrun-fq2bam_meth.md](pbrun-fq2bam_meth.md) | Bisulfite or methylation FASTQ workflows — not standard DNA `fq2bam`. | -| [`giraffe`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/giraffe) | [pbrun-giraffe.md](pbrun-giraffe.md) | Pangenome graph alignment with vg giraffe; produce aligned BAM for pangenome-aware variant calling. | +| [`giraffe`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/giraffe) | [pbrun-giraffe.md](pbrun-giraffe.md) | Pangenome graph alignment with vg giraffe; produce aligned BAM or CRAM for pangenome-aware variant calling; also aligns single-end CRAM input. | | [`markdup`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/markdup) | [pbrun-markdup.md](pbrun-markdup.md) | Mark duplicate reads in aligned BAM/CRAM when not folded into `fq2bam`. | | [`minimap2`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/minimap2) | [pbrun-minimap2.md](pbrun-minimap2.md) | Long-read FASTQ alignment (CRAM v3.1 read support documented for recent releases). | @@ -34,7 +34,7 @@ Read only the selected tool reference and its relevant shared mappings. | [`ont_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/ont_germline) | [pbrun-ont_germline.md](pbrun-ont_germline.md) | Oxford Nanopore long-read germline workflow. | | [`pacbio_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pacbio_germline) | [pbrun-pacbio_germline.md](pbrun-pacbio_germline.md) | PacBio long-read germline workflow. | | [`pangenome_aware_deepvariant`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pangenome_aware_deepvariant) | [pbrun-pangenome_aware_deepvariant.md](pbrun-pangenome_aware_deepvariant.md) | Pangenome-aware DeepVariant; for Roche SBX-D/SBX-Fast BAMs use `--sbx` (verify in docs/MCP). CRAM v3.1 reads documented for recent releases. | -| [`pangenome_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pangenome_germline) | [pbrun-pangenome_germline.md](pbrun-pangenome_germline.md) | Pangenome-aware germline workflow with graph resources. | +| [`pangenome_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pangenome_germline) | [pbrun-pangenome_germline.md](pbrun-pangenome_germline.md) | Pangenome-aware germline workflow with graph resources; also accepts single-end CRAM input. | | [`postpon`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/postpon) | [pbrun-postpon.md](pbrun-postpon.md) | Annotate Mutectcaller variants using an existing panel of normals (PON). | | [`prepon`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/prepon) | [pbrun-prepon.md](pbrun-prepon.md) | Prepare an existing PON for `mutectcaller --pon`. | | [`somatic`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/somatic) | [pbrun-somatic.md](pbrun-somatic.md) | Tumor/normal somatic variant calling pipeline (caller family alternative to `mutectcaller` / `deepsomatic`). | @@ -59,7 +59,7 @@ Read only the selected tool reference and its relevant shared mappings. |------|-----------|----------| | [`dbsnp`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/dbsnp) | [pbrun-dbsnp.md](pbrun-dbsnp.md) | dbSNP annotation or variant file processing support. | | [`genotypegvcf`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/genotypegvcf) | [pbrun-genotypegvcf.md](pbrun-genotypegvcf.md) | Joint-genotype GVCF input(s) into VCF after indexing. | -| [`indexgvcf`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/indexgvcf) | [pbrun-indexgvcf.md](pbrun-indexgvcf.md) | Index GVCF before `genotypegvcf` or consolidation workflows. Writes `.tbi` beside the input (no `--out`); for read-only inputs, index a writable copy after checking for existing files. | +| [`indexgvcf`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/indexgvcf) | [pbrun-indexgvcf.md](pbrun-indexgvcf.md) | Index GVCF before `genotypegvcf` or consolidation workflows. Writes `.tbi` (`.idx` for an uncompressed `.g.vcf`) beside the input (no `--out`); for read-only inputs, index a writable copy after checking for existing files. | **CRAM v3.1 reads:** Documented for `bamsort`, `deepsomatic`, `deepvariant`, `haplotypecaller`, `minimap2`, `mutectcaller`, and `pangenome_aware_deepvariant` @@ -92,9 +92,12 @@ CRAM v3.1 inputs to other tools. ## Key References -- Tool index (4.7.0 baseline): -- Performance notes (4.7.0): - -- Getting started and deployment (4.7.0): - -- Other releases: +- Tool index (4.8.0 baseline): +- Performance notes (4.8.0): + +- Getting started and deployment (4.8.0): + +- Other releases: . + Manuals are at `https://docs.nvidia.com/clara/parabricks/v/` for + 4.7.1 and later, and `https://archive.docs.nvidia.com/clara/parabricks//` + for earlier releases. diff --git a/library-skills/parabricks/scripts/check_parabricks_runtime.sh b/library-skills/parabricks/scripts/check_parabricks_runtime.sh index e2725efb..be1602bc 100755 --- a/library-skills/parabricks/scripts/check_parabricks_runtime.sh +++ b/library-skills/parabricks/scripts/check_parabricks_runtime.sh @@ -9,7 +9,7 @@ set -o pipefail -DEFAULT_CUDA_TEST_IMAGE="nvidia/cuda:12.9.1-base-ubuntu22.04" +DEFAULT_CUDA_TEST_IMAGE="nvidia/cuda:13.3.1-base-ubuntu22.04" MIN_DOCKER_MAJOR=20 MIN_DOCKER_MINOR=10 MIN_GPU_MEMORY_GB=16 @@ -18,7 +18,7 @@ SUMMARY_MAX_CHARS=300 DEFAULT_TIMEOUT_SECONDS=30 TIMEOUT_KILL_AFTER_SECONDS=1 SCHEMA_VERSION=1 -EXAMPLE_PARABRICKS_VERSION="4.7.0-1" +EXAMPLE_PARABRICKS_VERSION="4.8.0-1" PROG=$(basename "$0") usage() { diff --git a/library-skills/parabricks/scripts/translate_star_to_parabricks.py b/library-skills/parabricks/scripts/translate_star_to_parabricks.py index 93c25a7c..1016df66 100644 --- a/library-skills/parabricks/scripts/translate_star_to_parabricks.py +++ b/library-skills/parabricks/scripts/translate_star_to_parabricks.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -"""Draft Parabricks 4.7.0/4.7.1 RNA commands from JSON STAR argument arrays. +"""Draft Parabricks 4.7.0/4.7.1/4.8.0 RNA commands from JSON STAR argument arrays. Usage: python3 scripts/translate_star_to_parabricks.py --input requests.json @@ -19,7 +19,7 @@ Requires Python 3.7 or newer; no additional packages are needed. No subprocesses, network requests, input-data inspection, or workloads are run. -Mappings: Parabricks 4.7.0/4.7.1 rna_fq2bam and STAR 2.7.2a parametersDefault. +Mappings: Parabricks 4.7.0/4.7.1/4.8.0 rna_fq2bam and STAR 2.7.2a parametersDefault. """ from __future__ import annotations @@ -32,7 +32,7 @@ import sys -SUPPORTED_VERSIONS = frozenset({"4.7.0", "4.7.1"}) +SUPPORTED_VERSIONS = frozenset({"4.7.0", "4.7.1", "4.8.0"}) JUNCTION_MISMATCH_COUNT = 4 SCALARS = { @@ -249,7 +249,7 @@ def validate_request(request): raise ValueError(f"Unknown request fields: {sorted(set(request) - allowed)}") version = request.get("version") if not isinstance(version, str) or version not in SUPPORTED_VERSIONS: - raise ValueError('This helper supports explicit versions "4.7.0" and "4.7.1" only') + raise ValueError('This helper supports explicit versions "4.7.0", "4.7.1" and "4.8.0" only') for field in ("ref", "output_dir", "out_bam"): if not nonempty_string(request.get(field)): raise ValueError(f"{field} must be an explicit nonempty path string") diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/SKILL.md b/skills/bionemo-agent-toolkit/skills/parabricks/SKILL.md index 33d4dc70..c9d40b4f 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/SKILL.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/SKILL.md @@ -6,7 +6,7 @@ description: >- license: CC-BY-4.0 AND Apache-2.0 metadata: author: "Angel Pizarro " - version: "1.3.0" + version: "1.4.0" tags: - parabricks - genomics @@ -85,9 +85,9 @@ clinical interpretation, or promise exact runtime without benchmark data. ## Instructions -1. Identify the requested release. The option references cover v4.7.1; examples +1. Identify the requested release. The option references cover v4.8.0; examples from another release are labeled. A software version and image tag can - differ: NVIDIA's 4.7.1 image is tagged `4.7.1-1`. Preserve the user's verified + differ: NVIDIA's 4.8.0 image is tagged `4.8.0-1`. Preserve the user's verified image selection; use [command-conventions.md](references/command-conventions.md) for the shared launch and validation contract. 2. Classify the request: @@ -209,3 +209,5 @@ the `pbrun` portion; the shared container envelope is documented once in - Overview: +- 4.8.0 release notes (changes from 4.7.1): + diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/evals/evals.json b/skills/bionemo-agent-toolkit/skills/parabricks/evals/evals.json index f6ea82c1..55ca38ee 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/evals/evals.json +++ b/skills/bionemo-agent-toolkit/skills/parabricks/evals/evals.json @@ -77,12 +77,12 @@ }, { "id": "parabricks-006", - "prompt": "I am preparing pbrun rna_fq2bam with Parabricks 4.7.1. My reference FASTA is GRCh37, but the STAR genome library was built from GRCh38. Can I use these together if I rename the contigs? Explain what needs to match and how to prepare a valid command. This is a planning question; do not run anything.", - "expected_output": "The agent rejects mixing a GRCh37 FASTA with a GRCh38 STAR genome library. Renaming contigs cannot reconcile different assemblies. It advises choosing one reference and rebuilding or obtaining a compatible STAR index from that reference, checking annotation/build consistency and the STAR version supported by Parabricks 4.7.1, then substituting those matching assets into a template. Any runnable template includes a read-input mode, --ref, --genome-lib-dir, --output-dir, and --out-bam; the output directory and final BAM are separate required arguments.", + "prompt": "I am preparing pbrun rna_fq2bam with Parabricks 4.8.0. My reference FASTA is GRCh37, but the STAR genome library was built from GRCh38. Can I use these together if I rename the contigs? Explain what needs to match and how to prepare a valid command. This is a planning question; do not run anything.", + "expected_output": "The agent rejects mixing a GRCh37 FASTA with a GRCh38 STAR genome library. Renaming contigs cannot reconcile different assemblies. It advises choosing one reference and rebuilding or obtaining a compatible STAR index from that reference, checking annotation/build consistency and the STAR version supported by Parabricks 4.8.0, then substituting those matching assets into a template. Any runnable template includes a read-input mode, --ref, --genome-lib-dir, --output-dir, and --out-bam; the output directory and final BAM are separate required arguments.", "assertions": [ "The agent identifies GRCh37 and GRCh38 as different assemblies and states that contig renaming cannot make the supplied FASTA and STAR index compatible.", "The agent recommends a STAR genome library built from the same reference sequence/build used by --ref, with consistent contig names and annotation where used.", - "The agent identifies the documented STAR 2.7.2a compatibility baseline for Parabricks 4.7.1 or verifies the supported STAR/index version from that release manual instead of recommending an arbitrary latest index.", + "The agent identifies the documented STAR 2.7.2a compatibility baseline for Parabricks 4.8.0 or verifies the supported STAR/index version from that release manual instead of recommending an arbitrary latest index.", "The proposed command uses matching --ref and --genome-lib-dir placeholders, includes a read-input mode and both --output-dir and --out-bam, and does not present the original mismatched assets as runnable.", "The agent provides planning guidance without executing commands or modifying reference assets." ], @@ -92,7 +92,7 @@ }, { "id": "parabricks-007", - "prompt": "With Parabricks 4.7.1, I need to index /data/sample.g.vcf.gz using pbrun indexgvcf. In Docker, /data is mounted read-only, and /results is writable. Can I use --out /results/sample.g.vcf.gz.tbi? Explain the actual output naming and give me a safe command plan that preserves the original GVCF. Do not execute it.", + "prompt": "With Parabricks 4.8.0, I need to index /data/sample.g.vcf.gz using pbrun indexgvcf. In Docker, /data is mounted read-only, and /results is writable. Can I use --out /results/sample.g.vcf.gz.tbi? Explain the actual output naming and give me a safe command plan that preserves the original GVCF. Do not execute it.", "expected_output": "The agent explains that indexgvcf uses --input and derives the .tbi path by appending .tbi to the input filename, with no documented --out override. It proposes a writable copy of the GVCF in /results and indexing that copy, giving /results/sample.g.vcf.gz.tbi while preserving /data and checking existing destination files before copying.", "assertions": [ "The agent states that pbrun indexgvcf does not document an --out option and does not invent an output-path override.", @@ -107,8 +107,8 @@ }, { "id": "parabricks-008", - "prompt": "Review the next step of a Parabricks 4.7.1 germline workflow. fq2bam produced /work/sample.markdup.bam and /work/sample.recal.txt using matching known-sites resources; ApplyBQSR has not been run. The reference is /ref/genome.fa. I need HaplotypeCaller to produce a diploid per-sample gVCF at /results/sample.g.vcf.gz, retaining the CPU GATK settings --min-pruning 4 and --pcr-indel-model NONE, without writing another BAM. Give the next pbrun command and explain whether the existing BAM qualities have changed and how the caller uses the report. All paths are inside the intended container and all resources match the sample and reference. This is command planning only; do not execute anything.", - "expected_output": "The agent distinguishes a BQSR report from an already recalibrated BAM and uses pbrun haplotypecaller with the existing BAM and --in-recal-file to apply recalibrated qualities during calling. It requests gVCF emission explicitly, preserves diploid calling, and passes the supported pruning/PCR settings as one --haplotypecaller-options string using the Parabricks 4.7.1 single-hyphen spelling. No separate ApplyBQSR BAM or rerun of fq2bam is needed.", + "prompt": "Review the next step of a Parabricks 4.8.0 germline workflow. fq2bam produced /work/sample.markdup.bam and /work/sample.recal.txt using matching known-sites resources; ApplyBQSR has not been run. The reference is /ref/genome.fa. I need HaplotypeCaller to produce a diploid per-sample gVCF at /results/sample.g.vcf.gz, retaining the CPU GATK settings --min-pruning 4 and --pcr-indel-model NONE, without writing another BAM. Give the next pbrun command and explain whether the existing BAM qualities have changed and how the caller uses the report. All paths are inside the intended container and all resources match the sample and reference. This is command planning only; do not execute anything.", + "expected_output": "The agent distinguishes a BQSR report from an already recalibrated BAM and uses pbrun haplotypecaller with the existing BAM and --in-recal-file to apply recalibrated qualities during calling. It requests gVCF emission explicitly, preserves diploid calling, and passes the supported pruning/PCR settings as one --haplotypecaller-options string using the Parabricks 4.8.0 single-hyphen spelling. No separate ApplyBQSR BAM or rerun of fq2bam is needed.", "assertions": [ "The agent explains that generating sample.recal.txt does not itself rewrite the base qualities in sample.markdup.bam; the caller can use the recalibration report internally.", "The proposed pbrun haplotypecaller command uses --ref /ref/genome.fa, --in-bam /work/sample.markdup.bam, and --in-recal-file /work/sample.recal.txt without requiring a second BAM or another fq2bam run.", @@ -122,7 +122,7 @@ }, { "id": "parabricks-009", - "prompt": "I am moving paired somatic calling to Parabricks 4.7.1. I already have /work/panel.vcf.gz and its .tbi, but the panel's ##contig headers include IDs without lengths. The matching GRCh38 reference is /work/GRCh38.fa with its .fai. The prepared BAMs are /work/tumor.bam (sample T1) and /work/normal.bam (sample N1). Give a command plan to use this existing panel in calling and produce a VCF with PON INFO annotations. Explain the header repair and which index/resources are needed at each step. Preserve the original panel and do not rebuild the panel from normal-sample BAMs. /work and /results are writable container paths; use new output names and do not execute anything.", + "prompt": "I am moving paired somatic calling to Parabricks 4.8.0. I already have /work/panel.vcf.gz and its .tbi, but the panel's ##contig headers include IDs without lengths. The matching GRCh38 reference is /work/GRCh38.fa with its .fai. The prepared BAMs are /work/tumor.bam (sample T1) and /work/normal.bam (sample N1). Give a command plan to use this existing panel in calling and produce a VCF with PON INFO annotations. Explain the header repair and which index/resources are needed at each step. Preserve the original panel and do not rebuild the panel from normal-sample BAMs. /work and /results are writable container paths; use new output names and do not execute anything.", "expected_output": "The agent repairs missing contig lengths in a new PON VCF.GZ using the matching reference .fai, builds a fresh tabix index for that changed file, and runs prepon to generate the additional .pon resource. It then runs paired mutectcaller with the repaired PON VCF.GZ path in --pon and the supplied tumor/normal sample labels. It uses postpon with the caller VCF and the same PON to create an annotated output, preserving the original panel and treating all commands as a plan.", "assertions": [ "The agent identifies contig names and lengths as prepon prerequisites and proposes repairing a new PON copy from /work/GRCh38.fa.fai, for example with bcftools reheader --fai; it preserves the original panel and does not suggest constructing a new panel from the BAMs.", @@ -137,10 +137,10 @@ }, { "id": "parabricks-010", - "prompt": "Review this planned Parabricks 4.7.1 command for Illumina WGS: pbrun deepvariant --ref /ref/GRCh38.fa --in-bam /data/sample.bam --mode shortread --proposed-variants /ref/candidates.vcf.gz --gvcf --run-partition --out-variants /results/sample.g.vcf.gz. I require both the proposed-candidate input and gVCF output. I added partitioning to improve throughput; should I also force more streams per GPU? Explain how these options interact and give the minimal revised command while preserving the analysis requirements. Hardware details and benchmark timings are not available. Do not inspect this machine or execute the command.", - "expected_output": "The agent identifies the documented Parabricks 4.7.1 interaction: combining --run-partition, --proposed-variants, and --gvcf produces a warning, ignores --run-partition, and can cause substantial slowdown. It retains the required proposed variants and gVCF output, omits the ignored partition flag, and keeps stream tuning at auto without hardware/benchmark evidence. It explains that removing an ignored flag clarifies effective behavior but does not prove a speedup.", + "prompt": "Review this planned Parabricks 4.8.0 command for Illumina WGS: pbrun deepvariant --ref /ref/GRCh38.fa --in-bam /data/sample.bam --mode shortread --proposed-variants /ref/candidates.vcf.gz --gvcf --run-partition --out-variants /results/sample.g.vcf.gz. I require both the proposed-candidate input and gVCF output. I added partitioning to improve throughput; should I also force more streams per GPU? Explain how these options interact and give the minimal revised command while preserving the analysis requirements. Hardware details and benchmark timings are not available. Do not inspect this machine or execute the command.", + "expected_output": "The agent identifies the documented Parabricks 4.8.0 interaction: combining --run-partition, --proposed-variants, and --gvcf produces a warning, ignores --run-partition, and can cause substantial slowdown. It retains the required proposed variants and gVCF output, omits the ignored partition flag, and keeps stream tuning at auto without hardware/benchmark evidence. It explains that removing an ignored flag clarifies effective behavior but does not prove a speedup.", "assertions": [ - "The agent identifies the specific three-option interaction in Parabricks 4.7.1 and states that --run-partition is ignored with a warning when --proposed-variants and --gvcf are both enabled.", + "The agent identifies the specific three-option interaction in Parabricks 4.8.0 and states that --run-partition is ignored with a warning when --proposed-variants and --gvcf are both enabled.", "The revised command retains --proposed-variants /ref/candidates.vcf.gz and --gvcf and removes --run-partition rather than dropping a required analysis input or output to obtain partitioning.", "The revised pbrun deepvariant command preserves the supplied reference, BAM, shortread mode or its documented default, and --out-variants /results/sample.g.vcf.gz.", "The agent explains that forcing more streams does not restore partition mode for this combination and leaves --num-streams-per-gpu at its documented auto default or omits the flag pending separate benchmarking.", @@ -152,7 +152,7 @@ }, { "id": "parabricks-011", - "prompt": "Review this draft for Parabricks 4.7.1: pbrun giraffe --gbz-name /ref/panel.gbz --dist-name /ref/panel.dist --minimizer-name /ref/panel.min --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --sample S1 --read-group lane1 --align-only --out-bam /results/S1.bam. I need a coordinate-sorted BAM without duplicate marking, in a single pbrun invocation. The validated, mutually compatible graph bundle also includes /ref/panel.zipcodes and /ref/paths.txt; use that path list for the BAM sequence-header order. Preserve read-group ID lane1, SM S1, LB libA, PL ILLUMINA, and PU FC1.1. Explain what is wrong with the draft and give the corrected command. These are container paths, hardware details are unavailable, and this is planning only: do not execute commands or inspect this machine.", + "prompt": "Review this draft for Parabricks 4.8.0: pbrun giraffe --gbz-name /ref/panel.gbz --dist-name /ref/panel.dist --minimizer-name /ref/panel.min --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --sample S1 --read-group lane1 --align-only --out-bam /results/S1.bam. I need a coordinate-sorted BAM without duplicate marking, in a single pbrun invocation. The validated, mutually compatible graph bundle (a GBZ version 1 graph with indexes built by vg v1.75.1) also includes /ref/panel.zipcodes and /ref/paths.txt; use that path list for the BAM sequence-header order. Preserve read-group ID lane1, SM S1, LB libA, PL ILLUMINA, and PU FC1.1. Explain what is wrong with the draft and give the corrected command. These are container paths, hardware details are unavailable, and this is planning only: do not execute commands or inspect this machine.", "expected_output": "The agent recognizes that giraffe --align-only emits an unsorted alignment BAM and replaces it with --no-markdups to retain sorting while skipping duplicate marking. It supplies the required zipcodes index and requested reference-path list from the compatible bundle, preserves the existing graph inputs, FASTQs and output, and maps every read-group field to the Giraffe-specific flags. It does not add a separate CPU sorting step, invent resources, or tune streams without hardware evidence.", "assertions": [ "The agent explains that --align-only does not coordinate-sort the BAM and removes it; the corrected command uses --no-markdups to produce sorted output without duplicate marking in one pbrun giraffe invocation.", @@ -167,12 +167,12 @@ }, { "id": "parabricks-012", - "prompt": "I want to migrate this upstream STAR-Fusion command to Parabricks 4.7.1: STAR-Fusion --genome_lib_dir /ref/ctat --chimeric_junction /data/Chimeric.out.junction --left_fq /data/R1.fq.gz --right_fq /data/R2.fq.gz --output_dir /results/fusions --out_prefix S1 --CPU 8 --min_FFPM 0.5 --FusionInspector inspect --verbose_level 3. The junction file, paired FASTQs, and CTAT library are compatible. A plain STAR alignment index is also available at /ref/star_index. The FFPM threshold and FusionInspector inspection are mandatory analysis requirements. Can pbrun starfusion replace this whole invocation? Give its supported command portion using the supplied paths, explain the non-equivalent options, and state how to preserve the mandatory analysis requirements. Do not execute anything or inspect hardware.", + "prompt": "I want to migrate this upstream STAR-Fusion command to Parabricks 4.8.0: STAR-Fusion --genome_lib_dir /ref/ctat --chimeric_junction /data/Chimeric.out.junction --left_fq /data/R1.fq.gz --right_fq /data/R2.fq.gz --output_dir /results/fusions --out_prefix S1 --CPU 8 --min_FFPM 0.5 --FusionInspector inspect --verbose_level 3. The junction file, paired FASTQs, and CTAT library are compatible. A plain STAR alignment index is also available at /ref/star_index. The FFPM threshold and FusionInspector inspection are mandatory analysis requirements. Can pbrun starfusion replace this whole invocation? Give its supported command portion using the supplied paths, explain the non-equivalent options, and state how to preserve the mandatory analysis requirements. Do not execute anything or inspect hardware.", "expected_output": "The agent explains that pbrun starfusion consumes the existing junction file and CTAT/STAR-Fusion resource library rather than raw FASTQs or a plain STAR index. It maps the supported I/O, prefix and worker options to the Parabricks spelling, treats verbosity as a boolean rather than a numeric equivalent, and identifies min_FFPM and FusionInspector as unsupported in this wrapper. It labels the pbrun command a partial migration and preserves mandatory analysis behavior by retaining the upstream stage or requiring a separately validated downstream implementation, with the read inputs retained for FusionInspector.", "assertions": [ "The pbrun starfusion command uses --chimeric-junction /data/Chimeric.out.junction, --genome-lib-dir /ref/ctat, --output-dir /results/fusions, --out-prefix S1, and --num-threads 8.", "The agent distinguishes the CTAT/STAR-Fusion resource library from /ref/star_index and explains that this pbrun tool consumes junctions; it does not pass the raw FASTQ flags to pbrun starfusion or rerun alignment unnecessarily.", - "The agent identifies --min_FFPM 0.5 and --FusionInspector inspect as upstream features not exposed by pbrun starfusion 4.7.1 and does not invent hyphenated equivalents or a generic pass-through mechanism.", + "The agent identifies --min_FFPM 0.5 and --FusionInspector inspect as upstream features not exposed by pbrun starfusion 4.8.0 and does not invent hyphenated equivalents or a generic pass-through mechanism.", "The agent explains that --verbose is boolean and cannot preserve upstream --verbose_level 3 exactly; any proposed pbrun command omits verbosity or uses --verbose without a numeric argument.", "The agent labels the pbrun command a partial migration, keeps the mandatory FFPM and FusionInspector work in the upstream workflow or a separately validated downstream stage with the FASTQs available, and does not claim full parity or execution after simply dropping those options." ], @@ -182,10 +182,10 @@ }, { "id": "parabricks-013", - "prompt": "Review this RNA migration draft for Parabricks 4.7.1: pbrun rna_fq2bam --ref /ref/GRCh38.fa --genome-lib-dir /ref/star --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --read-files-command zcat --out-bam /results/S1.bam --out-sam-unmapped Within_KeepPairs --out-chim-type WithinBAM HardClip --min-chim-segment 12 --two-pass-mode Basic --num-threads 16. My upstream STAR run used --outSAMunmapped Within KeepPairs, --chimOutType WithinBAM HardClip, and --runThreadN 16. For a multi-mapping mapped mate, our consumer requires a separate unmapped-mate record for every reported alignment, not just one copy somewhere in the BAM. Upstream STAR produced these records in unsorted BAM before a separate coordinate-sort step. This record-level contract is mandatory; separate FASTQs do not satisfy it. I also require coordinate sorting without duplicate marking and hard-clipped supplementary chimeric alignments. The supplied FASTA and STAR 2.7.2a index match. Explain whether one rna_fq2bam invocation can meet the whole contract, provide its valid supported portion with STAR outputs under /results/star, and identify what must remain on another path. These are container paths. Do not run anything or probe hardware.", - "expected_output": "The agent identifies that rna_fq2bam 4.7.1 cannot preserve the mandatory per-alignment unmapped-mate copies: Within_KeepPairs behaves like Within in its sorted output. It distinguishes this from ordinary unmapped-read inclusion and does not claim that every unmapped mate is absent. Fastx files are not an equivalent substitute. It explicitly labels the supported pbrun command a partial migration and retains an upstream path meeting the mandatory contract or a separately validated reconstruction. The command includes both --output-dir /results/star and an explicitly identified --out-bam for the supported portion; retaining /results/S1.bam or using a clearly labeled alternate filename to distinguish it from the complete upstream result is acceptable. It uses the single value WithinBAM_HardClip, keeps --min-chim-segment 12 and --two-pass-mode Basic, adds --no-markdups, and omits copied --num-threads 16 or uses auto while explaining workers per GPU stream. A command that silently drops the required per-alignment records does not achieve the requested replacement.", + "prompt": "Review this RNA migration draft for Parabricks 4.8.0: pbrun rna_fq2bam --ref /ref/GRCh38.fa --genome-lib-dir /ref/star --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --read-files-command zcat --out-bam /results/S1.bam --out-sam-unmapped Within_KeepPairs --out-chim-type WithinBAM HardClip --min-chim-segment 12 --two-pass-mode Basic --num-threads 16. My upstream STAR run used --outSAMunmapped Within KeepPairs, --chimOutType WithinBAM HardClip, and --runThreadN 16. For a multi-mapping mapped mate, our consumer requires a separate unmapped-mate record for every reported alignment, not just one copy somewhere in the BAM. Upstream STAR produced these records in unsorted BAM before a separate coordinate-sort step. This record-level contract is mandatory; separate FASTQs do not satisfy it. I also require coordinate sorting without duplicate marking and hard-clipped supplementary chimeric alignments. The supplied FASTA and STAR 2.7.2a index match. Explain whether one rna_fq2bam invocation can meet the whole contract, provide its valid supported portion with STAR outputs under /results/star, and identify what must remain on another path. These are container paths. Do not run anything or probe hardware.", + "expected_output": "The agent identifies that rna_fq2bam 4.8.0 cannot preserve the mandatory per-alignment unmapped-mate copies: Within_KeepPairs behaves like Within in its sorted output. It distinguishes this from ordinary unmapped-read inclusion and does not claim that every unmapped mate is absent. Fastx files are not an equivalent substitute. It explicitly labels the supported pbrun command a partial migration and retains an upstream path meeting the mandatory contract or a separately validated reconstruction. The command includes both --output-dir /results/star and an explicitly identified --out-bam for the supported portion; retaining /results/S1.bam or using a clearly labeled alternate filename to distinguish it from the complete upstream result is acceptable. It uses the single value WithinBAM_HardClip, keeps --min-chim-segment 12 and --two-pass-mode Basic, adds --no-markdups, and omits copied --num-threads 16 or uses auto while explaining workers per GPU stream. A command that silently drops the required per-alignment records does not achieve the requested replacement.", "assertions": [ - "The agent states that --out-sam-unmapped Within_KeepPairs behaves like Within in Parabricks 4.7.1 sorted output and cannot reproduce the required extra unmapped-mate record for each alignment of a multi-mapping mate; it distinguishes this from ordinary unmapped-read inclusion.", + "The agent states that --out-sam-unmapped Within_KeepPairs behaves like Within in Parabricks 4.8.0 sorted output and cannot reproduce the required extra unmapped-mate record for each alignment of a multi-mapping mate; it distinguishes this from ordinary unmapped-read inclusion.", "The agent rejects full migration under the mandatory per-alignment BAM-record contract and retains an upstream path or a separately validated reconstruction. It does not offer separate Fastx files as a substitute; an explicit discussion of that rejected alternative is unnecessary when the plan already satisfies this constraint.", "The supported pbrun rna_fq2bam portion includes the supplied FASTA, STAR library, paired FASTQs and zcat handler, --output-dir /results/star, and an explicit --out-bam. A clearly identified alternate BAM filename is acceptable for the partial result, especially when the upstream path produces /results/S1.bam.", "The command uses --out-chim-type WithinBAM_HardClip as one value, preserves --min-chim-segment 12 and --two-pass-mode Basic, and adds --no-markdups to keep sorting without duplicate marking.", @@ -197,7 +197,7 @@ }, { "id": "parabricks-014", - "prompt": "We are recovering reads from /data/archive.cram before realigning to GRCh38. The CRAM was encoded against /ref/GRCh37.fa; /ref/GRCh38.fa is the future alignment reference. Review this Parabricks 4.7.1 draft: pbrun bam2fq --ref /ref/GRCh38.fa --in-bam /data/archive.cram --out-prefix /results/recovered --out-suffixF _R1.fastq --out-suffixF2 _R2.fastq --out-suffixS _single.fastq --rg-tag SM --remove-qc-failure. We must retain available paired reads, first-mate and second-mate orphans, unpaired reads, and QC-failed reads, split by sequencing unit. All read groups share SM S1 and LB libA; each sequencing unit has a distinct PU, with multiple RG IDs per PU. Give a corrected conversion command and a check plan that accounts for every requested read category. Compression is acceptable. Can this guarantee the original raw FASTQs byte for byte? Paths are already inside the container; do not execute or inspect files.", + "prompt": "We are recovering reads from /data/archive.cram before realigning to GRCh38. The CRAM was encoded against /ref/GRCh37.fa; /ref/GRCh38.fa is the future alignment reference. Review this Parabricks 4.8.0 draft: pbrun bam2fq --ref /ref/GRCh38.fa --in-bam /data/archive.cram --out-prefix /results/recovered --out-suffixF _R1.fastq --out-suffixF2 _R2.fastq --out-suffixS _single.fastq --rg-tag SM --remove-qc-failure. We must retain available paired reads, first-mate and second-mate orphans, unpaired reads, and QC-failed reads, split by sequencing unit. All read groups share SM S1 and LB libA; each sequencing unit has a distinct PU, with multiple RG IDs per PU. Give a corrected conversion command and a check plan that accounts for every requested read category. Compression is acceptable. Can this guarantee the original raw FASTQs byte for byte? Paths are already inside the container; do not execute or inspect files.", "expected_output": "The corrected bam2fq command decodes with the source GRCh37 FASTA, preserves the input and output prefix, uses --rg-tag PU to group sequencing units, and omits --remove-qc-failure. It explicitly supplies all five .gz-ending suffixes: F, F2, O, O2, and S. Parabricks ignores orphan or unpaired categories when their corresponding suffix is absent; --out-suffixS does not capture orphan first and second mates. The agent checks pairs and each separate retained category, accounts for /1 and /2 read-name suffixes, and rejects byte-for-byte recovery of the original FASTQs because prior processing and conversion can change or remove information. Dropping any required read category is a material failure of this recovery task.", "assertions": [ "The corrected command uses --ref /ref/GRCh37.fa for decoding /data/archive.cram, preserves --out-prefix /results/recovered, and distinguishes that source reference from the later GRCh38 alignment reference.", @@ -212,8 +212,8 @@ }, { "id": "parabricks-015", - "prompt": "We are comparing Parabricks 4.7.1 pangenome_aware_deepvariant with the compatible Google implementation on the same prepared short-read BAM, linear reference, GBZ graph and model. Differences include tiny zero-quality RefCall score changes, pileup read-order changes when supplementary alignments are retained, and GBZ query results that change when query order changes. A colleague proposes replacing std::sort with std::stable_sort, disabling only updateCache, and then requiring byte-identical VCFs as the release check. Review that proposal using the release-specific mismatch mechanisms. Give a controlled comparison plan and a minimal pbrun command using /data/S1.bam, /ref/GRCh38.fa, /ref/panel.gbz, and /results/S1.vcf.gz. Distinguish upstream source changes from pbrun CLI options and identify performance consequences. Do not patch software, run commands, or inspect hardware.", - "expected_output": "The agent separates the three documented Parabricks 4.7.1 mismatch mechanisms: TensorRT/Keras numerical differences around 1e-5 with reported zero-quality RefCall differences, nondeterministic ordering of equal-key supplementary reads, and the order-dependent Google GBZ reader cache fast path. It identifies the upstream stable_sort change in BuildPileupForOneSample in pileup_image_native.cc. For the GBZ comparison build it disables both updateCache and the cached-range lookup in GbzReader::Query() in deepvariant/third_party/nucleus/io/gbz_reader.cc; disabling only updates is incomplete. It confines those patches to a controlled upstream comparison build, notes the potentially substantial slowdown from disabling caching, and refuses to infer byte-identical VCFs or proven biological parity from those changes. Its minimal pbrun command includes --ref, --pangenome, --in-bam, and --out-variants with the supplied paths and does not invent CLI flags for the C++ changes.", + "prompt": "We are comparing Parabricks 4.8.0 pangenome_aware_deepvariant with the compatible Google implementation on the same prepared short-read BAM, linear reference, GBZ graph and model. Differences include tiny zero-quality RefCall score changes, pileup read-order changes when supplementary alignments are retained, and GBZ query results that change when query order changes. A colleague proposes replacing std::sort with std::stable_sort, disabling only updateCache, and then requiring byte-identical VCFs as the release check. Review that proposal using the release-specific mismatch mechanisms. Give a controlled comparison plan and a minimal pbrun command using /data/S1.bam, /ref/GRCh38.fa, /ref/panel.gbz, and /results/S1.vcf.gz. Distinguish upstream source changes from pbrun CLI options and identify performance consequences. Do not patch software, run commands, or inspect hardware.", + "expected_output": "The agent separates the three documented Parabricks 4.8.0 mismatch mechanisms: TensorRT/Keras numerical differences around 1e-5 with reported zero-quality RefCall differences, nondeterministic ordering of equal-key supplementary reads, and the order-dependent Google GBZ reader cache fast path. It identifies the upstream stable_sort change in BuildPileupForOneSample in pileup_image_native.cc. For the GBZ comparison build it disables both updateCache and the cached-range lookup in GbzReader::Query() in deepvariant/third_party/nucleus/io/gbz_reader.cc; disabling only updates is incomplete. It confines those patches to a controlled upstream comparison build, notes the potentially substantial slowdown from disabling caching, and refuses to infer byte-identical VCFs or proven biological parity from those changes. Its minimal pbrun command includes --ref, --pangenome, --in-bam, and --out-variants with the supplied paths and does not invent CLI flags for the C++ changes.", "assertions": [ "The agent attributes tiny predicted-score differences to TensorRT versus Keras inference and treats zero-quality RefCall mismatches as the manual's reported observations, without promising that ordering/cache changes eliminate numerical differences or guarantee byte-identical VCFs.", "The agent connects supplementary alignments with nondeterministic equal-key read sorting and locates the proposed upstream std::stable_sort change in BuildPileupForOneSample in pileup_image_native.cc.", @@ -227,7 +227,7 @@ }, { "id": "parabricks-016", - "prompt": "Convert the three CPU STAR jobs in input/rna-batch.json to Parabricks 4.7.1 command drafts. Preserve every lane, read-group tag, alignment setting, and requested output. The destination output directories deliberately differ from the old STAR prefixes; preserve each prefix basename there. Keep duplicate marking disabled and choose Parabricks thread tuning independently from the CPU thread count. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", + "prompt": "Convert the three CPU STAR jobs in input/rna-batch.json to Parabricks 4.8.0 command drafts. Preserve every lane, read-group tag, alignment setting, and requested output. The destination output directories deliberately differ from the old STAR prefixes; preserve each prefix basename there. Keep duplicate marking disabled and choose Parabricks thread tuning independently from the CPU thread count. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", "expected_output": "Creates output/rna-plan.json containing treated, control, and rescue drafts. Every argv includes --ref /ref/GRCh38.fa, --genome-lib-dir /ref/GRCh38_STAR_2.7.2a, the job-specific --output-dir and --out-bam, and --no-markdups. Treated has three correctly paired --in-fq groups with exact lane-specific read groups, including the DS value with spaces; control has two --in-se-fq groups; rescue has one pair. Preserve all values through documented flag mappings, including treated --max-junction-mismatches 0 -1 0 0, --out-chim-type WithinBAM_SoftClip, --min-chim-segment 15, --two-pass-mode Basic and ordered SAM attributes; control mismatch/multimap/SA/MAPQ settings; rescue --score-gap -4, --min-match-filter-normalized 0.75, --align-ends-type EndToEnd, Fastx and Within outputs, and Junctions. Decompressors are each a single --read-files-command value, including gzip -dc. Original prefix basenames become --out-prefix in the new directories. Thread tuning is independent of CPU runThreadN: either Parabricks auto defaults or a separately chosen and labeled worker-thread setting is acceptable; it does not claim equivalent CPU/GPU thread semantics. No workload is executed or biological parity claimed.", "assertions": [ "Writes parseable output/rna-plan.json with all three requested job IDs and complete pbrun rna_fq2bam argument arrays including the supplied reference, genome library, distinct output directory, final BAM path and --no-markdups.", @@ -244,13 +244,13 @@ }, { "id": "parabricks-017", - "prompt": "Review the four STAR migration requests in input/rna-contracts.json for Parabricks 4.7.1. Generate a complete draft only when the supplied inputs and the stated output contract can be preserved by rna_fq2bam. Otherwise mark the job blocked and explain the exact unresolved input or unsupported behavior; do not silently drop a setting or replace the contract with a partial command. Judge each job by its stated consumer requirement. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", - "expected_output": "Creates a four-job output/rna-plan.json. per_alignment is blocked: Parabricks sorted output treats Within_KeepPairs as Within and does not preserve the extra unmapped-mate copy per multi-mapping alignment from the upstream unsorted KeepPairs path; neither ordinary Within nor separate Fastx files meets that multiplicity contract. ordinary is a valid draft: ordinary inclusion is supported by --out-sam-unmapped Within or Within_KeepPairs, and losing extra copies/adjacency is irrelevant to its explicitly weaker contract. Its command includes ref, genome-lib-dir, the supplied ordinary output-dir and out-bam, correct paired FASTQs and read group, and --no-markdups; any explanation of performance controls distinguishes CPU thread counts from GPU-stream worker threads; independent Parabricks tuning is allowed. primary_ties is blocked because the documented 4.7.1 rna_fq2bam options do not expose STAR outSAMprimaryFlag AllBestScore; do not invent a corresponding flag or silently accept a different primary policy. unmatched_lanes is blocked because two R1 lanes have only one R2 lane; request the missing mate information without guessing filenames or regrouping reads. Blocked jobs have null argv. No workload or hardware inspection is performed.", + "prompt": "Review the four STAR migration requests in input/rna-contracts.json for Parabricks 4.8.0. Generate a complete draft only when the supplied inputs and the stated output contract can be preserved by rna_fq2bam. Otherwise mark the job blocked and explain the exact unresolved input or unsupported behavior; do not silently drop a setting or replace the contract with a partial command. Judge each job by its stated consumer requirement. Write output/rna-plan.json with a top-level jobs array. Each job must have id, status (draft or blocked), argv (a token array starting with pbrun rna_fq2bam, or null when blocked), and notes (an array of strings). Use the exact target paths and metadata from the manifest. Use inline --in-fq/--in-se-fq arguments so each draft is self-contained; do not introduce auxiliary input-list files. Preserve supplied decompressor command text as one argument value. This is command preparation: do not run STAR, pbrun, containers, decompression, or hardware probes. You may read the manifest, consult documentation, run command-generation helpers, and write/validate the requested JSON. Briefly summarize any limitations and the artifact path.", + "expected_output": "Creates a four-job output/rna-plan.json. per_alignment is blocked: Parabricks sorted output treats Within_KeepPairs as Within and does not preserve the extra unmapped-mate copy per multi-mapping alignment from the upstream unsorted KeepPairs path; neither ordinary Within nor separate Fastx files meets that multiplicity contract. ordinary is a valid draft: ordinary inclusion is supported by --out-sam-unmapped Within or Within_KeepPairs, and losing extra copies/adjacency is irrelevant to its explicitly weaker contract. Its command includes ref, genome-lib-dir, the supplied ordinary output-dir and out-bam, correct paired FASTQs and read group, and --no-markdups; any explanation of performance controls distinguishes CPU thread counts from GPU-stream worker threads; independent Parabricks tuning is allowed. primary_ties is blocked because the documented 4.8.0 rna_fq2bam options do not expose STAR outSAMprimaryFlag AllBestScore; do not invent a corresponding flag or silently accept a different primary policy. unmatched_lanes is blocked because two R1 lanes have only one R2 lane; request the missing mate information without guessing filenames or regrouping reads. Blocked jobs have null argv. No workload or hardware inspection is performed.", "assertions": [ "Writes parseable output/rna-plan.json with all four IDs, blocks per_alignment, primary_ties and unmatched_lanes with null argv, and provides a complete ordinary draft.", "Explains that Within_KeepPairs in the sorted Parabricks path does not preserve one unmapped-mate copy for every multi-mapping alignment; does not claim that all unmapped mates disappear or that Fastx preserves this record contract.", "Allows ordinary unmapped-read inclusion, using Within or Within_KeepPairs and a complete command with correct paired reads, exact RG metadata, required reference/index/output flags, and no duplicate marking. Independent runtime tuning is allowed; it does not claim CPU thread counts and GPU-stream worker counts are equivalent.", - "Identifies AllBestScore as an unsupported primary-alignment policy in the documented Parabricks 4.7. interface, preserving it as unresolved instead of inventing an option or silently dropping it.", + "Identifies AllBestScore as an unsupported primary-alignment policy in the documented Parabricks 4.8.0 interface, preserving it as unresolved instead of inventing an option or silently dropping it.", "Identifies the unequal R1/R2 lane counts and missing mate information without guessing or merging lanes; respects the command-preparation-only scope." ], "expected_skill": "parabricks", @@ -261,18 +261,123 @@ }, { "id": "parabricks-018", - "prompt": "We are preparing a Parabricks 4.7.1 RNA alignment pilot for new 151-nt paired-end reads. We want to reuse a suitable existing STAR library rather than regenerate one unnecessarily. The target FASTA is /ref/GRCh38.fa and the annotation is unchanged. Treat these administrator-verified facts as supplied: library A at /ref/star_A was generated by the STAR 2.7.2a executable from that exact FASTA and annotation; its original genomeParameters.txt contains versionGenome 2.7.1a and sjdbOverhang 99, and sjdbInfo.txt is present. Its build manifest and all index checksums are intact. Library B at /ref/star_B is a copy of A whose versionGenome field alone was edited to 2.7.2a to match the executable label. Library C at /ref/star_C was generated by STAR 2.7.2a from GRCh37, with versionGenome 2.7.1a and sjdbOverhang 150. A colleague proposes choosing B and passing --sjdb-overhang 150 because the new reads are 151 nt; otherwise they want to rebuild everything. Assess that proposal, choose a library for the planned pilot if one is suitable, and give one pbrun rna_fq2bam command using /reads/new_R1.fq.gz, /reads/new_R2.fq.gz, zcat, STAR outputs in /results/star, and sorted BAM /results/new.bam without duplicate marking. Our command-manifest format requires an explicit positive --sjdb-overhang value. Explain which checks are established by the supplied provenance and what still requires target-container validation. Do not edit metadata, regenerate an index, inspect local files or hardware, or run a workload. Public versioned documentation/source lookup is allowed.", - "expected_output": "Choose intact library A for a planned, subsequently validated pilot. STAR 2.7.2a uses the compatibility marker 2.7.1a, so A's version strings do not require a rebuild. Reject B's cosmetic metadata rewrite and C's wrong assembly. Preserve A's explicit junction overhang 99; changing read length does not permit relabeling its stored junctions to 150. Rebuilding a separate index is an optional route for a different overhang, not mandatory just to match executable/version strings. Give a complete command with /ref/GRCh38.fa, /ref/star_A, the paired reads and zcat, separate --output-dir /results/star and --out-bam /results/new.bam, --no-markdups, and --sjdb-overhang 99. Distinguish supplied provenance from untested Parabricks container execution; no changes or workload execution. In the 4.7.1 manual, --ref is required independently of --genome-lib-dir, and rna_fq2bam marks duplicates unless --no-markdups disables that step. A draft omitting --ref cannot run; one omitting --no-markdups violates the requested no-duplicate-marking behavior. Claiming marking is opt-in or mentioning the needed flag only conditionally does not fix the supplied command. These are substantive command requirements when judging goal completion. The documented sjdb-overhang default is 100, not the supplied index-specific 99.", + "prompt": "We are preparing a Parabricks 4.8.0 RNA alignment pilot for new 151-nt paired-end reads. We want to reuse a suitable existing STAR library rather than regenerate one unnecessarily. The target FASTA is /ref/GRCh38.fa and the annotation is unchanged. Treat these administrator-verified facts as supplied: library A at /ref/star_A was generated by the STAR 2.7.2a executable from that exact FASTA and annotation; its original genomeParameters.txt contains versionGenome 2.7.1a and sjdbOverhang 99, and sjdbInfo.txt is present. Its build manifest and all index checksums are intact. Library B at /ref/star_B is a copy of A whose versionGenome field alone was edited to 2.7.2a to match the executable label. Library C at /ref/star_C was generated by STAR 2.7.2a from GRCh37, with versionGenome 2.7.1a and sjdbOverhang 150. A colleague proposes choosing B and passing --sjdb-overhang 150 because the new reads are 151 nt; otherwise they want to rebuild everything. Assess that proposal, choose a library for the planned pilot if one is suitable, and give one pbrun rna_fq2bam command using /reads/new_R1.fq.gz, /reads/new_R2.fq.gz, zcat, STAR outputs in /results/star, and sorted BAM /results/new.bam without duplicate marking. Our command-manifest format requires an explicit positive --sjdb-overhang value. Explain which checks are established by the supplied provenance and what still requires target-container validation. Do not edit metadata, regenerate an index, inspect local files or hardware, or run a workload. Public versioned documentation/source lookup is allowed.", + "expected_output": "Choose intact library A for a planned, subsequently validated pilot. STAR 2.7.2a uses the compatibility marker 2.7.1a, so A's version strings do not require a rebuild. Reject B's cosmetic metadata rewrite and C's wrong assembly. Preserve A's explicit junction overhang 99; changing read length does not permit relabeling its stored junctions to 150. Rebuilding a separate index is an optional route for a different overhang, not mandatory just to match executable/version strings. Give a complete command with /ref/GRCh38.fa, /ref/star_A, the paired reads and zcat, separate --output-dir /results/star and --out-bam /results/new.bam, --no-markdups, and --sjdb-overhang 99. Distinguish supplied provenance from untested Parabricks container execution; no changes or workload execution. In the 4.8.0 manual, --ref is required independently of --genome-lib-dir, and rna_fq2bam marks duplicates unless --no-markdups disables that step. A draft omitting --ref cannot run; one omitting --no-markdups violates the requested no-duplicate-marking behavior. Claiming marking is opt-in or mentioning the needed flag only conditionally does not fix the supplied command. These are substantive command requirements when judging goal completion. The documented sjdb-overhang default is 100, not the supplied index-specific 99.", "assertions": [ "The agent selects intact library A for the planned pilot and explains why versionGenome 2.7.1a can be correct for a STAR 2.7.2a build, without imposing an unnecessary rebuild based on those strings.", "The agent rejects B's metadata-only rewrite as a compatibility fix and C's GRCh37 index for the supplied GRCh38 target.", "The agent supplies --sjdb-overhang 99 for A, explains the conflict with explicitly forcing 150 on the saved-junction index, and distinguishes reuse from separately rebuilding with a different overhang.", - "The command includes pbrun rna_fq2bam, --ref /ref/GRCh38.fa, --genome-lib-dir /ref/star_A, the paired --in-fq paths, --read-files-command zcat, --output-dir /results/star, --out-bam /results/new.bam, and --no-markdups. The 4.7.1 tool requires --ref even with --genome-lib-dir and performs duplicate marking unless --no-markdups is supplied; do not accept the incorrect claim that marking is opt-in.", + "The command includes pbrun rna_fq2bam, --ref /ref/GRCh38.fa, --genome-lib-dir /ref/star_A, the paired --in-fq paths, --read-files-command zcat, --output-dir /results/star, --out-bam /results/new.bam, and --no-markdups. The 4.8.0 tool requires --ref even with --genome-lib-dir and performs duplicate marking unless --no-markdups is supplied; do not accept the incorrect claim that marking is opt-in.", "The agent accepts the administrator-supplied build/reference/integrity facts as premises, identifies target-container execution as still untested, and does not edit, rebuild, inspect local files/hardware, or run a workload." ], "expected_skill": "parabricks", "expected_script": null, "files": [] + }, + { + "id": "parabricks-019", + "prompt": "We are upgrading an Oxford Nanopore germline job from Parabricks 4.7.1 to 4.8.0. Its 4.7.1 command was: pbrun ont_germline --ref /ref/GRCh38.fa --in-fq /data/ont.fastq.gz --out-bam /results/ont.bam --out-variants /results/ont.vcf.gz --chaining-on-gpu. We added --chaining-on-gpu because alignment was CPU-bound, and we want to keep GPU chaining. Review the command for 4.8.0, explain what changed, and give the corrected command. These are container paths; hardware details and benchmarks are unavailable. This is planning only: do not execute commands or inspect this machine.", + "expected_output": "The agent recognizes that Parabricks 4.8.0 replaced the valueless --chaining-on-gpu switch with --seeding-chaining-on-gpu, which takes on, off, or auto, and kept --chaining-on-gpu only as a deprecated alias that also requires a value, so the 4.7.1 command no longer parses. Because the auto default enables GPU seeding and chaining only for the splice:sr preset, it sets --seeding-chaining-on-gpu on to keep GPU chaining for ONT reads, preserves the remaining arguments, and leaves other tuning at its defaults without benchmark evidence.", + "assertions": [ + "The agent explains that in Parabricks 4.8.0 --chaining-on-gpu is no longer a valueless switch: it is a deprecated alias of --seeding-chaining-on-gpu, which takes on, off, or auto, so the bare 4.7.1 form fails argument parsing.", + "The corrected command uses --seeding-chaining-on-gpu on and does not also pass --chaining-on-gpu.", + "The agent explains that the auto default enables GPU seeding and chaining only for the splice:sr preset, so this ONT alignment would run on CPU unless on is set.", + "The command preserves --ref /ref/GRCh38.fa, --in-fq /data/ont.fastq.gz, --out-bam /results/ont.bam, and --out-variants /results/ont.vcf.gz.", + "The agent does not prescribe fixed --nstreams, --chunk-size, or other tuning values without benchmark evidence, does not claim a speedup, and does not execute commands or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-020", + "prompt": "We are moving pangenome alignment from Parabricks 4.7.1 to 4.8.0. The bundle is /ref/panel.gbz, which a colleague regenerated last month with vg gbwt from vg 1.73.0 using default settings; /ref/panel.dist, /ref/panel.min, and /ref/panel.zipcodes, generated with vg 1.70.0 for our 4.7.1 runs; and the path list /ref/paths.txt. /ref/panel.fa, with /ref/panel.fa.fai, was extracted from the same graph paths. We now want CRAM output. Draft: pbrun giraffe --gbz-name /ref/panel.gbz --dist-name /ref/panel.dist --minimizer-name /ref/panel.min --zipcodes-name /ref/panel.zipcodes --ref-paths /ref/paths.txt --in-fq /reads/R1.fq.gz /reads/R2.fq.gz --sample S1 --read-group rg1 --align-only --out-bam /results/S1.cram. Explain what must change for 4.8.0, including graph and index preparation, and give the corrected plan and pbrun command. These are container paths. This is planning only: do not run vg or pbrun, download data, or inspect this machine.", + "expected_output": "The agent identifies three 4.8.0 requirements. Giraffe now uses vg v1.75.1, so the .dist, .min, and .zipcodes files built with vg 1.70.0 must be regenerated with vg v1.75.1. Parabricks reads only GBZ version 1, and vg 1.72.0 or later writes version 2 by default, so the graph must be converted with vg gbwt -Z /ref/panel.gbz -g .gbz --gbz-v1 using vg 1.74.0 or later; indexes built from the same graph stay valid after the conversion. CRAM output is selected by the .cram path, requires --ref with the FASTA that matches the graph and --ref-paths, and cannot be combined with --align-only. Dropping --align-only also turns on duplicate marking, so the agent discloses that change and adds or offers --no-markdups to keep duplicates unmarked. The corrected command keeps the required inputs and read-group flags, uses the converted graph and regenerated indexes, adds --ref /ref/panel.fa, removes --align-only, and recommends --run-ref-verification for the first run with this reference.", + "assertions": [ + "The agent states that Parabricks 4.8.0 giraffe uses vg v1.75.1 and that the .dist, .min, and .zipcodes files built with vg 1.70.0 must be regenerated with vg v1.75.1 rather than reused.", + "The agent identifies the graph written by vg 1.73.0 with default settings as GBZ version 2, which 4.8.0 cannot load, and converts it to version 1 with vg gbwt -Z /ref/panel.gbz -g .gbz --gbz-v1 using vg 1.74.0 or later; the regenerated indexes come from this graph, built either before or after the conversion.", + "For CRAM output, the corrected command keeps an --out-bam path ending in .cram, adds --ref /ref/panel.fa as the FASTA matching the graph and --ref-paths, and removes --align-only, which cannot produce CRAM; the agent explains that the run will now coordinate-sort and mark duplicates by default, and adds or offers --no-markdups to keep duplicates unmarked.", + "The corrected command points the graph and index options at the converted graph and regenerated indexes (new names or clearly labeled placeholders), keeps --ref-paths /ref/paths.txt, both FASTQs, --sample S1, and --read-group rg1, and recommends --run-ref-verification for the first run with this reference.", + "The agent does not run vg or pbrun, download data, claim files were converted or generated, or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-021", + "prompt": "Assess whether a remote workstation is ready for Parabricks 4.8.0 germline runs with nvcr.io/nvidia/clara/clara-parabricks:4.8.0-1. Use these administrator-supplied facts: Ubuntu 22.04; one NVIDIA GeForce RTX 4090 with 24 GB and compute capability 8.9; driver 580.95.05; nvidia-smi reports CUDA Version 13.0; 32 CPU threads; 128 GB system RAM; Docker 27.3.1 with the NVIDIA Container Toolkit installed; a GPU container probe that ran nvidia-smi in nvidia/cuda:12.9.1-base-ubuntu22.04 succeeded; /scratch has 2 TB free. Your terminal is on a separate machine: do not probe it, install software, or launch containers. Explain blockers, what remains unverified, and next steps for the workstation, using requirements for the selected release.", + "expected_output": "The agent evaluates the supplied facts against Parabricks 4.8.0 requirements. The 4.8.0 container needs a driver compatible with CUDA 13.3.x, and consumer GPUs such as the GeForce RTX 4090 need driver 610 or newer, so driver 580.95.05, which reports CUDA 13.0, is a blocker; forward compatibility on older driver branches applies to data center and workstation GPUs, not this card. The successful CUDA 12.9.1 probe does not show 4.8.0 readiness, so after a driver upgrade the workstation should be re-tested with nvidia/cuda:13.3.1-base-ubuntu22.04 and an authorized 4.8.0-1 image check. The agent recognizes the GPU memory, architecture, CPU, RAM, Docker, and storage facts as adequate and leaves Parabricks image execution unverified.", + "assertions": [ + "The agent uses the supplied workstation facts and does not probe the separate terminal machine, install software, launch containers, or claim to have tested the workstation.", + "The agent applies the Parabricks 4.8.0 requirements and identifies driver 580.95.05 on a GeForce consumer GPU as a blocker because consumer GPUs need driver 610 or newer for the CUDA 13.3 container; it does not substitute 4.7.x requirements.", + "The agent explains that forward compatibility on older driver branches applies to data center and workstation GPUs rather than this consumer card, and that nvidia-smi CUDA Version 13.0 is the driver's capability, which is below 13.3.", + "The agent states that the successful nvidia/cuda:12.9.1 probe does not establish 4.8.0 readiness and recommends re-testing after the driver upgrade with nvidia/cuda:13.3.1-base-ubuntu22.04 and an authorized Parabricks 4.8.0-1 image check.", + "The agent recognizes 24 GB of GPU memory, compute capability 8.9, 32 CPU threads, 128 GB of RAM, Docker 27.3.1, and 2 TB of scratch space as adequate for this request, without inventing a fixed WGS disk requirement." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-022", + "prompt": "Translate this CPU GATK command to Parabricks 4.8.0: gatk HaplotypeCaller -R /ref/GRCh38.fa -I /data/S1.bam -O /results/S1.vcf.gz -G StandardAnnotation -G AS_StandardAnnotation. We want a per-sample VCF for direct hard filtering, not a gVCF. Explain any options that 4.8.0 rejects and give the pbrun haplotypecaller command. These are container paths; hardware details are unavailable. This is planning only: do not execute commands or inspect this machine.", + "expected_output": "The agent maps -R, -I, and -O to --ref, --in-bam, and --out-variants and keeps StandardAnnotation through the Parabricks -G or --annotation-group option. It explains that Parabricks 4.8.0 rejects allele-specific (AS_*) annotations unless --gvcf is set, so the translated command would fail its argument checks as written. Because a per-sample VCF is required, the command drops AS_StandardAnnotation rather than switching to gVCF, and the agent notes that keeping allele-specific annotations would require gVCF output instead.", + "assertions": [ + "The pbrun haplotypecaller command uses --ref /ref/GRCh38.fa, --in-bam /data/S1.bam, and --out-variants /results/S1.vcf.gz.", + "The command keeps StandardAnnotation through the Parabricks -G or --annotation-group option.", + "The agent explains that Parabricks 4.8.0 rejects allele-specific (AS_*) annotations unless --gvcf is set, so a direct translation that keeps AS_StandardAnnotation fails its argument checks.", + "Because a per-sample VCF is required, the final command omits AS_StandardAnnotation and does not add --gvcf; the agent states that keeping allele-specific annotations would require gVCF output.", + "The agent does not pass GATK engine or Java options, invent flags, claim output parity, execute commands, or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-023", + "prompt": "Our Parabricks 4.7.1 exome command is: pbrun deepvariant --ref /ref/GRCh38.fa --in-bam /data/exome.bam --use-wes-model --disable-small-model --interval-file /ref/targets.bed --out-variants /results/exome.vcf.gz. We added --disable-small-model to match Google DeepVariant's WES behavior. We are moving to Parabricks 4.8.0. Is --disable-small-model still needed, and what is the minimal 4.8.0 command with the same model behavior? These are container paths. This is planning only: do not execute commands or inspect this machine.", + "expected_output": "The agent explains that in Parabricks 4.8.0 --use-wes-model disables the small model by itself, matching Google DeepVariant's WES default, so --disable-small-model is no longer needed. In 4.7.1 the small model stayed on unless --disable-small-model was also passed, so the original command was correct for that release. The minimal 4.8.0 command keeps --ref, --in-bam, --use-wes-model, --interval-file, and --out-variants and drops --disable-small-model without adding unsupported flags.", + "assertions": [ + "The agent explains that in Parabricks 4.8.0 --use-wes-model disables the small model automatically, matching Google DeepVariant's WES behavior, so --disable-small-model is no longer required.", + "The agent notes that in 4.7.1 the small model stayed enabled with --use-wes-model unless --disable-small-model was also passed, so the original command was correct for 4.7.1.", + "The minimal 4.8.0 command keeps --ref /ref/GRCh38.fa, --in-bam /data/exome.bam, --use-wes-model, --interval-file /ref/targets.bed, and --out-variants /results/exome.vcf.gz, and omits --disable-small-model.", + "The agent does not add --enable-small-model, which is not in the current tool reference, or invent other flags.", + "The agent does not claim output parity with Google DeepVariant without a comparison run, and does not execute commands or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-024", + "prompt": "With Parabricks 4.8.0, haplotypecaller wrote an uncompressed gVCF to /results/S1.g.vcf. A teammate's wrapper then runs pbrun indexgvcf --input /results/S1.g.vcf and polls for /results/S1.g.vcf.tbi before starting genotyping. Will that index path appear? Explain indexgvcf's output naming for compressed and uncompressed inputs, and give the corrected command and the path the wrapper should wait for. /results is a writable container path. This is planning only: do not execute anything.", + "expected_output": "The agent explains that indexgvcf writes the index beside its --input: it appends .tbi to a compressed .g.vcf.gz input, but an uncompressed .g.vcf gets an .idx index. The wrapper should run pbrun indexgvcf --input /results/S1.g.vcf and wait for /results/S1.g.vcf.idx, because /results/S1.g.vcf.tbi will never appear. It invents no --out option and accounts for an existing index file before indexing.", + "assertions": [ + "The agent states that pbrun indexgvcf writes /results/S1.g.vcf.idx for this uncompressed input, so the wrapper's /results/S1.g.vcf.tbi never appears.", + "The agent explains that .tbi is appended only for a compressed .g.vcf.gz input, for example sample.g.vcf.gz becomes sample.g.vcf.gz.tbi.", + "The corrected plan runs pbrun indexgvcf --input /results/S1.g.vcf, invents no --out option, and has the wrapper wait for /results/S1.g.vcf.idx, or bgzip-compresses it to .g.vcf.gz first (plain gzip cannot be tabix-indexed) if a tabix index is specifically required.", + "The plan accounts for an existing /results/S1.g.vcf.idx before indexing, consistent with the skill's guardrail against overwriting index files.", + "The agent does not execute commands, claim the index was created, or inspect hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] + }, + { + "id": "parabricks-025", + "prompt": "We run Parabricks 4.7.1 and are not upgrading yet. Prepare a pbrun ont_germline command that keeps minimap2 chaining on the GPU, using --ref /ref/GRCh38.fa, --in-fq /data/ont.fastq.gz, --out-bam /results/ont.bam, and --out-variants /results/ont.vcf.gz. These are container paths. This is command preparation only: do not execute commands or inspect this machine.", + "expected_output": "The agent writes a 4.7.1 command that enables GPU chaining with the bare --chaining-on-gpu switch, because --seeding-chaining-on-gpu and its on, off, and auto values are new in 4.8.0. It preserves the supplied reference, input, BAM, and VCF paths and leaves other tuning at its defaults without benchmark evidence.", + "assertions": [ + "The command enables GPU chaining with the bare --chaining-on-gpu switch and passes no value to it.", + "The command does not use --seeding-chaining-on-gpu, which Parabricks 4.7.1 does not provide.", + "The command preserves --ref /ref/GRCh38.fa, --in-fq /data/ont.fastq.gz, --out-bam /results/ont.bam, and --out-variants /results/ont.vcf.gz.", + "The agent does not prescribe fixed --nstreams, --chunk-size, or other tuning values without benchmark evidence.", + "The agent prepares the command without executing it or inspecting hardware." + ], + "expected_skill": "parabricks", + "expected_script": null, + "files": [] } ] } diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-batch.json b/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-batch.json index 064ae54b..1a178b4d 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-batch.json +++ b/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-batch.json @@ -1,5 +1,5 @@ { - "parabricks_version": "4.7.1", + "parabricks_version": "4.8.0", "reference_assets": "The FASTA and STAR library use the same reference sequences and annotation; the library was built by STAR 2.7.2a. Input data paths are deployment paths, not local files to probe.", "jobs": [ { diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-contracts.json b/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-contracts.json index b0118df4..79cd5feb 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-contracts.json +++ b/skills/bionemo-agent-toolkit/skills/parabricks/evals/files/rna-contracts.json @@ -1,5 +1,5 @@ { - "parabricks_version": "4.7.1", + "parabricks_version": "4.8.0", "reference_assets": "The FASTA and STAR library use the same reference sequences and annotation; the library was built by STAR 2.7.2a. Input data paths are deployment paths, not local files to probe.", "jobs": [ { diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/command-conventions.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/command-conventions.md index b0a4e441..0d69b46b 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/command-conventions.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/command-conventions.md @@ -9,7 +9,7 @@ their Tools column for the selected command. Tool examples give the command inside the container. Add one Docker envelope only when requested; preserve a requested bare `pbrun` command or argument array. -Use an exact NVIDIA release tag (4.7.1 uses `4.7.1-1`), never `latest` or an +Use an exact NVIDIA release tag (4.8.0 uses `4.8.0-1`), never `latest` or an implicit tag. For reproducible execution, resolve that release to its trusted NGC manifest digest and record the digest with the run. An image's local `RepoDigests` after an authorized pull can identify the downloaded manifest; @@ -48,11 +48,11 @@ consent rules. Preparing a workload command does not authorize executing it. ## Translating options -The mapping tables primarily describe Parabricks 4.7.1. Check each selected -release's NVIDIA tool manual before finalizing syntax, defaults, optional flags, -input modes, or output naming. An upstream option without a documented mapping -has no assumed Parabricks equivalent; do not pass it through or borrow an option -from another `pbrun` tool. Flag availability does not establish biological parity. +Check each selected release's NVIDIA tool manual before finalizing syntax, +defaults, optional flags, input modes, or output naming. An upstream option +without a documented mapping has no assumed Parabricks equivalent; do not pass +it through or borrow an option from another `pbrun` tool. Flag availability +does not establish biological parity. In option tables, **—** in the baseline column denotes a Parabricks-only control. If an upstream option is absent from both the tool-specific table and its scoped rows in `shared-options.md`, treat it as unmapped until the selected @@ -106,6 +106,8 @@ or outputs. For example, `rna_fq2bam` needs both `--output-dir` for generated STAR outputs and `--out-bam` for the final BAM. A Docker output mount does not supply either argument. Retain explicit placeholders when a required path is unknown. Check this from the command text without launching a container. +Appending `--dry-run` has `pbrun` validate the arguments and input paths +without a GPU; it is still a container launch that needs authorization. Before execution, check that every input and required index resolves through the mounts and that reference, known-sites, model, and graph resources are diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-bam2fq.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-bam2fq.md index 074bdd54..b66525d1 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-bam2fq.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-bam2fq.md @@ -14,7 +14,7 @@ ## Preserving reads during conversion -For Parabricks 4.7.0, paired reads use `--out-suffixF` and `--out-suffixF2`. +Paired reads use `--out-suffixF` and `--out-suffixF2`. Orphan first mates, orphan second mates, and unpaired reads are **ignored** unless `--out-suffixO`, `--out-suffixO2`, and `--out-suffixS`, respectively, are supplied. A single unpaired output does not capture both orphan categories. diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepsomatic.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepsomatic.md index 79d3a77b..6852d3f4 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepsomatic.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepsomatic.md @@ -27,7 +27,8 @@ selected version before finalizing. ## Gotchas -Parabricks DeepSomatic `--gvcf` option actually produces both .g.vcf and .vcf files with the same name. Do not generate separate commands for gvcf and vcf outputs. +Parabricks `deepsomatic` has no `--gvcf` option; write the VCF with +`--out-variants`. ## DeepSomatic Option Mapping diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant.md index 5d844266..e659902f 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant.md @@ -30,11 +30,12 @@ version. Parabricks DeepVariant `--gvcf` option actually produces both .g.vcf and .vcf files with the same name. Do not generate separate commands for gvcf and vcf outputs. The small model is enabled by default. Do not add `--enable-small-model`; that -flag is not in the current tool reference. For WES, pass `--disable-small-model` -together with `--use-wes-model` when matching Google DeepVariant. +flag is not in the current tool reference. For WES, `--use-wes-model` also +disables the small model, matching Google DeepVariant; in 4.7.1, also pass +`--disable-small-model`. With both `--proposed-variants` and `--gvcf`, Parabricks warns and ignores -`--run-partition`; the [4.7.1 manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/deepvariant) +`--run-partition`; the [manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/deepvariant) also warns of a slowdown for that combination. Preserve the requested candidate input and gVCF output, and omit the ignored partition flag. Removing it does not prove a speedup, and increasing GPU streams cannot restore partitioning. Measure diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant_germline.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant_germline.md index 4ac8b145..dade383c 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant_germline.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-deepvariant_germline.md @@ -33,7 +33,8 @@ Use this when translating BWA-MEM plus Google DeepVariant germline workflows to `pbrun deepvariant_germline`. Preprocessing and shared DeepVariant mappings for `deepvariant_germline` are in [shared-options.md](shared-options.md). The small model is enabled by default; use `--disable-small-model` to turn it off. For WES, -pass `--disable-small-model` with `--use-wes-model` to match Google DeepVariant. +`--use-wes-model` also disables it, matching Google DeepVariant; in 4.7.1, also +pass `--disable-small-model`. | Baseline option | `pbrun deepvariant_germline` equivalent | Notes | | --- | --- | --- | diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-fq2bam.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-fq2bam.md index 1e29255e..1072d7c6 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-fq2bam.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-fq2bam.md @@ -60,6 +60,7 @@ markdup/BQSR, intervals, GPU write controls, and similar) are in | Single-end FASTQ input | `--in-se-fq` | Single-end FASTQ input. | | FASTQ manifest or file list | `--in-fq-list`, `--in-se-fq-list` | Parabricks manifest; no direct BWA-MEM flag. | | `bwa mem -t` | `--bwa-cpu-thread-pool`, `--num-cpu-threads-per-stage`, `--bwa-primary-cpus` | Partial; CPU controls split across stages. | +| `bwa mem -SP5M` for Hi-C | `--bwa-options="-SP5M"` | Add other supported BWA-MEM options to the same string. | | `bwa mem` alignment-only output | `--align-only` | Stops after BWA-MEM; no sort/markdup. | | GATK/Picard `SortSam --SORT_ORDER coordinate` | Default `fq2bam` behavior | Coordinate sorting is part of the normal workflow. | | GATK/Picard `MarkDuplicates -I` | Implicit sorted intermediate | Sorted alignments feed duplicate marking unless disabled. | diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-germline.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-germline.md index ef960ee3..c5234371 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-germline.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-germline.md @@ -14,8 +14,8 @@ 4. For preprocessing-only questions, route to `pbrun-fq2bam.md` and related FASTQ/BAM references; for runtime readiness, use `runtime-environment.md`. - For prepared BAM/CRAM input, use `pbrun-haplotypecaller.md`; the 4.7.1 - germline pipeline does not document `--in-bam`. + For prepared BAM/CRAM input, use `pbrun-haplotypecaller.md`; the germline + pipeline has no `--in-bam` option. ## Command Shape @@ -42,7 +42,7 @@ markdup/BQSR, intervals, and shared execution controls) for `germline` are in | GATK `HaplotypeCaller --output`, `-O` | `--out-variants` | VCF/gVCF output. | | GATK `HaplotypeCaller --emit-ref-confidence GVCF` | `--gvcf` | gVCF mode. | | GATK `HaplotypeCaller --sample-ploidy` | `--ploidy` | Haploid/diploid where documented. | -| GATK `HaplotypeCaller` annotation/output-mode/pruning controls | `--haplotypecaller-options` | Pass supported HaplotypeCaller options as one string. | +| GATK `HaplotypeCaller` annotation/output-mode/pruning controls | `--haplotypecaller-options` | Pass supported HaplotypeCaller options as one string. `AS_*` annotations require `--gvcf`. | | `--java-options`, GATK engine/common flags | No direct equivalent | Not exposed as GATK engine controls. | ## germline Options Without BWA-MEM/GATK Equivalents @@ -54,7 +54,7 @@ Shared Parabricks pipeline and GPU controls for `germline` are in | --- | --- | | `--run-partition` | Genome partitions for HaplotypeCaller (one process per partition). Not fq2bam GPU-process partitioning. | | `--bwa-gpu-num-per-partition` | BWA GPUs per worker when `--run-partition` is set (default: 2; must divide `--num-gpus`). | -| `--num-streams-per-gpu` | HaplotypeCaller streams (default: 1). Not a partition flag. | +| `--num-streams-per-gpu` | HaplotypeCaller streams (default: `auto`). Not a partition flag. | ## Validation diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-giraffe.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-giraffe.md index a4e0fb76..be70182d 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-giraffe.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-giraffe.md @@ -23,16 +23,29 @@ pbrun giraffe \ Always verify exact graph resource flags and output options against the selected version before finalizing. Do not guess graph/index file combinations. -For **4.7.0**, the GBZ graph, distance index, minimizer index, and zipcodes file +The GBZ graph, distance index, minimizer index, and zipcodes file are required inputs. Supply `--zipcodes-name` explicitly; do not infer a compatible zipcodes file from a minimizer filename. Use `--ref-paths` when the output BAM needs a supplied path order or sequence dictionary. +Giraffe uses vg v1.75.1: generate index files with vg v1.75.1, regenerating any +built with an older vg, and supply a GBZ version 1 graph. vg 1.72.0 and later +write version 2 by default, which fails to load; convert it with +`vg gbwt -Z graph.gbz -g graph-v1.gbz --gbz-v1` (vg 1.74.0 or later). Indexes +built from the same graph stay valid after that conversion. In 4.7.1, giraffe +uses vg v1.70.0; build its indexes with that version. + To produce a **coordinate-sorted BAM without duplicate marking**, use `--no-markdups`. `--align-only` stops before coordinate sorting and therefore does not meet that output requirement. Preserve the supplied sample and all read-group fields using the Giraffe-specific flags in the mapping below. +An `--out-bam` path ending in `.cram` writes CRAM. It requires a +`--ref` FASTA that matches the graph and the paths in `--ref-paths`, cannot be +combined with `--align-only`, and `--run-ref-verification` is recommended the +first time a reference is used. Dropping `--align-only` for CRAM also turns on +duplicate marking; add `--no-markdups` if duplicates should stay unmarked. + ## Performance Guidance Prefer the documented automatic stream selection for general commands: leave @@ -73,8 +86,9 @@ equivalent. | `vg giraffe` fragment length controls | `--max-fragment-length`, `--fragment-mean`, `--fragment-stdev` | Same fragment-distribution role. | | `vg giraffe --max-multimaps`, `-M` | `--max-multimaps` | Max alignments per read (default: 1). | | `vg giraffe --copy-comment` | `--copy-comment` | Appends FASTQ comment to BAM output via auxiliary tag. | +| `vg giraffe --supplementary` | `--supplementary` | Identify and report supplementary alignments (off by default). | | Alignment-only output | `--align-only` | Stops after `vg giraffe` alignment output; does not coordinate-sort. | -| GATK/Picard `SortSam --OUTPUT`, `-O` | `--out-bam` | Final BAM output path. | +| GATK/Picard `SortSam --OUTPUT`, `-O` | `--out-bam` | Final BAM output path, or CRAM for a `.cram` path. | | GATK/Picard duplicate-marking behavior | `--markdups-*`, `--optical-duplicate-pixel-distance`, `--no-markdups` | Parabricks exposes the duplicate-marking controls documented for this pipeline. | | GATK/Picard `--version` | `--version` | Same version-reporting role. | | Upstream `vg giraffe` options not listed here | No direct equivalent | Not exposed by current Parabricks docs for `pbrun giraffe`. | @@ -88,6 +102,8 @@ equivalent. | `--nstreams`, `--num-cpu-threads-per-gpu`, `--batch-size`, `--write-threads`, `--work-queue-capacity` | Parabricks GPU/CPU pipeline scheduling controls. Prefer `--nstreams auto` for default guidance; use integer stream counts only for benchmarked/manual tuning. | | `--minimizers-gpu` | Parabricks GPU offload for minimizers/seeds in supported single-end runs. | | `--memory-limit`, `--low-memory` | Parabricks host/GPU memory controls for the pipeline. | +| `--in-se-cram`, `--in-cram-ref`, `--cram-read-threads` | Single-end CRAM input; aligned reads are re-aligned and need `--in-cram-ref` to decode. Paired-end CRAM is not supported. | +| `--ultima-tags`, `--tp-output-order` | Carry Ultima per-base `tp`/`t0` tags from `--in-se-cram` input to the output. | ## Validation diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-haplotypecaller.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-haplotypecaller.md index 90d002dd..a1656028 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-haplotypecaller.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-haplotypecaller.md @@ -30,8 +30,11 @@ GPU-accelerated HaplotypeCaller counterpart, but the CLI is not one-to-one: some GATK flags are direct Parabricks flags, while other supported original HaplotypeCaller options must be passed through `--haplotypecaller-options`. Use the spelling documented for that inner parser, which differs from GATK's -top-level CLI for some options. For example, 4.7.1 accepts one quoted value -`'-min-pruning 4 -pcr-indel-model NONE'`; those are single-hyphen inner flags. +top-level CLI for some options. For example, the inner parser takes one quoted +value `'-min-pruning 4 -pcr-indel-model NONE'`; those are single-hyphen inner +flags. Allele-specific (`AS_*`) annotations, whether from `-G` or from `-A` +inside `--haplotypecaller-options`, require `--gvcf`; Parabricks rejects them +during argument checking. `--in-recal-file` applies the supplied recalibration table during calling; creating that table earlier did not itself rewrite the input BAM. A separate ApplyBQSR BAM is unnecessary when using this caller input. @@ -66,7 +69,7 @@ ApplyBQSR BAM is unnecessary when using this caller input. | `--adaptive-pruning` | Parabricks-exposed graph pruning control. | | `--force-call-filtered-alleles` | Parabricks force-calling behavior tied to its documented allele input. | | `--filter-reads-too-long`, `--no-alt-contigs` | Parabricks read/contig filtering conveniences. | -| `--htvc-low-memory`, `--num-htvc-threads`, `--num-streams-per-gpu`, `--run-partition`, `--gpu-num-per-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` default 1. | +| `--htvc-low-memory`, `--num-htvc-threads`, `--num-streams-per-gpu`, `--run-partition`, `--gpu-num-per-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` defaults to `auto`. | ## Validation diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-indexgvcf.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-indexgvcf.md index 3fc32317..bb228ea7 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-indexgvcf.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-indexgvcf.md @@ -2,11 +2,13 @@ ## First Steps -1. Confirm the input is a GVCF that needs indexing. +1. Confirm the input is a GVCF that needs indexing. `haplotypecaller` and + `deepvariant` already write `.tbi` for `.gz` output, so check for + that index before planning an `indexgvcf` run. 2. Collect required inputs: - Input GVCF path, and whether its directory is writable inside the container. - Where the index must end up. There is no documented output-path option; the - `.tbi` is written next to the input (see Output Naming below). + index is written next to the input (see Output Naming below). 3. Ask whether the output will be consumed by `genotypegvcf` or another tool. ## Command Shape @@ -21,9 +23,10 @@ Verify exact flags against the selected version. ## Output Naming and Read-Only Inputs -- The index name is the input filename with `.tbi` appended - (`sample.g.vcf.gz` → `sample.g.vcf.gz.tbi`). Do not use or invent an `--out` - flag; none is documented for `indexgvcf`. +- The index name is the input filename with `.tbi` appended for a `.gz` input + (`sample.g.vcf.gz` → `sample.g.vcf.gz.tbi`), or `.idx` for an uncompressed + `.g.vcf`. Do not use or invent an `--out` flag; none is documented for + `indexgvcf`. - If the original GVCF is on a read-only mount (for example `/data`), indexing it in place fails. Index a **writable copy** instead and leave the original untouched. @@ -36,19 +39,19 @@ Verify exact flags against the selected version. cp -p /data/ /results/ ``` - Ask the user before replacing an existing GVCF or `.tbi`, and make clear the - commands are a plan until the user runs them. + For an uncompressed `.g.vcf`, check for `.idx` instead of the + `.tbi`. Ask the user before replacing an existing GVCF or index, and make + clear the commands are a plan until the user runs them. ## IndexFeatureFile Option Mapping Use this mapping when translating a GATK `IndexFeatureFile` command for GVCF -indexing to `pbrun indexgvcf`. Parabricks documents `indexgvcf` as -creating a `.tbi` index by appending `.tbi` to the input GVCF filename. +indexing to `pbrun indexgvcf`. | GATK option | `pbrun indexgvcf` equivalent | Notes | | --- | --- | --- | | `--input`, `-I` | `--input` | Required gVCF/gVCF.GZ input. | -| Implicit output index path | Implicit `.tbi` next to input | Parabricks docs state the output name is determined by appending `.tbi` to the input GVCF filename. | +| Implicit output index path | Implicit `.tbi` (`.gz` input) or `.idx` (`.g.vcf`) next to input | Not configurable; see Output Naming and Read-Only Inputs. | | GATK output path override, cloud flags, `--arguments_file`, and Java options | No direct equivalent | Not exposed by current Parabricks docs for `indexgvcf`. | ## Validation @@ -58,9 +61,10 @@ creating a `.tbi` index by appending `.tbi` to the input GVCF filename. ## Guardrails -- Do not use this for ordinary VCF indexing unless the selected version - documents that use. +- Index only GVCFs and ordinary `.vcf.gz` files; other inputs are not + documented. - Do not run genotyping here; route to `pbrun-genotypegvcf.md`. - Do not invent output index suffixes; verify version behavior. -- Do not overwrite an existing GVCF or `.tbi`, and do not index a read-only - original in place; use a writable copy after checking the destination. +- Do not overwrite an existing GVCF or index (`.tbi`, or `.idx` for an + uncompressed `.g.vcf`), and do not index a read-only original in place; use + a writable copy after checking the destination. diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-minimap2.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-minimap2.md index 9d26acdd..533c7e0a 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-minimap2.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-minimap2.md @@ -36,6 +36,7 @@ to several upstream commands rather than one single tool. | Baseline option | `pbrun minimap2` equivalent | Notes | | --- | --- | --- | | `minimap2 ` | `--ref` | Required reference FASTA path. | +| `minimap2 ` paired-end FASTQ | `--in-fq ` | Two files per `--in-fq` are aligned as a pair; one file is single-end. Interleaved FASTQ is not supported. Pairing is new in 4.8.0; do not rely on it in 4.7.1. | | BAM/CRAM input for preprocessing workflow | `--in-bam` | Parabricks input BAM/CRAM mode. | | `minimap2 -x` | `--preset` | Parabricks supports documented presets such as `map-pbmm2`, `map-hifi`, `map-ont`, `lr:hq`, `splice`, `splice:hq`, and `splice:sr`. | | `minimap2 -t` | `--num-threads` | Processing thread count. | @@ -60,8 +61,8 @@ to several upstream commands rather than one single tool. | `--pbmm2`, `--pbmm2-unmapped` | Parabricks compatibility mode for pbmm2-style output and unmapped records. | | `--out-qc-metrics-dir` | Parabricks workflow output for QC metrics. | | `--standalone-bqsr` | Parabricks mode control for running BQSR after sorted BAM generation. | -| `--nstreams`, `--max-queue-chunks`, `--max-queue-reads`, `--chunk-size` | Parabricks GPU/CPU pipeline queue and chunk controls. | -| `--chaining-on-gpu` | GPU offload for minimap2 chaining; may help CPU-bound runs. | +| `--nstreams`, `--max-queue-chunks`, `--max-queue-reads`, `--chunk-size`, `--estimated-read-length`, `--estimated-anchor-per-read`, `--stage2-large-chaining-size` | Parabricks GPU/CPU pipeline tuning controls. `--nstreams` and `--chunk-size` default to `auto`, tuned from device memory and preset; set values only for benchmarked tuning. | +| `--seeding-chaining-on-gpu on\|off\|auto` | GPU seeding and chaining; `auto` uses the GPU only for `splice:sr`, so `on` may help CPU-bound runs with other presets. Replaces 4.7.1's bare `--chaining-on-gpu` switch, now a deprecated alias that requires a value. | | `--low-memory` | Parabricks memory-reduction mode. | ## Validation diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-mutectcaller.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-mutectcaller.md index 7bd475ce..d6963d2f 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-mutectcaller.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-mutectcaller.md @@ -24,7 +24,7 @@ pbrun mutectcaller \ Verify exact tumor/normal, resource, interval, and filtering flags against the selected version. -For a panel of normals in **4.7.0**, follow +For a panel of normals, follow [prepon](pbrun-prepon.md) for contig-header validation and the required `.pon` resource. Pass the prepared **VCF.GZ** to `--pon`, then use [postpon](pbrun-postpon.md) for PON INFO annotation of the caller's VCF. @@ -57,7 +57,7 @@ but common GATK engine and Java controls do not. | --- | --- | | PON index handoff from `prepon` / `postpon` workflow flags | Parabricks decomposes PON handling into preprocessing, calling, and postprocessing steps. | | Parabricks-specific filtering or compatibility flags documented for the selected version | These are wrapper-specific controls; verify current docs before use. | -| `--num-streams-per-gpu`, `--mutect-low-memory`, `--run-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` default 1. | +| `--num-streams-per-gpu`, `--mutect-low-memory`, `--run-partition` | Parabricks GPU/partition performance controls. `--num-streams-per-gpu` defaults to `auto`. | ## Validation diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-ont_germline.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-ont_germline.md index a910f13b..a0872790 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-ont_germline.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-ont_germline.md @@ -46,9 +46,10 @@ calling. The DeepVariant small model is enabled by default; use | `pbrun ont_germline` option | Why it has no direct baseline equivalent | | --- | --- | -| `--standalone-bqsr`, `--out-qc-metrics-dir` | Parabricks pipeline mode/output controls. | +| `--standalone-bqsr` | Parabricks pipeline mode control. | | DeepVariant channel/allele-counter flags exposed directly by Parabricks | Parabricks first-class controls for DeepVariant internals. | -| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--chaining-on-gpu` | Parabricks minimap2 GPU pipeline controls. `--chaining-on-gpu` may help CPU-bound alignment. | +| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--estimated-*`, `--stage2-large-chaining-size` | Parabricks minimap2 GPU pipeline tuning controls; set values only for benchmarked tuning. | +| `--seeding-chaining-on-gpu` | `on` may help CPU-bound alignment (`auto` keeps this preset on CPU). Replaces 4.7.1's bare `--chaining-on-gpu` switch, now a deprecated alias that requires a value. | | `--disable-small-model` | Opt-out for the default-on DeepVariant small model. | | `--low-memory` | Parabricks memory-reduction mode. | diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pacbio_germline.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pacbio_germline.md index c1479918..cefe8238 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pacbio_germline.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pacbio_germline.md @@ -48,9 +48,10 @@ DeepVariant calling. The DeepVariant small model is enabled by default; use | `pbrun pacbio_germline` option | Why it has no direct baseline equivalent | | --- | --- | | `--pbmm2`, `--pbmm2-unmapped` | Parabricks compatibility controls for pbmm2-style output. | -| `--standalone-bqsr`, `--out-qc-metrics-dir` | Parabricks pipeline mode/output controls. | +| `--standalone-bqsr` | Parabricks pipeline mode control. | | DeepVariant channel/allele-counter flags exposed directly by Parabricks | Parabricks first-class controls for DeepVariant internals. | -| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--chaining-on-gpu` | Parabricks minimap2 GPU pipeline controls. `--chaining-on-gpu` may help CPU-bound alignment. | +| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--estimated-*`, `--stage2-large-chaining-size` | Parabricks minimap2 GPU pipeline tuning controls; set values only for benchmarked tuning. | +| `--seeding-chaining-on-gpu` | `on` may help CPU-bound alignment (`auto` keeps PacBio presets on CPU). Replaces 4.7.1's bare `--chaining-on-gpu` switch, now a deprecated alias that requires a value. | | `--disable-small-model` | Opt-out for the default-on DeepVariant small model. | | `--low-memory` | Parabricks memory-reduction mode. | diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md index e1ddecaf..5b3d9c81 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_aware_deepvariant.md @@ -28,7 +28,7 @@ For Roche SBX-D or SBX-Fast BAMs, add `--sbx`. That selects the shipped `deepvariant_pangenome_aware_sbx.eng` model unless `--pb-model-file` overrides it, and applies SBX make-examples/postprocess defaults. -## Parabricks 4.7.0 command +## Prepared-alignment command For prepared BAM/CRAM input, the four required arguments are `--ref`, `--pangenome` (the GBZ graph), `--in-bam`, and `--out-variants`: @@ -47,8 +47,8 @@ alignments; it does not require rerunning the `pangenome_germline` FASTQ pipelin ## Comparing with Google's implementation -The 4.7.0 manual documents three sources of output differences. Investigate -them separately after matching inputs, model versions, and comparison settings: +Three known sources cause output differences. Investigate them separately +after matching inputs, model versions, and comparison settings: - **CNN inference:** TensorRT and Keras can differ by about `10^-5` in predicted scores. The manual reports observed differing variants among zero-quality diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_germline.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_germline.md index d5a5aa79..3ac64127 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_germline.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-pangenome_germline.md @@ -41,6 +41,7 @@ pipeline-level rather than one-to-one. | DeepVariant custom model | `--pb-model-file` | Optional TensorRT model. Default is the shipped pangenome-aware engine, or the SBX engine when `--sbx` is set. | | Roche SBX Google case-study settings | `--sbx` | Roche SBX-D / SBX-Fast mode on the pangenome-aware DeepVariant stage. | | `vg giraffe --max-multimaps`, `-M` | `--max-multimaps` | Max alignments per read (default: 1). | +| `vg giraffe --supplementary` | `--supplementary` | Identify and report supplementary alignments (off by default). | | Intervals/regions | `--interval` or `--interval-file` | Verify pangenome workflow support for interval restriction. | | Upstream `vg giraffe` or DeepVariant options not listed here | No direct equivalent | Not exposed by current Parabricks docs for `pangenome_germline`. | @@ -50,12 +51,15 @@ pipeline-level rather than one-to-one. | --- | --- | | `--sbx` | Roche SBX mode for the pangenome-aware DeepVariant stage. | | GPU graph-alignment stream, batch, queue, and minimizer controls | Parabricks GPU implementation tuning. | +| `--in-se-cram`, `--in-cram-ref`, `--cram-read-threads` | Single-end CRAM input, as in `giraffe`; the Ultima tag options are giraffe-only. | | GPU write/sort/storage controls | Parabricks accelerated output pipeline. | | DeepVariant channel/allele-counter flags exposed directly by Parabricks | Parabricks first-class controls for DeepVariant internals. | ## Validation - Pangenome resources are complete and compatible with the reference build. +- The graph is GBZ version 1 and the indexes were built with vg v1.75.1 + (v1.70.0 for 4.7.1; see `pbrun-giraffe.md`). - Output VCF/gVCF or output directory exists. ## Guardrails diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-postpon.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-postpon.md index 667f360a..9e9d7dfb 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-postpon.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-postpon.md @@ -13,7 +13,7 @@ pbrun postpon \ --out-vcf /outputdir/ ``` -All three paths are required in 4.7.1. Use the same assembly-compatible PON as +All three paths are required. Use the same assembly-compatible PON as in prepon and mutectcaller, including its matching tabix index. Preserve the unannotated calls by selecting a distinct output path. Verify the annotated VCF and intended INFO changes after an authorized run; an output directory @@ -24,4 +24,4 @@ Runtime controls follow the shared command contract. Read the prepon reference for header repair and PON preparation; ordinary GATK engine flags do not have assumed Parabricks equivalents. -Source: [NVIDIA postpon 4.7.1 manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/postpon). +Source: [NVIDIA postpon manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/postpon). diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-prepon.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-prepon.md index 062f9ac0..e72980ff 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-prepon.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-prepon.md @@ -18,7 +18,7 @@ running prepon. Do not reuse the original index for changed compressed content. pbrun prepon --in-pon-file /workdir/ ``` -Run in a writable working area for generated resources. The 4.7.1 interface +Run in a writable working area for generated resources. `prepon` exposes no `--out` option; retain the prepared PON and generated companion resources for the caller. Supply that same PON path to `mutectcaller --pon`. Then use postpon to annotate the resulting calls. Keep all three commands as @@ -28,4 +28,4 @@ The only required tool input is `--in-pon-file`; runtime controls follow the shared command contract. Check prepon completion and the caller's access to its resources before calling. Do not infer graph or cohort inputs from the name. -Source: [NVIDIA prepon 4.7.1 manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/prepon). +Source: [NVIDIA prepon manual](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/prepon). diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-rna_fq2bam.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-rna_fq2bam.md index d21f3120..c6d9f483 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-rna_fq2bam.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-rna_fq2bam.md @@ -14,7 +14,7 @@ ## Command Shape -For Parabricks 4.7.0/4.7.1, every command needs a read-input mode, `--ref`, +Every command needs a read-input mode, `--ref`, `--genome-lib-dir`, **`--output-dir`**, and **`--out-bam`**. The output directory and final BAM are separate required arguments; a BAM path or Docker mount does not replace `--output-dir`. Check that both remain present after translating diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-somatic.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-somatic.md index 0c1718ef..80b92cb2 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-somatic.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/pbrun-somatic.md @@ -31,11 +31,9 @@ of the pipeline: longer than 512 bp. Valid values are 512 or 1024. Reads above the selected value still use CPU recovery, and processing longer reads at all also requires raising `--max-read-length`. -- `--run-partition`: genome/Mutect partitions, not fq2bam GPU-process partitioning. -- `--bwa-gpu-num-per-partition` (default: 2): BWA GPUs per worker when - `--run-partition` is set; must divide `--num-gpus`. -- `--gpu-num-per-partition`: Mutect GPUs per partition. -- `--num-streams-per-gpu` (default: 1): Mutect streams, not a partition flag. +- Partition and stream controls (`--run-partition`, + `--bwa-gpu-num-per-partition`, `--gpu-num-per-partition`, + `--num-streams-per-gpu`): roles and defaults are in the options table below. - `--mutect-low-memory` and `--low-memory` for memory-pressure troubleshooting. ## Somatic Pipeline Option Mapping @@ -73,7 +71,7 @@ single-tool mapping. | `--run-partition` | Genome/Mutect partitions (one process per partition). Not fq2bam GPU-process partitioning. | | `--bwa-gpu-num-per-partition` | BWA GPUs per worker when `--run-partition` is set (default: 2; must divide `--num-gpus`). | | `--gpu-num-per-partition` | Mutect GPUs per partition. | -| `--num-streams-per-gpu` | Mutect streams (default: 1). Not a partition flag. | +| `--num-streams-per-gpu` | Mutect streams (default: `auto`). Not a partition flag. | | `--mutect-low-memory` | Parabricks low-memory mode for the Mutect stage. | | GPU alignment/calling stream, queue, and memory controls | Parabricks GPU runtime tuning. | | GPU write/sort/storage controls | Parabricks accelerated output pipeline. | diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/performance.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/performance.md index e482d9a1..40d53134 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/performance.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/performance.md @@ -1,15 +1,14 @@ # Parabricks Alignment Performance Guidance -Shared BWA-stream tuning guidance for the `fq2bam` and `fq2bam_meth` commands. +Shared BWA tuning guidance for `fq2bam`, `fq2bam_meth`, and the `germline`, +`deepvariant_germline`, and `somatic` pipelines. (Giraffe uses `--nstreams`; see `pbrun-giraffe.md`.) ## BWA Streams -Prefer the documented automatic stream selection for general commands: leave -`--bwa-nstreams` unset, or set `--bwa-nstreams auto` only when making the -default explicit. NVIDIA Parabricks 4.7.0 documentation says Parabricks -automatically chooses an optimal number of BWA streams from the GPU device -memory specification. +Prefer automatic stream selection for general commands: leave `--bwa-nstreams` +unset, or set `--bwa-nstreams auto` only when making the default explicit. +Parabricks picks the number of BWA streams from the GPU's device memory. Use integer `--bwa-nstreams` values only for benchmark-driven tuning or memory-pressure troubleshooting after confirming the selected Parabricks @@ -24,10 +23,13 @@ should not be part of conservative default command templates. requires raising `--max-read-length`. - `--run-partition`: try on systems with 4 or more GPUs. It forks one worker process per partition. `--bwa-gpu-num-per-partition` controls GPUs per - partition (default: 2) and must divide `--num-gpus` evenly. -- For `fq2bam_meth`, `--bwa-primary-cpus` and `--bwa-cpu-thread-pool` tune - CPU-stage threading (`--bwa-cpu-thread-pool` defaults to 1; check the selected - release before reusing an older fq2bam default). + partition (default: 2) and must divide `--num-gpus` evenly. The total + `--bwa-primary-cpus` must also divide evenly across the partitions. +- `--bwa-primary-cpus` and `--bwa-cpu-thread-pool` tune CPU-stage threading. + `fq2bam`, `fq2bam_meth`, and the `germline`, `deepvariant_germline`, and + `somatic` pipelines default to `auto` (16 primary threads per GPU) and a pool + of 1. A manual `--bwa-primary-cpus` is the run total, not per GPU; keep its + product with `--bwa-cpu-thread-pool` within the host's CPU threads. -Official performance guidance: - +Official performance guidance (4.8.0): + diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/rna-translation.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/rna-translation.md index ec116c6f..558a3319 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/rna-translation.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/rna-translation.md @@ -1,15 +1,16 @@ # STAR argument translation -Use `scripts/translate_star_to_parabricks.py` for Parabricks 4.7.0 or 4.7.1 -alignment drafts. It reads a JSON request object or array and never opens the -FASTQs, invokes the decompressor, contacts a service, or launches Parabricks. +Use `scripts/translate_star_to_parabricks.py` for Parabricks 4.7.0, 4.7.1, or +4.8.0 alignment drafts. It reads a JSON request object or array and never +opens the FASTQs, invokes the decompressor, contacts a service, or launches +Parabricks. Requires Python 3.7 or newer; no third-party packages are needed. ## Request schema | Field | Meaning | | --- | --- | -| `version` | Explicit `4.7.0` or `4.7.1`; this is the software release, not an image tag | +| `version` | Explicit `4.7.0`, `4.7.1`, or `4.8.0`; this is the software release, not an image tag | | `star_args` | Original STAR argv as strings, including every flag/value; optional leading `STAR` | | `ref` | Target reference FASTA | | `output_dir` | Directory for STAR's generated outputs | diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/runtime-environment.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/runtime-environment.md index 4dc25f0a..508e1e40 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/runtime-environment.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/runtime-environment.md @@ -151,7 +151,7 @@ specify driver **525.60.13 or newer**, Docker **20.10 or newer**, and supported NVIDIA GPUs with at least 16 GB each. `fq2bam` needs 24 GB by default, or 16 GB with `--low-memory`. For eight GPUs, the documented host baseline is 392 GB RAM and 48 CPU threads. The manual's container probe uses CUDA 12.0.0; do not -test a 4.2 host against the helper's default CUDA 12.9.1 image. +test a 4.2 host against the helper's default CUDA 13.3.1 image. For authorized container probes on a Parabricks 4.2 host, explicitly select the CUDA image from that manual: @@ -164,6 +164,25 @@ bash scripts/check_parabricks_runtime.sh \ --parabricks-version 4.2-1 ``` +For **4.7.1 (`4.7.1-1`)**, the manual's container probe uses CUDA 12.9.1. Pass +`--cuda-test-image nvidia/cuda:12.9.1-base-ubuntu22.04`; the helper's 13.3.1 +default can fail on a driver that supports 4.7.1. + +For **4.8.0 (`4.8.0-1`)**, the +[requirements](https://docs.nvidia.com/clara/parabricks/v4.8.0/get-started/installation-requirements) +specify a driver compatible with CUDA 13.3.x. Data center and workstation GPUs +can use CUDA forward compatibility on the 535+, 570+, 580+, 590+, 595+, or 610+ +driver branches; consumer GPUs need driver 610 or newer. The manual's container +probe uses CUDA 13.3.1, which is also the helper's default probe image: + +```bash +bash scripts/check_parabricks_runtime.sh \ + --run-container-check \ + --cuda-test-image nvidia/cuda:13.3.1-base-ubuntu22.04 \ + --run-parabricks-check \ + --parabricks-version 4.8.0-1 +``` + If a CUDA probe fails, inspect the reported image and error before treating `runtime-incomplete` as evidence of a Container Toolkit problem. An incompatible probe image can fail on a host that supports the selected Parabricks release; @@ -285,8 +304,8 @@ Open questions: - Parabricks 4.2 requirements: -- Current installation requirements (use only for that release): - +- 4.8.0 installation requirements: + - NVIDIA Container Toolkit installation: - Docker Engine installation: diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/shared-options.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/shared-options.md index 52d57206..3c619bb1 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/shared-options.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/shared-options.md @@ -20,9 +20,10 @@ establish support in another. The release verification rules in | `--regions` | `--interval` or `--interval-file` | Separates inline intervals from BED interval files. | `deepsomatic`, `deepvariant` | | Paired-end FASTQ inputs | `--in-fq ` | Repeat for multiple pairs; keep each optional read group with its pair. | `germline` | | `bwa mem -R ` / BWA-Meth `--read-group` | read group string after FASTQ inputs, or `--read-group-*` flags | Preserve supplied per-lane tags; do not invent values. | `deepvariant_germline`, `fq2bam_meth`, `germline` | -| `bwa mem -M`, `-Y`, `-C`, `-T`, `-B`, `-U`, `-L`, `-I`, `-K` | `--bwa-options` | Pass supported BWA-MEM options as one string. | `deepvariant_germline`, `fq2bam`, `fq2bam_meth`, `germline` | +| `bwa mem -M`, `-Y`, `-C`, `-T`, `-B`, `-U`, `-L`, `-I`, `-K`, `-S`, `-P`, `-5`, `-q` | `--bwa-options` | Pass supported BWA-MEM options as one string. | `deepvariant_germline`, `fq2bam`, `fq2bam_meth`, `germline`, `somatic` | +| BWA-MEM before 0.7.16 (no `MC` tags) | `--no-mate-cigar` | Parabricks targets BWA-MEM 0.7.17 and adds mate-CIGAR tags to paired records; this flag omits them. Cannot be combined with `--fix-mate`. | `deepvariant_germline`, `fq2bam`, `fq2bam_meth`, `germline`, `somatic` | | — | `--max-read-length`, `--min-read-length`, `--filter-flag`, `--skip-multiple-hits` | Pipeline read/SAM filtering controls. | `deepvariant_germline`, `germline` | -| — | `--bwa-nstreams`, `--bwa-cpu-thread-pool`, `--bwa-primary-cpus`, `--bwa-normalized-queue-capacity` | CPU/GPU alignment scheduling controls. | `deepvariant_germline`, `germline` | +| — | `--bwa-nstreams`, `--bwa-cpu-thread-pool`, `--bwa-primary-cpus`, `--bwa-normalized-queue-capacity` | CPU/GPU alignment scheduling controls; BWA stream and thread defaults are in [performance.md](performance.md). | `deepvariant_germline`, `germline`, `somatic` | | GATK/Picard `SortSam --OUTPUT`, `-O` | `--out-bam` | Final BAM/CRAM output path. | `fq2bam`, `fq2bam_meth` | | GATK/Picard sorted, duplicate-marked BAM output | `--out-bam` | Required alignment output alongside the variant output. | `germline` | | — | `--max-read-length`, `--min-read-length` | FASTQ filtering/alignment bounds. | `fq2bam`, `fq2bam_meth`, `giraffe` | @@ -48,7 +49,7 @@ establish support in another. The release verification rules in | GATK `BaseRecalibrator --intervals`, `-L` | `--interval`, `--interval-file` | Separates inline intervals from interval files. | `fq2bam`, `fq2bam_meth`, `minimap2` | | GATK `BaseRecalibrator --interval-padding`, `-ip` | `--interval-padding`, `-ip` | Same padding role. | `fq2bam`, `fq2bam_meth`, `minimap2` | | — | `--out-qc-metrics-dir` | Workflow output for QC metrics. | `fq2bam`, `fq2bam_meth`, `minimap2` | -| — | `--standalone-bqsr`, `--out-qc-metrics-dir` | Pipeline mode/output controls. | `ont_germline`, `pacbio_germline` | +| — | `--standalone-bqsr` | Pipeline mode control. | `ont_germline`, `pacbio_germline` | | GATK `BaseRecalibrator --known-sites` | `--knownSites` | Repeatable known-sites VCF input when BQSR is used. | `pacbio_germline`, `somatic` | ## Variant calling and models @@ -59,15 +60,15 @@ establish support in another. The release verification rules in | `--reads` | `--in-bam` | Prepared aligned reads for variant calling. | `deepvariant` | | `--output_gvcf` | `--gvcf` plus `--out-variants` | Also produces the corresponding VCF; see the tool reference for partitioning restrictions. | `deepvariant` | | `--model_type` | `--mode`, `--use-wes-model`, or selected model file | The manual documents short-read, PacBio, and ONT modes plus WES/model-file controls. | `deepsomatic`, `deepvariant` | -| `--customized_model` | `--pb-model-file` | Non-default Parabricks model file. | `deepsomatic`, `deepvariant` | +| `--customized_model` | `--pb-model-file` | Non-default Parabricks model file; build it with TensorRT 11.3.0.99 (10.14.1.48 for 4.7.1) to match the shipped engines. | `deepsomatic`, `deepvariant` | | — | `--disable-use-window-selector-model` | Inverse/compatibility control for window selector behavior. | `deepsomatic`, `deepvariant` | | DeepVariant `--output_vcf` | `--out-variants` | VCF/gVCF output. | `deepvariant_germline`, `ont_germline`, `pacbio_germline`, `pangenome_aware_deepvariant`, `pangenome_germline` | | DeepVariant `--output_gvcf` / gVCF mode | `--gvcf` plus `--out-variants` | Output path extension controls VCF/gVCF naming. | `deepvariant_germline`, `ont_germline`, `pacbio_germline` | -| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files. | `deepvariant_germline`, `ont_germline`, `pacbio_germline` | +| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files built for the selected release. | `deepvariant_germline`, `ont_germline`, `pacbio_germline` | | minimap2 reference / DeepVariant `--ref` | `--ref` | Required reference FASTA path. | `ont_germline`, `pacbio_germline` | | — | DeepVariant channel/allele-counter flags exposed directly by Parabricks | First-class controls for DeepVariant internals. | `ont_germline`, `pacbio_germline`, `pangenome_germline` | -| DeepVariant `--output_gvcf` / gVCF mode | `--gvcf` plus `--out-variants` | Output path extension controls VCF/gVCF naming when documented. | `pangenome_aware_deepvariant`, `pangenome_germline` | -| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files where supported. | `pangenome_aware_deepvariant`, `pangenome_germline` | +| DeepVariant `--output_gvcf` / gVCF mode | No direct equivalent | These tools do not expose `--gvcf`. | `pangenome_aware_deepvariant`, `pangenome_germline` | +| DeepVariant custom model | `--pb-model-file`, `--pb-small-model-file` | TensorRT model files built for the selected release, where supported. | `pangenome_aware_deepvariant`, `pangenome_germline` | ## Execution controls @@ -84,7 +85,7 @@ establish support in another. The release verification rules in | — | `--align-only`, `--standalone-bqsr`, `--fix-mate` | Pipeline mode controls. | `deepvariant_germline`, `germline` | | — | `--monitor-usage`, `--no-warnings` | Runtime reporting controls. | `deepvariant_germline`, `germline` | | — | `--cigar-on-gpu`, `--gpuwrite`, `--gpuwrite-deflate-algo`, `--gpusort`, `--use-gds` | GPU-accelerated write/sort/storage controls. | `deepvariant_germline`, `germline` | -| — | `--memory-limit`, `--low-memory` | Host/GPU memory controls. | `deepvariant_germline`, `germline` | +| — | `--memory-limit`, `--low-memory` | Host/GPU memory controls. | `deepvariant_germline`, `germline`, `somatic` | | — | `--no-warnings` | Warning suppression. | `fq2bam`, `fq2bam_meth` | | — | `--filter-flag` | SAM flag-based filtering during output generation. | `fq2bam`, `fq2bam_meth` | | — | `--skip-multiple-hits` | SA-tag-based output filtering. | `fq2bam`, `fq2bam_meth` | diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/references/tool-index.md b/skills/bionemo-agent-toolkit/skills/parabricks/references/tool-index.md index b536b44f..ffd37893 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/references/tool-index.md +++ b/skills/bionemo-agent-toolkit/skills/parabricks/references/tool-index.md @@ -17,7 +17,7 @@ Read only the selected tool reference and its relevant shared mappings. | [`bqsr`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/bqsr) | [pbrun-bqsr.md](pbrun-bqsr.md) | Generate base quality score recalibration data for later `applybqsr`. | | [`fq2bam`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/fq2bam) | [pbrun-fq2bam.md](pbrun-fq2bam.md) | Raw paired short-read DNA FASTQ → aligned BAM/CRAM with common preprocessing (align/sort/dedup/BQSR path). | | [`fq2bam_meth`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/fq2bam_meth) | [pbrun-fq2bam_meth.md](pbrun-fq2bam_meth.md) | Bisulfite or methylation FASTQ workflows — not standard DNA `fq2bam`. | -| [`giraffe`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/giraffe) | [pbrun-giraffe.md](pbrun-giraffe.md) | Pangenome graph alignment with vg giraffe; produce aligned BAM for pangenome-aware variant calling. | +| [`giraffe`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/giraffe) | [pbrun-giraffe.md](pbrun-giraffe.md) | Pangenome graph alignment with vg giraffe; produce aligned BAM or CRAM for pangenome-aware variant calling; also aligns single-end CRAM input. | | [`markdup`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/markdup) | [pbrun-markdup.md](pbrun-markdup.md) | Mark duplicate reads in aligned BAM/CRAM when not folded into `fq2bam`. | | [`minimap2`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/minimap2) | [pbrun-minimap2.md](pbrun-minimap2.md) | Long-read FASTQ alignment (CRAM v3.1 read support documented for recent releases). | @@ -34,7 +34,7 @@ Read only the selected tool reference and its relevant shared mappings. | [`ont_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/ont_germline) | [pbrun-ont_germline.md](pbrun-ont_germline.md) | Oxford Nanopore long-read germline workflow. | | [`pacbio_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pacbio_germline) | [pbrun-pacbio_germline.md](pbrun-pacbio_germline.md) | PacBio long-read germline workflow. | | [`pangenome_aware_deepvariant`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pangenome_aware_deepvariant) | [pbrun-pangenome_aware_deepvariant.md](pbrun-pangenome_aware_deepvariant.md) | Pangenome-aware DeepVariant; for Roche SBX-D/SBX-Fast BAMs use `--sbx` (verify in docs/MCP). CRAM v3.1 reads documented for recent releases. | -| [`pangenome_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pangenome_germline) | [pbrun-pangenome_germline.md](pbrun-pangenome_germline.md) | Pangenome-aware germline workflow with graph resources. | +| [`pangenome_germline`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/pangenome_germline) | [pbrun-pangenome_germline.md](pbrun-pangenome_germline.md) | Pangenome-aware germline workflow with graph resources; also accepts single-end CRAM input. | | [`postpon`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/postpon) | [pbrun-postpon.md](pbrun-postpon.md) | Annotate Mutectcaller variants using an existing panel of normals (PON). | | [`prepon`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/prepon) | [pbrun-prepon.md](pbrun-prepon.md) | Prepare an existing PON for `mutectcaller --pon`. | | [`somatic`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/somatic) | [pbrun-somatic.md](pbrun-somatic.md) | Tumor/normal somatic variant calling pipeline (caller family alternative to `mutectcaller` / `deepsomatic`). | @@ -59,7 +59,7 @@ Read only the selected tool reference and its relevant shared mappings. |------|-----------|----------| | [`dbsnp`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/dbsnp) | [pbrun-dbsnp.md](pbrun-dbsnp.md) | dbSNP annotation or variant file processing support. | | [`genotypegvcf`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/genotypegvcf) | [pbrun-genotypegvcf.md](pbrun-genotypegvcf.md) | Joint-genotype GVCF input(s) into VCF after indexing. | -| [`indexgvcf`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/indexgvcf) | [pbrun-indexgvcf.md](pbrun-indexgvcf.md) | Index GVCF before `genotypegvcf` or consolidation workflows. Writes `.tbi` beside the input (no `--out`); for read-only inputs, index a writable copy after checking for existing files. | +| [`indexgvcf`](https://docs.nvidia.com/clara/parabricks/tool-reference/tools/indexgvcf) | [pbrun-indexgvcf.md](pbrun-indexgvcf.md) | Index GVCF before `genotypegvcf` or consolidation workflows. Writes `.tbi` (`.idx` for an uncompressed `.g.vcf`) beside the input (no `--out`); for read-only inputs, index a writable copy after checking for existing files. | **CRAM v3.1 reads:** Documented for `bamsort`, `deepsomatic`, `deepvariant`, `haplotypecaller`, `minimap2`, `mutectcaller`, and `pangenome_aware_deepvariant` @@ -92,9 +92,12 @@ CRAM v3.1 inputs to other tools. ## Key References -- Tool index (4.7.0 baseline): -- Performance notes (4.7.0): - -- Getting started and deployment (4.7.0): - -- Other releases: +- Tool index (4.8.0 baseline): +- Performance notes (4.8.0): + +- Getting started and deployment (4.8.0): + +- Other releases: . + Manuals are at `https://docs.nvidia.com/clara/parabricks/v/` for + 4.7.1 and later, and `https://archive.docs.nvidia.com/clara/parabricks//` + for earlier releases. diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/scripts/check_parabricks_runtime.sh b/skills/bionemo-agent-toolkit/skills/parabricks/scripts/check_parabricks_runtime.sh index e2725efb..be1602bc 100755 --- a/skills/bionemo-agent-toolkit/skills/parabricks/scripts/check_parabricks_runtime.sh +++ b/skills/bionemo-agent-toolkit/skills/parabricks/scripts/check_parabricks_runtime.sh @@ -9,7 +9,7 @@ set -o pipefail -DEFAULT_CUDA_TEST_IMAGE="nvidia/cuda:12.9.1-base-ubuntu22.04" +DEFAULT_CUDA_TEST_IMAGE="nvidia/cuda:13.3.1-base-ubuntu22.04" MIN_DOCKER_MAJOR=20 MIN_DOCKER_MINOR=10 MIN_GPU_MEMORY_GB=16 @@ -18,7 +18,7 @@ SUMMARY_MAX_CHARS=300 DEFAULT_TIMEOUT_SECONDS=30 TIMEOUT_KILL_AFTER_SECONDS=1 SCHEMA_VERSION=1 -EXAMPLE_PARABRICKS_VERSION="4.7.0-1" +EXAMPLE_PARABRICKS_VERSION="4.8.0-1" PROG=$(basename "$0") usage() { diff --git a/skills/bionemo-agent-toolkit/skills/parabricks/scripts/translate_star_to_parabricks.py b/skills/bionemo-agent-toolkit/skills/parabricks/scripts/translate_star_to_parabricks.py index 93c25a7c..1016df66 100644 --- a/skills/bionemo-agent-toolkit/skills/parabricks/scripts/translate_star_to_parabricks.py +++ b/skills/bionemo-agent-toolkit/skills/parabricks/scripts/translate_star_to_parabricks.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 -"""Draft Parabricks 4.7.0/4.7.1 RNA commands from JSON STAR argument arrays. +"""Draft Parabricks 4.7.0/4.7.1/4.8.0 RNA commands from JSON STAR argument arrays. Usage: python3 scripts/translate_star_to_parabricks.py --input requests.json @@ -19,7 +19,7 @@ Requires Python 3.7 or newer; no additional packages are needed. No subprocesses, network requests, input-data inspection, or workloads are run. -Mappings: Parabricks 4.7.0/4.7.1 rna_fq2bam and STAR 2.7.2a parametersDefault. +Mappings: Parabricks 4.7.0/4.7.1/4.8.0 rna_fq2bam and STAR 2.7.2a parametersDefault. """ from __future__ import annotations @@ -32,7 +32,7 @@ import sys -SUPPORTED_VERSIONS = frozenset({"4.7.0", "4.7.1"}) +SUPPORTED_VERSIONS = frozenset({"4.7.0", "4.7.1", "4.8.0"}) JUNCTION_MISMATCH_COUNT = 4 SCALARS = { @@ -249,7 +249,7 @@ def validate_request(request): raise ValueError(f"Unknown request fields: {sorted(set(request) - allowed)}") version = request.get("version") if not isinstance(version, str) or version not in SUPPORTED_VERSIONS: - raise ValueError('This helper supports explicit versions "4.7.0" and "4.7.1" only') + raise ValueError('This helper supports explicit versions "4.7.0", "4.7.1" and "4.8.0" only') for field in ("ref", "output_dir", "out_bam"): if not nonempty_string(request.get(field)): raise ValueError(f"{field} must be an explicit nonempty path string") diff --git a/tests/test_parabricks_runtime.py b/tests/test_parabricks_runtime.py index a3326244..99c9b96b 100644 --- a/tests/test_parabricks_runtime.py +++ b/tests/test_parabricks_runtime.py @@ -148,23 +148,23 @@ def container_calls(self): return [line for line in path.read_text().splitlines() if line.startswith("run ")] if path.exists() else [] def test_version_alone_does_not_launch_a_container(self): - process = self.run_probe("--parabricks-version", "4.7.1-1") + process = self.run_probe("--parabricks-version", "4.8.0-1") self.assertEqual(process.returncode, 0, process.stderr) self.assertEqual(self.container_calls(), []) self.assertEqual(json.loads(process.stdout)["checks"]["parabricks_container"]["status"], "not_checked") def test_cuda_opt_in_does_not_authorize_parabricks_probe(self): - process = self.run_probe("--run-container-check", "--parabricks-version", "4.7.1-1") + process = self.run_probe("--run-container-check", "--parabricks-version", "4.8.0-1") self.assertEqual(process.returncode, 0, process.stderr) self.assertEqual(len(self.container_calls()), 1) self.assertIn("nvidia-smi", self.container_calls()[0]) self.assertNotIn("pbrun", self.container_calls()[0]) def test_parabricks_opt_in_launches_only_selected_probe(self): - process = self.run_probe("--run-parabricks-check", "--parabricks-version=4.7.1-1") + process = self.run_probe("--run-parabricks-check", "--parabricks-version=4.8.0-1") self.assertEqual(process.returncode, 0, process.stderr) self.assertEqual(self.container_calls(), [ - "run --rm --gpus all nvcr.io/nvidia/clara/clara-parabricks:4.7.1-1 pbrun --help" + "run --rm --gpus all nvcr.io/nvidia/clara/clara-parabricks:4.8.0-1 pbrun --help" ]) self.assertEqual(json.loads(process.stdout)["checks"]["parabricks_container"]["status"], "ok") @@ -184,7 +184,7 @@ def test_digest_reference_is_preserved_and_requires_opt_in(self): self.assertEqual(self.container_calls(), [f"run --rm --gpus all {image} pbrun --help"]) def test_conflicting_image_selectors_fail_before_any_probe(self): - process = self.run_probe("--parabricks-version", "4.7.1-1", "--parabricks-image", "example:tag") + process = self.run_probe("--parabricks-version", "4.8.0-1", "--parabricks-image", "example:tag") self.assertEqual(process.returncode, 2) self.assertFalse((self.tmp / "docker-calls").exists()) @@ -197,7 +197,7 @@ def test_unpinned_or_malformed_images_fail_before_any_probe(self): process = self.run_probe(option, image) self.assertEqual(process.returncode, 2, process.stderr) self.assertFalse((self.tmp / "docker-calls").exists()) - for tag in ("latest", "4.7.1-1 --privileged", "bad/tag", "-option"): + for tag in ("latest", "4.8.0-1 --privileged", "bad/tag", "-option"): with self.subTest(tag=tag): process = self.run_probe("--parabricks-version", tag) self.assertEqual(process.returncode, 2, process.stderr) @@ -219,7 +219,7 @@ def test_explicit_registry_tags_and_digests_are_preserved(self): def test_missing_docker_reports_gap_without_attempting_container(self): (self.bin / "docker").unlink() - process = self.run_probe("--run-parabricks-check", "--parabricks-version", "4.7.1-1") + process = self.run_probe("--run-parabricks-check", "--parabricks-version", "4.8.0-1") self.assertEqual(process.returncode, 0, process.stderr) self.assertEqual(json.loads(process.stdout)["checks"]["parabricks_container"]["status"], "missing") self.assertEqual(self.container_calls(), []) @@ -276,7 +276,7 @@ def test_df_failure_prevents_ready_when_all_other_checks_pass(self): ) (self.bin / "df").chmod(0o755) args = ("--run-container-check", "--run-parabricks-check", - "--parabricks-version", "4.7.1-1", "--path", str(path)) + "--parabricks-version", "4.8.0-1", "--path", str(path)) ready = self.run_probe(*args) self.assertEqual(ready.returncode, 0, ready.stderr) report = json.loads(ready.stdout) diff --git a/tests/test_parabricks_star_translation.py b/tests/test_parabricks_star_translation.py index d7cd67b5..555b2138 100644 --- a/tests/test_parabricks_star_translation.py +++ b/tests/test_parabricks_star_translation.py @@ -45,9 +45,11 @@ def option_values(argv): class TranslationTests(unittest.TestCase): def test_supported_releases_preserve_the_same_argument_contract(self): first = translation.translate(request(version="4.7.0")) - second = translation.translate(request(version="4.7.1")) - self.assertEqual(first, second) - self.assertEqual(second["status"], "draft") + for version in ("4.7.1", "4.8.0"): + with self.subTest(version=version): + later = translation.translate(request(version=version)) + self.assertEqual(first, later) + self.assertEqual(later["status"], "draft") def test_invalid_version_types_are_reported_without_crashing(self): for version in [None, [], {}, 4.7]: