Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
198 commits
Select commit Hold shift + click to select a range
35bdcab
Add NA12878 chr10 test data bundle
Jaureguy760 Nov 15, 2025
9027ee7
Add comprehensive engineering plan for Phase 1 & 2
Jaureguy760 Nov 15, 2025
fef1ba3
Complete Phase 1.1: Initial Code Inventory & Architecture Mapping
Jaureguy760 Nov 15, 2025
11359f6
Add baseline testing infrastructure and pipeline execution plan
Jaureguy760 Nov 15, 2025
9c75b03
Fix environment.yml: Add missing system dependencies
Jaureguy760 Nov 15, 2025
7c2c4b7
Document baseline setup status and next steps
Jaureguy760 Nov 15, 2025
c5b5e13
Complete Phase 1.2: Counting Module Deep Dive
Jaureguy760 Nov 15, 2025
0ec9372
Complete Phase 1.3: Analysis Module Deep Dive
Jaureguy760 Nov 16, 2025
e0c5443
Complete Phase 1.4: Mapping Module Deep Dive
Jaureguy760 Nov 16, 2025
fd509ca
Add memory profiling to baseline testing
Jaureguy760 Nov 16, 2025
e967b7c
Add full pipeline baseline with comprehensive metrics
Jaureguy760 Nov 16, 2025
13a24dd
Fix import issues and polars API compatibility
Jaureguy760 Nov 16, 2025
5fd4916
Add baseline pipeline outputs for regression testing
Jaureguy760 Nov 16, 2025
927be5f
Fix pandas API and add BAM sorting for WASP mapping
Jaureguy760 Nov 16, 2025
f228de5
Fix Polars partition_by tuple key bug in WASP mapping
Jaureguy760 Nov 16, 2025
f3391f7
Complete Phase 1.3-1.4: Analysis Module Documentation & Full Pipeline…
Jaureguy760 Nov 16, 2025
c41f444
Add genome reference files to .gitignore
Jaureguy760 Nov 16, 2025
d13c1e1
Add automated regression test suite for baseline validation
Jaureguy760 Nov 16, 2025
f4e472d
Update baselines after regression test execution
Jaureguy760 Nov 16, 2025
eb652fb
Add Phase 2 task dependency graph (DAG)
Jaureguy760 Nov 16, 2025
0898e95
Quick wins: Fix None check bugs and remove dead code
Jaureguy760 Nov 16, 2025
b364000
Update baselines after quick wins cleanup
Jaureguy760 Nov 16, 2025
23dec1d
QW-2: Remove debug prints and improve error handling
Jaureguy760 Nov 16, 2025
fa6c1a8
Update baselines after QW-2 regression tests
Jaureguy760 Nov 16, 2025
3c82268
Update baselines after validation test run
Jaureguy760 Nov 16, 2025
bff1c15
QW-5: Standardize FDR correction to use scipy
Jaureguy760 Nov 17, 2025
25ee2dd
Update baselines after QW-5 regression tests
Jaureguy760 Nov 17, 2025
70e5e94
Merge test-data-bundle into main work branch
Jaureguy760 Nov 17, 2025
19e1c06
TH-3: Add comprehensive type hints to mapping module
Jaureguy760 Nov 17, 2025
9b9a067
Setup: Add comprehensive development environment configuration
Jaureguy760 Nov 17, 2025
b525920
Docs: Add comprehensive mypy errors analysis
Jaureguy760 Nov 17, 2025
fc41cb6
Bugfix: Resolve all 16 mypy type errors in counting and mapping modules
Jaureguy760 Nov 17, 2025
efb0ed9
Docs: Add TH-2 DAG and parallelization strategy
Jaureguy760 Nov 17, 2025
1ddc338
TH-2 Wave 1: Add type hints to 4 analysis files (40% complete)
Jaureguy760 Nov 17, 2025
52ba468
TH-2 Wave 2: Add type hints to SC stats and group comparison (60% com…
Jaureguy760 Nov 17, 2025
a8589fa
TH-2 Wave 3: Add type hints to SC analysis runner (70% complete)
Jaureguy760 Nov 17, 2025
d41241b
TH-2 Waves 4 & 5: Complete analysis module type hints (100% COMPLETE!)
Jaureguy760 Nov 17, 2025
9d7a470
Docs: Add TH-2 completion summary and final results
Jaureguy760 Nov 17, 2025
ffeab27
Test: Validate TH-2 typed code with full WASP2 pipeline
Jaureguy760 Nov 17, 2025
74bf6bd
CI/CD: Add GitHub Actions and pre-commit hooks (GenVarLoader best pra…
Jaureguy760 Nov 17, 2025
d3b841e
Docs: Add comprehensive production release plan
Jaureguy760 Nov 17, 2025
abacd9c
Phase 1: PyPI package setup - Make WASP2 pip-installable
Jaureguy760 Nov 17, 2025
4c0b275
Docs: Phase 2 - Sphinx documentation with API autodoc (ReadTheDocs re…
Jaureguy760 Nov 17, 2025
fdbbf08
CI/CD: Add package and documentation validation
Jaureguy760 Nov 17, 2025
c221f95
Docs: Add comprehensive PR description for v1.0.0 release
Jaureguy760 Nov 17, 2025
d3e022b
Cleanup: Remove temporary planning and development documentation files
Jaureguy760 Nov 18, 2025
2d30aa7
DevOps: Add GitHub Codespaces development container
Jaureguy760 Nov 18, 2025
1fa2417
Cleanup: Remove remaining planning docs and incomplete bin stub
Jaureguy760 Nov 18, 2025
71fdb2b
Docs: Add comprehensive dead code cleanup plan
Jaureguy760 Nov 18, 2025
47b3a7f
Cleanup Phase 1A: Remove 3 legacy analysis files (438 lines)
Jaureguy760 Nov 18, 2025
06f9818
Cleanup Phase 1C: Remove unused optimization functions (169 lines)
Jaureguy760 Nov 18, 2025
6d59cd7
Cleanup Phase 1D: Remove commented dead code blocks (240+ lines)
Jaureguy760 Nov 18, 2025
e4c434f
Docs: Add comprehensive cleanup validation report
Jaureguy760 Nov 18, 2025
2d15aa9
Validation: Pipeline outputs identical before/after cleanup
Jaureguy760 Nov 18, 2025
7f08693
Perf: Quick win optimizations - eliminate warnings
Jaureguy760 Nov 19, 2025
314018f
Docs: Add comprehensive Rust + PLINK2 optimization master plan
Jaureguy760 Nov 19, 2025
8feffb4
Feat: Add Rust acceleration for BAM allele counting
Jaureguy760 Nov 19, 2025
b31dda0
Docs: Add comprehensive Rust extension documentation
Jaureguy760 Nov 19, 2025
c1a4625
Docs: Add comprehensive Rust implementation summary
Jaureguy760 Nov 19, 2025
280839c
Test: Add Rust validation script (reveals critical bugs)
Jaureguy760 Nov 19, 2025
ded4fd0
Chore: Ignore test output artifacts
Jaureguy760 Nov 19, 2025
240f06d
Fix: Rewrite Rust BAM counter with rust-htslib
Jaureguy760 Nov 19, 2025
ecbf183
Perf: Optimize Rust BAM counter with batched fetching (7x speedup)
Jaureguy760 Nov 19, 2025
52493e1
Chore: Add test_rust_debug.tsv to gitignore
Jaureguy760 Nov 19, 2025
b36084d
Test: make regression suite robust to skipped mapping
Jaureguy760 Nov 20, 2025
1e12c76
Docs: add WASP2 env build recipe for Rust
Jaureguy760 Nov 20, 2025
d0e0c07
Rust: silence pymethods non_local_definitions warning
Jaureguy760 Nov 20, 2025
265f401
Rust: suppress non_local_definitions for pymethods
Jaureguy760 Nov 20, 2025
3b11ef2
Rust: add window grouping unit test
Jaureguy760 Nov 20, 2025
b2f2aa6
Rust: match Python counting (per-chrom dedup, per-SNP fetch)
Jaureguy760 Nov 20, 2025
e4bb297
Rust: restore windowed counting with per-chrom dedup to match Python
Jaureguy760 Nov 20, 2025
ae236d0
Tests: ensure PYTHONPATH and PATH for pipeline script
Jaureguy760 Nov 20, 2025
fbb8ef4
Tests: run pipeline script with cwd and PYTHONPATH
Jaureguy760 Nov 20, 2025
8bcbcbf
Scripts: invoke counting/analysis via -m to fix relative imports
Jaureguy760 Nov 20, 2025
ca0a034
Tests: set PATH/LD_LIBRARY_PATH for pipeline integration
Jaureguy760 Nov 20, 2025
2c2ace2
feat: Rust optimization Phase 1 - Counting + Mapping stages complete
Jaureguy760 Nov 21, 2025
a6800a5
feat: rust mapping filter benchmarks and docs
Jaureguy760 Nov 23, 2025
c46c92d
feat: packaging, Sphinx docs, GitHub Pages workflow
Jaureguy760 Nov 25, 2025
fd144fb
ci: trigger docs build on rust-optimization branch
Jaureguy760 Nov 25, 2025
5b98d96
fix: mock Rust/C extensions for Sphinx autodoc
Jaureguy760 Nov 25, 2025
71505f4
style: upgrade to PyData Sphinx theme for modern docs
Jaureguy760 Nov 25, 2025
1fb73b5
style: add WASP2 logo to docs
Jaureguy760 Nov 25, 2025
c1711bb
docs: add CHANGELOG for v1.1.0 release
Jaureguy760 Nov 25, 2025
33a508e
chore: cleanup dev artifacts and add CI/contributing docs
Jaureguy760 Nov 25, 2025
151f013
feat: add PLINK2 integration design and TDD test infrastructure
Jaureguy760 Nov 25, 2025
f4d2880
feat: implement multi-format variant source (VCF + PGEN)
Jaureguy760 Nov 25, 2025
6d853a6
feat: integrate PLINK2 PGEN support with unified VariantSource API
Jaureguy760 Nov 25, 2025
4173287
chore: bump version to 1.2.0 and update dependencies for PGEN support
Jaureguy760 Nov 25, 2025
fb477cf
build: add cargo config for libclang path
Jaureguy760 Nov 25, 2025
049d528
docs: add BCF performance recommendation and variant format guide
Jaureguy760 Nov 25, 2025
2771dc9
chore: add baselines and setup script, update test data
Jaureguy760 Nov 25, 2025
cfce30e
feat: add high-performance cyvcf2 VCF parsing support (6.9x faster)
Jaureguy760 Nov 25, 2025
3a7d6bc
feat: add cyvcf2 to variant I/O benchmark visualization
Jaureguy760 Nov 25, 2025
bfde28e
docs: add three-format benchmark comparison figure
Jaureguy760 Nov 25, 2025
3364e60
fix: implement iterator state tracking for cyvcf2 to enable multiple …
Jaureguy760 Nov 25, 2025
d66f077
chore: bump version to 1.2.1 and add cyvcf2 to dev environment
Jaureguy760 Nov 25, 2025
2626146
docs: add cyvcf2 high-performance VCF parsing to README
Jaureguy760 Nov 25, 2025
f237102
build: include LICENSE file in maturin source distribution
Jaureguy760 Nov 25, 2025
a1d2ca2
fix: update LIBCLANG_PATH to use base mambaforge lib
Jaureguy760 Nov 25, 2025
82493dc
feat: add comprehensive indel validation framework
Jaureguy760 Nov 26, 2025
4e6422f
feat: add publication-ready statistical analysis for simulation results
Jaureguy760 Nov 26, 2025
4b46589
docs: add statistical analysis summary and test data
Jaureguy760 Nov 26, 2025
9575785
feat: optimize BWA alignment with dynamic threading
Jaureguy760 Nov 26, 2025
2381136
docs: add statistical analysis summary and test data
Jaureguy760 Nov 26, 2025
15fdd6b
docs: add quick start guide for statistical analysis
Jaureguy760 Nov 26, 2025
305ca84
feat: add comprehensive profiling infrastructure for Rust indel proce…
Jaureguy760 Nov 26, 2025
df791d4
Merge branch 'feat/simulation-statistics' into ropc-indels
Jaureguy760 Nov 26, 2025
ccf5077
Merge branch 'feat/indel-optimization' into ropc-indels
Jaureguy760 Nov 26, 2025
30e1276
feat: integrate Rust remapper with Python pipeline
Jaureguy760 Nov 26, 2025
611229a
feat: implement full indel support in Rust BAM remapper (Phases 1-3 c…
Jaureguy760 Nov 26, 2025
9ef3958
docs: add session accomplishments with GM12878 validation plan
Jaureguy760 Nov 26, 2025
d13c87d
docs: document hts-sys compilation issue and workarounds
Jaureguy760 Nov 26, 2025
d5b2bef
feat: fix simulation pipeline with proper indel handling and BWA support
Jaureguy760 Nov 26, 2025
d240094
fix: use sys.executable instead of hardcoded 'python' in simulation
Jaureguy760 Nov 26, 2025
87b59fe
feat: add Python fallback for WASP filtering when Rust unavailable
Jaureguy760 Nov 26, 2025
423cb56
feat: add benchmarking scripts for WASP2 Rust performance
Jaureguy760 Nov 30, 2025
f75cff1
fix: correct benchmark script based on aho's working version
Jaureguy760 Nov 30, 2025
0071dba
chore: add .gitignore for benchmark output directories
Jaureguy760 Nov 30, 2025
cbbe996
feat: add CIGAR-aware INDEL support and multi-sample Rust acceleration
Jaureguy760 Dec 2, 2025
ff166a7
feat: add INDEL scaling benchmark script
Jaureguy760 Dec 2, 2025
54509b1
feat: add Rust BAM filter and remove Python fallbacks
Jaureguy760 Dec 3, 2025
ccea8ca
feat: add gene imprinting validation suite and indel counting support
Jaureguy760 Dec 3, 2025
9587f8e
feat: add validation test suite and expected counts baseline
Jaureguy760 Dec 3, 2025
17ae2a6
feat: add expected counts baseline for validation
Jaureguy760 Dec 3, 2025
a0e7512
feat: add unified single-pass pipeline for 5x faster make-reads
Jaureguy760 Dec 4, 2025
6b06af0
feat: add gzp parallel compression and optimization engineering plan
Jaureguy760 Dec 4, 2025
9a09b90
perf: use pre-allocated Record for ~10% BAM streaming speedup
Jaureguy760 Dec 4, 2025
c8f2d77
docs: update optimization plan with implementation status
Jaureguy760 Dec 4, 2025
531869b
fix: unified pipeline now matches baseline output (~99.8% match)
Jaureguy760 Dec 4, 2025
2de9fc5
feat: add unified pipeline benchmarks and simulation plan
Jaureguy760 Dec 4, 2025
a32d524
docs: add sub-agent engineering prompts for simulation benchmarks
Jaureguy760 Dec 4, 2025
bb6886a
docs: add detailed sub-agent engineering prompts for simulation bench…
Jaureguy760 Dec 4, 2025
ff248aa
feat: add paired-end read simulation module
Jaureguy760 Dec 4, 2025
368ece8
feat: add GATK ASEReadCounter benchmark comparison
Jaureguy760 Dec 4, 2025
a1d4170
fix: update simulation to use unified pipeline API
Jaureguy760 Dec 4, 2025
3e1ac85
merge: bring in paired-end simulation from sim/paired-end
Jaureguy760 Dec 4, 2025
385c390
merge: bring in GATK comparison from sim/gatk-compare
Jaureguy760 Dec 4, 2025
fa838d5
docs: add Nature Methods benchmark plan and publication figures
Jaureguy760 Dec 4, 2025
1a08c93
feat(rust): improve pipeline threading and INDEL support
Jaureguy760 Dec 5, 2025
5f84fa3
chore: update gitignore for results directories
Jaureguy760 Dec 5, 2025
18b918e
feat(validation): add gene imprinting analysis scripts
Jaureguy760 Dec 5, 2025
5094d1e
feat(benchmarking): add comprehensive benchmark suite
Jaureguy760 Dec 5, 2025
fe1e499
feat: add GATK ASEReadCounter comparison scripts
Jaureguy760 Dec 5, 2025
0ff89e6
docs: add benchmark v3 agent plans
Jaureguy760 Dec 5, 2025
017da5d
docs: add implementation summaries and optimization notes
Jaureguy760 Dec 5, 2025
5a5b358
refactor: remove old simulation scripts
Jaureguy760 Dec 5, 2025
b457202
chore: remove development notes and bloat markdown files
Jaureguy760 Dec 5, 2025
8c91720
Figure 1 finalization, CIGAR-aware indels, benchmark cleanup
Jaureguy760 Dec 12, 2025
7c21208
Fix COITree metadata conversions
Jaureguy760 Dec 13, 2025
a315d8a
Track paper figure outputs
Jaureguy760 Dec 13, 2025
fbcb9ee
Speed up unified FASTQ/sidecar writing
Jaureguy760 Dec 13, 2025
0863426
Update Rust lockfile
Jaureguy760 Dec 13, 2025
f775bcd
Avoid qname allocs and overlap clones
Jaureguy760 Dec 13, 2025
e00dce8
Speed up overlap queries via tid lookup
Jaureguy760 Dec 13, 2025
ff9e54d
Avoid per-read allele String allocations
Jaureguy760 Dec 13, 2025
0a15c0b
Use SortedQuerent reuse for overlaps
Jaureguy760 Dec 13, 2025
7fc17b6
Add optional timing breakdown for unified pipeline
Jaureguy760 Dec 13, 2025
1137360
Avoid extra haplotype clones in SNV-only processing
Jaureguy760 Dec 14, 2025
2805169
Reduce unified pair buffer preallocation
Jaureguy760 Dec 14, 2025
2fd2051
Avoid redundant overlap sorting in unified haplotype generation
Jaureguy760 Dec 14, 2025
b64e8b0
Optimize indel boundary mapping via CIGAR walk
Jaureguy760 Dec 14, 2025
e62ea9a
Speed up mapping_filter (byte parsing, fewer allocs)
Jaureguy760 Dec 14, 2025
1680fd2
Bench: use local scratch for RNA INDEL
Jaureguy760 Dec 14, 2025
bf63204
Bench: local scratch workdirs
Jaureguy760 Dec 14, 2025
a2adc5a
Bench: scratch workdirs for WASP1/Python
Jaureguy760 Dec 14, 2025
6b2fdef
Perf: buffer expected-position sidecar writes
Jaureguy760 Dec 14, 2025
cda8248
Bench: make compression threads configurable
Jaureguy760 Dec 14, 2025
30f01b2
Bench: add timing logs and thread controls
Jaureguy760 Dec 14, 2025
63231ca
Tools: simplify thread sweep TSV write
Jaureguy760 Dec 14, 2025
f84f419
Paper: vendor Figure 1 benchmark source data
Jaureguy760 Dec 14, 2025
3f2a07b
quickbench: add SNV parity harness
Jaureguy760 Dec 15, 2025
6ebcaec
quickbench: add INDEL checks and dev harness
Jaureguy760 Dec 15, 2025
69393e3
Fix reverse-strand FASTQ orientation
Jaureguy760 Dec 15, 2025
a20bf40
Speed: fast path for SNV allele swaps
Jaureguy760 Dec 15, 2025
4fef65d
perf: add thread tuning + profiling harness
Jaureguy760 Dec 15, 2025
06cf8bb
perf: reuse decoded BAM seq/qual buffers
Jaureguy760 Dec 15, 2025
c38ad01
perf: tighten FASTQ reverse/qual loops
Jaureguy760 Dec 15, 2025
8467b0e
perf: avoid oversubscribed BAM threads in parallel
Jaureguy760 Dec 15, 2025
c6ecbc1
perf: default compression_threads=1 for 8-core runs
Jaureguy760 Dec 15, 2025
24a42fe
bench: make ATAC SNP unified FASTQ uncompressed
Jaureguy760 Dec 15, 2025
f4adcb1
bench: rerun scripts + scaling combiner (8-thread fair)
Jaureguy760 Dec 15, 2025
230a171
bench: add HG00731 data prep + chr-renamed VCF builder
Jaureguy760 Dec 15, 2025
5b96e84
bench: fix conda activation under SGE data prep
Jaureguy760 Dec 15, 2025
b70e3f3
paper: refresh Panel C ATAC WASP2-Rust benchmarks
Jaureguy760 Dec 15, 2025
c6d5e7a
bench: add Figure 1 finalize qsub helper
Jaureguy760 Dec 15, 2025
efba3bb
bench: ensure ATAC SNP benchmark JSON is valid
Jaureguy760 Dec 15, 2025
96b0dd0
paper: fix Panel C ATAC SNV JSON formatting
Jaureguy760 Dec 15, 2025
dcf1cce
bench: make HG00731 VCF download resilient (https + retries)
Jaureguy760 Dec 15, 2025
ce02fc0
paper: refresh Panel B/D/E benchmarks + Figure 1 outputs
Jaureguy760 Dec 15, 2025
77ce1f6
paper: backfill Panel B scaling points
Jaureguy760 Dec 15, 2025
5bc9f3f
bench: deterministic scaling subsamples
Jaureguy760 Dec 15, 2025
40f8f5c
paper: smooth Rust scaling curves
Jaureguy760 Dec 15, 2025
f141f4b
bench: avoid qstat segfault in scaling jobs
Jaureguy760 Dec 16, 2025
515603d
paper: refresh Panel B scaling (deterministic seeds)
Jaureguy760 Dec 16, 2025
ed4248f
paper: finalize figures 1-4 with scripts and data
Jaureguy760 Jan 22, 2026
b5c6eb7
bench: update scaling and FAIR comparison scripts
Jaureguy760 Jan 22, 2026
68cf6fc
paper: add documentation, figure data, and reproducibility tools
Jaureguy760 Jan 22, 2026
74a132c
chore: extract clean software for mcvickerlab/WASP2 release
Jaureguy760 Jan 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: CI

on:
push:
branches: [master, main, rust-optimization]
pull_request:
branches: [master, main]

jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ['3.9', '3.10', '3.11']

steps:
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install Rust
uses: dtolnay/rust-action@stable

- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install maturin pytest pytest-cov
pip install numpy pandas polars scipy pysam pybedtools typer rich

- name: Build Rust extension
run: |
maturin develop --release -m rust/Cargo.toml

- name: Run tests with coverage
run: |
pytest tests/ --cov=src --cov-report=xml --cov-report=term-missing
env:
PYTHONPATH: ${{ github.workspace }}/src

- name: Upload coverage to Codecov
if: matrix.python-version == '3.10'
uses: codecov/codecov-action@v4
with:
files: ./coverage.xml
fail_ci_if_error: false

lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.10'

- name: Install linters
run: |
pip install black flake8

- name: Check formatting
run: black --check src/ tests/ || true

- name: Lint
run: flake8 src/ tests/ --max-line-length=120 --ignore=E501,W503 || true

rust-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-action@stable

- name: Check Rust
run: |
cd rust
cargo check
cargo clippy -- -D warnings || true
cargo fmt --check || true
52 changes: 52 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Build and Deploy Docs

on:
push:
branches: [master, main, rust-optimization]
workflow_dispatch:

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: "pages"
cancel-in-progress: false

jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.9'

- name: Install dependencies
run: |
pip install sphinx pydata-sphinx-theme sphinx-autodoc-typehints
pip install numpy pandas polars scipy typer rich

- name: Build docs
run: |
cd docs
make html

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: docs/build/html

deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
130 changes: 130 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: WASP2 Tests

on:
push:
branches: [main, claude/**]
pull_request:
branches: [main]
workflow_dispatch:

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11"]

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
bcftools \
bedtools \
samtools \
time

- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install pytest pytest-cov mypy
pip install numpy pandas polars scipy
pip install pysam pybedtools anndata scanpy
pip install typer rich
pip install sphinx sphinx-rtd-theme sphinx-autodoc-typehints
pip install build twine

- name: Verify installations
run: |
python --version
bcftools --version | head -1
bedtools --version
samtools --version | head -1
mypy --version
pytest --version

- name: Run mypy type checking
run: |
echo "Type checking counting module..."
mypy src/counting/ --ignore-missing-imports
echo "Type checking mapping module..."
mypy src/mapping/ --ignore-missing-imports
echo "Type checking analysis module..."
mypy src/analysis/ --ignore-missing-imports
echo "✅ All type checks passed!"

- name: Run regression tests
run: |
echo "Running WASP2 regression test suite..."
python -m pytest tests/regression/ -v --tb=short

- name: Run full pipeline validation
run: |
echo "Validating full WASP2 pipeline..."
bash scripts/run_full_pipeline_baseline.sh
echo "✅ Full pipeline validation complete!"

- name: Check test coverage
run: |
pytest tests/regression/ --cov=src --cov-report=term-missing --cov-report=xml

- name: Upload coverage to artifacts
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.python-version }}
path: coverage.xml
retention-days: 7

- name: Test package installation
run: |
echo "Testing pip installation..."
pip install -e .
wasp2-count --version
wasp2-map --version
wasp2-analyze --version
echo "✅ Package installation successful!"

- name: Build package
run: |
echo "Building distribution packages..."
python -m build
twine check dist/*
echo "✅ Package build successful!"

- name: Build documentation
run: |
echo "Building Sphinx documentation..."
cd docs
make clean html
echo "✅ Documentation build successful!"

- name: Check docs for warnings
run: |
echo "Checking documentation for warnings..."
cd docs
make clean html 2>&1 | tee build.log
# Count warnings (excluding network-related intersphinx warnings)
warning_count=$(grep -i "WARNING" build.log | grep -v "intersphinx" | wc -l)
error_count=$(grep -i "ERROR" build.log | wc -l)
if [ "$error_count" -gt 0 ]; then
echo "❌ Documentation has $error_count errors!"
exit 1
fi
if [ "$warning_count" -gt 0 ]; then
echo "⚠️ Documentation has $warning_count warnings (excluding intersphinx)"
echo "Warnings:"
grep -i "WARNING" build.log | grep -v "intersphinx"
else
echo "✅ Documentation has no warnings!"
fi
Loading
Loading