Skip to main content

Library for prototyping spline geometries of arbitrary dimensions and degrees, and IGA

Project description

txt_logo splinepy - Library for prototyping spline geometries of arbitrary dimensions and degrees, and IGA

workflow PyPI version Binder

gallery

Install guide

splinepy wheels are available for python3.8+ for MacOS, Linux, and Windows:

# including all optional dependencies
pip install "splinepy[all]"  # quotation marks required for some shells
# or
pip install splinepy

You can install it directly from the source:

git clone git@github.com:tataratat/splinepy.git
cd splinepy
git submodule update --init --recursive
pip install -e .

Documentation

Here are links to related documentation for the library:

Quick start

1. Create a spline

Here, we will create a NURBS for the following example. Alternatively, we can also create Bezier, RationalBezier, and BSpline.

import splinepy

# Initialize nurbs with any array-like input
nurbs = splinepy.NURBS(
    degrees=[2, 1],
    knot_vectors=[
        [0, 0, 0, 1, 1, 1],
        [0, 0, 1, 1],
    ],
    control_points=[
        [-1.0, 0.0],
        [-1.0, 1.0],
        [0.0, 1.0],
        [-2.0, 0.0],
        [-2.0, 2.0],
        [0.0, 2.0],
    ],
    weights=[
        [1.0],
        [2**-0.5],
        [1.0],
        [1.0],
        [2**-0.5],
        [1.0],
    ],
)

# vizusalize
nurbs.show()

2. Modifications

All the splines can be modified. For example, by

  1. directly accessing properties,
  2. elevating degrees,
  3. inserting knots,
  4. reducing degrees and removing knots with a specified tolerance

Note: currently {3, 4} are limited to BSpline families.

# start with a copy of the original spline
modified = nurbs.copy()

# manipulate control points
# 1. all at once
modified.control_points /= 2.0
# 2. indexwise (flat indexing)
modified.control_points[[3, 4, 5]] *= [1.3, 2.]
# 3. with grid-like indexing using multi_index helper
multi_index = modified.multi_index
modified.control_points[multi_index[0, 1]] = [-1.5, -.3]
modified.control_points[multi_index[2, :]] += [2., .1]

modified.show()  # visualize Nr. 1

# elevate degrees and insert knots
modified.elevate_degrees([0, 1])
modified.show()  # visualize Nr. 2

modified.insert_knots(1, [.5])
modified.show()  # visualize Nr. 3

modifications

3. Evaluate

You can evaluate spline's basis functions, mapping, and their derivatives by giving parametric coordinate queries. They should be 2D array-like objects and functions return 2D np.ndarray. evaluate

# first, create parametric coordinate queries
queries = [
    [0.1, 0.2],  # first query
    [0.4, 0.5],  # second query
    [0.1156, 0.9091],  # third query
]

# evaluate basis, spline and derivatives.
# for derivatives, specify order per parametric dimension.
basis = nurbs.basis(queries)
basis_derivative = nurbs.basis_derivative(queries, [1, 1])
physical_coordinates = nurbs.evaluate(queries)
physical_derivatives = nurbs.derivative(queries, [2, 0])

Many of splinepy's multi-query functions can be executed in parallel using multithread executions on c++ side. For that, set either the global flag or pass the nthreads argument.

p_basis0 = nurbs.basis(queries, nthreads=2)
# or
splinepy.settings.NTHREADS = 3
p_basis1 = nurbs.basis(queries)

We also implemented point inversion for splines.

# see docs for options
para_coordinates = nurbs.proximities(physical_coordinates)

import numpy as np
assert np.allclose(queries, para_coordinates)

In cases, where you may have to compute derivatives at the inverted locations or you just want to know more information about the search, you can set the keyword return_verbose=True:

(
    parametric_coordinates,
    physical_coordindates,
    physical_difference,
    distance,
    convergence_norm,
    first_derivatives,
    second_derivatives,
) = nurbs.proximities(physical_coordinates, return_verbose=True)

