Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
cad603e
constrain new CASAVA regex
pdimens Jul 17, 2026
6198c72
update link
pdimens Jul 17, 2026
f4cf8a3
move to own folder, output tables
pdimens Jul 20, 2026
22ba687
add static reports
pdimens Jul 20, 2026
094813d
split monolith workflow into --self-contained option
pdimens Jul 20, 2026
33eecd8
fix path
pdimens Jul 20, 2026
98d6779
spotfixes
pdimens Jul 20, 2026
091d75d
fix
pdimens Jul 20, 2026
b3f821b
fix typo
pdimens Jul 21, 2026
2f6ead0
add standard support
pdimens Jul 21, 2026
406cb0b
validation support for standard
pdimens Jul 21, 2026
8f09756
rm line
pdimens Jul 21, 2026
c8bf31f
fixes
pdimens Jul 22, 2026
7c64485
fixes
pdimens Jul 22, 2026
b6164cb
fix copy-paste error
pdimens Jul 24, 2026
b525ba1
update report docs
pdimens Jul 24, 2026
4e3d6c3
update
pdimens Jul 24, 2026
8dcccf4
add sam compliance, leave todo
pdimens Jul 25, 2026
ea25bb0
add multithreading
pdimens Jul 29, 2026
7f2a03e
add cov
pdimens Jul 29, 2026
bdb81a9
swap bwamem2 with minibwa
pdimens Jul 29, 2026
816aba1
initial arachne support
pdimens Jul 29, 2026
2e341db
correct report name
pdimens Jul 29, 2026
214a658
improved validation
pdimens Jul 30, 2026
e82d3fd
rm todo
pdimens Jul 30, 2026
5740dfb
restructure align
pdimens Jul 30, 2026
627ac28
finalize
pdimens Jul 30, 2026
8be4e82
fix header creation, simplify and make idomatic
pdimens Aug 3, 2026
04e95a2
add hifi
pdimens Aug 3, 2026
41d2063
update and consolidate
pdimens Aug 3, 2026
0f0b458
update changelog
pdimens Aug 3, 2026
92c0817
fix docstring
pdimens Aug 4, 2026
1037f8b
update link
pdimens Aug 4, 2026
6ffb4bb
simplify
pdimens Aug 4, 2026
780a9c0
cumulative dist
pdimens Aug 4, 2026
ddbf273
bound Y axis
pdimens Aug 4, 2026
5512668
add arachne
pdimens Aug 5, 2026
cdd2f2a
fix docs
pdimens Aug 5, 2026
f3b188c
Merge branch 'main' into standalone_reports
pdimens Aug 5, 2026
0eee59e
don't log
pdimens Aug 5, 2026
68545ae
coderabbit spot-fixes
pdimens Aug 5, 2026
6a4643d
add minimap to appropriate places
pdimens Aug 5, 2026
c313308
add link
pdimens Aug 6, 2026
bae0177
spotfixes
pdimens Aug 6, 2026
b8eaea2
fix syntax
pdimens Aug 6, 2026
2957e92
replace xeus-python with ipython
pdimens Aug 6, 2026
1eeccf2
fix bugs
pdimens Aug 6, 2026
4d0eecc
update software list
pdimens Aug 6, 2026
2a3796b
fix
pdimens Aug 6, 2026
4af5b80
add log and error
pdimens Aug 6, 2026
55868d8
fix
pdimens Aug 6, 2026
713f23a
better error printing when tool aint found
pdimens Aug 6, 2026
a01dbd8
simplify
pdimens Aug 6, 2026
12481ee
force rerun of tests
pdimens Aug 6, 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
27 changes: 16 additions & 11 deletions .github/filters.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ validate: &validate
- 'test/bam/**'
- 'harpy/utils/check_bam.py'
- 'harpy/utils/check_fastq.py'
- 'harpy/report/notebooks/validate_fastq.ipynb'
- 'harpy/report/notebooks/validate_bam.ipynb'
- 'harpy/notebooks/validate_fastq.ipynb'
- 'harpy/notebooks/validate_bam.ipynb'
deconvolve: &deconvolve
- *common
- *environments
Expand All @@ -44,15 +44,20 @@ qc: &qc
- 'harpy/utils/bx_stats_fq.py'
- 'harpy/validation/fastq.py'
- 'test/fastq/**'
- 'harpy/notebooks/fastp_qc.ipynb'
- 'harpy/notebooks/qc_bx_stats.ipynb'
align: &align
- *common
- *environments
- 'harpy/utils/standardize/standardize.go'
- 'harpy/commands/align.py'
- 'harpy/snakefiles/align_bwa.smk'
- 'harpy/snakefiles/align_strobe.smk'
- 'harpy/report/notebooks/align_stats.ipynb'
- 'harpy/report/notebooks/align_lrstats.ipynb'
- 'harpy/report/notebooks/samtools_stats.ipynb'
- 'harpy/snakefiles/align_minimap.smk'
- 'harpy/snakefiles/align.smk'
- 'harpy/notebooks/align_stats.ipynb'
- 'harpy/notebooks/align_lrstats.ipynb'
- 'harpy/notebooks/samtools_stats.ipynb'
Comment thread
pdimens marked this conversation as resolved.
- 'harpy/utils/bx_stats_sam.py'
- 'harpy/utils/molecule_coverage.py'
- 'harpy/validation/fasta.py'
Expand All @@ -64,7 +69,7 @@ snp: &snp
- 'harpy/commands/snp.py'
- 'harpy/snakefiles/snp_mpileup.smk'
- 'harpy/snakefiles/snp_freebayes.smk'
- 'harpy/report/notebooks/bcftools_stats.ipynb'
- 'harpy/notebooks/bcftools_stats.ipynb'
- 'harpy/validation/fasta.py'
- 'harpy/validation/xam.py'
- 'test/bam/**'
Expand All @@ -73,8 +78,8 @@ impute: &impute
- *environments
- 'harpy/commands/impute.py'
- 'harpy/snakefiles/impute.smk'
- 'harpy/report/notebooks/impute.ipynb'
- 'harpy/report/notebooks/stitch_collate.ipynb'
- 'harpy/notebooks/impute.ipynb'
- 'harpy/notebooks/stitch_collate.ipynb'
- 'harpy/validation/fasta.py'
- 'harpy/validation/xam.py'
- 'test/bam/**'
Expand All @@ -84,7 +89,7 @@ leviathan: &leviathan
- *environments
- 'harpy/commands/sv.py'
- 'harpy/snakefiles/sv_leviathan.smk'
- 'harpy/report/notebooks/sv.ipynb'
- 'harpy/notebooks/sv.ipynb'
- 'harpy/validation/fasta.py'
- 'harpy/validation/xam.py'
- 'test/bam/**'
Expand All @@ -93,7 +98,7 @@ naibr: &naibr
- *environments
- 'harpy/commands/sv.py'
- 'harpy/snakefiles/sv_naibr.smk'
- 'harpy/report/notebooks/sv.ipynb'
- 'harpy/notebooks/sv.ipynb'
- 'harpy/utils/infer_sv.py'
- 'harpy/validation/fasta.py'
- 'harpy/validation/xam.py'
Expand All @@ -109,7 +114,7 @@ phase: &phase
- 'test/bam/**'
- 'test/vcf/test.bcf'
- 'test/vcf/test.phased.bcf'
- 'harpy/report/notebooks/hapcut.ipynb'
- 'harpy/notebooks/hapcut.ipynb'
- 'harpy/utils/parse_phaseblocks.py'
assembly: &assembly
- *common
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,10 @@ jobs:
run: |
harpy align bwa --quiet 2 -x "-A 2" test/genome/genome.fasta.gz test/fastq && \
ls -lh Align/bwa
- name: test minimap
run: |
harpy align minimap --quiet 2 test/genome/genome.fasta.gz test/fastq && \
ls -lh Align/minimap

