Skip to main content

Multipurpose interpolation library focussing on RBF, written in rust.

Project description

PyHolo

Build & Test License: MIT

Python bindings for flexible interpolation library featuring Radial Basis Function (RBF) written in rust. It features:

  • RBF interpolation with many kernels to choose from.
  • Flexible Data Types: Supports input and output datasets of type float, list[float], ndarray.

Installation

pip install pyholo

For optimal performance, it's recommended to use a virtual environment.

Quick Start

1D Interpolation of a target function

import numpy as np
import pyholo as holo

def target_function(pts):
    return 10.0 + np.sum(
        np.power(pts, 2) + 10.0 * np.cos(2.0 * np.pi * pts)
    )

# Get or set input/output data
x_train = np.linspace(-5.0, 5.0, 50)
y_train = np.array([target_function(x) for x in x_train])

# Get predictions from each model
pyholo_pred = holo.Rbf(x_train, y_train, "gaussian", 1.0)

# Points to predict at
x_new = np.linspace(-5.0, 5.0, 500)

# Make predictions
y_pred = pyholo_pred.predict(x_new)

Plotting against other Rbf implementations (scipy, numpy) and the expected values:

3D interpolation of data

import numpy as np
import pyholo as holo

# Training data
x_train = np.array([
    0.000, 512.000, 1182.490, 1911.273, 2788.547, 
    4227.750, 6481.706, 9609.367, 11773.210, 
    13188.649, 14400.000
])

y_train = np.array([
    [6950.000, 0.000, 0.000],
    [5930.999, 4386.866, 974.859],
    [2498.780, 8537.536, 1897.230],
    [-1993.234, 10819.437, 2404.319],
    [-7051.251, 11465.688, 2547.931],
    [-13549.361, 9748.529, 2166.340],
    [-19093.612, 3887.659, 863.924],
    [-18104.032, -5716.279, -1270.284],
    [-11425.229, -10664.783, -2369.952],
    [-4206.775, -11312.308, -2513.846],
    [3167.219, -7987.115, -1774.914],
])

# Create and fit RBF model
rbf = holo.Rbf(x_train, y_train, kernel='thin_plate_spline', epsilon=1.0)

# Predict on test points
x_test = np.linspace(x_train.min(), x_train.max(), 200)
y_pred = rbf.predict(x_test)

Plotting against the training data and expected values:

Comparison with other Rbf implementations

Using the hologram linear solver only, as haven't quite figured out how to configure Openblas or Mkl with Pyo3. Help here is appreciated. Simple 1d problem from before benchmarks quite well.

Build python from source

These instructions assume that Python3 and Cargo are installed on your system. To set up this project, follow these steps:

  1. Clone the repository:
    git clone https://github.com/alexlovric/gmac.git
    cd gmac/gmac_py
    
  2. Create a virtual environment and install build system:
    python3 -m venv .venv
    source .venv/bin/activate # In windows /Scripts/activate
    python3 -m pip install -r requirements.txt
    
  3. Build the release binary:
    maturin develop --release
    
  4. Build the python wheel:
    maturin build --release
    
  5. Running benchmarks/examples:
    python3 -m pip install <path to wheel (target/wheels/*.whl)>
    cd benches
    python3 -m pip install -r requirements.txt
    

License

MIT License - See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyholo-0.1.7-cp38-abi3-win_amd64.whl (198.4 kB view details)

Uploaded CPython 3.8+Windows x86-64

pyholo-0.1.7-cp38-abi3-manylinux_2_34_x86_64.whl (303.4 kB view details)

Uploaded CPython 3.8+manylinux: glibc 2.34+ x86-64

pyholo-0.1.7-cp38-abi3-macosx_11_0_arm64.whl (259.2 kB view details)

Uploaded CPython 3.8+macOS 11.0+ ARM64

File details

Details for the file pyholo-0.1.7-cp38-abi3-win_amd64.whl.

File metadata

  • Download URL: pyholo-0.1.7-cp38-abi3-win_amd64.whl
  • Upload date:
  • Size: 198.4 kB
  • Tags: CPython 3.8+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.9.0

File hashes

Hashes for pyholo-0.1.7-cp38-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 96aaca7163fdb483c7cb0052f2fc0d9cd587f6ac506c6ae86a0b78ea57d790e2
MD5 7fbbdcaa1fd0874ce417d4a530320e42
BLAKE2b-256 88a81e3bcdd28fd26b22ffe17d81c8d8f050d5ce71a00d35aa07a964098f294e

See more details on using hashes here.

File details

Details for the file pyholo-0.1.7-cp38-abi3-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for pyholo-0.1.7-cp38-abi3-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 887eaea92682dc04f923e636611a00b2f0c422d20f4610c24f20f2d16f50f6ef
MD5 05659477313e0f9588fd87f92a5e228a
BLAKE2b-256 2f608d56c5e3a3a311d545413ab51b9f9c929b1c68335cf3823c028d34c2f363

See more details on using hashes here.

File details

Details for the file pyholo-0.1.7-cp38-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyholo-0.1.7-cp38-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 40b40340e6b41738dc8c0016fac474f790a1fc1e22a9e38072981cdf625977f1
MD5 78551462265aa5c4968d8c75ddfba919
BLAKE2b-256 6b5276badf8769ec6b3a05842cc8b6c54a0d28b8768e8f03391c70b1160b4649

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page