Skip to content

Commit 0693cc4

Browse files
authored
4.0.0 (#1452)
- new Rust-backed core for bamCoverage, bamCompare, computeMatrix, alignmentSieve and multiBamSummary (rayon multithreading, bigtools-based bigWig I/O), replacing the pure-Python implementations for these five tools; the previous Python implementations remain available as bamCoverage_old, bamCompare_old, computeMatrix_old, alignmentSieve_old and multiBamSummary_old during the transition, but will be removed in a future release - gzipped GTF/BED region files are supported in multiBamSummary, computeMatrix and alignmentSieve; gzipped blacklist files are supported in all five Rust-backed tools (multiBamSummary, computeMatrix, alignmentSieve, bamCompare, bamCoverage) - --exactScaling is removed as this is the only scaling option available with the new backend - --ignoreDuplicates has been removed from the bamCoverage and bamCompare tools. Duplicate reads can be removed via the --samFlagExclude option (assuming the provided BAM file has duplicate reads marked) plotPCA re-implemented with a lightweight scipy/numpy SVD backend. Proper handling of --transpose, --log2/--rowCenter and --ntop options. - plotly backend removed entirely; plotCorrelation, plotPCA, plotHeatmap, plotProfile and plotEnrichment now use matplotlib, with a new optional --ggplot theme, and computeGCBias's --plotFileFormat plotly option has also been removed - removed the standalone cm.py colormap module; colormap handling now lives in the plotting tools directly plot labels now show sample names only per default (dropped .filtered.bam/.bed suffixes) - prebuilt wheels now cover Linux manylinux_2_28 and musllinux_1_2 (x86_64 + aarch64) and macOS (Intel + Apple Silicon), built via maturin - CI overhauled: pytest/rust/planemo test workflows split up (test_pytest.yml, test_rust.yml, test_planemo.yml), zizmor hardening for GitHub Actions, dependabot enabled - extensive new pytest/cargo test coverage across the Rust-backed tools and plotCorrelation/plotPCA/plotFingerprint data outputs - --nanAfterEnd doesn't rescale the inner region anymore in reference-point mode - BED output doesn't show wrong blockstart values anymore - blacklist filtering is done at bp level instead of genome chunk level for rewritten tools - alignmentSieve output order matches input order exactly - --missingDataAsZero no longer takes bases exceeding chromosome bounds as 0 values but rather purges the bins large scale values precision slightly altered with new backend (f32 vs f64)
1 parent ea0f68b commit 0693cc4

581 files changed

Lines changed: 38163 additions & 5300 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/dependabot.yml‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
version: 2
2+
updates:
3+
- package-ecosystem: github-actions
4+
directory: /
5+
schedule:
6+
interval: weekly
7+
groups:
8+
dependencies:
9+
patterns:
10+
- "*"

‎.github/workflows/planemo.yml‎

Lines changed: 0 additions & 60 deletions
This file was deleted.

‎.github/workflows/pypi.yml‎

Lines changed: 0 additions & 33 deletions
This file was deleted.

‎.github/workflows/test.yml‎

Lines changed: 0 additions & 105 deletions
This file was deleted.

‎.github/workflows/test_docs.yml‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
name: tests_docs
2+
on: [push, pull_request, workflow_dispatch]
3+
4+
permissions:
5+
contents: read
6+
7+
jobs:
8+
build-docs:
9+
name: Build Sphinx documentation
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
13+
with:
14+
persist-credentials: false
15+
- uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
16+
with:
17+
environments: default
18+
- name: build docs
19+
run: pixi run docs

‎.github/workflows/test_planemo.yml‎

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: tests_planemo
2+
on: [push, pull_request, workflow_dispatch]
3+
4+
permissions:
5+
contents: read
6+
7+
env:
8+
GALAXY_BRANCH: release_26.0
9+
10+
defaults:
11+
run:
12+
shell: bash -l {0}
13+
14+
jobs:
15+
planemo_test:
16+
name: Planemo test (${{ matrix.tool }})
17+
runs-on: ubuntu-latest
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
tool:
22+
- alignmentSieve
23+
- bamCompare
24+
- bamCoverage
25+
- bamPEFragmentSize
26+
- bigwigCompare
27+
- bigwigAverage
28+
- computeGCBias
29+
- computeMatrix
30+
- computeMatrixOperations
31+
- correctGCBias
32+
- estimateReadFiltering
33+
- multiBamSummary
34+
- multiBigwigSummary
35+
- plotCorrelation
36+
- plotCoverage
37+
- plotEnrichment
38+
- plotFingerprint
39+
- plotHeatmap
40+
- plotPCA
41+
- plotProfiler
42+
steps:
43+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
44+
with:
45+
persist-credentials: false
46+
- uses: conda-incubator/setup-miniconda@8ee1f361103df19b6f8c8655fd3967a8ecb162d5 # v4.0.1
47+
with:
48+
miniconda-version: "latest"
49+
conda-remove-defaults: true
50+
auto-activate: true
51+
python-version: "3.12"
52+
channels: conda-forge,bioconda
53+
- name: get samtools
54+
run: |
55+
conda install -c conda-forge -c bioconda samtools
56+
- name: pip install
57+
run: |
58+
pip install .[actions]
59+
- name: fix test.bw symlink
60+
run: |
61+
unlink galaxy/wrapper/test-data/test.bw
62+
cp pydeeptools/deeptools/test/test_heatmapper/test.bw galaxy/wrapper/test-data/test.bw
63+
- name: planemo test
64+
run: |
65+
planemo test --no_dependency_resolution \
66+
--galaxy_branch ${{ env.GALAXY_BRANCH }} \
67+
--install_galaxy \
68+
galaxy/wrapper/${{ matrix.tool }}.xml
69+
- name: upload test report
70+
if: always()
71+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
72+
with:
73+
name: "Tool test output ${{ matrix.tool }}"
74+
path: tool_test_output*

‎.github/workflows/test_pytest.yml‎

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
name: tests_pytest
2+
on: [push, pull_request, workflow_dispatch]
3+
4+
permissions:
5+
contents: read
6+
7+
jobs:
8+
check_versions_matches:
9+
name: Check deeptools/galaxy/Rust versions stay in sync
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
13+
with:
14+
persist-credentials: false
15+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
16+
with:
17+
python-version: "3.x"
18+
- name: Check version sync
19+
run: python3 scripts/check_version_sync.py
20+
build-linux:
21+
name: Test on Linux
22+
runs-on: ubuntu-latest
23+
strategy:
24+
matrix:
25+
pixi-env: [py312, py313, py314]
26+
steps:
27+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
28+
with:
29+
persist-credentials: false
30+
- uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
31+
with:
32+
environments: ${{ matrix.pixi-env }}
33+
- name: build deeptools
34+
run: pixi run -e ${{ matrix.pixi-env }} build
35+
- name: test deeptools
36+
run: pixi run -e ${{ matrix.pixi-env }} test -v
37+
- name: build wheel
38+
run: pixi run -e ${{ matrix.pixi-env }} python -m build
39+
- name: test wheel
40+
run: pixi run -e ${{ matrix.pixi-env }} bash -c "pip install dist/*.whl"
41+
build-osx:
42+
name: Test on OSX
43+
runs-on: macOS-latest
44+
strategy:
45+
matrix:
46+
pixi-env: [py312, py313, py314]
47+
steps:
48+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
49+
with:
50+
persist-credentials: false
51+
- uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
52+
with:
53+
environments: ${{ matrix.pixi-env }}
54+
- name: build deeptools
55+
run: pixi run -e ${{ matrix.pixi-env }} build
56+
- name: test deeptools
57+
run: pixi run -e ${{ matrix.pixi-env }} test -v
58+
- name: build wheel
59+
run: pixi run -e ${{ matrix.pixi-env }} python -m build
60+
- name: test wheel
61+
run: pixi run -e ${{ matrix.pixi-env }} bash -c "pip install dist/*.whl"

‎.github/workflows/test_rust.yml‎

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: tests_rust
2+
on:
3+
push:
4+
pull_request:
5+
workflow_dispatch:
6+
schedule:
7+
- cron: "0 0 * * 0"
8+
9+
permissions:
10+
contents: read
11+
12+
jobs:
13+
cargo_test:
14+
name: run cargo test
15+
runs-on: ubuntu-latest
16+
steps:
17+
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
18+
with:
19+
persist-credentials: false
20+
- run: rustup update stable && rustup default stable
21+
- name: cargo build
22+
run: cargo build --verbose
23+
- name: cargo test
24+
run: cargo test --verbose

0 commit comments

Comments
 (0)