Skip to main content

Multi-dimensional splines

Project description

PyPI Package latest release GitHub Actions Build Documentation status JOSS DOI Zenodo DOI

This is a Python package for multivariate B-splines with performant NumPy and C (via Cython) implementations. For a mathematical overview of tensor product B-splines, see the Splines page of the documentation.

The primary goal of this package is to provide a unified API for tensor product splines of arbitrary input and output dimension. For a list of related packages see the Comparisons page.

Installation

ndsplines is available on PyPI as well as conda-forge.

pip

Install ndsplines with pip:

$ pip install ndsplines

Wheels are provided for a range of Python versions and platforms, so no compilation is required to get the better-performing Cython-based implementation in many cases.

If no matching wheel is found, pip will install build dependencies and attempt to compile the Cython-based extension module. If this is not desired, set the environment variable NDSPLINES_NUMPY_ONLY=1, e.g.:

$ NDSPLINES_NUMPY_ONLY=1 pip install ndsplines

conda

Install ndsplines with conda:

$ conda install -c conda-forge ndsplines

Usage

The easiest way to use ndsplines is to use one of the make_* functions: make_interp_spline, make_interp_spline_from_tidy, or make_lsq_spline, which return an NDSpline object which can be used to evaluate the spline. For example, suppose we have data over a two-dimensional mesh.

import ndsplines
import numpy as np

# generate grid of independent variables
x = np.array([-1, -7/8, -3/4, -1/2, -1/4, -1/8, 0, 1/8, 1/4, 1/2, 3/4, 7/8, 1])*np.pi
y = np.array([-1, -1/2, 0, 1/2, 1])
meshx, meshy = np.meshgrid(x, y, indexing='ij')
gridxy = np.stack((meshx, meshy), axis=-1)

# evaluate a function to interpolate over input grid
meshf = np.sin(meshx) * (meshy-3/8)**2 + 2

We can then use make_interp_spline to create an interpolating spline and evaluate it over a denser mesh.

# create the interpolating spline
interp = ndsplines.make_interp_spline(gridxy, meshf)

# generate denser grid of independent variables to interpolate
sparse_dense = 2**7
xx = np.concatenate([np.linspace(x[i], x[i+1], sparse_dense) for i in range(x.size-1)])
yy = np.concatenate([np.linspace(y[i], y[i+1], sparse_dense) for i in range(y.size-1)])
gridxxyy = np.stack(np.meshgrid(xx, yy, indexing='ij'), axis=-1)

# evaluate spline over denser grid
meshff = interp(gridxxyy)

Generally, we construct data so that the first ndim axes index the independent variables and the remaining axes index output. This is a generalization of using rows to index time and columns to index output variables for time-series data.

We can also create an interpolating spline from a tidy data format:

tidy_data = np.dstack((gridxy, meshf)).reshape((-1,3))
tidy_interp = ndsplines.make_interp_spline_from_tidy(
    tidy_data,
    [0,1], # columns to use as independent variable data
    [2]    # columns to use as dependent variable data
)

print("\nCoefficients all same?",
      np.all(tidy_interp.coefficients == interp.coefficients))
print("Knots all same?",
      np.all([np.all(k0 == k1) for k0, k1 in zip(tidy_interp.knots, interp.knots)]))

Note however, that the tidy dataset must be over a structured rectangular grid equivalent to the N-dimensional tensor product representation. Also note that Pandas dataframes can be used, in which case lists of column names can be used instead of lists of column indices.

To see examples for creating least-squares regression splines with make_lsq_spline, see the 1D example and 2D example.

Derivatives of constructed splines can be evaluated in two ways: (1) by using the nus parameter while calling the interpolator or (2) by creating a new spline with the derivative method. In this codeblock, we show both ways of evaluating derivatives in each direction.

# two ways to evaluate derivatives x-direction: create a derivative spline or call with nus:
deriv_interp = interp.derivative(0)
deriv1 = deriv_interp(gridxxy)
deriv2 = interp(gridxy, nus=np.array([1,0]))