4. Helper Modules

There's a list of helper modules under the namespace splinepy.helpme to boost prototyping efficiencies. Please check out the full list here! Here are some highlights.

4.1 Create

splinepy.helpme.create module can help you create several primitive shapes and another spline based on the existing spline.

# basic splines
box = splinepy.helpme.create.box(1, 2, 3)  # length per dim
disk = splinepy.helpme.create.disk(outer_radius=3, inner_radius=2, angle=256)
torus = splinepy.helpme.create.torus(torus_radius=3, section_outer_radius=1.5)

splinepy.show(["box", box], ["disk", disk], ["torus", torus])

create_basic For the latter, you can directly access such functions through spline.create.

# based on existing splines
extruded = nurbs.create.extruded(extrusion_vector=[1, 2, 3])
revolved = nurbs.create.revolved(axis=[1, 0, 0], center=[-1, -1, 0], angle=50)

splinepy.show(["extruded", extruded], ["revolved", revolved])

create_derived

4.2 Extract

Using splinepy.helpme.extract module, you can extract meshes (as a gustaf object)

# extract meshes as gustaf objects
control_mesh = nurbs.extract.control_mesh()
control_points = nurbs.extract.control_points()
mesh = nurbs.extract.faces([201, 33])  # specify sample resolutions

splinepy.show(
    ["control mesh", control_mesh.to_edges()],
    ["control points", control_points],
    ["spline", mesh]
)

extract_mesh or part of splines from an existing spline using spline.extract.

# extract splines
boundaries = nurbs.extract.boundaries()
partial = nurbs.extract.spline(0, [.5, .78])
partial_partial = nurbs.extract.spline(0, [.1, .3]).extract.spline(1, [.65, .9])
bases = nurbs.extract.bases() # basis functions as splines
# insert knots to increase number of bezier patches
inserted = nurbs.copy()
inserted.insert_knots(0, [.13, .87])
beziers_patches = inserted.extract.beziers()

splinepy.show(
    ["boundaries and part of splines", boundaries, partial, partial_partial],
    ["beziers", beziers_patches],
    ["bases", bases],
)

extract_spline

4.3 Free-form deformation

Together with mesh types of gustaf, we can perform free-form deformation

import gustaf as gus

# create gustaf mesh using extract.spline()
# or use gustaf's io functions (gustaf.io)
mesh = splinepy.helpme.create.torus(2, 1).extract.faces([100, 100, 100])

# initialize ffd and move control points
ffd = splinepy.FFD(mesh=mesh)
multi_index = ffd.spline.multi_index
ffd.spline.control_points[multi_index[-1,:,-1]] += [3, .5, .1]

ffd.show()

# get deformed mesh - FFD.mesh attribute deforms mesh before returning
deformed = ffd.mesh

ffd

4.4 Fitting

You can fit your point data using splines.

data = [[-0.955,  0.293], [-0.707,  0.707], [-0.293,  0.955],
        [-1.911,  0.587], [-1.414,  1.414], [-0.587,  1.911]]

curve, residual_curve = splinepy.helpme.fit.curve(data, degree=2)
# you can also use any existing spline's basis
surface, residual_surface = splinepy.helpme.fit.surface(
    data, size=[3, 2], fitting_spline=nurbs
)

# set visuals for data
d = gus.Vertices(data)
d.show_options.update(c="blue", r=15)

splinepy.show(
    ["curve fit", d, curve],
    ["surface fit", d, surface],
)

fit

4.5 Mapper

Mapper class is a geometric mapping helper that brings expression and derivatives into the physical domain. This is especially useful for trying collocation methods. Here, we show how you can create a left hand side matrix for a laplace problem - see this example for a full solution:

# create solution spline
solution_field = nurbs.create.embedded(1)

# refine
solution_field.elevate_degrees([0, 1])
solution_field.uniform_refine(n_knots=[4, 4])