snp:
needs: changes
Expand Down
27 changes: 26 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,26 @@
# New
## QC
- replace multiqc report with native harpy report
## Align
- BWAMEM2 has been replaced with minibwa. Long live BWA!
- it's much faster, and takes much less time to index a reference
- coverage depth added to aggregate report for processed alignments
- minimap2 added back in (with extra perks) for long-read compatability
- called with `harpy align minimap`

## Report
- harpy reports can be converted to less-nice but functional standalone HTML files
- this feature is accessed using `harpy report static`
- to accomodate this, `harpy report` (live report website) is now `harpy report live`

# Changes
## Align
- `-d` (molecule distance threshold) has its default restored to 50kb since this value is used exclusively for reporting and does not alter the data

## misc
- removed FASTA format validation because it can be dreadfully slow with existing tools



## Report
- harpy reports can be converted to less-nice but functional standalone HTML files
Expand All @@ -14,4 +34,9 @@
## misc
- constrain CASAVA regex in FASTQ file validation so it doesn't trigger false positives when new CASAVA appears in unexpected places
- [internal] notebooks no longer a submodule/subdirectory of `harpy.report`
- utility `check_fastq.py` no longer employs globals, instead uses a sensible class system
- utility `check_fastq.py` no longer employs globals, instead uses a sensible class system
- add multithreading to pre-workflow VCF and XAM file validation and parsing
- [internal-ish] the bwa, strobealign, and minimap2 workflows are nearly identical except for the reference preprocessing and alignment, so to minimize redundancy and duplication, those workflows have a single `align.smk` that imports a second snakefile `align_{aligner}.smk` that handles just the preprocessing and direct alignment for those aligners, then hands off to `align.smk` for all the downstream things (dedup, sorting, reports, etc)

