update: add support for pre-commit #232

Merged
synchon merged 10 commits from enh/pre-commit into main 2023-06-21 10:48:42 +00:00
49 changed files with 195 additions and 145 deletions

View file

@ -10,7 +10,7 @@ body:
attributes:
value: |
Fill in this form if you want that junifer includes a new dataset.
As a reminder, junifer supports customising the `PatternDataGrabber` and `PatternDataladDatagrabber` which should work in most cases.
If it is a widely used dataset, we could alternatevely create a new _DataGrabber_ that simplifies the usage, by already configuring the underlying `PatternDataGrabber` or `PatternDataladDatagrabber`

View file

@ -47,4 +47,4 @@ jobs:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
flags: docs
if: success() && matrix.python-version == 3.10
if: success() && matrix.python-version == 3.10

2
.gitignore vendored
View file

@ -134,4 +134,4 @@ cython_debug/
junifer/_version.py
scratch/
junifer_jobs/
junifer_jobs/

48
.pre-commit-config.yaml Normal file
View file

@ -0,0 +1,48 @@
ci:
autofix_prs: false
autoupdate_commit_msg: "chore: bump pre-commit repositories"
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: check-ast
- id: check-docstring-first
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: check-yaml
- id: check-toml
- id: debug-statements
- id: end-of-file-fixer
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
- repo: https://github.com/abravalheri/validate-pyproject
rev: v0.12.2
hooks:
- id: validate-pyproject
- repo: https://github.com/psf/black
rev: 23.3.0
hooks:
- id: black
exclude: ^(docs/|examples/|tools/)
args: [--check]
- repo: https://github.com/charliermarsh/ruff-pre-commit
rev: v0.0.267
hooks:
- id: ruff
exclude: ^(__init__.py)
args: [--format, grouped, --show-fixes]
- repo: https://github.com/codespell-project/codespell
rev: v2.2.4
hooks:
- id: codespell
exclude: ^(.github/|docs/)
args: [--config, tox.ini]
- repo: https://github.com/pre-commit/pygrep-hooks
rev: v1.10.0
hooks:
- id: python-no-eval
- id: python-no-log-warn
- id: rst-backticks
- id: rst-directive-colons
- id: rst-inline-touching-normal

View file

@ -648,4 +648,4 @@ specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a “copyright disclaimer” for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
&lt;<http://www.gnu.org/licenses/>&gt;.
&lt;<http://www.gnu.org/licenses/>&gt;.

View file

@ -10,6 +10,7 @@
![Codecov](https://img.shields.io/codecov/c/github/juaml/junifer?style=flat-square)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?style=flat-square)](https://github.com/psf/black)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/charliermarsh/ruff/main/assets/badge/v2.json)](https://github.com/charliermarsh/ruff)
[![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit)
## About

View file

@ -36,4 +36,4 @@ flag_management:
threshold: 1%
- type: patch
target: 95%
threshold: 1%
threshold: 1%

View file

@ -22,7 +22,7 @@ clean:
local: news
make _build_local; STATUS=$$?; make news_cleanup; exit $$STATUS
news:
news:
@echo "Generating whats_new.rst"
cd ../ && towncrier build --keep

View file

@ -43,4 +43,4 @@ body:not([data-theme="light"]) .mermaid svg .edgeLabel {
body:not([data-theme="light"]) .mermaid svg .marker{
stroke: white !important;
fill: white !important;
}
}

View file

@ -11,4 +11,4 @@ for (i = 0; i < coll.length; i++) {
content.style.display = "block";
}
});
}
}

View file

@ -2,7 +2,7 @@
<div class="sidebar-tree">
<p class="version-select">
<span class="caption-text">Other Versions</span>
</p>
</p>
<div id="versions">
{% if versions.branches %}
<span class="caption-text">{{ _('Branches') }}</span>

View file