# create matrix using mapper
# collocation points at greville abcissae
mapper = solution_field.mapper(reference=nurbs)
laplacian, support = mapper.basis_laplacian_and_support(
    solution_field.greville_abscissae()
)
laplacian_matrix = splinepy.utils.data.make_matrix(
    laplacian,
    support,
    n_cols=solution_field.control_points.shape[0],
)

5. Microstructure

(Rational) Bezier splines in splinepy are capable of composition, where you can place a spline (inner spline/function) into another spline (outer spline/function) in an exact fashion. We can systematically perform this to create certain shapes that consist of multiple inner splines. The resulting shapes are called microstructures and the inner spline that serves as a basis shape is called tile.

splinepy has several tiles that are ready to use. Implementations of available tiles can be found here. However, it is easier to access them through module functions:

splinepy.microstructure.tiles.show()

tiles

You can also filter the available tiles by their parametric and geometric dimensions:

# get specific dimensions as dict
para_2_dim_2 = splinepy.microstructure.tiles.by_dim(para_dim=2, dim=2)

dim_2 = splinepy.microstructure.tiles.by_dim(dim=2)

The composition can then be created as follows:

# create microstructure generator
microstructure = splinepy.Microstructure()
# set outer spline and a (micro) tile
microstructure.deformation_function = nurbs
microstructure.microtile = splinepy.microstructure.tiles.get("Cross2D")
# tiling determines tile resolutions within each bezier patch
microstructure.tiling = [5, 3]

microstructure.show()

# extract only generated parts as multipatch
generated = microstructure.create()

microstructures

Please take a look at this example for a broad overview of what microstructures can do!

6. Multipatch

In practice, including Microstructures, it is common to work with multiple patches. For that, we provide a Multipatch class, equipped with various useful functionalities:

  • patch interface identification
  • boundary patch identification
  • boundary assignment with various options
  • subpatch / boundary patch extraction
# use previously generated microtiles
interface_info_array = generated.interfaces

# Mark boundaries to set boundary conditions
# In case of micro structure, you can use outer spline's boundary
def is_left_bdr(x):
    left = nurbs.extract.boundaries()[3]
    return (left.proximities(x, return_verbose=True)[3] < 1e-8).ravel()

generated.boundary_from_function(is_left_bdr, boundary_id=5)

splinepy.show(
    ["All", generated],
    ["Boundaries", generated.boundary_multipatch()],
    ["Boundary 5", generated.boundary_multipatch(5)]
)

# export for the solver
splinepy.io.gismo.export("microstructure.xml", generated)

multipatch

7. Input/output and vector graphics

splinepy supports various IO formats. Most notably, gismo and mfem formats allow a seamless transition to analysis. In addition splinepy is also able to import and export the iges format. Specifically, Type 126 (B-Spline curve) and Type 128 (B-Spline surface).

# export
splinepy.io.mfem.export("quarter_circle.mesh", nurbs)

# load
quarter_circle = splinepy.io.mfem.load("quarter_circle.mesh")

svg format enables true vector graphic export which preserves the smoothness of splines for publications/documentation. Try to zoom in!

splinepy.io.svg.export("nurbs.svg", nurbs)

Try online

You can also try splinepy online by clicking the Binder badge above!

Contributing

splinepy welcomes any form of contributions! Feel free to write us an issue or start a discussion. Contribution guidelines can be found here.

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

splinepy-0.1.2.tar.gz (8.2 MB view details)

Uploaded Source

Built Distributions

splinepy-0.1.2-cp312-cp312-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.12 Windows x86-64

