Skip to main content

A Python Geometry Processing Toolbox

unit tests unit tests unit tests PyPI

https://gpytoolbox.org

logo

Authors: Silvia Sellán, Columbia University and Oded Stein, University of Southern California

This is a very young library of general geometry processing Python research utility functions that evolves from our personal student codebases. It is compatible with Python 3.10, 3.11, 3.12 and 3.13.

Installation

You should be able install the latest release of Gpytoolbox with pip:

python -m pip install gpytoolbox

From Git

If you want to build Gpytoolbox from a specific git commit; for example, because you want to develop for Gpytoolbox or because you want some functionality that is in the main branch but hasn't been pushed to any release yet, you should be able to do so by cloning Gpytoolbox's github repo and running

python -m pip install numpy
python -m pip install .

Documentation

You can find documentation for all our functions in our website. You can also view the documentation for a specific function by running help(function_name) or function_name.__doc__; for example,

>>> from gpytoolbox import grad
>>> help(grad)
Finite element gradient matrix

Given a triangle mesh or a polyline, computes the finite element gradient matrix assuming piecewise linear hat function basis.

Parameters
----------
V : numpy double array
    Matrix of vertex coordinates
F : numpy int array, optional (default None)
    Matrix of triangle indices

Returns
-------
G : scipy sparse.csr_matrix
    Sparse FEM gradient matrix

See Also
--------
cotangent_laplacian.

Notes
-----

Contribute

We hope you find our current version of our library useful. At the same time, we encourage you to ask not what Gpytoolbox can do for you, but what you can do for Gpytoolbox.

Since Gpytoolbox is a very young library, we want to make it as easy as possible for others to contribute to it and help it grow. You can contribute by adding a new function in a new file inside src/gpytoolbox/, or by adding to existing functions, and submitting a Pull Request.

We also want to make the contribution process as unintimidating as possible. We will gladly review and edit your code to make sure it acommodates to our standards and we have set up many tests that will let us know if your contribution accidentally breaks anything. If there's any functionality that is not already in this library, is remotely related to geometry processing, and you have used or used in any of your past projects, we encourage you to submit it as-is in a Pull Request. We will gladly credit you in the individual function as well as on this home page.

Note that the code that you contribute will be licensed under the MIT license. Everybody will be able to use this code as long as they credit gpytoolbox (and not you individually).

License

Gpytoolbox's is released under an MIT license (see details), except for files in the gpytoolbox.copyleft module, which are under a GPL one (see details). Functions in the copyleft module must be imported explicitly; this way, if you import only the main Gpytoolbox module

import gpytoolbox

or individual functions from it,

from gpytoolbox import regular_square_mesh, regular_cube_mesh

you are only bound by the terms of the permissive MIT license. However, if you import any functionality from gpytoolbox.copyleft; e.g.,

from gpytoolbox.copyleft import mesh_boolean

you will be bound by the more restrictive GPL license.

Attribution

If you use our library in your research paper, please cite us! You can use the bibtex block below:

