Metadata-Version: 2.2
Name: pyepri
Version: 1.0.4
Summary: A CPU & GPU compatible Python package for Electron Paramagnetic Resonance Imaging
Author-email: Rémy Abergel <Remy.Abergel@math.cnrs.fr>
License: MIT License
        
        Copyright (c) 2024 Remy Abergel
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/remy-abergel/pyepri
Project-URL: Issues, https://github.com/remy-abergel/pyepri/issues
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=2.0.0
Requires-Dist: scipy
Requires-Dist: matplotlib
Requires-Dist: pyvista
Requires-Dist: finufft
Requires-Dist: jupyter
Requires-Dist: psutil
Provides-Extra: cupy-cuda12x
Requires-Dist: cupy-cuda12x; extra == "cupy-cuda12x"
Requires-Dist: cufinufft; extra == "cupy-cuda12x"
Provides-Extra: cupy-cuda11x
Requires-Dist: cupy-cuda11x; extra == "cupy-cuda11x"
Requires-Dist: cufinufft; extra == "cupy-cuda11x"
Provides-Extra: torch-cpu
Requires-Dist: torch>=2.4; extra == "torch-cpu"
Requires-Dist: torchinterp1d; extra == "torch-cpu"
Provides-Extra: torch-cuda
Requires-Dist: torch>=2.4; extra == "torch-cuda"
Requires-Dist: torchinterp1d; extra == "torch-cuda"
Requires-Dist: cufinufft; extra == "torch-cuda"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-cov; extra == "dev"
Provides-Extra: doc
Requires-Dist: myst_parser; extra == "doc"
Requires-Dist: sphinx-rtd-theme>=0.4.2; extra == "doc"
Requires-Dist: sphinx-autoapi; extra == "doc"
Requires-Dist: sphinx-gallery; extra == "doc"
Requires-Dist: sphinx-tabs; extra == "doc"
Requires-Dist: sphinx-design; extra == "doc"
Requires-Dist: pyvista[all,trame]; extra == "doc"
Requires-Dist: memory_profiler; extra == "doc"
Requires-Dist: ipywidgets; extra == "doc"
Requires-Dist: ipyvtklink; extra == "doc"
Requires-Dist: sphinxcontrib-bibtex; extra == "doc"
Requires-Dist: sphinxcontrib-video; extra == "doc"
Provides-Extra: cupy-rocm-5-0
Requires-Dist: cupy-rocm-5-0; extra == "cupy-rocm-5-0"
Requires-Dist: cufinufft; extra == "cupy-rocm-5-0"
Provides-Extra: cupy-rocm-4-3
Requires-Dist: cupy-rocm-4-3; extra == "cupy-rocm-4-3"
Requires-Dist: cutensor; extra == "cupy-rocm-4-3"
Requires-Dist: cufinufft; extra == "cupy-rocm-4-3"