# two ways to evaluate derivative - y direction
deriv_interp = interp.derivative(1)
deriv1 = deriv_interp(gridxy)
deriv2 = interp(gridxxyy, nus=np.array([0,1]))

The NDSpline class also has an antiderivative method for creating a spline representative of the anti-derivative in the specified direction.

# Calculus demonstration
interp1 = deriv_interp.antiderivative(0)
coeff_diff = interp1.coefficients - interp.coefficients
print("\nAntiderivative of derivative:\n","Coefficients differ by constant?",
      np.allclose(interp1.coefficients+2.0, interp.coefficients))
print("Knots all same?",
      np.all([np.all(k0 == k1) for k0, k1 in zip(interp1.knots, interp.knots)]))

antideriv_interp = interp.antiderivative(0)
interp2 = antideriv_interp.derivative(0)
print("\nDerivative of antiderivative:\n","Coefficients the same?",
      np.allclose(interp2.coefficients, interp.coefficients))
print("Knots all same?",
      np.all([np.all(k0 == k1) for k0, k1 in zip(interp2.knots, interp.knots)]))

Contributing

Please feel free to share any thoughts or opinions about the design and implementation of this software by opening an issue on GitHub. Constructive feedback is welcomed and appreciated.

Bug fix pull requests are always welcome. For feature additions, breaking changes, etc. check if there is an open issue discussing the change and reference it in the pull request. If there isn’t one, it is recommended to open one with your rationale for the change before spending significant time preparing the pull request.

Ideally, new/changed functionality should come with tests and documentation. If you are new to contributing, it is perfectly fine to open a work-in-progress pull request and have it iteratively reviewed.

Testing

To test, install the package with the test extras and use pytest:

$ pip install .[test]
$ pytest

Documentation

Documentation is based on Sphinx and built and served by Read the Docs. To build locally, install the docs requirements:

$ pip install .[docs]
$ cd docs
$ make html

Project details


Download files

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

Source Distribution

ndsplines-0.2.0.tar.gz (190.9 kB view details)

Uploaded Source

Built Distributions

ndsplines-0.2.0-cp313-cp313-win_amd64.whl (243.2 kB view details)

Uploaded CPython 3.13 Windows x86-64

ndsplines-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (624.0 kB view details)

Uploaded CPython 3.13 manylinux: glibc 2.17+ x86-64

ndsplines-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (243.9 kB view details)

Uploaded CPython 3.13 macOS 11.0+ ARM64

ndsplines-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl (249.0 kB view details)

Uploaded CPython 3.13 macOS 10.13+ x86-64

ndsplines-0.2.0-cp312-cp312-win_amd64.whl (243.4 kB view details)

Uploaded CPython 3.12 Windows x86-64

