diff --git a/.github/test_and_build.yml b/.github/test_and_build.yml
deleted file mode 100644
index 0d1c77b20d..0000000000
--- a/.github/test_and_build.yml
+++ /dev/null
@@ -1,20 +0,0 @@
-channels:
- - conda-forge
- - bioconda
-dependencies:
- - python > 3.7
- - numpy
- - scipy
- - flake8
- - pysam
- - deeptoolsintervals
- - pytest
- - samtools
- - py2bit
- - pyBigWig
- - twine
- - pip
- - tomli # remove dependency when lowest supported version is py 3.11
- - pip:
- - build
- - planemo
\ No newline at end of file
diff --git a/.github/workflows/planemo.yml b/.github/workflows/planemo.yml
index 067a303ccb..40d09cb51e 100644
--- a/.github/workflows/planemo.yml
+++ b/.github/workflows/planemo.yml
@@ -2,16 +2,12 @@ name: Planemo
on: [push, pull_request]
env:
- GALAXY_BRANCH: release_23.1
+ GALAXY_BRANCH: release_24.1
defaults:
run:
shell: bash -l {0}
-# setup micromamba doesn't work as galaxy setup by planemo requires conda.
-# installing conda over into micromamba built env screws up the PATH
-# setup-miniconda + changing over to libmamba to solve is the easiest workaround
-
jobs:
planemo_test:
name: Planemo test
@@ -20,26 +16,22 @@ jobs:
matrix:
chunk: [1, 2, 3]
steps:
- - uses: actions/checkout@v3
- - uses: conda-incubator/setup-miniconda@v2
+ - uses: actions/checkout@v4
+ - uses: conda-incubator/setup-miniconda@v3
with:
miniconda-version: "latest"
auto-activate-base: true
- - name: setup env
+ python-version: "3.12"
+ - name: get samtools
run: |
- conda env list
- conda install -n base conda-libmamba-solver
- conda config --set solver libmamba
- conda env create -f .github/test_and_build.yml -n test_and_build
+ conda install -c conda-forge -c bioconda samtools
- name: pip install
run: |
- conda activate test_and_build
- pip install .
+ pip install .[actions]
- name: planemo
run: |
- conda activate test_and_build
./.planemo.sh ${{ matrix.chunk }} ${{ env.GALAXY_BRANCH }}
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
with:
name: 'Tool test output ${{ matrix.chunk }}'
path: upload
@@ -47,29 +39,17 @@ jobs:
name: Combine chunked test results
needs: planemo_test
runs-on: ubuntu-latest
- strategy:
- matrix:
- python-version: ['3.8', '3.11']
steps:
- - uses: actions/download-artifact@v3
+ - uses: actions/download-artifact@v4
with:
path: artifacts
- - uses: actions/setup-python@v4
- with:
- python-version: ${{ matrix.python-version }}
- - name: Cache .cache/pip
- uses: actions/cache@v3
- id: cache-pip
- with:
- path: ~/.cache/pip
- key: pip_cache_py_${{ matrix.python-version }}_gxy_${{ env.GALAXY_BRANCH }}
- name: Combine outputs
uses: galaxyproject/planemo-ci-action@v1
id: combine
with:
mode: combine
html-report: true
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
with:
name: 'All tool test results'
path: upload
diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml
index a04d98c221..a7f631629d 100644
--- a/.github/workflows/pypi.yml
+++ b/.github/workflows/pypi.yml
@@ -15,15 +15,14 @@ jobs:
name: upload to pypi
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: mamba-org/setup-micromamba@main
+ - uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
with:
- environment-file: .github/test_and_build.yml
- cache-downloads: true
- environment-name: test_and_build
+ python-version: '3.12'
+ cache: 'pip'
- name: build
run: |
- micromamba activate test_and_build
+ pip install .[actions]
rm -f dist/*
python -m build
- name: upload
@@ -31,5 +30,4 @@ jobs:
TWINE_USERNAME: "__token__"
TWINE_PASSWORD: ${{ secrets.pypi_password }}
run: |
- micromamba activate test_and_build
twine upload dist/*
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 07ffd664d5..201633d0f5 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -11,7 +11,7 @@ jobs:
runs-on: ubuntu-latest
if: github.base_ref == 'master'
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Check path
run: find /home/runner/work/deepTools/deepTools -name "pyproject.toml"
- name: Get Version of Deeptools
@@ -40,30 +40,26 @@ jobs:
name: Test on Linux
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
- - uses: mamba-org/setup-micromamba@main
+ - uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
with:
- environment-file: .github/test_and_build.yml
- cache-downloads: true
- environment-name: test_and_build
+ python-version: '3.12'
+ cache: 'pip'
- name: pip install
run: |
- micromamba activate test_and_build
- pip install .
+ pip install .[actions]
- name: PEP8
run: |
micromamba activate test_and_build
flake8 . --exclude=.venv,.build,build --ignore=E501,F403,E402,F999,F405,E722,W504,W605
- name: Test deepTools
run: |
- micromamba activate test_and_build
pytest -v
- name: make an artifact
run: |
- micromamba activate test_and_build
rm -f dist/*
python -m build
- - uses: actions/upload-artifact@v3
+ - uses: actions/upload-artifact@v4
with:
name: "distfiles"
path: "dist"
@@ -73,14 +69,14 @@ jobs:
needs: build-linux
strategy:
matrix:
- python-version: ['3.8','3.9','3.10', '3.11', '3.12']
+ python-version: ['3.9','3.10', '3.11', '3.12']
steps:
- - uses: actions/checkout@v3
- - uses: actions/download-artifact@v3
+ - uses: actions/checkout@v4
+ - uses: actions/download-artifact@v4
with:
name: "distfiles"
path: ~/dist/
- - uses: actions/setup-python@v4
+ - uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
@@ -96,17 +92,14 @@ jobs:
name: Test on OSX
runs-on: macOS-latest
steps:
- - uses: actions/checkout@v3
- - uses: mamba-org/setup-micromamba@main
+ - uses: actions/checkout@v4
+ - uses: actions/setup-python@v5
with:
- environment-file: .github/test_and_build.yml
- cache-downloads: true
- environment-name: test_and_build
+ python-version: '3.12'
+ cache: 'pip'
- name: pip install
run: |
- micromamba activate test_and_build
- pip install .
+ pip install .[actions]
- name: Test deepTools
run: |
- micromamba activate test_and_build
pytest -v
diff --git a/deeptools/bigwigAverage.py b/deeptools/bigwigAverage.py
index 9dd12acdea..5228ddf08f 100644
--- a/deeptools/bigwigAverage.py
+++ b/deeptools/bigwigAverage.py
@@ -55,8 +55,7 @@ def parse_arguments(args=None):
def getType(fname):
"""
- Tries to determine if a file is a wiggle file a bigWig file.
- Returns 'wiggle' if the file name ends with .wig, otherwise 'bigwig'
+ Tries to determine if a file is a wiggle, a bedgraph, or a bigWig file.
"""
if fname.endswith(".wig") or fname.endswith(".wiggle"):
return "wiggle"
diff --git a/deeptools/bigwigCompare.py b/deeptools/bigwigCompare.py
index a4501d45c4..4662b2b36f 100644
--- a/deeptools/bigwigCompare.py
+++ b/deeptools/bigwigCompare.py
@@ -99,8 +99,7 @@ def parse_arguments(args=None):
def getType(fname):
"""
- Tries to determine if a file is a wiggle file or a bigWig file.
- Returns 'wiggle' if the file name ends with .wig, otherwise 'bigwig'
+ Tries to determine if a file is a wiggle, a bedgraph or a bigWig.
"""
if fname.endswith(".wig") or fname.endswith(".wiggle"):
return "wiggle"
diff --git a/deeptools/computeMatrix.py b/deeptools/computeMatrix.py
index 62a95657cc..02cc1fd4ed 100644
--- a/deeptools/computeMatrix.py
+++ b/deeptools/computeMatrix.py
@@ -355,6 +355,14 @@ def process_args(args=None):
if args.quiet is True:
args.verbose = False
+ # Ensure before and after region length is positive
+ if args.beforeRegionStartLength < 0:
+ print(f"beforeRegionStartLength changed from {args.beforeRegionStartLength} into {abs(args.beforeRegionStartLength)}")
+ args.beforeRegionStartLength = abs(args.beforeRegionStartLength)
+ if args.afterRegionStartLength < 0:
+ print(f"afterRegionStartLength changed from {args.afterRegionStartLength} into {abs(args.afterRegionStartLength)}")
+ args.afterRegionStartLength = abs(args.afterRegionStartLength)
+
if args.command == 'scale-regions':
args.nanAfterEnd = False
args.referencePoint = None
diff --git a/deeptools/computeMatrixOperations.py b/deeptools/computeMatrixOperations.py
index 6b3272d4bd..0224f00a39 100755
--- a/deeptools/computeMatrixOperations.py
+++ b/deeptools/computeMatrixOperations.py
@@ -546,7 +546,7 @@ def cbindMatrices(hm, args):
# Add on additional NA initialized columns
ncol = hm.matrix.matrix.shape[1]
hm.matrix.matrix = np.hstack((hm.matrix.matrix, np.empty(hm2.matrix.matrix.shape)))
- hm.matrix.matrix[:, ncol:] = np.NAN
+ hm.matrix.matrix[:, ncol:] = np.nan
# Update the values
for idx2, group in enumerate(hm2.parameters["group_labels"]):
diff --git a/deeptools/heatmapper.py b/deeptools/heatmapper.py
index f67afaf4da..f86b85e234 100644
--- a/deeptools/heatmapper.py
+++ b/deeptools/heatmapper.py
@@ -376,7 +376,7 @@ def compute_sub_matrix_worker(self, chrom, start, end, score_file_list, paramete
# create an empty matrix to store the values
sub_matrix = np.zeros((len(regions), matrix_cols))
- sub_matrix[:] = np.NAN
+ sub_matrix[:] = np.nan
j = 0
sub_regions = []
diff --git a/deeptools/multiBigwigSummary.py b/deeptools/multiBigwigSummary.py
index f7231921d4..3a5bda19ab 100644
--- a/deeptools/multiBigwigSummary.py
+++ b/deeptools/multiBigwigSummary.py
@@ -41,7 +41,7 @@ def parse_arguments(args=None):
conflict_handler='resolve')
parser.add_argument('--version', action='version',
- version='multiBigwigSummary {}'.format(version('deeptools')))
+ version='%(prog)s {}'.format(version('deeptools')))
subparsers = parser.add_subparsers(
title="commands",
dest='command',
diff --git a/deeptools/plotCoverage.py b/deeptools/plotCoverage.py
index a3235955c9..464375c7a3 100755
--- a/deeptools/plotCoverage.py
+++ b/deeptools/plotCoverage.py
@@ -50,7 +50,7 @@ def parse_arguments(args=None):
'help: plotCoverage -h / plotCoverage --help\n')
parser.add_argument('--version', action='version',
- version='plotCoverage {}'.format(version('deeptools')))
+ version='%(prog)s {}'.format(version('deeptools')))
return parser
diff --git a/deeptools/plotFingerprint.py b/deeptools/plotFingerprint.py
index 3adce87ace..a5a468802a 100755
--- a/deeptools/plotFingerprint.py
+++ b/deeptools/plotFingerprint.py
@@ -203,10 +203,10 @@ def getCHANCE(args, idx, mat):
"""
# Get the index of the reference sample
if args.JSDsample not in args.bamfiles:
- return [np.NAN, np.NAN, np.NAN]
+ return [np.nan, np.nan, np.nan]
refIdx = args.bamfiles.index(args.JSDsample)
if refIdx == idx:
- return [np.NAN, np.NAN, np.NAN]
+ return [np.nan, np.nan, np.nan]
subMatrix = np.copy(mat[:, [idx, refIdx]])
subMatrix[np.isnan(subMatrix)] = 0
@@ -272,10 +272,10 @@ def getJSD(args, idx, mat):
# Get the index of the reference sample
if args.JSDsample not in args.bamfiles:
- return np.NAN
+ return np.nan
refIdx = args.bamfiles.index(args.JSDsample)
if refIdx == idx:
- return np.NAN
+ return np.nan
# These will hold the coverage histograms
chip = np.zeros(MAXLEN, dtype=int)
@@ -339,7 +339,7 @@ def signalAndBinDist(x):
if abs(sum(PMFinput) - 1) > 0.01 or abs(sum(PMFchip) - 1) > 0.01:
sys.stderr.write("Warning: At least one PMF integral is significantly different from 1! The JSD will not be returned")
- return np.NAN
+ return np.nan
# Compute the JSD from the PMFs
M = (PMFinput + PMFchip) / 2.0
diff --git a/docs/content/feature/effectiveGenomeSize.rst b/docs/content/feature/effectiveGenomeSize.rst
index e988b18e14..73c41ffaaf 100644
--- a/docs/content/feature/effectiveGenomeSize.rst
+++ b/docs/content/feature/effectiveGenomeSize.rst
@@ -23,6 +23,8 @@ The effective genome size for a number of genomes using this method is given bel
+---------------+------------------+
|GRCm38 | 2652783500 |
+---------------+------------------+
+|GRCm39 | 2654621783 |
++---------------+------------------+
|dm3 | 162367812 |
+---------------+------------------+
|dm6 | 142573017 |
@@ -44,18 +46,18 @@ These are then based on the read length.
We can approximate these values for various read lengths using the `khmer program `__ program and ``unique-kmers.py`` in particular.
A table of effective genome sizes given a read length using this method is provided below:
-+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
-|Read length | GRCh37 | GRCh38 | T2T/CHM13CAT_v2 | GRCm37 | GRCm38 | dm3 | dm6 | GRCz10 | GRCz11 | WBcel235 | TAIR10 |
-+=================+=================+=================+=================+=================+=================+=================+=================+=================+=================+=================+=================+
-|50 | 2685511454 | 2701495711 | 2725240337 | 2304947876 | 2308125299 | 130428510 | 125464678 | 1195445541 | 1197575653 | 95159402 | 114339094 |
-+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
-|75 | 2736124898 | 2747877702 | 2786136059 | 2404646149 | 2407883243 | 135004387 | 127324557 | 1251132611 | 1250812288 | 96945370 | 115317469 |
-+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
-|100 | 2776919708 | 2805636231 | 2814334875 | 2462480910 | 2467481008 | 139647132 | 129789773 | 1280188944 | 1280354977 | 98259898 | 118459858 |
-+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
-|150 | 2827436883 | 2862010428 | 2931551487 | 2489384085 | 2494787038 | 144307658 | 129940985 | 1312207019 | 1311832909 | 98721103 | 118504138 |
-+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
-|200 | 2855463800 | 2887553103 | 2936403235 | 2513019076 | 2520868989 | 148523810 | 132508963 | 1321355041 | 1322366338 | 98672558 | 117723393 |
-+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
-|250 | 2855044784 | 2898802627 | 2960856300 | 2528988583 | 2538590322 | 151901455 | 132900923 | 1339205109 | 1342093482 | 101271756 | 119585546 |
-+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
++-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
+|Read length | GRCh37 | GRCh38 | T2T/CHM13CAT_v2 | GRCm37 | GRCm38 | GRCm39 | dm3 | dm6 | GRCz10 | GRCz11 | WBcel235 | TAIR10 |
++=================+=================+=================+=================+=================+=================+=================+=================+=================+=================+=================+=================+=================+
+|50 | 2685511454 | 2701495711 | 2725240337 | 2304947876 | 2308125299 | 2309746861 | 130428510 | 125464678 | 1195445541 | 1197575653 | 95159402 | 114339094 |
++-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
+|75 | 2736124898 | 2747877702 | 2786136059 | 2404646149 | 2407883243 | 2410055689 | 135004387 | 127324557 | 1251132611 | 1250812288 | 96945370 | 115317469 |
++-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
+|100 | 2776919708 | 2805636231 | 2814334875 | 2462480910 | 2467481008 | 2468088461 | 139647132 | 129789773 | 1280188944 | 1280354977 | 98259898 | 118459858 |
++-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
+|150 | 2827436883 | 2862010428 | 2931551487 | 2489384085 | 2494787038 | 2495461690 | 144307658 | 129940985 | 1312207019 | 1311832909 | 98721103 | 118504138 |
++-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
+|200 | 2855463800 | 2887553103 | 2936403235 | 2513019076 | 2520868989 | 2521902382 | 148523810 | 132508963 | 1321355041 | 1322366338 | 98672558 | 117723393 |
++-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
+|250 | 2855044784 | 2898802627 | 2960856300 | 2528988583 | 2538590322 | 2538633971 | 151901455 | 132900923 | 1339205109 | 1342093482 | 101271756 | 119585546 |
++-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+
diff --git a/docs/content/installation.rst b/docs/content/installation.rst
index f0ce0ef5c4..fe925e11fa 100644
--- a/docs/content/installation.rst
+++ b/docs/content/installation.rst
@@ -14,7 +14,14 @@ The recommended way to install deepTools (including its requirements) is via `mi
.. code:: bash
- $ conda install -c bioconda deeptools
+ $ conda install -c conda-forge -c bioconda deeptools
+
+Note that for ARM architecture (e.g. M1 on OSX) you could go via the pip installation (see below), or install via the osx-64 env:
+
+.. code:: bash
+
+ $ CONDA_SUBDIR=osx-64 conda create -c conda-forge -c bioconda -n deeptools deeptools
+
Command line installation using ``pip``
---------------------------------------
diff --git a/docs/content/tools/plotFingerprint.rst b/docs/content/tools/plotFingerprint.rst
index 486cdf588a..1be0d17cfc 100644
--- a/docs/content/tools/plotFingerprint.rst
+++ b/docs/content/tools/plotFingerprint.rst
@@ -21,7 +21,7 @@ It determines how well the signal in the ChIP-seq sample can be differentiated f
For factors that will enrich well-defined, rather narrow regions (e.g. transcription factors such as p300), the resulting plot can be used to assess the strength of a ChIP, but the broader the enrichments are to be expected, the less clear the plot will be.
Vice versa, if you do not know what kind of signal to expect, the fingerprint plot will give you a straight-forward indication of how careful you will have to be during your downstream analyses to separate biological noise from meaningful signal.
-Similar to ``multiBamSummary``, ``plotFingerprint`` randomly samples genome regions (bins) of a specified length and sums the per-base coverage in indexed [BAM][] (or bigWig) files that overlap with those regions.
+Similar to ``multiBamSummary``, ``plotFingerprint`` randomly samples genome regions (bins) of a specified length and sums the per-base coverage in indexed BAM files that overlap with those regions.
These values are then sorted according to their rank and the cumulative sum of read counts is plotted.
diff --git a/galaxy/wrapper/deepTools_macros.xml b/galaxy/wrapper/deepTools_macros.xml
index 49c8dd9ed7..62dd96ee9f 100755
--- a/galaxy/wrapper/deepTools_macros.xml
+++ b/galaxy/wrapper/deepTools_macros.xml
@@ -1,7 +1,7 @@
--numberOfProcessors "\${GALAXY_SLOTS:-4}"
- 3.5.5
+ 3.5.6
22.05
diff --git a/pyproject.toml b/pyproject.toml
index 5a902d1dba..2072ec1f52 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,7 +5,7 @@ requires = [
[project]
name = "deepTools"
-version = "3.5.5"
+version = "3.5.6"
authors = [
{name="Fidel Ramirez"},
{name="Devon P Ryan"},
@@ -19,9 +19,9 @@ authors = [
{name="Thomas Manke"},
{email="bioinfo-core@ie-freiburg.mpg.de"}
]
-requires-python = ">=3.8"
+requires-python = "> 3.8"
dependencies = [
- "numpy >= 1.9.0",
+ "numpy >= 2.0.0",
"scipy >= 0.17.0",
"matplotlib >= 3.5.0",
"pysam >= 0.14.0",
@@ -38,7 +38,14 @@ classifiers = [
"Topic :: Scientific/Engineering :: Bio-Informatics"
]
readme = "README.rst"
-
+[project.optional-dependencies]
+actions = [
+ "flake8",
+ "pytest",
+ "twine",
+ "build",
+ "planemo"
+]
[project.urls]
homepage = "https://pypi.python.org/pypi/deepTools/"
documentation = "https://deeptools.readthedocs.io/en/latest/"