Skip to content

Release WASP2 v1.3.0: PyPI publication + docs#32

Open
Jaureguy760 wants to merge 270 commits intomasterfrom
v1.2.0-transfer
Open

Release WASP2 v1.3.0: PyPI publication + docs#32
Jaureguy760 wants to merge 270 commits intomasterfrom
v1.2.0-transfer

Conversation

@Jaureguy760
Copy link
Collaborator

Summary

  • Published wasp2 v1.3.0 to PyPI
  • Updated README with pip install instructions
  • Fixed CI workflow (wheel cleanup for self-hosted runners)
  • Updated badges to point to mcvickerlab/WASP2
  • Added pandoc to docs workflow

Changes

  • pip install wasp2 now works with pre-built wheels for Linux and macOS
  • README badges now show correct CI status
  • Documentation will auto-deploy on merge

Test Plan

  • PyPI package published and installable
  • CI workflow passes
  • Docs build succeeds

Co-Authored-By: Claude Opus 4.5 noreply@anthropic.com

Jaureguy760 and others added 30 commits January 23, 2026 11:08
- Add nf-scatac single-cell ATAC-seq pipeline scaffold
- Add WASP2 ecosystem documentation
- Update .gitignore for .serena/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(nf-scatac): add validation and test suite (#48)

- Fix workflow module imports to use correct nested paths
- Add SCATAC_COUNT_ALLELES process for single-cell fragment counting
- Create nf-test suite with stub and real data profiles
- Add stub test data (fragments.tsv.gz, variants.vcf.gz)
- Add integration test config pointing to GM12878 scATAC-seq data
- Update README with testing documentation

Closes #48

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor(nf-scatac): simplify test suite

- Merge duplicate pipeline tests into single comprehensive test
- Remove redundant test tags (pipeline, workflows, process, stub, single_cell)
- Simplify test_real.config by removing unused params
- Shorten test names

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(nf-scatac): resolve critical PR review issues

- Replace non-existent `wasp2-count count-fragments` with bedtools+awk
  implementation for fragment-SNP intersection
- Add VCF index validation with support for both .tbi and .csi formats
- Add checkIfExists validation for samplesheet, fragments, and index files
- Replace silent exception catching with logged warnings in check_max()
- Remove empty emit channels (cell_clusters, multiqc_report)
- Clean up unused params from config

Fixes issues identified in PR #51 review.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Add nf-test infrastructure and documentation for the RNA-seq ASE pipeline:

Test Infrastructure:
- nf-test.config for test framework configuration
- tests/main.nf.test with stub tests for CI/CD validation
- tests/tags.yml for selective test execution
- Minimal test data (VCF, GTF, placeholder FASTQs)

Documentation:
- docs/usage.md: comprehensive parameter and usage guide
- docs/output.md: output file format documentation
- Enhanced README with badges, examples, and workflow diagram

Supporting Files:
- Updated test.config to use local test data paths
- Updated samplesheet_test.csv with proper test paths

Closes #46

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…#35) (#53)

* feat(pipeline): implement nf-outrider WASP2+OUTRIDER pipeline (Issue #35)

Build complete nf-outrider pipeline for aberrant expression detection:

Pipeline Architecture:
- main.nf: Entry point with DSL2 workflow orchestration
- workflows/outrider.nf: Main OUTRIDER workflow with 5-step process
- modules/local/: AGGREGATE_COUNTS, MERGE_COUNTS, OUTRIDER_FIT, MAE_DETECT
- subworkflows/: Aberrant expression and utility subworkflows
- conf/: Base, modules, test, and test_full configurations

Key Features:
- Integrates WASP2 Rust-accelerated allele counting (61× faster than GATK)
- OUTRIDER autoencoder for expression outlier detection
- Beta-binomial MAE detection with calibrated overdispersion (λ=0.52)
- Full nf-core compatible structure with Docker/Singularity/Conda profiles

Files Added:
- bin/runOutrider.R: R script for OUTRIDER model fitting
- assets/: Samplesheet templates and MultiQC config
- tests/main.nf.test: nf-test integration tests
- Comprehensive README with usage documentation

Closes #35

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor(nf-outrider): simplify pipeline code

Simplifications applied:
- aggregate_counts.nf: Consolidate redundant if/elif aggregation branches
  into single dynamic dict-based approach (24 → 12 lines)
- mae_detect.nf: Remove unused imports (numpy, betaln), move import to top,
  remove dead code comments (29 → 15 lines)
- workflows/outrider.nf: Remove unused module imports (WASP2_FILTER_REMAPPED,
  WASP2_MAKE_READS) and unused ch_multiqc_files variable

Total: -41 lines removed, code clarity improved

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(nf-outrider): improve error handling, documentation, and test coverage

- Fix README documentation: correct "beta-binomial" to "binomial" statistics,
  remove unsubstantiated λ=0.52 calibration claim
- Replace broad `except Exception` catches with specific exception types
  in aggregate_counts.nf and merge_counts.nf for better debugging
- Add tryCatch blocks around OUTRIDER fitting operations in runOutrider.R
  with helpful error messages for singular matrix/convergence failures
- Make chromosome naming mismatch a fatal error with actionable guidance
- Add actionable guidance to low gene mapping rate warning
- Improve test coverage: add error message assertions, new GTF file
  validation test, and more specific samplesheet validation assertions

Addresses PR review findings from code-reviewer, error-handler,
test-analyzer, and comment-analyzer agents.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat(nf-atacseq): add validation test suite (Issue #47)

Implements nf-test framework for pipeline validation:

- Add nf-test.config and test infrastructure
- Create pipeline tests (main.nf.test) with stub-run support
- Create WASP2 module tests for all 4 local modules
- Add missing BOWTIE2_BUILD module for bowtie2 aligner support
- Enhance README with testing instructions and comprehensive docs

Test coverage:
- Pipeline stub-run validation
- Module-level tests for wasp2_make_reads, filter_remapped, count_variants, find_imbalance

Note: GitHub Actions workflow (.github/workflows/nf-atacseq-tests.yml) available
in working directory but requires manual addition with workflow scope token.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(nf-atacseq): correct integration test tag reference

- Fix incorrect test name in tags.yml (was referencing non-existent test)
- Simplify README test run section

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix(nf-atacseq): use dynamic fasta.baseName in BOWTIE2_BUILD stub

The stub block was using hardcoded 'genome' for output filenames
while the script block uses ${fasta.baseName}. This mismatch could
cause stub tests to pass but real runs to fail due to filename
discrepancies in downstream processes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor(nf-atacseq): adopt nf-core subworkflow pattern for alignment

Restructure alignment logic following nf-core best practices:

NEW SUBWORKFLOWS:
- subworkflows/nf-core/fastq_align_bwa/main.nf
- subworkflows/nf-core/fastq_align_bowtie2/main.nf
- subworkflows/nf-core/bam_sort_stats_samtools/main.nf
- subworkflows/nf-core/bam_stats_samtools/main.nf
- subworkflows/local/prepare_genome.nf

KEY CHANGES:
- Standardized emit interface: bam, bai, stats, flagstat
- Centralized index preparation in PREPARE_GENOME subworkflow
- Main workflow now calls subworkflows instead of individual modules
- Alignment complexity hidden behind clean interfaces

BENEFITS:
- Easier to add new aligners (just create new subworkflow)
- Testable in isolation
- Follows nf-core community patterns
- Cleaner main workflow (~20 fewer lines in alignment section)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…(#59)

- Add multi-stage Dockerfile for optimized WASP2 container
- Add Singularity.def for HPC environments
- Add container usage documentation

Note: CI/CD workflow to be added separately via GitHub UI (requires workflow scope)

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…s (Issue #58)

Add nf-core compliant meta.yml documentation files following the 2024 specification:

Module meta.yml (6 files):
- wasp2/count_alleles, filter_remapped, unified_make_reads, vcf_to_bed, analyze_imbalance
- star/align

Subworkflow meta.yml (7 files):
- nf-atacseq: fastq_align_bwa, fastq_align_bowtie2, bam_stats_samtools, bam_sort_stats_samtools, prepare_genome, wasp_mapping
- nf-outrider: aberrant_expression

Restructure local subworkflows to nf-core directory pattern:
- Move .nf files to <subworkflow>/main.nf structure
- Update import paths in atacseq.nf

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ce (Issue #55)

BREAKING CHANGES:
- PREPARE_GENOME no longer takes aligner as input (uses params.aligner directly)

Core Improvements:
- Add BAM_MARKDUPLICATES_PICARD subworkflow with full stats (bam, bai, metrics, stats, flagstat, idxstats)
- Add SAMTOOLS_FAIDX module for FASTA index generation
- Add SAMTOOLS_IDXSTATS module to BAM_STATS_SAMTOOLS subworkflow
- Add idxstats output to all alignment subworkflows (bwa, bowtie2)
- Add idxstats output to bam_sort_stats_samtools subworkflow
- Restructure PREPARE_GENOME to subworkflows/local/prepare_genome/ directory with meta.yml

Safety Improvements:
- Add failOnMismatch: true to ALL channel joins (11 total) to prevent silent data loss
  - 4 joins in wasp_mapping.nf
  - 3 joins in atacseq.nf
  - 1 join each in fastq_align_bwa, fastq_align_bowtie2, bam_sort_stats_samtools, bam_markduplicates_picard
- Add params.fasta validation with clear error message in PREPARE_GENOME

Test Coverage:
- Add test for PREPARE_GENOME fasta validation error path
- Add multi-sample test for BAM_MARKDUPLICATES_PICARD (verifies join behavior)
- Add tests for BAM_STATS_SAMTOOLS, FASTQ_ALIGN_BWA, FASTQ_ALIGN_BOWTIE2
- Update tags.yml with subworkflow test categories

Code Quality:
- Standardize versions channel comments to '// channel: path(versions.yml)' across all subworkflows
- Use if...else if pattern for aligner selection
- Add meta.yml documentation for all subworkflows

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update binary test VCF files and corresponding tabix index.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
## Summary
Comprehensive audit and refactoring of nf-scatac pipeline for nf-core subworkflow pattern compliance.

### Changes
- Extract SCATAC_COUNT_ALLELES to dedicated module with meta.yml
- Add WASP_ALLELIC_SC subworkflow for single-cell allelic imbalance
- Add GENERATE_FRAGMENTS subworkflow for BAM to fragments conversion
- Add single-cell meta map enhancement (cell_barcode_tag, chemistry)
- Add comprehensive nf-test suite with stub tests
- Add error handling (set -o pipefail, output validation)
- Fix AWK script to output honest overlap_count column
- Add params.vcf validation with clear error message
- Update documentation with architecture diagram and usage examples

### Review
- Passed code-reviewer, pr-test-analyzer, silent-failure-hunter reviews
- No critical issues found
- Test coverage adequate for stub-based testing

Closes #57

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix pattern mismatch in meta.yml (*.counts.tsv -> *_counts.tsv)
- Add failOnMismatch to all join() operations in wasp_mapping
- Add FASTA validation with ifEmpty error handling in prepare_genome
- Add OUTRIDER parameter validation (padj, zscore, iterations, convergence)
- Add sample count warning for OUTRIDER (<15 samples)
- Mark stats output as optional in filter_remapped/meta.yml

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Wiggle move 3 (Rename): n -> sample_count in OUTRIDER sample validation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
chore(tests): update sample VCF test data files
The bam_counter.rs was using only the first character of ref/alt alleles,
which broke INDEL counting (e.g., REF=A, ALT=ATT both became 'A').

Now uses full allele strings with proper validation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add comprehensive CI/CD automation addressing Issue #26:

Workflows:
- tests.yml: pytest matrix (Python 3.10-3.12) with Rust build, codecov
- docs.yml: Sphinx documentation build and GitHub Pages deployment
- security.yml: pip-audit, bandit, cargo-audit, CodeQL analysis
- publish.yml: maturin wheel builds and PyPI trusted publishing
- containers.yml: Docker image build and GHCR publishing

Configuration:
- dependabot.yml: weekly dependency updates for pip, cargo, github-actions

Version updates:
- docs/source/conf.py: version 1.1 → 1.2, URLs to WASP2-final
- pyproject.toml: URLs consolidated to WASP2-final repository

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Update dependency version pins to use modern, compatible versions:

- pandas: >=1.5,<2.0 → >=2.0,<2.3
- anndata: >=0.8,<0.10 → >=0.10.7,<0.11
- maturin: >=1.4 → >=1.4,<2.0 (add upper bound)

The original pandas <2.0 constraint was set before anndata 0.10.7+
added proper pandas 2.x compatibility. These updates align the root
environment with pipeline module configurations that already use
pandas 2.x.

Closes #21

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Add three GitHub Actions workflows for automated CI/CD:

- test.yml: Python 3.10/3.11 tests with Rust extension via maturin
- lint.yml: Ruff v0.9.6 linting + Bandit 1.8.3 security scan
- rust-build.yml: Cross-platform Rust build (Linux/macOS)

Features:
- Explicit permissions (contents: read) for security
- Dependency caching (pip + Cargo via Swatinem/rust-cache)
- Codecov coverage upload for Python 3.11
- Path-filtered Rust builds (only on rust/** changes)
- Matrix builds with fail-fast: false

Closes #34

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Implements comprehensive distribution packaging infrastructure:

GitHub Actions CI/CD:
- ci.yml: Lint (ruff/mypy), security scan (bandit/pip-audit/cargo-audit),
  test matrix (Linux/macOS × Python 3.10-3.12), Rust checks (fmt/clippy)
- release.yml: Multi-platform wheel builds via maturin-action (Linux
  x86_64/aarch64, macOS x86_64/arm64), PyPI publish via OIDC trusted
  publishing, GitHub Release creation
- docker.yml: Build and push to ghcr.io with semver tagging, automatic
  Singularity image generation for HPC environments

Bioconda Recipe:
- meta.yaml: Conda recipe with Rust compiler, maturin, htslib deps
- build.sh: Build script with cargo-bundle-licenses for Rust crates
- README.md: Step-by-step submission instructions

Galaxy Tool Wrappers:
- macros.xml: Shared requirements, parameters, DRY tokens
- wasp2_count_variants.xml: Count allele-specific reads
- wasp2_make_reads.xml: Generate WASP remapping reads
- wasp2_filter_remapped.xml: Filter by mapping consistency
- wasp2_find_imbalance.xml: Statistical imbalance analysis
- .shed.yml: Galaxy Tool Shed metadata

Closes #20

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3 to 4.
- [Release notes](https://github.com/actions/upload-pages-artifact/releases)
- [Commits](actions/upload-pages-artifact@v3...v4)

---
updated-dependencies:
- dependency-name: actions/upload-pages-artifact
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](actions/download-artifact@v4...v7)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 4 to 5.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v4...v5)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '5'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@v5...v6)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v4...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [itoa](https://github.com/dtolnay/itoa) from 1.0.15 to 1.0.17.
- [Release notes](https://github.com/dtolnay/itoa/releases)
- [Commits](dtolnay/itoa@1.0.15...1.0.17)

---
updated-dependencies:
- dependency-name: itoa
  dependency-version: 1.0.17
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [argmin](https://github.com/argmin-rs/argmin) from 0.10.0 to 0.11.0.
- [Release notes](https://github.com/argmin-rs/argmin/releases)
- [Changelog](https://github.com/argmin-rs/argmin/blob/main/CHANGELOG.md)
- [Commits](argmin-rs/argmin@argmin-v0.10.0...argmin-v0.11.0)

---
updated-dependencies:
- dependency-name: argmin
  dependency-version: 0.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [noodles-core](https://github.com/zaeleus/noodles) from 0.15.0 to 0.16.0.
- [Commits](zaeleus/noodles@noodles-core-0.15.0...noodles-core-0.16.0)

---
updated-dependencies:
- dependency-name: noodles-core
  dependency-version: 0.16.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Updates the requirements on [pandas](https://github.com/pandas-dev/pandas) to permit the latest version.
- [Release notes](https://github.com/pandas-dev/pandas/releases)
- [Commits](pandas-dev/pandas@v1.5.0...v2.3.3)

---
updated-dependencies:
- dependency-name: pandas
  dependency-version: 2.3.3
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [statrs](https://github.com/statrs-dev/statrs) from 0.17.1 to 0.18.0.
- [Release notes](https://github.com/statrs-dev/statrs/releases)
- [Changelog](https://github.com/statrs-dev/statrs/blob/master/CHANGELOG.md)
- [Commits](statrs-dev/statrs@v0.17.1...v0.18.0)

---
updated-dependencies:
- dependency-name: statrs
  dependency-version: 0.18.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Updates the requirements on [anndata](https://github.com/scverse/anndata) to permit the latest version.
- [Release notes](https://github.com/scverse/anndata/releases)
- [Commits](scverse/anndata@0.8.0...0.11.4)

---
updated-dependencies:
- dependency-name: anndata
  dependency-version: 0.11.4
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* ci: switch to self-hosted HPC runner

- Replace ubuntu-latest with self-hosted runner labels
- Remove sudo apt-get commands (tools available via conda)
- Remove setup-python/setup-rust actions (pre-installed)
- Add source ~/.bashrc for conda environment
- Simplify workflows for HPC environment

This resolves GitHub Actions billing issues by using our
self-hosted runner on the HPC cluster.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* ci: update remaining workflows for self-hosted runner

- Update security.yml to use self-hosted runner
- Update tests.yml to use self-hosted runner
- Disable containers.yml on PRs (no Docker on HPC)
- Remove CodeQL (requires GitHub infrastructure)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix: correct wheel path in ci.yml (rust/target/wheels/ not target/wheels/)

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Jaureguy760 and others added 25 commits February 3, 2026 22:32
Add SVG banner matching the podcast page aesthetic:
- Dark background with honeycomb pattern overlay
- Amber glowing orbs and floating particles
- Hexagonal decorations
- WASP2 branding with glow effect

Update README to use the new full-width banner.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
GitHub strips <defs>, <pattern>, <filter>, and <linearGradient> for
security. This version draws the honeycomb explicitly with individual
hexagon paths that render properly on GitHub.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…, #292) (#294)

- Generate conda-lock.yml for reproducible environments (linux-64)
- Add comprehensive pgenlib compilation docs to installation.rst
  - Prerequisites for Ubuntu/Debian, macOS, RHEL/Fedora
  - Troubleshooting guide for common compilation errors

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…295)

* feat(deps): add conda-lock.yml and document pgenlib compilation (#284, #292)

- Generate conda-lock.yml for reproducible environments (linux-64)
- Add comprehensive pgenlib compilation docs to installation.rst
  - Prerequisites for Ubuntu/Debian, macOS, RHEL/Fedora
  - Troubleshooting guide for common compilation errors

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* feat(audit): add release audit infrastructure for human validation

Add structured review process for v1.4.0 release with:

Issue Templates:
- audit-finding.yml: General code quality, security, documentation issues
- scientific-validation.yml: Domain-specific scientific accuracy concerns
- config.yml: Template chooser with security/discussion links

Auditor Documentation:
- AUDITOR_GUIDE.md: Onboarding tutorial with role-specific instructions
- AUDIT_CHECKLIST.md: Release verification checklist with sign-off sections

CODEOWNERS Updates:
- Route statistical analysis to bioinformatician review
- Route Rust code to software engineer review
- Route scientific docs to PI approval
- Route test data to wet lab scientist review

Team Roles:
- PI (Admin): Release approval, documentation, security sign-off
- Software Engineer (Maintain): CI/CD, Rust, build systems
- Bioinformatician (Write): Statistical models, benchmarks
- Staff Research Scientist (Write): Real-world testing, data validation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.18.0 to 6.19.2.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](docker/build-push-action@2634353...10e90e3)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 6.19.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4.6.0 to 5.5.2.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](codecov/codecov-action@b9fd7d1...671740a)

---
updated-dependencies:
- dependency-name: codecov/codecov-action
  dependency-version: 5.5.2
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.24.0 to 3.25.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-version: 3.25.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [pyo3](https://github.com/pyo3/pyo3) from 0.28.0 to 0.28.1.
- [Release notes](https://github.com/pyo3/pyo3/releases)
- [Changelog](https://github.com/PyO3/pyo3/blob/main/CHANGELOG.md)
- [Commits](PyO3/pyo3@v0.28.0...v0.28.1)

---
updated-dependencies:
- dependency-name: pyo3
  dependency-version: 0.28.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [actions/cache](https://github.com/actions/cache) from 4.3.0 to 5.0.3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@0057852...cdf6c1f)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 5.0.3
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…(#309)

- Fix rich.__version__ AttributeError by using importlib.metadata.version()
- Bump typer minimum to >=0.12 in pyproject.toml and environment.yml
  (required for list[str] | None union syntax)
- Silence all 10 Rust compiler warnings: deprecated .downcast() → .cast(),
  #[allow(dead_code)] on unused struct fields and internal helper functions
- Add pgenlib skip markers to PGEN tests in test_variant_source.py so they
  skip gracefully instead of failing when pgenlib is not installed

Test suite: 80 passed, 84 skipped, 0 failed, 0 errors
Rust build: 0 warnings

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
… pre-merge

Security (blocking):
- Bump pyo3 0.28.1 → 0.28.2 (RUSTSEC-2026-0013: type confusion with abi3)
- Update bytes 1.11.0 → 1.11.1 (RUSTSEC-2026-0007: integer overflow)

Pipeline fixes:
- nf-atacseq: pin nf-validation@1.1.3, fix fromSamplesheet import
- nf-outrider: fix null channel bug (params.outrider_q ?: 0)

Packaging:
- Galaxy macros.xml: bump @TOOL_VERSION@ 1.2.0 → 1.3.0

Code quality:
- Apply ruff format + ruff check --fix across Python sources
- Apply cargo fmt across Rust sources
- Fix unused loop variables in sanity tests (B007)
- Fix import sorting (I001)

Verified: cargo test (97 pass), pytest (97 pass), cargo audit (0 vulns),
ruff check (clean), cargo fmt --check (clean)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace stub/placeholder test data (0-byte BAMs, 36-byte FASTQs, empty
indices, broken URLs) with real, git-committable test data (~548K total)
that all pipelines, Galaxy tools, and containers can share.

New infrastructure:
- tests/shared_data/: Core 20kb genome, 10 het SNPs (2 samples), 3 BAMs
  aligned with BWA, reproducible via generate_core_data.sh (wgsim seeds)
- Per-pipeline generators: nf-atacseq (ATAC reads + BWA index),
  nf-scatac (synthetic fragments + 10 cell barcodes), nf-outrider
  (symlinks to 3 shared BAMs), nf-modules (28-read BAM with REF/ALT)
- Galaxy test-data/: test.bam, test.vcf, remapped.bam, counts.tsv
- scripts/smoke_test.sh: CLI validation (6/6 passing)
- scripts/container_smoke_test.sh: Docker/Singularity validation
- Dockerfile: bundles test data at /opt/wasp2/test-data/
- Singularity.def: enhanced %test with data smoke test
- test_local.config for nf-atacseq, nf-scatac, nf-outrider

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Rust analyze_imbalance parser assumed a 7-column TSV format but
the wasp2-count CLI outputs 9 columns (with pos0 and GT fields). The
parser now auto-detects the format from the header row, supporting both
the 7-column BamCounter output and 9-column CLI output.

Also adds expected output baselines to tests/shared_data/, nf-rnaseq
integration test data (FASTQs, VCF, STAR index), and nf-modules test
snapshots.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Notebook cell formatting normalized (single-string → array-of-strings),
unused subprocess import removed, trailing newlines fixed. Test VCF
regenerated with proper bcftools_view header.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts:
#	docs/source/_static/podcast/audio/episode-001-origin-swarm.mp3
#	docs/source/_static/podcast/audio/episode-002-new-hive.mp3
#	docs/source/_static/podcast/audio/episode-003-rust-metamorphosis.mp3
#	podcast/audio/episode-001-origin-swarm.mp3
#	podcast/audio/episode-002-new-hive.mp3
#	podcast/audio/episode-003-rust-metamorphosis.mp3
feat(tests): unified real test data + fix analyze_imbalance TSV parsing
Bumps [noodles-bcf](https://github.com/zaeleus/noodles) from 0.76.0 to 0.82.0.
- [Commits](zaeleus/noodles@noodles-bcf-0.76.0...noodles-bcf-0.82.0)

---
updated-dependencies:
- dependency-name: noodles-bcf
  dependency-version: 0.82.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Prevents runtime artifacts from Nextflow pipelines, nf-test snapshots,
and temporary test output from cluttering git status.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reimplements the Rust BamCounter algorithm in pure Python + pysam
and asserts exact integer match at every variant position. Validates
33,036 variants on chr21 HG00731 with zero mismatches, confirming
the Rust acceleration introduces no counting bias.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…s-bcf-0.82.0

chore(deps): Bump noodles-bcf from 0.76.0 to 0.82.0 in /rust
Closes #312. Applied alongside noodles-bcf 0.82 from #311.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@Jaureguy760 Jaureguy760 force-pushed the v1.2.0-transfer branch 2 times, most recently from ac46162 to 9945489 Compare February 19, 2026 13:31
@Jaureguy760 Jaureguy760 requested a review from Copilot February 19, 2026 15:11
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR releases WASP2 v1.3.0 with PyPI publication support and comprehensive documentation. The release focuses on making the package more accessible through PyPI distribution while adding extensive documentation for statistical methods, installation guides, and development workflows.

Changes:

  • Added PyPI publication infrastructure with bioconda recipes and container support
  • Created comprehensive documentation including statistical methods, installation guides, and API references
  • Implemented CI/CD enhancements with security scanning, dependency management, and container builds

Reviewed changes

Copilot reviewed 104 out of 714 changed files in this pull request and generated no comments.

Show a summary per file
File Description
docs/source/*.rst Statistical methods documentation, installation guides, and API references
docs/source/_static/podcast/* Podcast infrastructure for changelog narration with voice configuration and episode chronicles
docs/requirements.txt Sphinx documentation build dependencies
bioconda-recipe/* Bioconda packaging configuration for conda distribution
benchmarking/* Performance benchmarking framework and utilities
.github/workflows/* CI/CD workflows for security scanning, documentation builds, and Docker publishing
.github/runner/* Self-hosted runner configuration with health monitoring
Dockerfile, Singularity.def Container definitions for Docker and HPC environments
Makefile Development workflow automation
.readthedocs.yaml ReadTheDocs configuration with pandoc support
Various configuration files Security, pre-commit hooks, Dependabot, CodeQL, and project metadata

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Replaces the empty circle placeholder in banner.svg with the official
wasp2_hex_logo_v1.png embedded as base64 data URI with circular clip path.
The logo now renders directly in the README banner.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

1 participant

Comments