ndsplines-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (627.5 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

ndsplines-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (245.1 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

ndsplines-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl (250.1 kB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

ndsplines-0.2.0-cp311-cp311-win_amd64.whl (242.4 kB view details)

Uploaded CPython 3.11 Windows x86-64

ndsplines-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (634.2 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

ndsplines-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (243.9 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

ndsplines-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl (248.5 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

ndsplines-0.2.0-cp310-cp310-win_amd64.whl (242.4 kB view details)

Uploaded CPython 3.10 Windows x86-64

ndsplines-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (598.9 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

ndsplines-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (244.0 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

ndsplines-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl (248.5 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

ndsplines-0.2.0-cp39-cp39-win_amd64.whl (243.0 kB view details)

Uploaded CPython 3.9 Windows x86-64

ndsplines-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (602.2 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

ndsplines-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (244.7 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

ndsplines-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl (249.1 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

ndsplines-0.2.0-cp38-cp38-win_amd64.whl (241.2 kB view details)

Uploaded CPython 3.8 Windows x86-64

ndsplines-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (607.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

ndsplines-0.2.0-cp38-cp38-macosx_11_0_arm64.whl (242.7 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

ndsplines-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl (247.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file ndsplines-0.2.0.tar.gz.

File metadata

  • Download URL: ndsplines-0.2.0.tar.gz
  • Upload date:
  • Size: 190.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for ndsplines-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7ddf3c5b7b983360dc7a0acca8035566efdc9a536e35fae41f2ec94e05211298
MD5 017dbf7ef560d9ec0f5f4a08d56ca19a
BLAKE2b-256 725134a5c5ecba099f43af33d9fe69fa1915fd48742ce34b54e840cf8af67919

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8ef30e1647d447ec711049515f31dac378eb60c2fcd83568ee304d475cd443c9
MD5 5b492fcd08e58c96cd2f70818935c83b
BLAKE2b-256 67e150514ebaddd3cba03431fd5993ba8c269ba5f7d2884a3dcc6dc5d3984064

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9eaa44e3cf4d1e37d63ec9d47a25754aee17f8de83809c1f4b999ff0bab7b132
MD5 4d5e0f64a5ee97e06baea26c1c1447d5
BLAKE2b-256 3c185ccf41bff72dc79fc2ad6bc0eac787431063143f672e7396f88cf8e33b1b

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cd39e735a962091535628a2a996db308fb85679712c93a9e7d3ae2614569cbde
MD5 87ab9e03fb1b67bfe2d6da3cd3ac4cad
BLAKE2b-256 301b0cf6d0c60dff29ed4932863aac5974348ea8a9a67f6d310672a395b6118b

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 27b37b2a5102a9f6c2a26dc860521dfdc3ed389a24fe9a516f8ab8ad7c2224f0
MD5 af29922ceb5a7c9b6311957634fc5a1f
BLAKE2b-256 33717e47631f36c01bc087c7e3b20e25dbe1a5cf0c7eb58dc37679121a8fc6bc

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 d8e887ed3436e7438f633eb9d44a163b92adad7de846bebe53f2b543fc80d86a
MD5 b8e47018f5d28b9296aab4ab30831d70
BLAKE2b-256 557ddb549442b8445c6901c4dd4b37f5012a55cb6065182442ed1e430e26c98e

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 748e9e3702d1999118943603cfab229e02038fddf1486a8d7eb5ad2a5c4d93b6
MD5 8f638eb5e7cb92368a196d301862104c
BLAKE2b-256 cd48f90557536ee968e1d866ea3f4198e7d463454383eb5266835fee6971041d

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 21dfb51fec06e1e31ce9d80a874a0d30beba25802ad6b88e94efeebd8a243def
MD5 4b872ba2fbf3905d49bf3cc27a458a2d
BLAKE2b-256 239f3bd26ec89f2d7eb6a1b35eebdb90049984cc892bef8fe9819a0ba7ee4b4b

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 24351979024ec196617ac28a4c2df7b37d9166a0477ea508864e9bb187d94664
MD5 424660c3567fbebe12e2149499165b61
BLAKE2b-256 6de118712832f3a7912ed4878b85ade6a86ef7f0ecc142cd8511f6dd80586e38

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 df29a18964ce29a3af162772300ab42fa55e9dd9a42baa82c808dec52f9e5a5a
MD5 42f978eb7d0c6c9e4585815a3cf7073f
BLAKE2b-256 d35d2585b378c130b5ce1fc71c67e1cdb4fcf6df3928482a20738ce351cb871d

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b4792d2ceb3cd634731a8d46d5d09fb212eb84873bf8a6c47b8d2847c133253d
MD5 8136b47c01e61f4adb0338cb7766817c
BLAKE2b-256 290fe72fe3d0dc0fe908323b79b03886ce7045a0c0b42c923feb58d65f4b71ca

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 00b2a9cc1ac2e47393bd9997c0aa24f517196624f78cca9d8c450f4b1ae3e554
MD5 dc5ee3002741f2962bb164e2ec611be5
BLAKE2b-256 f30d23ebc5b078b401320328c2d818440ecdee2f42f3a30cd3278186d4a9c6ea

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7c61d3c49501be2802e94bbf7df18d2504df3f798b323a44ca4a08f5f84fae61
MD5 eea1a8157ca95b4bdac9e391559161d5
BLAKE2b-256 a8697dd98fcd26cd4d2c03f63f24908df617659f3f99a7bc6814a6c3e27abf54

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 12953d77ef100fcdb207eb953e2abd01621686e2480834a5b966a5f3f700ea5b
MD5 2d952d8908e3284b38009475bfa862e7
BLAKE2b-256 4b0967d8bfc8d0592aababc50f29fd5e3ce6b802e1c22a5891fcf2d7d428a20a

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4aa81203d6c953d65fa1c2c8e33d142798246985c42c2fcf5366b35d92098e2e
MD5 bbf474f0518bfdfc29fbd117905e3b57
BLAKE2b-256 b8592f422a2850fefcdc9a3c0ad5cde2dc841a1586bca546acaf9a7f57c713aa

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6c7bb85f5c5354e574d92b6e30f13c22d8521231b82c1f6c8887a6e37d3676fb
MD5 b236a5d7d685e8ee60b9efbe2e272b19
BLAKE2b-256 3d779cd26f426379660b2f5dcb24241b461f437b7ea88cee958993cf7c28d3fa

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5938c6b0966e322f3fa44db3c97103e916d88b90639335acfaddc7ee5361130c
MD5 d7b903f608c12841bfe8bb8bcb336630
BLAKE2b-256 0774f3997e8bbd5d634981aa5e7f5fc3fdbc8a2b51c423da3af7870d97e93cf4

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: ndsplines-0.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 243.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for ndsplines-0.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 0f589ed0c318e480e8419c6176f8b0e0210b99d8516456ce3bdabf2fd924cfed
MD5 9b3eb39544b2191d4a2cf0e5b011155d
BLAKE2b-256 b2380ddd57c61fd8572e2b3da4c568b66e5db2416e97ffca935764156c925ad0

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eb749c409970ed348c8e01b9f71b23d5ddfa720185b0824731fbe7c3f7ca9a40
MD5 876118e0bdf171c5e020034945a25aaa
BLAKE2b-256 6d32f7935643f69ea034385423f50a7bad5e3ea2f97c49714fce666d3c76876a

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 04ccca5d4f02d6872274f5f431177f9588a688a4efc03e36302542714b0a958a
MD5 c61f5a6f3b903b8dac6fde8dd2c4d1e5
BLAKE2b-256 3ead3bc0acd825aac9ab7a00e881979791b704dfe30469ed8e747c5370ad9354

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4e576d85fd35fdfbc5980eaff67a4391d982eb03833cd0626b82d2e3106911af
MD5 6a8acf6da39ab593dd47e91e334a5cec
BLAKE2b-256 28fcba6e8b4a6f05f78df0a4373e0647f0a7a466df63d01cfd9471b1e0d0d3c7

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: ndsplines-0.2.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 241.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.5

File hashes

Hashes for ndsplines-0.2.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 35b58771e5253073eb49535680dc56017e1feda74b7a8f3b8c9a38012d66288a
MD5 0b0d97630a527b6105f3f9149f69833a
BLAKE2b-256 35f8e0a32a5db2d459fdd21f3a3ab2107f384d1e43ee3000a790d5e0e4f9450c

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 113ae587b5c9c976ec9b1ed094c75e43060ded73584c3da7256ea1f366bfeaa4
MD5 a56e52bb64259d21ee1b5d043320750c
BLAKE2b-256 cd2953a1acb6736057dea355afb7be08774c6081f5b8c979e416b34c61d275e6

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9e3b0b2ce83b00edf0307e9620ee382f6db9280727e86c25470c5c0abfcf4213
MD5 2d1bdc5bb6a1088c9d41ea432da400d3
BLAKE2b-256 dac7f8127bbf46a4f5dccf2e2d09c690533f2f76a34f579e05145c957d6b0554

See more details on using hashes here.

File details

Details for the file ndsplines-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for ndsplines-0.2.0-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 174f87ea7dc06e73676e68aec1ef94efdc8297158838de342ebcec705aee2af1
MD5 4b766775e2473f893b672cc59298c8ed
BLAKE2b-256 dbdaf6b96afe24d2e67dfc01cfa9a1808f552bdd1f45eaa66b9628d7011f740d

See more details on using hashes here.

Supported by

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