# Documentation
- the pages for bwa, strobealign, and minimap have been consolidated into a single page bc they are nearly identical
14 changes: 7 additions & 7 deletions docs/Commands/align/align.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@ will need to align them to a reference genome before you can call variants.
Harpy offers several aligners for this purpose:

{.compact .clean .whitespace-nowrap}
| aligner | speed | repository | publication |
|:-------------------------|:-------------:|:------------------------------------------------:|:---------------------------------------------------:|
| [BWA](bwa.md) | fast ⚡ | [github](https://github.com/lh3/bwa) | [paper](http://arxiv.org/abs/1303.3997) |
| [strobealign](strobe.md) | super fast ⚡⚡ | [github](https://github.com/ksahlin/strobealign) | [paper](https://doi.org/10.1186/s13059-022-02831-7) |
| command | aligner | best for | repository | publication |
| :------ | :---------- | :---------- | -----------------------------------------------: | :----------------------------------------------------: |
| bwa | minibwa | general use | [github](https://github.com/lh3/minibwa) | [preprint](https://github.com/lh3/minibwa) |
| minimap | minimap2 | long reads | [github](https://github.com/lh3/minimap2) | [paper](https://doi.org/10.1093/bioinformatics/bty191) |
| strobe | strobealign | speed | [github](https://github.com/ksahlin/strobealign) | [paper](https://doi.org/10.1186/s13059-022-02831-7) |

Neither of these are linked-read aware aligners, but Harpy transfers the barcode information from the sequence headers into the alignments and will
assign molecule identifiers (`MI:i` SAM tags) based on these barcodes and the [molecule distance threshold](../../Getting_Started/linked_read_data.md#barcode-thresholds).
Neither of these are linked-read aware aligners, but Harpy transfers the barcode information from the sequence headers into the alignments.

## Non linked-read WGS data
Starting with Harpy `v2.x`, you can skip the workflow
routines that do things specific to linked reads, meaning you can comfortably use
[!badge corners="pill" text="harpy align bwa"](bwa.md) and [!badge corners="pill" text="harpy align strobe"](strobe.md) to align your WGS sequence data.
[!badge corners="pill" text="harpy align bwa"](standard.md) and [!badge corners="pill" text="harpy align strobe"](standard.md) to align your WGS sequence data.
- version `2.0-2.7` : `--ignore-bx`
- version `>2.7` : `--lr-type none`
- version `>=3.0`: autodetected or forced with `--unlinked`
Expand Down
Loading