@misc{gpytoolbox,
  title = {{gptyoolbox}: A Python Geometry Processing Toolbox},
  author = {Silvia Sell\'{a}n and Oded Stein and others},
  note = {https://gpytoolbox.org/},
  year = {2023}
}

Acknowledgements

Several people have, knowingly or unknowingly, greatly contributed to this library. We are thankful to them:

  • Alec Jacobson is the author of the original Matlab gptoolbox on which we inspired ourselves to create this library. Several of our functions are line-by-line translations of his Matlab ones. Thanks, Alec!

  • Nicholas Sharp, the author of the game-changing geometry visualization library polyscope, was extremely helpful in guiding us through setting up and distributing a Python package. Thanks, Nick!

Contributors

Basic Optimistic Roadmap

Here are some things we think would be nice to incorporate to future versions of gpytoolbox. If there's one you are missing, feel free to submit a PR adding your item to this bullet list. If you want to contribute to gpytoolbox, a great way to start is by picking any of the items below that does not have an associated PR yet

To-do

  • Iterative closest point for mesh alignment
  • Basic FEM (cotangent matrix, mass matrix, linear elasticity) for tetrahedral meshes
  • ARAP for deformation and parametrization
  • Exact geodesic distances
  • Heat (approximate) geodesic distance
  • Blue noise in random mesh sampling
  • Intrinsic triangulation routines
  • Fracture mode computation
  • Pure-python version of in_element_aabb
  • Make all grid sizes, resolutions, etc. into tuples not necessarily numpy arrays
  • Add notes on every docstring mentioning libigl implementations
  • Tetrahedral mesh implementation of subdivide.py
  • Dihedral angle computation
  • regular_square_mesh and regular_cube_mesh should support different resolutions in x and y direction (sensible default when n_y is None, to n_y=n_x)

Metadata

Release files for gpytoolbox 0.3.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for gpytoolbox 0.3.8
File
gpytoolbox-0.3.8-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
gpytoolbox-0.3.8-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
gpytoolbox-0.3.8-cp314-cp314-macosx_12_0_x86_64.whl CPython 3.14 CPython 3.14 macOS 12.0+ x86-64 Details
gpytoolbox-0.3.8-cp314-cp314-macosx_12_0_arm64.whl CPython 3.14 CPython 3.14 macOS 12.0+ ARM64 Details
gpytoolbox-0.3.8-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
gpytoolbox-0.3.8-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
gpytoolbox-0.3.8-cp313-cp313-macosx_12_0_x86_64.whl CPython 3.13 CPython 3.13 macOS 12.0+ x86-64 Details
gpytoolbox-0.3.8-cp313-cp313-macosx_12_0_arm64.whl CPython 3.13 CPython 3.13 macOS 12.0+ ARM64 Details
gpytoolbox-0.3.8-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
gpytoolbox-0.3.8-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
gpytoolbox-0.3.8-cp312-cp312-macosx_12_0_x86_64.whl CPython 3.12 CPython 3.12 macOS 12.0+ x86-64 Details
gpytoolbox-0.3.8-cp312-cp312-macosx_12_0_arm64.whl CPython 3.12 CPython 3.12 macOS 12.0+ ARM64 Details
gpytoolbox-0.3.8-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
gpytoolbox-0.3.8-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
gpytoolbox-0.3.8-cp311-cp311-macosx_12_0_x86_64.whl CPython 3.11 CPython 3.11 macOS 12.0+ x86-64 Details
gpytoolbox-0.3.8-cp311-cp311-macosx_12_0_arm64.whl CPython 3.11 CPython 3.11 macOS 12.0+ ARM64 Details
gpytoolbox-0.3.8-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
gpytoolbox-0.3.8-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
gpytoolbox-0.3.8-cp310-cp310-macosx_12_0_x86_64.whl CPython 3.10 CPython 3.10 macOS 12.0+ x86-64 Details
gpytoolbox-0.3.8-cp310-cp310-macosx_12_0_arm64.whl CPython 3.10 CPython 3.10 macOS 12.0+ ARM64 Details

Total release size: 182.6 MB

Release files / gpytoolbox-0.3.8-cp314-cp314-win_amd64.whl

Download URL gpytoolbox-0.3.8-cp314-cp314-win_amd64.whl
Size 7.3 MB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
5aad03552869e2c103833d4deb5ce41b8f5df290eaf8d77cb514144c36b9febf
BLAKE2b-256 checksum
How to use checksums
ca11445abc79fef11eb2aa5e0d0ca7ae974a762e24fcab01b57eb8da3205088c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL gpytoolbox-0.3.8-cp314-cp314-manylinux_2_28_x86_64.whl
Size 13.0 MB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
a8d33d01f0a2a9f22e18091c9f8fb654d6657cb21a0be13bd1a2fd25253c0465
BLAKE2b-256 checksum
How to use checksums
321263527b8465320e9d5245ace7452f706eaa8eb9e527a3f14535a61b55e84d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp314-cp314-macosx_12_0_x86_64.whl

Download URL gpytoolbox-0.3.8-cp314-cp314-macosx_12_0_x86_64.whl
Size 7.7 MB
Tags CPython 3.14 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
2a086f0ae343598a06579aab0fdb17fd0bd84008cdbd482c752d1913353a0b7f
BLAKE2b-256 checksum
How to use checksums
b62c89fa6b96b3bb913ecacabc414167f13f7bbd30333451264fc9419840dc75
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp314-cp314-macosx_12_0_arm64.whl

Download URL gpytoolbox-0.3.8-cp314-cp314-macosx_12_0_arm64.whl
Size 8.7 MB
Tags CPython 3.14 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
8b20e40c5a31f50a7d68d89acf404184d74387a62c4b2545ca1a38f9b3ed639e
BLAKE2b-256 checksum
How to use checksums
ed8eba5bffac25aa0ad05ca30a65dfbba46b610f2a0fb3e47ebec76c13b1481a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp313-cp313-win_amd64.whl

Download URL gpytoolbox-0.3.8-cp313-cp313-win_amd64.whl
Size 7.1 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
7b1dd79cc66a11552ef64dba73bc63ce8a00ef594d4ea470a4afef4449f65b8a
BLAKE2b-256 checksum
How to use checksums
b73a5ce4bd80325ad56dfd120ec922bcd0be36db53e691f63b0e0643314de6a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL gpytoolbox-0.3.8-cp313-cp313-manylinux_2_28_x86_64.whl
Size 13.0 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
5cd2dac58cf015bb1ab86a91efc063fcff3d5c6fbfc10ea7fcbce463e7dbaeec
BLAKE2b-256 checksum
How to use checksums
8b2bbb7b4bb4e1fd36c8992694792170d751642f81d8486d2971fbc6987fd7c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp313-cp313-macosx_12_0_x86_64.whl

Download URL gpytoolbox-0.3.8-cp313-cp313-macosx_12_0_x86_64.whl
Size 7.7 MB
Tags CPython 3.13 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
60e6616f571f64826c765713b0540719e8e5fdb6a439b363d93dc188b51d2f28
BLAKE2b-256 checksum
How to use checksums
c7b8bf8dd9b51d6898f44102ba781f3c8d69015ad9b584af6afc46de1a64d31e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp313-cp313-macosx_12_0_arm64.whl

Download URL gpytoolbox-0.3.8-cp313-cp313-macosx_12_0_arm64.whl
Size 8.7 MB
Tags CPython 3.13 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
0c25ccb08e4062062ebec569757f6d6462eb83ce1d937d9c7e43aa1677dcf51e
BLAKE2b-256 checksum
How to use checksums
50f7e9904e284bb90bc330541b2a14c2693541c863506e74d03e44ed44091194
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp312-cp312-win_amd64.whl

Download URL gpytoolbox-0.3.8-cp312-cp312-win_amd64.whl
Size 7.1 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
0541a3b7011320540b3deb38319b03dc7a85ff63499cbb96fdee2bd9028777d0
BLAKE2b-256 checksum
How to use checksums
616a763959bef793d010eb1b2f84f15cb976f822668524aff49da257b2d06bcf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL gpytoolbox-0.3.8-cp312-cp312-manylinux_2_28_x86_64.whl
Size 13.0 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
75278bbe4d613836a6130561aa8d2585b77b7f7c32eb55d92707c62a6a12b79e
BLAKE2b-256 checksum
How to use checksums
e60adf748ad41bb2b403ec532605fde099ebcf809a35d8f0a24c42a3fb0928df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp312-cp312-macosx_12_0_x86_64.whl

Download URL gpytoolbox-0.3.8-cp312-cp312-macosx_12_0_x86_64.whl
Size 7.7 MB
Tags CPython 3.12 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
ee585bf70093ffe90da1dc5801a322a4078e0b0436a1b3ea681b08339b140f52
BLAKE2b-256 checksum
How to use checksums
49797afc21c99e685809213ecadac4f160fb33d20d8592d51e35f89a24218857
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp312-cp312-macosx_12_0_arm64.whl

Download URL gpytoolbox-0.3.8-cp312-cp312-macosx_12_0_arm64.whl
Size 8.7 MB
Tags CPython 3.12 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
326252cabe71f88e90e43edae4d650a648a3099ffba05a2651a04d27e72a6baa
BLAKE2b-256 checksum
How to use checksums
6f3683d0a58e37fc3deea17457e4600aa002fc52b9202530581e84429131a25e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp311-cp311-win_amd64.whl

Download URL gpytoolbox-0.3.8-cp311-cp311-win_amd64.whl
Size 7.1 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
4115d0529befb3a1bc9f5ce33764aac9bae7d51923f6384f11e7f65dcc732259
BLAKE2b-256 checksum
How to use checksums
98e31c5ee6275f8eb03263125dc2735e65bab36b9ab2cf8dff052bdcce9a4dc5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL gpytoolbox-0.3.8-cp311-cp311-manylinux_2_28_x86_64.whl
Size 13.0 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
e5333ff009e8c701ffcdb8e222996796df1a931317f42f063918ded665800bc4
BLAKE2b-256 checksum
How to use checksums
293c451b58df8c23df08a840f53d3876271e72a3ab9b57b9c53c80b3d5723b60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp311-cp311-macosx_12_0_x86_64.whl

Download URL gpytoolbox-0.3.8-cp311-cp311-macosx_12_0_x86_64.whl
Size 7.7 MB
Tags CPython 3.11 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
a24365ac191828db9853f68dbebe9c052346d8206cce59ea416b9ef7b6423378
BLAKE2b-256 checksum
How to use checksums
20fbba0df1660c66d231909bf198d6fb6935eca820cdc9280b69a077a8622874
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp311-cp311-macosx_12_0_arm64.whl

Download URL gpytoolbox-0.3.8-cp311-cp311-macosx_12_0_arm64.whl
Size 8.7 MB
Tags CPython 3.11 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
61658cc5379ad5542a1c3ad8bf3cd33edfddfa139be94d3b247fdac5d408da54
BLAKE2b-256 checksum
How to use checksums
c297144b095d09287b59267daad7c088ba6ea3a55aac9f044afc2444746f0021
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp310-cp310-win_amd64.whl

Download URL gpytoolbox-0.3.8-cp310-cp310-win_amd64.whl
Size 7.1 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
28062dfd352cd1e624e5f7d5697af762d7211c2b87d95af5707f5dd72bbd23ca
BLAKE2b-256 checksum
How to use checksums
545dbf40affd84a8c683c4980c7c773f860d2306063129eb9dbfedc1aabab76e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL gpytoolbox-0.3.8-cp310-cp310-manylinux_2_28_x86_64.whl
Size 13.0 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
23328d98c549203c34f51d2022239a20fdc909e8f87c6e61a69b6702dfacdfc1
BLAKE2b-256 checksum
How to use checksums
0afce4de918c2ec5d6abd6c1198e7f6809f7ffb627f8562c1f2a39764114fb10
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp310-cp310-macosx_12_0_x86_64.whl

Download URL gpytoolbox-0.3.8-cp310-cp310-macosx_12_0_x86_64.whl
Size 7.7 MB
Tags CPython 3.10 macOS 12.0+ x86-64
SHA-256 checksum
How to use checksums
128cf47569d152e22d895fa8b55e2ec99d396b423b76cfc924f9b42c5b931381
BLAKE2b-256 checksum
How to use checksums
ca0639c419c30236215f3c87d198bbc491179d7aa9aa952c16dac4eea400b054
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / gpytoolbox-0.3.8-cp310-cp310-macosx_12_0_arm64.whl

Download URL gpytoolbox-0.3.8-cp310-cp310-macosx_12_0_arm64.whl
Size 8.7 MB
Tags CPython 3.10 macOS 12.0+ ARM64
SHA-256 checksum
How to use checksums
c3a033fc4207efe2ba84b857db86398dc34329e017638f8828859bec7544811f
BLAKE2b-256 checksum
How to use checksums
8150eaad256fbf3e70c85cd0a616b8c0e74c8f3fbfc44c1237dcdb593ea9eb5d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

0.3.8 This release

20 release files

0.3.7

16 release files

0.3.6

16 release files

0.3.5

13 release files

0.3.4

12 release files

0.3.3

24 release files

0.3.2

27 release files

0.3.1

27 release files

0.3.0

27 release files

0.2.0

23 release files

0.1.0

23 release files

0.0.3

25 release files

0.0.2

25 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page