Metadata-Version: 2.3
Name: eddymotion
Version: 0.1.15
Summary: Pure python eddy-current and head-motion correction for dMRI, an extension of QSIprep's SHOREline algorithm (Cieslak, 2020) to multiple diffusion models.
Project-URL: Documentation, https://www.nipreps.org/eddymotion
Project-URL: Home, https://github.com/nipreps/eddymotion
Project-URL: NiPreps, https://www.nipreps.org/
Author-email: The NiPreps Developers <nipreps@gmail.com>
License-Expression: Apache-2.0
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Image Recognition
Requires-Python: >=3.10
Requires-Dist: dipy>=1.3.0
Requires-Dist: joblib
Requires-Dist: nest-asyncio>=1.5.1
Requires-Dist: nipype<2.0,>=1.5.1
Requires-Dist: nireports
Requires-Dist: nitransforms>=21.0.0
Requires-Dist: numpy>=1.17.3
Requires-Dist: scikit-image>=0.14.2
Requires-Dist: scipy>=1.8.0
Provides-Extra: all
Requires-Dist: attrs>=20.1.0; extra == 'all'
Requires-Dist: coverage; extra == 'all'
Requires-Dist: furo>=2024.01.29; extra == 'all'
Requires-Dist: matplotlib>=2.2.0; extra == 'all'
Requires-Dist: nbsphinx; extra == 'all'
Requires-Dist: nilearn; extra == 'all'
Requires-Dist: packaging; extra == 'all'
Requires-Dist: popylar>=0.2; extra == 'all'
Requires-Dist: pre-commit; extra == 'all'
Requires-Dist: pre-commit-hooks; extra == 'all'
Requires-Dist: psutil>=5.4; extra == 'all'
Requires-Dist: pydot>=1.2.3; extra == 'all'
Requires-Dist: pydotplus; extra == 'all'
Requires-Dist: pytest-cov; extra == 'all'
Requires-Dist: pytest-env; extra == 'all'
Requires-Dist: pytest-xdist>=1.28; extra == 'all'
Requires-Dist: pytest>=4.4; extra == 'all'
Requires-Dist: ruff; extra == 'all'
Requires-Dist: sphinx-argparse; extra == 'all'
Requires-Dist: sphinx-rtd-theme; extra == 'all'
Requires-Dist: sphinx>=4.5; extra == 'all'
Requires-Dist: sphinxcontrib-apidoc~=0.3.0; extra == 'all'
Requires-Dist: sphinxcontrib-napoleon; extra == 'all'
Requires-Dist: sphinxcontrib-versioning; extra == 'all'
Provides-Extra: dev
Requires-Dist: pre-commit; extra == 'dev'
Requires-Dist: pre-commit-hooks; extra == 'dev'
Requires-Dist: ruff; extra == 'dev'
Provides-Extra: doc
Requires-Dist: attrs>=20.1.0; extra == 'doc'
Requires-Dist: furo>=2024.01.29; extra == 'doc'
Requires-Dist: matplotlib>=2.2.0; extra == 'doc'
Requires-Dist: nbsphinx; extra == 'doc'
Requires-Dist: packaging; extra == 'doc'
Requires-Dist: pydot>=1.2.3; extra == 'doc'
Requires-Dist: pydotplus; extra == 'doc'
Requires-Dist: sphinx-argparse; extra == 'doc'
Requires-Dist: sphinx-rtd-theme; extra == 'doc'
Requires-Dist: sphinx>=4.5; extra == 'doc'
Requires-Dist: sphinxcontrib-apidoc~=0.3.0; extra == 'doc'
Requires-Dist: sphinxcontrib-napoleon; extra == 'doc'
Requires-Dist: sphinxcontrib-versioning; extra == 'doc'
Provides-Extra: docs
Requires-Dist: attrs>=20.1.0; extra == 'docs'
Requires-Dist: furo>=2024.01.29; extra == 'docs'
Requires-Dist: matplotlib>=2.2.0; extra == 'docs'
Requires-Dist: nbsphinx; extra == 'docs'
Requires-Dist: packaging; extra == 'docs'
Requires-Dist: pydot>=1.2.3; extra == 'docs'
Requires-Dist: pydotplus; extra == 'docs'
Requires-Dist: sphinx-argparse; extra == 'docs'
Requires-Dist: sphinx-rtd-theme; extra == 'docs'
Requires-Dist: sphinx>=4.5; extra == 'docs'
Requires-Dist: sphinxcontrib-apidoc~=0.3.0; extra == 'docs'
Requires-Dist: sphinxcontrib-napoleon; extra == 'docs'
Requires-Dist: sphinxcontrib-versioning; extra == 'docs'
Provides-Extra: plotting
Requires-Dist: nilearn; extra == 'plotting'
Provides-Extra: popylar
Requires-Dist: popylar>=0.2; extra == 'popylar'
Provides-Extra: resmon
Requires-Dist: psutil>=5.4; extra == 'resmon'
Provides-Extra: test
Requires-Dist: coverage; extra == 'test'
Requires-Dist: pytest-cov; extra == 'test'
Requires-Dist: pytest-env; extra == 'test'
Requires-Dist: pytest-xdist>=1.28; extra == 'test'
Requires-Dist: pytest>=4.4; extra == 'test'
Provides-Extra: tests
Requires-Dist: coverage; extra == 'tests'
Requires-Dist: pytest-cov; extra == 'tests'
Requires-Dist: pytest-env; extra == 'tests'
Requires-Dist: pytest-xdist>=1.28; extra == 'tests'
Requires-Dist: pytest>=4.4; extra == 'tests'
Description-Content-Type: text/x-rst