@ -41,8 +41,8 @@ Configs
External
--------
.. toctree::
.. toctree::
:maxdepth: 2
:caption: Contents:
nilearn.rst
nilearn.rst

View file

@ -1 +1 @@
!.gitignore
!.gitignore

View file

@ -1 +1 @@
Improve general prose, formatting and code blocks in docs and set line length for ``.rst`` files to 80 by `Synchon Mandal`_
Improve general prose, formatting and code blocks in docs and set line length for ``.rst`` files to 80 by `Synchon Mandal`_

View file

@ -1 +1 @@
Rename ``junifer.testing.datagrabbers.SPMAuditoryTestingDatagrabber`` to :class:`.SPMAuditoryTestingDataGrabber` and ``junifer.testing.datagrabbers.OasisVBMTestingDatagrabber`` to :class:`.OasisVBMTestingDataGrabber` by `Synchon Mandal`_
Rename ``junifer.testing.datagrabbers.SPMAuditoryTestingDatagrabber`` to :class:`.SPMAuditoryTestingDataGrabber` and ``junifer.testing.datagrabbers.OasisVBMTestingDatagrabber`` to :class:`.OasisVBMTestingDataGrabber` by `Synchon Mandal`_

View file

@ -1 +1 @@
Rename instances of "Datagrabber" to "DataGrabber" especially in ``junifer.testing`` to be consistent by `Synchon Mandal`_
Rename instances of "Datagrabber" to "DataGrabber" especially in ``junifer.testing`` to be consistent by `Synchon Mandal`_

View file

@ -1 +1 @@
Enable YAML 1.2 support and allow multiline strings in YAML which would not work earlier by `Synchon Mandal`_
Enable YAML 1.2 support and allow multiline strings in YAML which would not work earlier by `Synchon Mandal`_

View file

@ -1 +1 @@
Use ``ruamel.yaml`` instead of ``pyyaml`` as YAML I/O library by `Synchon Mandal`_
Use ``ruamel.yaml`` instead of ``pyyaml`` as YAML I/O library by `Synchon Mandal`_

View file

@ -1 +1 @@
Adopt ``ruff`` as the only linter for the codebase by `Synchon Mandal`_
Adopt ``ruff`` as the only linter for the codebase by `Synchon Mandal`_

View file

@ -0,0 +1 @@
Adopt ``pre-commmit`` for adding and managing git pre-commit hooks by `Synchon Mandal`_

View file

@ -38,6 +38,12 @@ Setting up the local development environment
Now you can make your changes locally.
#. Make sure you install git pre-commit hooks like so:
.. code-block:: bash
pre-commit install
#. When making changes locally, it is helpful to ``git commit`` your work
regularly. On one hand to save your work and on the other hand, the smaller
the steps, the easier it is to review your work later. Please use `semantic
@ -49,6 +55,14 @@ Setting up the local development environment
git add .
git commit -m "<prefix>: <summary of changes>"
In case, you want to commit some WIP (work-in-progress) code, please indicate
that in the commit message and use the flag ``--no-verify`` with
``git commit`` like so:
.. code-block:: bash
git commit --no-verify -m "WIP: <summary of changes>"
#. When you're done making changes, check that your changes pass our test suite.
This is all included with ``tox``.
@ -62,7 +76,6 @@ Setting up the local development environment
tox --parallel
#. Push your branch to GitHub.
.. code-block:: bash

View file

@ -35,9 +35,9 @@ c. the experiment included resting-stage fMRI and a task named *stroop*
then the *element* should be composed of 3 items:
* ``subject``: The subject IDs, e.g. `sub001`, `sub002`, ... `sub020`
* ``session``: The session number, e.g. `ses1`, `ses2`
* ``task``: The task performed, e.g. `rest`, `stroop`
* ``subject``: The subject IDs, e.g. ``sub001``, ``sub002``, ... ``sub020``
* ``session``: The session number, e.g. ``ses1``, ``ses2``
* ``task``: The task performed, e.g. ``rest``, ``stroop``
If any of these items were not part of the element, then we will have more than
one ``T1w`` and / or ``BOLD`` image for each subject, which is not allowed.
@ -49,9 +49,10 @@ for the element (``sub001``, ``ses1``, ``rest``) will be the same as the
``T1w`` image for the element (``sub001``, ``ses1``, ``stroop``).
We will now continue this section using as an example, a dataset in BIDS format
in which 9 subjects (`sub-01` to `sub-09`) were scanned each during 3
sessions (`ses-01`, `ses-02`, `ses-03`) and each session included a `T1w` and
a `BOLD` image (resting-state), except for `ses-03` which was only anatomical.
in which 9 subjects (``sub-01`` to ``sub-09``) were scanned each during 3
sessions (``ses-01``, ``ses-02``, ``ses-03``) and each session included a
``T1w`` and a ``BOLD`` image (resting-state), except for ``ses-03`` which was
only anatomical.
Step 2: Think about the dataset's structure
-------------------------------------------
@ -63,7 +64,7 @@ the Data Grabber needs to be implemented.
Junifer provides an abstract class to deal with datasets that can be thought in
terms of *patterns*. A *pattern* is a string that contains placeholders that are
replaced by the actual values of the element. In our BIDS example, the path
to the T1w image of subject `sub-01` and session `ses-01`, relative to the
to the T1w image of subject ``sub-01`` and session ``ses-01``, relative to the
dataset location, is ``sub-01/ses-01/anat/sub-01_ses-01_T1w.nii.gz``. By
replacing ``sub-01`` with ``sub-02``, we can obtain the T1w image of the first
session of the second subject. Indeed, the path to the T1w images can be

View file

@ -42,4 +42,4 @@
.. _`HTCondor`: https://research.cs.wisc.edu/htcondor/
.. _`SLURM`: https://slurm.schedmd.com
.. _`GNU Parallel`: https://www.gnu.org/software/parallel/
.. _`GNU Parallel`: https://www.gnu.org/software/parallel/

View file

@ -6,4 +6,4 @@
<meta http-equiv="refresh" content="0; url=./main/index.html">
<link rel="canonical" href="https://juaml.github.io/junifer/main/index.html">
</head>
</html>
</html>

View file

@ -1,4 +1,4 @@
Examples
========
The following are a set of examples.
The following are a set of examples.

View file

@ -19,7 +19,6 @@ markers:
kind: ParcelAggregation
parcellation: Schaefer1000x7
method: std
storage:
storage:
kind: SQLiteFeatureStorage
uri: /data/project/ukb_motor/junifer_test/test.sqlite

View file

@ -1,3 +1,3 @@
#!/bin/bash
run_afni_docker.sh 3dAFNItoNIFTI "$@"
run_afni_docker.sh 3dAFNItoNIFTI "$@"

View file

@ -1,3 +1,3 @@
#!/bin/bash
run_afni_docker.sh 3dRSFC "$@"
run_afni_docker.sh 3dRSFC "$@"

View file

@ -1,3 +1,3 @@
#!/bin/bash
run_afni_docker.sh 3dReHo "$@"
run_afni_docker.sh 3dReHo "$@"

View file

@ -1,3 +1,3 @@
#!/bin/bash
run_afni_docker.sh afni "$@"
run_afni_docker.sh afni "$@"

View file

@ -4,7 +4,7 @@ corrected_args=()
docker_args=()
mounts=0
for var in "$@"
do
do
if [ -d "${var}" ]; then
echo "$var is a directory"
var=$(realpath "${var}")
@ -36,4 +36,4 @@ echo "Corrected args for afni: ${corrected_args[*]}"
cwd=$(pwd)
cmd="docker run --rm ${docker_args[*]} -v ${cwd}:${cwd} -w ${cwd} afni/afni_make_build ${corrected_args[*]}"
echo "Running command: ${cmd}"
${cmd}
${cmd}

View file

@ -20,4 +20,4 @@ if [ -f "pre_run.sh" ]; then
fi
echo "Running ${*} in virtual environment"
"$@"
"$@"

View file

@ -16,4 +16,4 @@
48.0 19.0 6.0 rIFG
8.0 29.0 30.0 aMCC
-45.0 27.0 30.0 lIFG
11.0 7.0 7.0 rNcaud
11.0 7.0 7.0 rNcaud

View file

@ -6,4 +6,3 @@
-36 -46 46 Parietal_Inf_L
38 -46 44 Parietal_Inf_R
-26 0 54 Frontal_Mid_L

View file

@ -4,4 +4,3 @@
46 -62 32 rAG
-24 -22 -20 lHF
24 -22 -20 rHF

View file

@ -157,4 +157,4 @@
-29 -88 8 post occipital
13 -91 2 post occipital
27 -91 2 post occipital
-4 -94 12 post occipital
-4 -94 12 post occipital

View file

@ -7,4 +7,3 @@
-34 -52 56 Parietal_Inf_L
32 -52 50 Parietal_Inf_R
32 6 58 Frontal_Mid_R

View file

@ -261,4 +261,4 @@
-32 -1 54 261
-42 -60 -9 262
-17 -59 64 263
29 -5 54 264
29 -5 54 264

View file

@ -12,4 +12,4 @@
-58.0 -44.0 4.0 lpSTS
54.0 28.0 6.0 rIFG
-48.0 30.0 -12.0 lIFG
48.0 -72.0 8.0 rV5
48.0 -72.0 8.0 rV5

View file

@ -1,5 +1,5 @@
-2.0 8.0 50.0 aParacentralL
8.0 32.0 46.0 rmpSFG
-2.0 8.0 50.0 aParacentralL
8.0 32.0 46.0 rmpSFG
0.0 26.0 34.0 dMCC
50.0 8.0 32.0 rIFJ
40.0 22.0 -4.0 raI

View file

@ -1,5 +1,5 @@
-32.0 22.0 -2.0 aIns_l
-48.0 10.0 26.0 IFG_l
-32.0 22.0 -2.0 aIns_l
-48.0 10.0 26.0 IFG_l
-46.0 26.0 24.0 lPFCc_l
-38.0 50.0 10.0 lPFCr_l
36.0 22.0 -6.0 aIns_r
@ -18,6 +18,6 @@
-12.0 -12.0 12.0 Thal_l
-16.0 2.0 14.0 Ncaud_l
-16.0 0.0 2.0 GP_l
12.0 -10.0 10.0 Thal_r
12.0 -10.0 10.0 Thal_r
-34.0 -66.0 -20.0 Cb_FG_l
32.0 -64.0 -18.0 Cb_FG_r
32.0 -64.0 -18.0 Cb_FG_r

View file

@ -14,4 +14,4 @@
10.0 -12.0 8.0 Thal_r
-46.0 -60.0 -10.0 ITG_l
22.0 6.0 4.0 Put_r
-10.0 -16.0 6.0 Thal_l
-10.0 -16.0 6.0 Thal_l

View file

@ -20,14 +20,12 @@ _vois_path = Path(__file__).parent / "VOIs"
# Path to the metadata of the VOIs
_vois_meta_path = _vois_path / "meta"
"""
A dictionary containing all supported coordinates and their respective file or
data.
# A dictionary containing all supported coordinates and their respective file
# or data.
The built-in coordinates are files that are shipped with the package in the
data/VOIs directory. The user can also register their own coordinates, which
will be stored as numpy arrays in the dictionary.
"""
# The built-in coordinates are files that are shipped with the package in the
# data/VOIs directory. The user can also register their own coordinates, which
# will be stored as numpy arrays in the dictionary.
_available_coordinates: Dict[
str, Union[Path, Dict[str, Union[ArrayLike, List[str]]]]
] = {

View file

@ -63,16 +63,14 @@ def _fetch_icbm152_brain_gm_mask(
return mask
"""
A dictionary containing all supported masks and their respective file or
data.
# A dictionary containing all supported masks and their respective file or
# data.
The built-in masks are files that are shipped with the package in the
data/masks directory. The user can also register their own masks.
# The built-in masks are files that are shipped with the package in the
# data/masks directory. The user can also register their own masks.
Callable masks should be functions that take at least one parameter:
* `target_img`: the image to which the mask will be applied.
"""
# Callable masks should be functions that take at least one parameter:
# * `target_img`: the image to which the mask will be applied.
_available_masks: Dict[str, Dict[str, Any]] = {
"GM_prob0.2": {"family": "Vickery-Patil"},
"GM_prob0.2_cortex": {"family": "Vickery-Patil"},

View file

@ -26,18 +26,16 @@ if TYPE_CHECKING:
from nibabel import Nifti1Image
"""
A dictionary containing all supported parcellations and their respective valid
parameters.
# A dictionary containing all supported parcellations and their respective
# valid parameters.
Each entry is a dictionary that must contain at least the following keys:
* 'family': the parcellation's family name (e.g. 'Schaefer', 'SUIT')
# Each entry is a dictionary that must contain at least the following keys:
# * 'family': the parcellation's family name (e.g. 'Schaefer', 'SUIT')
Optional keys:
* 'valid_resolutions': a list of valid resolutions for the parcellation
(e.g. [1, 2])
# Optional keys:
# * 'valid_resolutions': a list of valid resolutions for the parcellation
# (e.g. [1, 2])
"""
# TODO: have separate dictionary for built-in
_available_parcellations: Dict[str, Dict[Any, Any]] = {
"SUITxSUIT": {"family": "SUIT", "space": "SUIT"},

View file

@ -29,39 +29,37 @@ if TYPE_CHECKING:
from pandas import DataFrame
"""
New BSD License
# New BSD License
Copyright (c) 2007 - 2022 The nilearn developers.
All rights reserved.
# Copyright (c) 2007 - 2022 The nilearn developers.
# All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
a. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
b. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
c. Neither the name of the nilearn developers nor the names of
its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
# a. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# b. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# c. Neither the name of the nilearn developers nor the names of
# its contributors may be used to endorse or promote products
# derived from this software without specific prior written
# permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
"""
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
def _apply_mask_and_get_affinity(

View file

@ -15,39 +15,37 @@ from numpy.testing import assert_array_equal
from junifer.external.nilearn import JuniferNiftiSpheresMasker
"""
New BSD License
# New BSD License
Copyright (c) 2007 - 2022 The nilearn developers.
All rights reserved.
# Copyright (c) 2007 - 2022 The nilearn developers.
# All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
a. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
b. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
c. Neither the name of the nilearn developers nor the names of
its contributors may be used to endorse or promote products
derived from this software without specific prior written
permission.
# a. Redistributions of source code must retain the above copyright notice,
# this list of conditions and the following disclaimer.
# b. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# c. Neither the name of the nilearn developers nor the names of
# its contributors may be used to endorse or promote products
# derived from this software without specific prior written
# permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
"""
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
# DAMAGE.
def test_seed_extraction() -> None:

View file

@ -61,7 +61,7 @@ repository = "https://github.com/juaml/junifer"
junifer = "junifer.api.cli:cli"
[project.optional-dependencies]
dev = ["tox"]
dev = ["tox", "pre-commit"]
docs = [
"seaborn>=0.11.2,<0.12",
"Sphinx>=5.3.0,<5.4",

View file

@ -40,7 +40,7 @@ with TemporaryDirectory() as tmpdir_name:
),
(
f"anat/{t_sub}_space-MNI152NLin2009cAsym_"
"desc-brain_mask.nii.gz"
"desc-brain_mask.nii.gz"
),
(
f"anat/{t_sub}_space-MNI152NLin2009cAsym_label-"