[![PyPI version](https://img.shields.io/pypi/v/pyepri?color=YELLOW)](https://pypi.org/project/pyepri/)
[![PyPI Downloads](https://static.pepy.tech/badge/pyepri)](https://pypi.org/project/pyepri)

# PyEPRI

A CPU & GPU compatible Python package for Electron Paramagnetic Resonance Imaging.

**Package documentation and tutorials are available
[here](https://pyepri.math.cnrs.fr/)**.

If you have any comments, questions, or suggestions regarding this
code, don't hesitate to open a
[discussion](https://github.com/remy-abergel/pyepri/discussions) or a
[bug issue](https://github.com/remy-abergel/pyepri/issues). 

## Installation

PyEPRI can be installed on all plateforms (Linux, MacOs or
Windows). However, GPU support is currently only available for systems
equipped with an NVIDIA graphics card and a working installation of
the CUDA drivers (which excludes MAC systems).

Installation commands provided below are valid for Linux and Mac
systems. More complete installation guidelines (including video
tutorials) for Linux, Mac and Windows are available in the [online
documentation](https://pyepri.math.cnrs.fr/installation.html).

### Install latest stable version using pip (recommended)

Open a terminal and execute the following steps in order to create a
virtual environment, and install the latest stable version of `pyepri`
from the [PyPi repository](https://pypi.org/project/pyepri/).

```bash
###################################################
# Create and activate a fresh virtual environment #
###################################################
python3 -m venv ~/.venv/pyepri
source ~/.venv/pyepri/bin/activate

#########################################################
# Install the `pyepri` package from the PyPi repository #
#########################################################
pip install pyepri

###########################################################
# Optional: enable {torch-cpu, torch-cuda, cupy} backends #
###########################################################

# enable `torch-cpu` backend
pip install pyepri[torch-cpu]

# enable `torch-cuda` backend (requires a NVIDIA graphics card with CUDA installed)
pip install pyepri[torch-cuda]

# enable `cupy` backend (requires a NVIDIA graphics card with CUDA installed)
# (please uncomment the appropriate line depending on your CUDA installation)
# pip install pyepri[cupy-cuda12x] # For CUDA 12.x
# pip install pyepri[cupy-cuda11x] # For CUDA 11.x
```

### Install latest version from Github

Open a terminal and execute the following steps in order to checkout
the current code release, create a virtual environment, and install
`pyepri` from the [github
repository](https://github.com/remy-abergel/pyepri/).

```bash
##################
# Clone the code #
##################
git clone https://github.com/remy-abergel/pyepri.git
cd pyepri

###################################################
# Create and activate a fresh virtual environment #
###################################################
python3 -m venv ~/.venv/pyepri
source ~/.venv/pyepri/bin/activate
	 
##########################################################
# Install the `pyepri` package from the checked out code #
# (do not forget the . at the end of the command line)   #
##########################################################
pip install -e .

###########################################################
# Optional: enable {torch-cpu, torch-cuda, cupy} backends #
###########################################################

# enable `torch-cpu` backend
pip install -e ".[torch-cpu]"

# enable `torch-cuda` backend (requires a NVIDIA graphics card with CUDA installed)
pip install -e ".[torch-cuda]"

# enable `cupy` backend (requires a NVIDIA graphics card with CUDA installed)
# (please uncomment the appropriate line depending on your CUDA installation)
# pip install -e ".[cupy-cuda12x]" # For CUDA 12.x
# pip install -e ".[cupy-cuda11x]" # For CUDA 11.x

################################################################
# If you want to compile the documentation by yourself, you    #
# must install the [doc] optional dependencies of the package, #
# compilation instructions are provided next                   #
################################################################
pip install -e ".[doc]" # install some optional dependencies
make -C docs html # build the documentation in html format
firefox docs/_build/html/index.html # open the built documentation (you can replace firefox by any other browser)
```

Because this installation was done in *editable* mode (thanks to the
``-e`` option of ``pip``), any further update of the repository (e.g.,
using the syncing commang ``git pull``) will also update the current
installation of the package.

### Troubleshooting

+ Mac users are strongly recommended to use ``bash`` shell instead of
  ``zsh`` to avoid slow copy-paste issues (type ``chsh -s /bin/bash``
  in a terminal).

+ Display issues related to matplotlib interactive mode were reported
  on Linux systems and were solved by installing ``python3-tk`` (type
  ``sudo apt-get install python3-tk`` in a terminal).
  
+ If the installation of the package or one of its optional dependency
  fails, you may have more chance with
  [miniconda](https://docs.anaconda.com/miniconda/miniconda-install/) (or
  [conda](https://anaconda.org/anaconda/conda)).

+ If you still encounter difficulties, feel free to open a [bug
  issue](https://github.com/remy-abergel/pyepri/issues).

## License

PyEPRI was created by Rémy Abergel ([Centre National de la Recherche
Scientifique](https://www.cnrs.fr/fr), [Université Paris
Cité](https://u-paris.fr/), [Laboratoire
MAP5](https://map5.mi.parisdescartes.fr/)). It is licensed under the
terms of the [MIT license](LICENSE).