*Eddymotion*
============
**Estimating head-motion and deformations derived from eddy-currents in diffusion MRI data**.

.. image:: https://zenodo.org/badge/DOI/10.5281/zenodo.4680599.svg
   :target: https://doi.org/10.5281/zenodo.4680599
   :alt: DOI

.. image:: https://img.shields.io/badge/License-Apache_2.0-blue.svg
   :target: https://github.com/nipreps/eddymotion/blob/main/LICENSE
   :alt: License

.. image:: https://img.shields.io/pypi/v/eddymotion.svg
   :target: https://pypi.python.org/pypi/eddymotion/
   :alt: Latest Version

.. image:: https://circleci.com/gh/nipreps/eddymotion/tree/main.svg?style=shield
   :target: https://circleci.com/gh/nipreps/eddymotion/tree/main
   :alt: Testing

.. image:: https://github.com/nipreps/eddymotion/actions/workflows/pages/pages-build-deployment/badge.svg
   :target: https://www.nipreps.org/eddymotion/main/index.html
   :alt: Documentation

.. image:: https://github.com/nipreps/eddymotion/actions/workflows/pythonpackage.yml/badge.svg
   :target: https://github.com/nipreps/eddymotion/actions/workflows/pythonpackage.yml
   :alt: Python package

Retrospective estimation of head-motion between diffusion-weighted images (DWI) acquired within
diffusion MRI (dMRI) experiments renders exceptionally challenging1 for datasets including
high-diffusivity (or “high b”) images.
These “high b” (b > 1000s/mm2) DWIs enable higher angular resolution, as compared to more traditional
diffusion tensor imaging (DTI) schemes.
UNDISTORT [#r1]_ (Using NonDistorted Images to Simulate a Template Of the Registration Target)
was the earliest method addressing this issue, by simulating a target DW image without motion
or distortion from a DTI (b=1000s/mm2) scan of the same subject.
Later, Andersson and Sotiropoulos [#r2]_ proposed a similar approach (widely available within the
FSL ``eddy`` tool), by predicting the target DW image to be registered from the remainder of the
dMRI dataset and modeled with a Gaussian process.
Besides the need for less data, ``eddy`` has the advantage of implicitly modeling distortions due
to Eddy currents.
More recently, Cieslak et al. [#r3]_ integrated both approaches in *SHORELine*, by
(i) setting up a leave-one-out prediction framework as in eddy; and
(ii) replacing eddy’s general-purpose Gaussian process prediction with the SHORE [#r4]_ diffusion model.

*Eddymotion* is an open implementation of eddy-current and head-motion correction that builds upon
the work of ``eddy`` and *SHORELine*, while generalizing these methods to multiple acquisition schemes
(single-shell, multi-shell, and diffusion spectrum imaging) using diffusion models available with DIPY [#r5]_.


.. image:: https://raw.githubusercontent.com/nipreps/eddymotion/507fc9bab86696d5330fd6a86c3870968243aea8/docs/_static/eddymotion-flowchart.svg
   :alt: The eddymotion flowchart


.. [#r1] S. Ben-Amitay et al., Motion correction and registration of high b-value diffusion weighted images, Magnetic
   Resonance in Medicine 67:1694–1702 (2012)
.. [#r2] J. L. R. Andersson. et al., An integrated approach to correction for off-resonance effects and subject movement
   in diffusion MR imaging, NeuroImage 125 (2016) 1063–1078
.. [#r3] M. Cieslak et al., QSIPrep: An integrative platform for preprocessing and reconstructing diffusion MRI data.
   Nature Methods, 18(7), 775–778 (2021)
.. [#r4] E. Ozarslan et al., Simple Harmonic Oscillator Based Reconstruction and Estimation for Three-Dimensional Q-Space
   MRI. in Proc. Intl. Soc. Mag. Reson. Med. vol. 17 1396 (2009)
.. [#r5] E. Garyfallidis et al., Dipy, a library for the analysis of diffusion MRI data. Front. Neuroinformatics 8, 8
   (2014)
