Metadata-Version: 2.1
Name: regli
Version: 2023.829.0
Summary: REgular Grid Linear Interpolator.
Home-page: http://github.com/hypergravity/regli
Author: Bo Zhang
Author-email: bozhang@nao.cas.cn
License: MIT
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Scientific/Engineering :: Astronomy
Requires: numpy
Requires: scipy
Requires: emcee
Requires: astroslam
Requires: joblib
Requires: laspec
Description-Content-Type: text/markdown
License-File: LICENSE

## regli [![DOI](https://zenodo.org/badge/153591296.svg)](https://zenodo.org/badge/latestdoi/153591296)
REgular Grid Linear Interpolator, capable to deal with spectral library or similar model data.

This package implements the basic *bilinear interpolation* in multi-dimension.
However, as commented in *Numerical Recipes*: 

Bilinear interpolation is frequently “close enough for government work.”
As the interpolating point wanders from grid square to grid square,
the interpolated func- tion value changes continuously.
However, the gradient of the interpolated function changes
discontinuously at the boundaries of each grid square.

As a consequence, the interpolation model can not, in general, 
be used as a forward model and incorporated with 
Gradient-based optimization algorithms to estimate parameters.

## author
Bo Zhang, [bozhang@nao.cas.cn](mailto:bozhang@nao.cas.cn)

## home page
- [https://github.com/hypergravity/regli](https://github.com/hypergravity/regli)
- [https://pypi.org/project/regli/](https://pypi.org/project/regli/)

## install
- for the latest **stable** version: `pip install -U regli`
- for the latest **github** version: `pip install -U git+git://github.com/hypergravity/regli`
- for the Zenodo version: [https://zenodo.org/record/3461514](https://zenodo.org/record/3461514)

## test


```python
from regli import test
test()
```
output:
```
regli.interp3 x 10000: 0.5675415992736816 sec
regli.interpn x 10000: 2.5326197147369385 sec
rgi x 10000: 5.4028871059417725 sec
```

## doc
```python
# import Regli
from regli import Regli
import numpy as np

# construct grid coordinates
x1 = np.linspace(-1, 1, 30)     
x2 = np.linspace(-1, 1, 30)
x3 = np.linspace(-1, 1, 30)

# initiate regli using coordinates
regli = Regli(x1, x2, x3)

# an arbitrary function of coordinates (for demo)
f = lambda _x1, _x2, _x3: _x1 + _x2 + _x3

# regli.flats stores flattened coordinates of ND grid
flats = regli.flats
# evaluate your function on flats
values = np.array([f(*_) for _ in flats]).reshape(-1, 1)
# set values for regli
regli.set_values(values)        

regli(pos)                      # use any of the 3 ways to interpolate
regli.interpn(pos)              # method 1 is equivalent to 2
regli.interp3(pos)              # this is accelerated for 3D

```

## How to cite the code
BibTex:
```
@misc{https://doi.org/10.5281/zenodo.3461514,
  doi = {10.5281/zenodo.3461514},
  url = {https://zenodo.org/record/3461514},
  author = {Zhang, Bo},
  title = {hypergravity/regli: The Zenodo version},
  publisher = {Zenodo},
  year = {2019}
}
```
Please go to [https://search.datacite.org/works/10.5281/zenodo.3461514](https://search.datacite.org/works/10.5281/zenodo.3461514) for other formats.
