From a23606ed15f2ec584c48563b21d35e7254109ccb Mon Sep 17 00:00:00 2001
From: mosheabr <257371078+mosheabr@users.noreply.github.com>
Date: Tue, 27 Oct 2026 01:28:23 +0000
Subject: [PATCH] chore: sync skills (BioNeMo Libraries)
---
skills/bionemo-parabricks/BENCHMARK.md | 156 ++++++++++-------
skills/bionemo-parabricks/SKILL.md | 12 +-
skills/bionemo-parabricks/evals/evals.json | 157 +++++++++++++++---
.../evals/files/rna-batch.json | 2 +-
.../evals/files/rna-contracts.json | 2 +-
.../references/command-conventions.md | 14 +-
.../references/minimap2-controls.md | 14 ++
.../references/pbrun-bam2fq.md | 2 +-
.../references/pbrun-deepsomatic.md | 3 +-
.../references/pbrun-deepvariant.md | 7 +-
.../references/pbrun-deepvariant_germline.md | 3 +-
.../references/pbrun-fq2bam.md | 1 +
.../references/pbrun-germline.md | 8 +-
.../references/pbrun-giraffe.md | 20 ++-
.../references/pbrun-haplotypecaller.md | 9 +-
.../references/pbrun-indexgvcf.md | 32 ++--
.../references/pbrun-minimap2.md | 10 +-
.../references/pbrun-mutectcaller.md | 4 +-
.../references/pbrun-ont_germline.md | 11 +-
.../references/pbrun-pacbio_germline.md | 12 +-
.../pbrun-pangenome_aware_deepvariant.md | 6 +-
.../references/pbrun-pangenome_germline.md | 4 +
.../references/pbrun-postpon.md | 4 +-
.../references/pbrun-prepon.md | 4 +-
.../references/pbrun-rna_fq2bam.md | 2 +-
.../references/pbrun-somatic.md | 10 +-
.../references/performance.md | 26 +--
.../references/rna-translation.md | 9 +-
.../references/runtime-environment.md | 25 ++-
.../references/shared-options.md | 36 +++-
.../references/tool-index.md | 21 ++-
.../scripts/check_parabricks_runtime.sh | 33 ++--
.../scripts/translate_star_to_parabricks.py | 8 +-
skills/bionemo-parabricks/skill-card.md | 23 +--
skills/bionemo-parabricks/skill.oms.sig | 2 +-
35 files changed, 467 insertions(+), 225 deletions(-)
create mode 100644 skills/bionemo-parabricks/references/minimap2-controls.md
diff --git a/skills/bionemo-parabricks/BENCHMARK.md b/skills/bionemo-parabricks/BENCHMARK.md
index 3a539f28a..5e7a0d7f6 100644
--- a/skills/bionemo-parabricks/BENCHMARK.md
+++ b/skills/bionemo-parabricks/BENCHMARK.md
@@ -9,11 +9,12 @@ Recommended for publication based on the completed evaluation evidence in this r
## Evaluation Metadata
- Skill: `parabricks`
-- Evaluation date: 2026-10-13
-- Evaluator version: `1.5.6`
-- Agents: Claude Code (`aws/anthropic/bedrock-claude-opus-4-8`), Codex (`openai/openai/gpt-5.5`)
-- Tasks: 18 evaluation tasks (17 positive, 1 negative)
-- Dataset digest: `sha256:17ca68b3af6d736e9eca9d4b35718991af9564ec9445ac2796bce041668c9567` (skill-evaluator-dataset-snapshot/1)
+- Validation status: `passed`
+- Evaluation date: 2026-10-27
+- Evaluator version: `1.6.2`
+- Agents: Claude Code (`aws/anthropic/bedrock-claude-opus-5-5`), Codex (`openai/openai/gpt-6.1-sol`)
+- Tasks: 25 evaluation tasks (24 positive, 1 negative)
+- Dataset digest: `sha256:f84268acba708284ca16102928430f9bc95d171ea7c78cb059a4922131f61f97` (skill-evaluator-dataset-snapshot/1)
- Attempts per task: 1
- Environment: `k8s-sandbox`
- Tier 2 evidence: required for publication
@@ -21,6 +22,20 @@ Recommended for publication based on the completed evaluation evidence in this r
Each task attempt ran in its own isolated sandbox pod.
+## Tier 1 LLM Provenance
+
+SkillSpector provider, model, analyzer revision, and determinism evidence retained for this scan.
+
+| Skill | Provider | Adapter | Analyzer | Model | Revision | Determinism |
+| --- | --- | --- | --- | --- | --- | --- |
+| parabricks | nv_inference | openai | mcp_tool_poisoning | `aws/anthropic/bedrock-claude-opus-5-5` | `2.13.1` | nondeterministic / provider_defaults |
+| parabricks | nv_inference | openai | semantic_developer_intent | `aws/anthropic/bedrock-claude-opus-5-5` | `2.13.1` | nondeterministic / provider_defaults |
+| parabricks | nv_inference | openai | semantic_quality_policy | `aws/anthropic/bedrock-claude-opus-5-5` | `2.13.1` | nondeterministic / provider_defaults |
+| parabricks | nv_inference | openai | semantic_security_discovery | `aws/anthropic/bedrock-claude-opus-5-5` | `2.13.1` | nondeterministic / provider_defaults |
+| parabricks | nv_inference | openai | meta_analyzer | `aws/anthropic/bedrock-claude-opus-5-5` | `2.13.1` | nondeterministic / provider_defaults |
+
+- Controls for `parabricks`: temperature=not set (source=provider_default, forwarded=no); seed=not set (source=unset, forwarded=no); reasoning_effort=not set (source=provider_default, forwarded=no)
+
## What This Report Answers
The three-tier evaluation checks whether the skill:
@@ -35,12 +50,12 @@ The three-tier evaluation checks whether the skill:
| Measure | Claude Code (Baseline → Skill Uplift) | Codex (Baseline → Skill Uplift) |
|---|---:|---:|
-| Overall | 93.8% — baseline ran, but no comparable score was available; uplift unavailable | 92.7% — baseline ran, but no comparable score was available; uplift unavailable |
-| Security | 94.4% → 88.9% (-5.5 points) | 91.7% → 100.0% (+8.3 points) |
-| Correctness | 94.4% → 98.9% (+4.5 points) | 97.8% → 100.0% (+2.2 points) |
-| Discoverability | 100.0% — baseline ran, but no comparable score was available; uplift unavailable | 87.4% — baseline ran, but no comparable score was available; uplift unavailable |
-| Effectiveness | 76.5% → 91.8% (+15.3 points) | 83.3% → 91.9% (+8.6 points) |
-| Efficiency | 89.5% — baseline ran, but no comparable score was available; uplift unavailable | 84.0% — baseline ran, but no comparable score was available; uplift unavailable |
+| Overall | 96.3% — baseline ran, but no comparable score was available; uplift unavailable | 87.0% — baseline ran, but no comparable score was available; uplift unavailable |
+| Security | 96.0% → 98.0% (+2.0 points) | 96.0% → 96.0% (±0.0 points) |
+| Correctness | 75.2% → 100.0% (+24.8 points) | 95.2% → 99.2% (+4.0 points) |
+| Discoverability | 99.6% — baseline ran, but no comparable score was available; uplift unavailable | 92.1% — baseline ran, but no comparable score was available; uplift unavailable |
+| Effectiveness | 57.2% → 94.8% (+37.6 points) | 76.8% → 84.4% (+7.6 points) |
+| Efficiency | 89.0% — baseline ran, but no comparable score was available; uplift unavailable | 63.3% — baseline ran, but no comparable score was available; uplift unavailable |
**How to read this table:** baseline is the same task attempted without the target skill. Scores are rounded to one decimal; threshold-adjacent values use additional precision so their displayed band matches the verdict. Uplift is derived from those displayed scores and shown in percentage points.
@@ -48,73 +63,98 @@ Example: `47.0% → 92.0% (+45.0 points)` means the skill-assisted run scored 92
A partial dimension was calculated from only the available configured signals; review the detailed report before relying on it.
+### Comparison details
+
+Shared-source comparisons use the same signals and weights on both conditions. They do not replace the full dimension scores above or change the publication verdict.
+
+| Agent | Dimension | Basis | Baseline → With skill (uplift) | Explanation |
+| --- | --- | --- | --- | --- |
+| claude-code | Discoverability | Dimension comparison | N/A | Discoverability is not applicable to the no-skill baseline; there is no installed skill to discover. |
+| claude-code | Efficiency | Token-only comparison | 96.7% → 92.1% (-4.6 points) | Only Token Efficiency is comparable; the full dimension scores use different evaluator sources. |
+| codex | Discoverability | Dimension comparison | N/A | Discoverability is not applicable to the no-skill baseline; there is no installed skill to discover. |
+| codex | Efficiency | Token-only comparison | 82.5% → 83.4% (+0.9 points) | Only Token Efficiency is comparable; the full dimension scores use different evaluator sources. |
+
## Token Usage
Actual Tier 3 execution usage is reported for every observed agent/case pair and both conditions.
| Agent | Dataset case | With skill | Without skill | Delta | Change | Coverage |
|---|---|---:|---:|---:|---:|---|
-| claude-code | All cases | 4,381,424 | 6,702,748 | -2,321,324 | -34.63% | skill 18/18; base 18/18 |
-| claude-code | parabricks-001 | 142,693 | 97,867 | +44,826 | +45.80% | skill 1/1; base 1/1 |
-| claude-code | parabricks-002 | 107,565 | 32,944 | +74,621 | +226.51% | skill 1/1; base 1/1 |
-| claude-code | parabricks-003 | 106,801 | 35,928 | +70,873 | +197.26% | skill 1/1; base 1/1 |
-| claude-code | parabricks-004 | 121,495 | 89,131 | +32,364 | +36.31% | skill 1/1; base 1/1 |
-| claude-code | parabricks-005 | 327,340 | 126,284 | +201,056 | +159.21% | skill 1/1; base 1/1 |
-| claude-code | parabricks-006 | 114,122 | 34,794 | +79,328 | +227.99% | skill 1/1; base 1/1 |
-| claude-code | parabricks-007 | 98,232 | 583,042 | -484,810 | -83.15% | skill 1/1; base 1/1 |
-| claude-code | parabricks-008 | 146,435 | 32,324 | +114,111 | +353.02% | skill 1/1; base 1/1 |
-| claude-code | parabricks-009 | 151,739 | 40,018 | +111,721 | +279.18% | skill 1/1; base 1/1 |
-| claude-code | parabricks-010 | 107,999 | 36,647 | +71,352 | +194.70% | skill 1/1; base 1/1 |
-| claude-code | parabricks-011 | 109,750 | 464,258 | -354,508 | -76.36% | skill 1/1; base 1/1 |
-| claude-code | parabricks-012 | 104,353 | 496,373 | -392,020 | -78.98% | skill 1/1; base 1/1 |
-| claude-code | parabricks-013 | 176,319 | 198,676 | -22,357 | -11.25% | skill 1/1; base 1/1 |
-| claude-code | parabricks-014 | 146,954 | 50,434 | +96,520 | +191.38% | skill 1/1; base 1/1 |
-| claude-code | parabricks-015 | 188,798 | 40,088 | +148,710 | +370.96% | skill 1/1; base 1/1 |
-| claude-code | parabricks-016 | 755,795 | 1,583,044 | -827,249 | -52.26% | skill 1/1; base 1/1 |
-| claude-code | parabricks-017 | 1,186,237 | 1,278,696 | -92,459 | -7.23% | skill 1/1; base 1/1 |
-| claude-code | parabricks-018 | 288,797 | 1,482,200 | -1,193,403 | -80.52% | skill 1/1; base 1/1 |
-| codex | All cases | 1,904,066 | 1,118,265 | +785,801 | +70.27% | skill 18/18; base 18/18 |
-| codex | parabricks-001 | 263,177 | 104,558 | +158,619 | +151.70% | skill 1/1; base 1/1 |
-| codex | parabricks-002 | 150,198 | 30,087 | +120,111 | +399.21% | skill 1/1; base 1/1 |
-| codex | parabricks-003 | 159,741 | 53,820 | +105,921 | +196.81% | skill 1/1; base 1/1 |
-| codex | parabricks-004 | 18,017 | 17,995 | +22 | +0.12% | skill 1/1; base 1/1 |
-| codex | parabricks-005 | 110,503 | 32,181 | +78,322 | +243.38% | skill 1/1; base 1/1 |
-| codex | parabricks-006 | 50,986 | 54,054 | -3,068 | -5.68% | skill 1/1; base 1/1 |
-| codex | parabricks-007 | 48,819 | 23,382 | +25,437 | +108.79% | skill 1/1; base 1/1 |
-| codex | parabricks-008 | 70,936 | 33,757 | +37,179 | +110.14% | skill 1/1; base 1/1 |
-| codex | parabricks-009 | 69,630 | 39,964 | +29,666 | +74.23% | skill 1/1; base 1/1 |
-| codex | parabricks-010 | 100,094 | 31,157 | +68,937 | +221.26% | skill 1/1; base 1/1 |
-| codex | parabricks-011 | 25,515 | 27,485 | -1,970 | -7.17% | skill 1/1; base 1/1 |
-| codex | parabricks-012 | 49,343 | 30,529 | +18,814 | +61.63% | skill 1/1; base 1/1 |
-| codex | parabricks-013 | 120,873 | 25,598 | +95,275 | +372.20% | skill 1/1; base 1/1 |
-| codex | parabricks-014 | 55,186 | 21,556 | +33,630 | +156.01% | skill 1/1; base 1/1 |
-| codex | parabricks-015 | 91,439 | 47,958 | +43,481 | +90.66% | skill 1/1; base 1/1 |
-| codex | parabricks-016 | 277,386 | 251,731 | +25,655 | +10.19% | skill 1/1; base 1/1 |
-| codex | parabricks-017 | 99,179 | 241,529 | -142,350 | -58.94% | skill 1/1; base 1/1 |
-| codex | parabricks-018 | 143,044 | 50,924 | +92,120 | +180.90% | skill 1/1; base 1/1 |
-| ALL AGENTS | Dataset aggregate | 6,285,490 | 7,821,013 | -1,535,523 | -19.63% | skill 36/36; base 36/36 |
-
-Prompt tokens include cached reads, so total tokens are `prompt + completion` (cached is not added twice). The Efficiency score uses `(prompt - cached) + completion`. N/A means the relevant trajectory counters were not available; coverage is never estimated.
+| claude-code | All cases | 4,624,056 | 2,503,995 | +2,120,061 | +84.67% | skill 25/25; base 25/25 |
+| claude-code | parabricks-001 | 121,270 | 110,773 | +10,497 | +9.48% | skill 1/1; base 1/1 |
+| claude-code | parabricks-002 | 125,191 | 37,327 | +87,864 | +235.39% | skill 1/1; base 1/1 |
+| claude-code | parabricks-003 | 123,259 | 38,377 | +84,882 | +221.18% | skill 1/1; base 1/1 |
+| claude-code | parabricks-004 | 71,483 | 71,514 | -31 | -0.04% | skill 1/1; base 1/1 |
+| claude-code | parabricks-005 | 186,693 | 37,001 | +149,692 | +404.56% | skill 1/1; base 1/1 |
+| claude-code | parabricks-006 | 125,048 | 37,325 | +87,723 | +235.02% | skill 1/1; base 1/1 |
+| claude-code | parabricks-007 | 119,710 | 37,110 | +82,600 | +222.58% | skill 1/1; base 1/1 |
+| claude-code | parabricks-008 | 128,023 | 37,131 | +90,892 | +244.79% | skill 1/1; base 1/1 |
+| claude-code | parabricks-009 | 122,937 | 38,601 | +84,336 | +218.48% | skill 1/1; base 1/1 |
+| claude-code | parabricks-010 | 160,860 | 110,558 | +50,302 | +45.50% | skill 1/1; base 1/1 |
+| claude-code | parabricks-011 | 165,354 | 37,663 | +127,691 | +339.04% | skill 1/1; base 1/1 |
+| claude-code | parabricks-012 | 128,227 | 37,800 | +90,427 | +239.22% | skill 1/1; base 1/1 |
+| claude-code | parabricks-013 | 254,319 | 39,138 | +215,181 | +549.80% | skill 1/1; base 1/1 |
+| claude-code | parabricks-014 | 120,998 | 39,907 | +81,091 | +203.20% | skill 1/1; base 1/1 |
+| claude-code | parabricks-015 | 254,768 | 40,161 | +214,607 | +534.37% | skill 1/1; base 1/1 |
+| claude-code | parabricks-016 | 541,153 | 553,644 | -12,491 | -2.26% | skill 1/1; base 1/1 |
+| claude-code | parabricks-017 | 416,184 | 425,284 | -9,100 | -2.14% | skill 1/1; base 1/1 |
+| claude-code | parabricks-018 | 333,914 | 150,942 | +182,972 | +121.22% | skill 1/1; base 1/1 |
+| claude-code | parabricks-019 | 168,077 | 145,334 | +22,743 | +15.65% | skill 1/1; base 1/1 |
+| claude-code | parabricks-020 | 215,910 | 40,256 | +175,654 | +436.34% | skill 1/1; base 1/1 |
+| claude-code | parabricks-021 | 172,401 | 146,482 | +25,919 | +17.69% | skill 1/1; base 1/1 |
+| claude-code | parabricks-022 | 120,979 | 109,380 | +11,599 | +10.60% | skill 1/1; base 1/1 |
+| claude-code | parabricks-023 | 161,731 | 109,575 | +52,156 | +47.60% | skill 1/1; base 1/1 |
+| claude-code | parabricks-024 | 119,906 | 36,392 | +83,514 | +229.48% | skill 1/1; base 1/1 |
+| claude-code | parabricks-025 | 165,661 | 36,320 | +129,341 | +356.12% | skill 1/1; base 1/1 |
+| codex | All cases | 2,509,259 | 1,684,461 | +824,798 | +48.97% | skill 25/25; base 25/25 |
+| codex | parabricks-001 | 131,283 | 347,370 | -216,087 | -62.21% | skill 1/1; base 1/1 |
+| codex | parabricks-002 | 88,151 | 43,092 | +45,059 | +104.56% | skill 1/1; base 1/1 |
+| codex | parabricks-003 | 171,611 | 93,035 | +78,576 | +84.46% | skill 1/1; base 1/1 |
+| codex | parabricks-004 | 26,284 | 17,851 | +8,433 | +47.24% | skill 1/1; base 1/1 |
+| codex | parabricks-005 | 118,936 | 38,789 | +80,147 | +206.62% | skill 1/1; base 1/1 |
+| codex | parabricks-006 | 71,297 | 48,282 | +23,015 | +47.67% | skill 1/1; base 1/1 |
+| codex | parabricks-007 | 53,368 | 26,892 | +26,476 | +98.45% | skill 1/1; base 1/1 |
+| codex | parabricks-008 | 57,841 | 33,618 | +24,223 | +72.05% | skill 1/1; base 1/1 |
+| codex | parabricks-009 | 108,528 | 51,435 | +57,093 | +111.00% | skill 1/1; base 1/1 |
+| codex | parabricks-010 | 57,412 | 30,770 | +26,642 | +86.58% | skill 1/1; base 1/1 |
+| codex | parabricks-011 | 53,401 | 26,263 | +27,138 | +103.33% | skill 1/1; base 1/1 |
+| codex | parabricks-012 | 70,346 | 37,244 | +33,102 | +88.88% | skill 1/1; base 1/1 |
+| codex | parabricks-013 | 146,547 | 47,793 | +98,754 | +206.63% | skill 1/1; base 1/1 |
+| codex | parabricks-014 | 67,113 | 38,491 | +28,622 | +74.36% | skill 1/1; base 1/1 |
+| codex | parabricks-015 | 56,359 | 73,165 | -16,806 | -22.97% | skill 1/1; base 1/1 |
+| codex | parabricks-016 | 370,104 | 199,674 | +170,430 | +85.35% | skill 1/1; base 1/1 |
+| codex | parabricks-017 | 287,837 | 195,415 | +92,422 | +47.30% | skill 1/1; base 1/1 |
+| codex | parabricks-018 | 103,720 | 48,877 | +54,843 | +112.21% | skill 1/1; base 1/1 |
+| codex | parabricks-019 | 76,755 | 46,821 | +29,934 | +63.93% | skill 1/1; base 1/1 |
+| codex | parabricks-020 | 67,203 | 39,345 | +27,858 | +70.80% | skill 1/1; base 1/1 |
+| codex | parabricks-021 | 96,989 | 46,269 | +50,720 | +109.62% | skill 1/1; base 1/1 |
+| codex | parabricks-022 | 60,524 | 29,351 | +31,173 | +106.21% | skill 1/1; base 1/1 |
+| codex | parabricks-023 | 53,297 | 30,129 | +23,168 | +76.90% | skill 1/1; base 1/1 |
+| codex | parabricks-024 | 57,812 | 72,671 | -14,859 | -20.45% | skill 1/1; base 1/1 |
+| codex | parabricks-025 | 56,541 | 21,819 | +34,722 | +159.14% | skill 1/1; base 1/1 |
+| ALL AGENTS | Dataset aggregate | 7,133,315 | 4,188,456 | +2,944,859 | +70.31% | skill 50/50; base 50/50 |
+
+Prompt tokens include cached reads, so total tokens are `prompt + completion` (cached is not added twice). The Efficiency score uses `(prompt - cached) + completion`. Change is `100 * (with - without) / without`; negative means fewer tokens. N/A comparisons include their reason in the coverage column; coverage is never estimated.
## Tier Status
| Tier | Purpose | Status | Evidence |
|---|---|---|---|
-| Tier 1 | Static validation | **PASSED WITH OBSERVATIONS** | 11 validator(s); 11 finding(s) |
-| Tier 2 | Semantic deduplication | **PASSED** | 2 validator(s); 0 finding(s) |
-| Tier 3 | Live agent evaluation | **PASS** | 2 agent(s); 18 task(s) |
+| Tier 1 | Static validation | **PASSED WITH OBSERVATIONS** | 11 validator(s); 12 finding(s) |
+| Tier 2 | Semantic deduplication | **PASSED WITH OBSERVATIONS** | 2 validator(s); 1 finding(s) |
+| Tier 3 | Live agent evaluation | **PASS** | 2 agent(s); 25 task(s) |
## Findings and Observations
Show detailed findings and successful checks
+- **CRITICAL** CONTENT_DEDUP/llm_error: LLM analysis failed for a content cluster (`skills/bionemo-agent-toolkit/skills/parabricks`)
+- **MEDIUM** PII/ip_addresses: Public IP address (`references/shared-options.md:79`)
- **MEDIUM** QUALITY/quality_correctness: Instructions don't mention 'run_script' (`skills/bionemo-agent-toolkit/skills/parabricks/SKILL.md`)
- **MEDIUM** QUALITY/quality_efficiency: Deeply nested references in pbrun-applybqsr.md (`skills/bionemo-agent-toolkit/skills/parabricks/SKILL.md`)
- **MEDIUM** SCHEMA/folder_hierarchy: Unexpected nesting depth for general skill (`skills/bionemo-agent-toolkit/skills/parabricks`)
-- **MEDIUM** SECURITY/Unknown (LP3): MCP Least Privilege: The skill declares capabilities involving file_read, network access, and shell execution (via bundled scripts like check (`SKILL.md:1`)
-- **MEDIUM** SECURITY/Unknown (RP1): MCP Rug Pull: Docker image references without a specific tag (:latest is implicit) or digest (@sha256:...) can be silently replaced by (`references/command-conventions.md:23`)
-- 6 additional finding(s) are available in the full evaluation artifacts.
+- 8 additional finding(s) are available in the full evaluation artifacts.
diff --git a/skills/bionemo-parabricks/SKILL.md b/skills/bionemo-parabricks/SKILL.md
index 33d4dc707..015e16b52 100644
--- a/skills/bionemo-parabricks/SKILL.md
+++ b/skills/bionemo-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
@@ -49,13 +49,13 @@ or wiring optional GPU branches. For pipeline-level work, use
- **Execution:** The documented Docker commands require a supported Linux host,
an NVIDIA GPU with sufficient memory, a compatible NVIDIA driver, Docker,
NVIDIA Container Toolkit, and access to the selected Parabricks image.
- Pulling the image may require an NGC API key for authentication to `nvcr.io`.
+ Pulling the image may require an NGC API key for authentication to [nvcr.io](https://nvcr.io).
See [runtime-environment.md](references/runtime-environment.md) for
version-specific requirements and checks.
Tool scope: read this skill's references and user-supplied manifests; write only
requested command artifacts. Use the bundled helpers for translation or an
-authorized host inspection. Documentation lookups use `docs.nvidia.com`; image
+authorized host inspection. Documentation lookups use [docs.nvidia.com](https://docs.nvidia.com); image
access uses the selected registry only for authorized container execution.
These instructions do not grant tool permissions; the host's permission policy
still applies to shell, file, network and optional documentation MCP access.
@@ -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-parabricks/evals/evals.json b/skills/bionemo-parabricks/evals/evals.json
index f6ea82c1b..55ca38ee4 100644
--- a/skills/bionemo-parabricks/evals/evals.json
+++ b/skills/bionemo-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-parabricks/evals/files/rna-batch.json b/skills/bionemo-parabricks/evals/files/rna-batch.json
index 064ae54be..1a178b4d7 100644
--- a/skills/bionemo-parabricks/evals/files/rna-batch.json
+++ b/skills/bionemo-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-parabricks/evals/files/rna-contracts.json b/skills/bionemo-parabricks/evals/files/rna-contracts.json
index b0118df4d..79cd5feb1 100644
--- a/skills/bionemo-parabricks/evals/files/rna-contracts.json
+++ b/skills/bionemo-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-parabricks/references/command-conventions.md b/skills/bionemo-parabricks/references/command-conventions.md
index b0a4e4411..0d69b46b3 100644
--- a/skills/bionemo-parabricks/references/command-conventions.md
+++ b/skills/bionemo-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-parabricks/references/minimap2-controls.md b/skills/bionemo-parabricks/references/minimap2-controls.md
new file mode 100644
index 000000000..9d8c73dc7
--- /dev/null
+++ b/skills/bionemo-parabricks/references/minimap2-controls.md
@@ -0,0 +1,14 @@
+# Minimap2 pipeline controls
+
+These v4.8.0 controls apply only to the commands named in the **Tools** column.
+Combine them with the selected tool's option mapping and its scoped rows in
+[shared-options.md](shared-options.md) for inputs, intervals, model files,
+output, and memory limits. Use the release and execution rules in
+[command-conventions.md](command-conventions.md).
+
+| Option | Role | Tools |
+| --- | --- | --- |
+| `--pbmm2`, `--pbmm2-unmapped` | Compatibility controls for pbmm2-style output and unmapped records. | `minimap2`, `pacbio_germline` |
+| `--standalone-bqsr` | Pipeline mode control; for `minimap2`, runs BQSR after sorted BAM generation. | `minimap2`, `ont_germline`, `pacbio_germline` |
+| `--nstreams`, `--max-queue-*`, `--chunk-size`, `--estimated-*`, `--stage2-large-chaining-size` | GPU pipeline tuning, including `--max-queue-chunks`, `--max-queue-reads`, `--estimated-read-length`, and `--estimated-anchor-per-read`. For `minimap2`, streams and chunk size default to `auto`, tuned from device memory and preset. Set values only for benchmarked tuning. | `minimap2`, `ont_germline`, `pacbio_germline` |
+| `--seeding-chaining-on-gpu on\|off\|auto` | GPU seeding and chaining; `on` may help CPU-bound alignment. `auto` leaves ONT and PacBio presets on CPU; `minimap2` selects GPU only for `splice:sr`. Replaces 4.7.1's bare `--chaining-on-gpu` switch, now a deprecated alias that requires a value. | `minimap2`, `ont_germline`, `pacbio_germline` |
diff --git a/skills/bionemo-parabricks/references/pbrun-bam2fq.md b/skills/bionemo-parabricks/references/pbrun-bam2fq.md
index 074bdd54e..b66525d12 100644
--- a/skills/bionemo-parabricks/references/pbrun-bam2fq.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-deepsomatic.md b/skills/bionemo-parabricks/references/pbrun-deepsomatic.md
index 79d3a77bb..6852d3f46 100644
--- a/skills/bionemo-parabricks/references/pbrun-deepsomatic.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-deepvariant.md b/skills/bionemo-parabricks/references/pbrun-deepvariant.md
index 5d8442667..e659902f8 100644
--- a/skills/bionemo-parabricks/references/pbrun-deepvariant.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-deepvariant_germline.md b/skills/bionemo-parabricks/references/pbrun-deepvariant_germline.md
index 4ac8b1457..dade383c5 100644
--- a/skills/bionemo-parabricks/references/pbrun-deepvariant_germline.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-fq2bam.md b/skills/bionemo-parabricks/references/pbrun-fq2bam.md
index 1e29255eb..1072d7c67 100644
--- a/skills/bionemo-parabricks/references/pbrun-fq2bam.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-germline.md b/skills/bionemo-parabricks/references/pbrun-germline.md
index ef960ee3d..c5234371f 100644
--- a/skills/bionemo-parabricks/references/pbrun-germline.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-giraffe.md b/skills/bionemo-parabricks/references/pbrun-giraffe.md
index a4e0fb766..be70182de 100644
--- a/skills/bionemo-parabricks/references/pbrun-giraffe.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-haplotypecaller.md b/skills/bionemo-parabricks/references/pbrun-haplotypecaller.md
index 90d002ddb..a1656028d 100644
--- a/skills/bionemo-parabricks/references/pbrun-haplotypecaller.md
+++ b/skills/bionemo-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-parabricks/references/pbrun-indexgvcf.md b/skills/bionemo-parabricks/references/pbrun-indexgvcf.md
index 3fc323176..bb228ea74 100644
--- a/skills/bionemo-parabricks/references/pbrun-indexgvcf.md
+++ b/skills/bionemo-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 `