splinepy-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (37.0 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

splinepy-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (10.3 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

splinepy-0.1.2-cp312-cp312-macosx_10_9_x86_64.whl (12.7 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

splinepy-0.1.2-cp311-cp311-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.11 Windows x86-64

splinepy-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (37.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

splinepy-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (10.3 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

splinepy-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl (12.7 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

splinepy-0.1.2-cp310-cp310-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.10 Windows x86-64

splinepy-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

splinepy-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (10.3 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

splinepy-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl (12.7 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

splinepy-0.1.2-cp39-cp39-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.9 Windows x86-64

splinepy-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

splinepy-0.1.2-cp39-cp39-macosx_11_0_arm64.whl (10.3 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

splinepy-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl (12.7 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

splinepy-0.1.2-cp38-cp38-win_amd64.whl (5.8 MB view details)

Uploaded CPython 3.8 Windows x86-64

splinepy-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (36.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

splinepy-0.1.2-cp38-cp38-macosx_11_0_arm64.whl (10.3 MB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

splinepy-0.1.2-cp38-cp38-macosx_10_9_x86_64.whl (12.7 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file splinepy-0.1.2.tar.gz.

File metadata

  • Download URL: splinepy-0.1.2.tar.gz
  • Upload date:
  • Size: 8.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for splinepy-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e05731617988d0f25f20e9439a06dcf4e7aca88993b3e5a04202d821159d3721
MD5 b9a3a0ace92699c4fc71ab5c11b36171
BLAKE2b-256 d8b209b940544dde7546eb61d90861f5f0cde26e2bfc1f627ee9ddd8b2ccbb42

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: splinepy-0.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for splinepy-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 a2bd5b15e4418adc588bede14a7d7c7b42b65a721f8353ca99f42f368c0cdc4f
MD5 5adaf97f6e50eea2dcb1cb956f5b7483
BLAKE2b-256 b5d8939113e916c41b34a17902a6d53217c525e338e84e23879c2a75438e5403

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d61935f71d7a1fb5b40b5fb3a3603ac6fc5b311c6bc1077dc7e92d7027b860b4
MD5 c666e0b1e40a34d9238d9e168a5aa262
BLAKE2b-256 b83f6d487b059b57cdda71f75bd0141d16ab41400d686a5babf12f6528963b02

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5532ed44813e256131970e8a8f2b8a67b027bb598e1cef145d1c61dde5632202
MD5 7f5685a7c852a287cad6016c466ecb15
BLAKE2b-256 9332320728ce2e5b7e395df3bad2bb8f456ef6eb87d85a414b1afe4c18e50a65

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1d50aaf9563fed21f006edd4dbe4e303bf69f55dc3df613b4639d9045b4edc31
MD5 702edda810c3eac18b742ba9ccbe86d1
BLAKE2b-256 ca9b4f6c4ffe100d79fa7f9195c68ba0e6fcc576290feea07497c74690aa3dbf

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: splinepy-0.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for splinepy-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0eca41e47cfc7ad4d102600332da701270b50f94067a1cb70656dd3536d3f16d
MD5 beae9f853cddeb7e7b827534c5e7a7d5
BLAKE2b-256 a404caee1db4dce1216f3e2abdabff3fe14b84413ed1772307d3efc1264ce6c0

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b26b9dd078762a6f1a2a0db04028582603cf6505b3c03e82dd48623c4087b8d7
MD5 f7209a7351f1fad87bfcf3babf9b52bd
BLAKE2b-256 fe713d95b12f96e0d104f39b8c2ed4bc376e0f014788958d254f4320d52656e7

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 62d6519919b147fc9b6c49eefd773f5d07cf081cff7b0dfc5c88264258dba8f0
MD5 f3b93a26f82ccc5557dcb631d72430b5
BLAKE2b-256 9d4001a402f9e23cad949e3b4f61f857d4d8376dcc38773a75334a294caa14aa

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 a7fd10e8f8fabb1034d2fafe40b407cca98aeb10afad0486974a938a361457cf
MD5 1acf31900cba6a1b993a6b50fb4f7905
BLAKE2b-256 65f9e47ccf28bfc610775dda17cb85c87caa7e453b93a7ae22322917d338bdd7

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: splinepy-0.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for splinepy-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3d6112ee88954b7f34245ba9d502fb175a8114c345bfb5803ff1b3d5039d1977
MD5 b4be459bdf44ba5a6e552fd3ab8f7921
BLAKE2b-256 72977c22039a7c7453b1a833e9df5197f51a9b68500981e5e2a3f4e3f58c4659

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2e0aaecc63b1f8e2205e83c41d8f906865bf3f7ed6f7b6b7057f33046e8d2568
MD5 6b03304b508581074cfd5390714e5cca
BLAKE2b-256 61486c56e116ade0914aee90f2f7bf7e9322eda5bf8128ad7c690fbc18029089

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0bd55205df5a8b40ccb1abd29f067c8b9a81612fdbbb0e3da821e0660fcde532
MD5 18612af68eb9c0d0288456feb01419f8
BLAKE2b-256 a7cc487d907ba4b1d8ec49913f012484d22378ab76db009013614374503a3b89

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 2a8162e2f25eff8d1eab566088b4d7b25b0573c604dc84775357651c8f80ed10
MD5 5a1a7df6c3077389872ccb22acdb20b5
BLAKE2b-256 bf0a8dd05bb9e0d92d5cc3694da5f211b4533c0ec8d7085b0495d03e9d6e2c7f

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: splinepy-0.1.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for splinepy-0.1.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 527878859bc2959a1983c06180cf386a37d9887c2886177f4400e0dfc4beb4ae
MD5 2eda49372619432eccb62bf622676d61
BLAKE2b-256 721367311e9f53e06dfb78cbe84bbca954e2dc2f0829722544db28a24f291cc7

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc024c2ecc0f4b66cdc1b9ad96f38aab777cec2d76701b3754e76c2ed4cb4f64
MD5 a3846c87e260ba334a6747df138b7a86
BLAKE2b-256 9c35b4a16fb91d163f789dccc78099257e31ea53afe44ab9b496142185602964

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bdbcda097367ab2ba2f8a51d5710f4f0ff7795edad445ae41f9071e11a7a3b4e
MD5 7f5859959cb36939bad6861733683b36
BLAKE2b-256 6779c38c9ae4a0f00c967044e98dab2a125c2c9d82f3e120d0b5d830362a67f1

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 260924dc2e2f62601b4dd9166507c04d30593016c6b2a17a7a5497d9abf8e065
MD5 a6c56fa615556aaf14c31ed127de799e
BLAKE2b-256 e743b2aa18132e450d5bc8149a6226facd4a3e4a0fc775adde901259b265d5f9

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: splinepy-0.1.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for splinepy-0.1.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a7937d98badf8036b034908bb9c08272f1808692e40362757113e0b8efc06485
MD5 74b2fde0753c9f740d8342bce0ea4d09
BLAKE2b-256 f41108ee13fc39d5facf546345592ad6f8cc244999ae2749e97ba75e81d5928f

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b69593b71d4c731e4339c30af7a3dc46046a9046cc48650c06596cea6a76af9d
MD5 bd4a43e2a035b732b25362521dbbec5c
BLAKE2b-256 eef051fd1bd82f3118e143db0fb07387ab6d51b855326f72696170d762e96e21

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6499f6f02185ae58590dae8022cc6a30c1b7896e4f251f4b6c29c3c0204f984
MD5 5a18f7ee6083efebb7ab5f0b9b2a692c
BLAKE2b-256 152460b5402435dfd646536e03aa7541810ffd7db35dcdf7dbc6fd7b7e7c1d8e

See more details on using hashes here.

File details

Details for the file splinepy-0.1.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for splinepy-0.1.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7f29d1268ee05b754409fe9dbfc90bb09b1c7031bc8f0388d77dd1d873a7df92
MD5 4fab62b92f33543e4392f087bf61ced7
BLAKE2b-256 7b1810c6a5b219a6c3e9687253fef949a735ae594e8fef5ac4e78e0064ebf746

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