Metadata-Version: 2.4
Name: junifer
Version: 0.0.7.dev105
Summary: JUelich NeuroImaging FEature extractoR
Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
Maintainer-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
License: AGPL-3.0-only
Project-URL: Changelog, https://juaml.github.io/junifer/main/whats_new.html
Project-URL: Documentation, https://juaml.github.io/junifer
Project-URL: Homepage, https://juaml.github.io/junifer
Project-URL: Source, https://github.com/juaml/junifer
Keywords: neuroimaging
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved
Classifier: Natural Language :: English
Classifier: Topic :: Software Development
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE.md
License-File: AUTHORS.rst
Requires-Dist: click<8.2,>=8.1.3
Requires-Dist: numpy<2.0.0,>=1.26.0
Requires-Dist: scipy<=1.15.0,>=1.10.0
Requires-Dist: datalad<1.2.0,>=1.0.0
Requires-Dist: pandas<2.3.0,>=2.0.0
Requires-Dist: nibabel<5.4.0,>=5.2.0
Requires-Dist: nilearn<=0.10.4,>=0.10.3
Requires-Dist: sqlalchemy<=2.1.0,>=2.0.25
Requires-Dist: ruamel.yaml<0.19,>=0.17
Requires-Dist: h5py>=3.10
Requires-Dist: tqdm<4.67.0,>=4.66.1
Requires-Dist: templateflow>=23.0.0
Requires-Dist: lapy<2.0.0,>=1.0.0
Requires-Dist: lazy_loader==0.4
Requires-Dist: importlib_metadata; python_version < "3.9"
Requires-Dist: looseversion==1.3.0; python_version >= "3.12"
Requires-Dist: junifer_data==1.3.0
Provides-Extra: all
Requires-Dist: bctpy==0.6.0; extra == "all"
Requires-Dist: neurokit2>=0.1.7; extra == "all"
Provides-Extra: bct
Requires-Dist: bctpy==0.6.0; extra == "bct"
Provides-Extra: onthefly
Requires-Dist: bctpy==0.6.0; extra == "onthefly"
Provides-Extra: neurokit2
Requires-Dist: neurokit2>=0.1.7; extra == "neurokit2"
Provides-Extra: dev
Requires-Dist: tox; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: towncrier; extra == "dev"
Provides-Extra: docs
Requires-Dist: seaborn<0.14.0,>=0.13.0; extra == "docs"
Requires-Dist: sphinx<8.1.0,>=7.3.0; extra == "docs"
Requires-Dist: sphinx-gallery<0.18.0,>=0.17.0; extra == "docs"
Requires-Dist: furo<2024.9.0,>=2024.4.27; extra == "docs"
Requires-Dist: numpydoc<1.9.0,>=1.6.0; extra == "docs"
Requires-Dist: julearn==0.3.3; extra == "docs"
Requires-Dist: sphinx-copybutton<0.5.3,>=0.5.1; extra == "docs"
Requires-Dist: towncrier<24.7.0,>=23.10.0; extra == "docs"
Requires-Dist: sphinxcontrib-mermaid<0.10,>=0.8.1; extra == "docs"
Requires-Dist: sphinxcontrib-towncrier==0.4.0a0; extra == "docs"
Requires-Dist: setuptools-scm>=8; extra == "docs"
Dynamic: license-file

![Junifer logo](docs/images/junifer_logo.png "junifer logo")

# junifer - JUelich NeuroImaging FEature extractoR

![PyPI](https://img.shields.io/pypi/v/junifer?style=flat-square)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/junifer?style=flat-square)
![PyPI - Wheel](https://img.shields.io/pypi/wheel/junifer?style=flat-square)
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/junifer/badges/version.svg)](https://anaconda.org/conda-forge/junifer)
![GitHub](https://img.shields.io/github/license/juaml/junifer?style=flat-square)
![Codecov](https://img.shields.io/codecov/c/github/juaml/junifer?style=flat-square)
[![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)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8176570.svg)](https://doi.org/10.5281/zenodo.8176570)
[![FAIR checklist badge](https://fairsoftwarechecklist.net/badge.svg)](https://fairsoftwarechecklist.net/v0.2?f=31&a=32113&i=32322&r=133)

## About

`junifer` is a data handling and feature extraction library targeted towards neuroimaging data specifically functional MRI data.

It is currently being developed and maintained at the [Applied Machine Learning](https://www.fz-juelich.de/en/inm/inm-7/research-groups/applied-machine-learning-aml) group at [Forschungszentrum Juelich](https://www.fz-juelich.de/en), Germany. Although the library is designed for people working at [Institute of Neuroscience and Medicine - Brain and Behaviour (INM-7)](https://www.fz-juelich.de/en/inm/inm-7), it is designed to be as modular as possible thus enabling others to extend it easily.

The documentation is available at [https://juaml.github.io/junifer](https://juaml.github.io/junifer/main/index.html).

## Repository Organization

* `docs`: Documentation, built using sphinx.
* `examples`: Examples, using sphinx-gallery. File names of examples that create visual output must start with `plot_`, otherwise, with `run_`.
* `junifer`: Main library directory.
  * `api`: User API module.
  * `configs`: Module for pre-defined configs for most used computing clusters.
  * `data`: Module that handles data required for the library to work (e.g. parcels, coordinates).
  * `datagrabber`: DataGrabber module.
  * `datareader`: DataReader module.
  * `external`: Module for external libraries and tools.
  * `markers`: Markers module.
  * `onthefly`: Transformation components (on-the-fly) module.
  * `pipeline`: Pipeline module.
  * `preprocess`: Preprocessing module.
  * `storage`: Storage module.
  * `testing`: Testing components module.
  * `typing`: Type hints module.
  * `utils`: Utilities module (e.g. logging).

## Installation

Use `pip` to install from PyPI like so:

```
pip install junifer
```

You can also install via `conda`, like so:

```
conda install -c conda-forge junifer
```

### Optional dependencies

`junifer` supports a few optional dependencies to enable certain features. You can
install them by specifying a comma separated list within square brackets, like so:

```
pip install "junifer[bct,dev]"
```

* `bct` installs [bctpy](https://github.com/aestrivex/bctpy) to enable use of `onthefly` module.
* `neurokit2` installs [neurokit2](https://github.com/neuropsychology/NeuroKit) to enable use of [complexity markers](https://juaml.github.io/junifer/main/api/markers.html#module-junifer.markers.complexity).
* `all` includes all of the above.
* `dev` installs packages needed for development.
* `docs` installs packages needed for building documentation.

## Citation

If you use `junifer` in a scientific publication, we would appreciate if you cite our work. Currently, we do not have a publication, so feel free to use the project's [Zenodo URL](https://doi.org/10.5281/zenodo.8176569).

## Funding

We thank the [Helmholtz Imaging Platform](https://helmholtz-imaging.de/) and
[SMHB](https://www.fz-juelich.de/en/smhb) for supporting development of `junifer`.
(The funding sources had no role in the design, implementation and evaluation of the pipeline.)

## Contribution

Contributions are welcome and greatly appreciated. Please read the [guidelines](https://juaml.github.io/junifer/main/contributing.html) to get started.

## License

junifer is released under the AGPL v3 license:

junifer, FZJuelich AML neuroimaging feature extraction library.
Copyright (C) 2023, authors of junifer.

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.
