Metadata-Version: 2.4
Name: epraya
Version: 0.1.35.652
Summary: Python package for EPR simulation
License-Expression: MIT
License-File: LICENSE
Author: Epraya developers
Requires-Python: >=3.12
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: chex (>=0.1.80)
Requires-Dist: ipython (>=7.34.0)
Requires-Dist: ipywidgets (>=7.7.0)
Requires-Dist: jax (>=0.4.0)
Requires-Dist: jaxlib (>=0.4.0)
Requires-Dist: joblib (>=1.3.0)
Requires-Dist: matplotlib (>=3.8.0)
Requires-Dist: numba (>=0.58.0)
Requires-Dist: numpy (<2.5)
Requires-Dist: optax (>=0.2.0)
Requires-Dist: pandas (>=2.2.0)
Requires-Dist: plotly (>=5.18.0)
Requires-Dist: scipy (>=1.12.0)
Requires-Dist: threadpoolctl (>=3.0.0)
Description-Content-Type: text/markdown

# EPRAYA: Python package for EPR simulation


![Python](https://img.shields.io/badge/python-3.12+-blue.svg)
![GitHub License](https://img.shields.io/github/license/eprayadev/epraya)
[![PyPI version](https://img.shields.io/pypi/v/epraya.svg)](https://pypi.org/project/epraya/)

EPRAYA offers the tools for simulations, fitting and manipulation of EPR (Electron Paramagnetic Resonance) spectroscopic data (cw EPR) in Python. Using only three containers: Ham, Exp and Vary, users can insert hamiltonian parameters, experimental conditions and range for parameters' variation.

It also offers two modes for simulation: 

Classic (CPU): Based in numpy arrays and scipy functions in parallel for simulation and fitting.

With JAX: Based in the JAX package for more efficient calculation and fitting with the ADAM algorithm (GPU use is recommended for faster results).

## Installation 
The recommended installation method is:
```
pip install epraya
```
>We recommend to use code editors that support tkinter and plotly (VS Code, Jupyter) to take full advantage of the functions in the package. However, it's possible to use the package in any other code editors.

For further instructions on installation and common question, see the [documentation](https://github.com/eprayadev/EPRAYA/tree/main/docs).

## Features

- Simulation of cw EPR single or multiple spin systems of powder or cristal samples.
- Interactive interface for data inspection and manipulation with ease. 
- Identification of energy levels and resonant fields.
- Data fitting with Nelder Mead, Metropolis, Genetic Algorithm, Least Squares and ADAM.
- Plots angular dependance, enegy diagrams, EPR intensity and Absorption curves.
- JAX implemenetation for GPU compatability.

## Documentation

Functions description, tutorials and more specific information, can be access in the [documentation](https://github.com/eprayadev/EPRAYA/tree/main/docs)..

## Limitations
- Current version of EPRAYA only supports _cw EPR_. We are working in implementing _ENDOR_ and _pulse EPR_.
- EPRAYA supports the simulation to at most 4 interactive spin systems in classic mode and 2 systems with JAX. We expect to improve the calculation times and the possibility to simulate more systems following versions.
- For easier data manipulation, plotly and tkinter support is required.

## Contributions
EPRAYA is a open-code project and contributions are welcome.  If you find an error or bug, would like to improve the code or make the documentation clearer, please let us know by opening an issue or pull request.

## Authors

EPRAYA is a project of the _Física Aplicada_ group of the _Universidad Nacional de Colombia_. The principal contributors to the project are: Juan Sebastián Castro, Ovidio Almanza and Miguel E. Gámez.

## License
[License: MIT]([./license/](https://github.com/eprayadev/EPRAYA/blob/main/LICENSE))


