Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
ea0f68b
Merge pull request #1356 from deeptools/develop
WardDeb Jan 20, 2025
b64cb66
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Jun 22, 2026
47f9fb1
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Jun 24, 2026
bcb6fce
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Jul 10, 2026
2e4aa6d
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Jul 17, 2026
bf414f1
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Jul 24, 2026
890bd26
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Jul 29, 2026
80b38fc
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Aug 5, 2026
70bdbfb
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Aug 15, 2026
4936e09
Merge branch '4.0.0' of github.com:deeptools/deepTools into 4.0.0
WardDeb Sep 3, 2026
958a0eb
update changelog
WardDeb Sep 3, 2026
5c3b42f
mend
WardDeb Sep 3, 2026
51637ea
docs orphan for warnings
WardDeb Sep 3, 2026
b9d17f2
drop doc reqs, fix python docstring
WardDeb Sep 3, 2026
071c90f
drop unused code from new entrypoints
WardDeb Sep 3, 2026
38a9fbb
point rtd to docs req
WardDeb Sep 3, 2026
415b7db
drop mpl from action reqs
WardDeb Sep 3, 2026
90eac52
action to test docs
WardDeb Sep 3, 2026
76855ff
minimal versions, include lock
WardDeb Sep 4, 2026
c75609f
centralize version check deeptools/galaxy, rust version in docs/deept…
WardDeb Sep 4, 2026
0f1d394
include authors
WardDeb Sep 4, 2026
0906566
ensure rust in rtd yaml is an allowed rust version
WardDeb Sep 4, 2026
467dd2f
cleanup readme, https
WardDeb Sep 4, 2026
35e6b1b
docs overhauls, remove plotly refs, update parser
WardDeb Sep 4, 2026
75ef388
rust 1.87 minimum
WardDeb Sep 4, 2026
39774ad
ignore venv
WardDeb Sep 4, 2026
3a25f45
move pytest action over to pixi
WardDeb Sep 4, 2026
060c192
pip as a pixi dep
WardDeb Sep 4, 2026
2096fc1
of course dist upload needs mussllinux builds
WardDeb Sep 4, 2026
9548b45
set stack min for osx build in pixi env
WardDeb Sep 4, 2026
a37ce35
up stack
WardDeb Sep 4, 2026
38b1ec4
100MB stack for osx build ?
WardDeb Sep 4, 2026
4c4a2d1
strip wheels, cap rust version to avoid conda-forge rust build error …
WardDeb Sep 4, 2026
ce38378
https in docs, clarify installation instructions, delete rst
WardDeb Sep 4, 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
38 changes: 0 additions & 38 deletions .github/workflows/pypi.yml

This file was deleted.

19 changes: 19 additions & 0 deletions .github/workflows/test_docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
name: tests_docs
on: [push, pull_request, workflow_dispatch]

permissions:
contents: read

jobs:
build-docs:
name: Build Sphinx documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
with:
environments: default
- name: build docs
run: pixi run docs
90 changes: 20 additions & 70 deletions .github/workflows/test_pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,108 +4,58 @@ on: [push, pull_request, workflow_dispatch]
permissions:
contents: read

defaults:
run:
shell: bash -l {0}

