Skip to content

Release 0.3.0 + 0.3.1 (validated via ICA full-pipeline runs) - #35

Merged
qclayssen merged 63 commits into
mainfrom
release/0.3.1-validated
Jul 22, 2026
Merged

Release 0.3.0 + 0.3.1 (validated via ICA full-pipeline runs)#35
qclayssen merged 63 commits into
mainfrom
release/0.3.1-validated

Conversation

@qclayssen

Copy link
Copy Markdown
Collaborator

Summary

  • Split out of Release 0.3.2 (pending full-pipeline validation) #33 to isolate the already-validated portion of the release from unvalidated 0.3.2 work.
  • Contains everything through the v0.3.1 tag, matching the ghcr.io/umccr/bolt:0.3.1* images already run against real ICA data.
  • See CHANGELOG.md ## 0.3.1 section for the full list of fixes.

Validation

  • Full-pipeline runs tracked in umccr/biodaily#199 (sash 0.7.0, bolt 0.3.1 images) across 11 samples.

Test plan

  • CI unit tests pass on this branch
  • Docker images for v0.3.1 already built and validated via ICA runs

qclayssen and others added 30 commits October 2, 2025 14:17
* update "HIGH_INF_POS" to "HIGH_I_I_POS" in VCF header for latest pcgr version

* update constant for pcgr 2.2.5
* change sage vcf header to match 2024 version

* move check function

* add check in rescue for sage vcf

* change for consistencency with pcgr
…arallelisation because OOM hypermutated samples
…e_command. Fixes #26 - Commands now fail immediately instead of continuing silently
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@qclayssen qclayssen changed the title Release 0.3.1 (validated via ICA full-pipeline runs) Release 0.3.0 + 0.3.1 (validated via ICA full-pipeline runs) Jul 17, 2026
@qclayssen
qclayssen requested a review from scwatts July 17, 2026 04:06

@scwatts scwatts left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work, read over the code briefly and made a couple of minor comments, trust you've tested well :)

Comment thread bolt/common/constants.py
## Variation selection (annotation) ##
######################################
MAX_SOMATIC_VARIANTS = 500_000
MAX_SOMATIC_VARIANTS = 450_000

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have a Slack thread (or similar) to link to for this change?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe this was an oral discussion, since PCGR's hard cap is 500k, we set 450k to avoid being right on the limit and allow margin for edge cases.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated ADR document for sash and bolt explaining rational

Comment thread bolt/common/pcgr.py Outdated
Comment thread bolt/workflows/smlv_somatic/report.py Outdated
run_somatic_chunk -> merging_pcgr_files unconditionally called
util.merge_vcf_files, which shells out to `bcftools merge`. That
command requires 2+ inputs, so a sample whose variants fit in a
single chunk (no splitting needed) produced a bcftools merge
Usage error instead of a valid annotated VCF.

Guard on len(pcgr_vcf_files) == 1: copy the single chunk's VCF
directly to the expected merged-output path and tabix-index it,
matching the indexed .vcf.gz contract that merge_vcf_files
normally produces. Two or more chunks still go through the
existing bcftools merge -> sort -> index path unchanged.
- Remove stray blank first line in bolt/common/pcgr.py
- Reword comment in report.py to reference MAX_SOMATIC_VARIANTS constant
  instead of hardcoded '500,000' value
qclayssen added a commit that referenced this pull request Jul 21, 2026
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
qclayssen added a commit that referenced this pull request Jul 21, 2026
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
qclayssen added a commit that referenced this pull request Jul 21, 2026
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
@qclayssen
qclayssen force-pushed the release/0.3.1-validated branch from 8f2d975 to b463534 Compare July 21, 2026 23:22
qclayssen added a commit that referenced this pull request Jul 21, 2026
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
qclayssen added a commit that referenced this pull request Jul 21, 2026
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
qclayssen added a commit that referenced this pull request Jul 21, 2026
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
@qclayssen
qclayssen force-pushed the release/0.3.1-validated branch from b463534 to 8f264d9 Compare July 21, 2026 23:34
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
qclayssen added a commit that referenced this pull request Jul 21, 2026
Explain why the threshold is 450k (not 500k): PCGR's hard cap is 500k,
the 50k margin avoids edge-case overflows during tiered filtering.
Notes this was an oral team decision with no written Slack thread.

Addresses Stephen's review comment on constants.py:7.
@qclayssen
qclayssen force-pushed the release/0.3.1-validated branch from 8f264d9 to 1a2a5ca Compare July 21, 2026 23:46
@qclayssen
qclayssen merged commit 99c4a7f into main Jul 22, 2026
5 checks passed
@qclayssen
qclayssen deleted the release/0.3.1-validated branch July 22, 2026 00:15
qclayssen added a commit that referenced this pull request Jul 22, 2026
All 11 conflicts resolved by taking release/0.3.0 (0.3.2) content:
- Version bumps (.bumpversion.cfg, pyproject.toml, constants.py): keep 0.3.2
- CHANGELOG.md: keep full 0.3.2 history
- build.yaml: keep pinned action version (v1.3.0)
- logging_config.py: keep force=True addition
- pcgr.py, util.py, annotate.py, report.py, rescue.py: keep 0.3.2 implementations

Main only had the 0.3.1-validated subset (merged via #35); release/0.3.0
is strictly ahead with all 0.3.2 development work.
qclayssen added a commit that referenced this pull request Jul 22, 2026
Conflicts resolved by taking oa-only-v2 content (superset of main):
- CHANGELOG.md, constants.py, pcgr.py, report.py, test_pcgr_hypermutated.py
qclayssen added a commit that referenced this pull request Jul 22, 2026
…nts)

Merge resolution strategy:
- Version/config (.bumpversion.cfg, pyproject.toml, build.yaml, CHANGELOG): take ours (0.3.2)
- constants.py: take ours + add MAX_SOMATIC_VARIANTS rationale comment from #35 review
- pcgr.py: take ours (has _normalise_tier, drops --estimate_signatures per sash#57)
  + incorporate documentation comments from #35 review
- util.py: take ours + add logging setup comment
- logging_config.py: take ours (force=True fix)
- annotate.py, report.py, rescue.py: take ours + add review comments
- docs/adr/001-max-somatic-variants-450k.md: new from main (kept)
- tests/test_pcgr_hypermutated.py: new from main (kept)
qclayssen added a commit that referenced this pull request Jul 22, 2026
…nts)

Merge resolution strategy:
- Version/config (.bumpversion.cfg, pyproject.toml, build.yaml, CHANGELOG): take ours (0.3.2)
- constants.py: take ours + add MAX_SOMATIC_VARIANTS rationale comment from #35 review
- pcgr.py: take ours (has _normalise_tier, drops --estimate_signatures per sash#57)
  + incorporate documentation comments from #35 review
- util.py: take ours + add logging setup comment
- logging_config.py: take ours (force=True fix)
- annotate.py, report.py, rescue.py: take ours + add review comments
- docs/adr/001-max-somatic-variants-450k.md: new from main (kept)
- tests/test_pcgr_hypermutated.py: new from main (kept)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants