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: attributes:
value: | value: |
Fill in this form if you want that junifer includes a new dataset. 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. 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` 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 }} token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true fail_ci_if_error: true
flags: docs 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 junifer/_version.py
scratch/ 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, 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. 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 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) ![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) [![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) [![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 ## About

View file

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

View file

@ -22,7 +22,7 @@ clean:
local: news local: news
make _build_local; STATUS=$$?; make news_cleanup; exit $$STATUS make _build_local; STATUS=$$?; make news_cleanup; exit $$STATUS
news: news:
@echo "Generating whats_new.rst" @echo "Generating whats_new.rst"
cd ../ && towncrier build --keep 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{ body:not([data-theme="light"]) .mermaid svg .marker{
stroke: white !important; stroke: white !important;
fill: white !important; fill: white !important;
} }

View file

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

View file

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

View file

@ -41,8 +41,8 @@ Configs
External External
-------- --------
.. toctree:: .. toctree::
:maxdepth: 2 :maxdepth: 2
:caption: Contents: :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. 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 #. 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 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 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 add .
git commit -m "<prefix>: <summary of changes>" 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. #. When you're done making changes, check that your changes pass our test suite.
This is all included with ``tox``. This is all included with ``tox``.
@ -62,7 +76,6 @@ Setting up the local development environment
tox --parallel tox --parallel
#. Push your branch to GitHub. #. Push your branch to GitHub.
.. code-block:: bash .. 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: then the *element* should be composed of 3 items:
* ``subject``: The subject IDs, e.g. `sub001`, `sub002`, ... `sub020` * ``subject``: The subject IDs, e.g. ``sub001``, ``sub002``, ... ``sub020``
* ``session``: The session number, e.g. `ses1`, `ses2` * ``session``: The session number, e.g. ``ses1``, ``ses2``
* ``task``: The task performed, e.g. `rest`, `stroop` * ``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 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. 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``). ``T1w`` image for the element (``sub001``, ``ses1``, ``stroop``).
We will now continue this section using as an example, a dataset in BIDS format 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 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 sessions (``ses-01``, ``ses-02``, ``ses-03``) and each session included a
a `BOLD` image (resting-state), except for `ses-03` which was only anatomical. ``T1w`` and a ``BOLD`` image (resting-state), except for ``ses-03`` which was
only anatomical.
Step 2: Think about the dataset's structure 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 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 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 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 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 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 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/ .. _`HTCondor`: https://research.cs.wisc.edu/htcondor/
.. _`SLURM`: https://slurm.schedmd.com .. _`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"> <meta http-equiv="refresh" content="0; url=./main/index.html">
<link rel="canonical" href="https://juaml.github.io/junifer/main/index.html"> <link rel="canonical" href="https://juaml.github.io/junifer/main/index.html">
</head> </head>
</html> </html>

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -16,4 +16,4 @@
48.0 19.0 6.0 rIFG 48.0 19.0 6.0 rIFG
8.0 29.0 30.0 aMCC 8.0 29.0 30.0 aMCC
-45.0 27.0 30.0 lIFG -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 -36 -46 46 Parietal_Inf_L
38 -46 44 Parietal_Inf_R 38 -46 44 Parietal_Inf_R
-26 0 54 Frontal_Mid_L -26 0 54 Frontal_Mid_L

View file

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

View file

@ -157,4 +157,4 @@
-29 -88 8 post occipital -29 -88 8 post occipital
13 -91 2 post occipital 13 -91 2 post occipital
27 -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 -34 -52 56 Parietal_Inf_L
32 -52 50 Parietal_Inf_R 32 -52 50 Parietal_Inf_R
32 6 58 Frontal_Mid_R 32 6 58 Frontal_Mid_R

View file

@ -261,4 +261,4 @@
-32 -1 54 261 -32 -1 54 261
-42 -60 -9 262 -42 -60 -9 262
-17 -59 64 263 -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 -58.0 -44.0 4.0 lpSTS
54.0 28.0 6.0 rIFG 54.0 28.0 6.0 rIFG
-48.0 30.0 -12.0 lIFG -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 -2.0 8.0 50.0 aParacentralL
8.0 32.0 46.0 rmpSFG 8.0 32.0 46.0 rmpSFG
0.0 26.0 34.0 dMCC 0.0 26.0 34.0 dMCC
50.0 8.0 32.0 rIFJ 50.0 8.0 32.0 rIFJ
40.0 22.0 -4.0 raI 40.0 22.0 -4.0 raI

View file

@ -1,5 +1,5 @@
-32.0 22.0 -2.0 aIns_l -32.0 22.0 -2.0 aIns_l
-48.0 10.0 26.0 IFG_l -48.0 10.0 26.0 IFG_l
-46.0 26.0 24.0 lPFCc_l -46.0 26.0 24.0 lPFCc_l
-38.0 50.0 10.0 lPFCr_l -38.0 50.0 10.0 lPFCr_l
36.0 22.0 -6.0 aIns_r 36.0 22.0 -6.0 aIns_r
@ -18,6 +18,6 @@
-12.0 -12.0 12.0 Thal_l -12.0 -12.0 12.0 Thal_l
-16.0 2.0 14.0 Ncaud_l -16.0 2.0 14.0 Ncaud_l
-16.0 0.0 2.0 GP_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 -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 10.0 -12.0 8.0 Thal_r
-46.0 -60.0 -10.0 ITG_l -46.0 -60.0 -10.0 ITG_l
22.0 6.0 4.0 Put_r 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 # Path to the metadata of the VOIs
_vois_meta_path = _vois_path / "meta" _vois_meta_path = _vois_path / "meta"
""" # A dictionary containing all supported coordinates and their respective file
A dictionary containing all supported coordinates and their respective file or # or data.
data.
The built-in coordinates are files that are shipped with the package in the # 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 # data/VOIs directory. The user can also register their own coordinates, which
will be stored as numpy arrays in the dictionary. # will be stored as numpy arrays in the dictionary.
"""
_available_coordinates: Dict[ _available_coordinates: Dict[
str, Union[Path, Dict[str, Union[ArrayLike, List[str]]]] str, Union[Path, Dict[str, Union[ArrayLike, List[str]]]]
] = { ] = {

View file

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

View file

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

View file

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

View file

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

View file

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