jobs:
check_versions_matches:
name: Check deeptools version matches galaxy tools
name: Check deeptools/galaxy/Rust versions stay in sync
runs-on: ubuntu-latest
if: github.base_ref == 'master'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- name: Check path
run: find /home/runner/work/deepTools/deepTools -name "pyproject.toml"
- name: Get Version of Deeptools
run: echo "deeptools_version=$(grep "version" /home/runner/work/deepTools/deepTools/pyproject.toml | awk '{print substr($NF, 2, length($NF) - 2)}')" >> $GITHUB_ENV
- name: Get Version of Galaxy tools
run: echo "galaxy_deeptools_version=$(grep "token.*TOOL_VERSION" /home/runner/work/deepTools/deepTools/galaxy/wrapper/deepTools_macros.xml | awk -F '>|<' '{print $3}')" >> $GITHUB_ENV
- name: Versions
run: |
echo deeptools version=${deeptools_version}
echo deeptools version in galaxy=${galaxy_deeptools_version}
- name: Fail PR if versions not matching
run: |
if [ -z $galaxy_deeptools_version ]; then
echo "galaxy_deeptools_version not defined change the github action"
exit 1
fi
if [ -z $deeptools_version ]; then
echo "deeptools_version not defined change the github action"
exit 1
fi
if [ "$galaxy_deeptools_version" != "$deeptools_version" ]; then
echo "versions do not match"
exit 1
fi
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: "3.x"
- name: Check version sync
run: python3 scripts/check_version_sync.py
build-linux:
name: Test on Linux
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.12", "3.13", "3.14"]
pixi-env: [py312, py313, py314]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
- uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
environments: ${{ matrix.pixi-env }}
- name: build deeptools
run: |
python -m venv venv
source venv/bin/activate
pip install maturin
maturin develop --release --extras actions
run: pixi run -e ${{ matrix.pixi-env }} build
- name: test deeptools
run: |
source venv/bin/activate
pytest -v
run: pixi run -e ${{ matrix.pixi-env }} test -v
- name: build wheel
run: |
source venv/bin/activate
python -m build
run: pixi run -e ${{ matrix.pixi-env }} python -m build
- name: test wheel
run: |
source venv/bin/activate
pip install dist/*whl
run: pixi run -e ${{ matrix.pixi-env }} bash -c "pip install dist/*.whl"
build-osx:
name: Test on OSX
runs-on: macOS-latest
strategy:
matrix:
python-version: ["3.12", "3.13", "3.14"]
pixi-env: [py312, py313, py314]
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
with:
persist-credentials: false
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
- uses: prefix-dev/setup-pixi@d3f436a425481402e6a95a1d1fc10331c708cd9e # v0.10.2
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install Rust
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
environments: ${{ matrix.pixi-env }}
- name: build deeptools
run: |
python -m venv venv
source venv/bin/activate
pip install maturin
maturin develop --release --extras actions
run: pixi run -e ${{ matrix.pixi-env }} build
- name: test deeptools
run: |
source venv/bin/activate
pytest -v
run: pixi run -e ${{ matrix.pixi-env }} test -v
- name: build wheel
run: |
source venv/bin/activate
python -m build
run: pixi run -e ${{ matrix.pixi-env }} python -m build
- name: test wheel
run: |
source venv/bin/activate
pip install dist/*whl
run: pixi run -e ${{ matrix.pixi-env }} bash -c "pip install dist/*.whl"
43 changes: 2 additions & 41 deletions .github/workflows/wheels.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
name: build wheels
# maturin generate-ci github > .github/workflows/maturin.yml
# Also, see: https://github.com/jackh726/bigtools/blob/master/.github/workflows/release-python.yml
name: build_wheels

on:
push:
Expand Down Expand Up @@ -103,41 +101,6 @@ jobs:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist

# windows:
# runs-on: ${{ matrix.platform.runner }}
# strategy:
# matrix:
# platform:
# - runner: windows-latest
# target: x64
# - runner: windows-latest
# target: x86
# steps:
# - uses: actions/checkout@v4
# - uses: actions/setup-python@v5
# with:
# python-version: 3.x
# architecture: ${{ matrix.platform.target }}
# - name: Install And Configure Dependencies
# env:
# VCPKG_DEFAULT_TRIPLET: ${{ matrix.platform.target }}-windows
# OPENSSL_DIR: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows
# OPENSSL_ROOT: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows
# LZMA_ROOT: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows
# run: |
# vcpkg install openssl liblzma
# - name: Build wheels
# uses: PyO3/maturin-action@v1
# with:
# target: ${{ matrix.platform.target }}
# args: --release --out dist --find-interpreter
# # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
# - name: Upload wheels
# uses: actions/upload-artifact@v4
# with:
# name: wheels-windows-${{ matrix.platform.target }}
# path: dist

macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
Expand All @@ -159,7 +122,6 @@ jobs:
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
# sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload wheels
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
Expand All @@ -177,7 +139,6 @@ jobs:
with:
command: sdist
args: --out dist
# sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
- name: Upload sdist
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
Expand All @@ -188,7 +149,7 @@ jobs:
name: Release
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
needs: [linux, macos, sdist]
needs: [linux, musllinux, macos, sdist]
permissions:
id-token: write
contents: write
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ tool_test*
env.yml

# Rust stuff
Cargo.lock
target*

# snakemake
Expand All @@ -73,3 +72,5 @@ target*

# pixi
.pixi*

.venv
8 changes: 8 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,11 @@ repos:
rev: v1.11.0
hooks:
- id: zizmor
- repo: local
hooks:
- id: check-version-sync
name: check Rust versions (docs - toml) and deeptools versions (toml - galaxy) to stay in sync
entry: python3 scripts/check_version_sync.py
language: system
files: ^(Cargo\.toml|pyproject\.toml|\.readthedocs\.yaml|galaxy/wrapper/deepTools_macros\.xml)$
pass_filenames: false
7 changes: 4 additions & 3 deletions .readthedocs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ version: 2
build:
os: ubuntu-22.04
tools:
python: "3.12"
rust: "1.82"
python: "3.14"
rust: "1.91"
apt_packages:
- clang

Expand All @@ -15,4 +15,5 @@ python:
install:
- method: pip
path: .
- requirements: docs/requirements.txt
extra_requirements:
- docs
27 changes: 27 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,30 @@
4.0.0
* 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 now 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)

3.5.6
* minimal supported python version raised to 3.9 (numpy >= 2 support); NaN handling switched to np.nan
* drop conda usage in pypi/test/planemo CI in favor of pip installs; samtools now pulled from conda-forge/bioconda where still needed in CI
* include GRCm39 in the effective genome size docs
* add ARM/osx specific installation instructions
* computeMatrix: ensure --beforeRegionStartLength/-b and --afterRegionStartLength/-a are always treated as positive values
* minor --version output fixes in plotCoverage and multiBigwigSummary

3.5.5
* drop support for python 3.7
* doc fixes (argparse properly displayed, minor changes in installation instructions)
Expand Down
Loading
Loading