Package: gpytoolbox
APythonGeometry Processing Toolboxhttps://gpytoolbox.orgAuthors:Silvia Sellán, University of Toronto
andOded Stein, University of Southern CaliforniaThis is a very young library of general geometry processing Python research
utility functions that evolves from our personal student codebases.InstallationLatest stable release (recommended)You should be able install the latest release ofGpytoolboxwith pip:python-mpipinstallgpytoolboxA conda installation will be supported in the future.From GitIf 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 themainbranch but hasn't been pushed to any release yet, you should be
able to do so by cloningGpytoolbox's github
repoand runningpython-mpipinstallnumpy
python-mpipinstall.DocumentationYou can find documentation for all our functions inour
website. You can also view the documentation for a
specific function by runninghelp(function_name)orfunction_name.__doc__;
for example,>>>fromgpytoolboximportgrad>>>help(grad)FiniteelementgradientmatrixGivenatrianglemeshorapolyline,computesthefiniteelementgradientmatrixassumingpiecewiselinearhatfunctionbasis.Parameters----------V:numpydoublearrayMatrixofvertexcoordinatesF:numpyintarray,optional(defaultNone)MatrixoftriangleindicesReturns-------G:scipysparse.csr_matrixSparseFEMgradientmatrixSeeAlso--------cotangent_laplacian.Notes-----Examples--------TO-DOContributeWe hope you find our current version of our library useful. At the same time, we
encourage you toask 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 insidesrc/gpytoolbox/, or by adding to existing
functions, andsubmitting 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 itas-isin 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).LicenseGpytoolbox's is released under an MIT license (see details),
except for files in thegpytoolbox.copyleftmodule, 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 moduleimportgpytoolboxor individual functions from it,fromgpytoolboximportregular_square_mesh,regular_cube_meshyou are only bound by the terms of the permissive MIT license. However, if you
import any functionality fromgpytoolbox.copyleft; e.g.,fromgpytoolbox.copyleftimportmesh_booleanyou will be bound by the more restrictive GPL license.AttributionIf 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}}AcknowledgementsSeveral people have, knowingly or unknowingly, greatly contributed to this
library. We are thankful to them:Alec Jacobsonis the author of the
original Matlabgptoolboxon
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 librarypolyscope, was
extremely helpful in guiding us through setting up and distributing a Python
package. Thanks, Nick!ContributorsWe would like to thankMichael Jägerfor being Gpytoolbox's first external contributor (PR #45,PR #69).Towaki Takikawa(PR #49)Otman Benchekroun(PR #59)Basic Optimistic RoadmapHere 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 yetTo-doIterative closest point for mesh alignmentBasic FEM (cotangent matrix, mass matrix, linear elasticity) for tetrahedral meshesARAP for deformation and parametrizationExact geodesic distancesHeat (approximate) geodesic distanceBlue noise in random mesh samplingIntrinsictriangulation routinesFracture modecomputationPure-python version of in_element_aabbMake all grid sizes, resolutions, etc. into tuples not necessarily numpy
arraysAdd notes on every docstring mentioning libigl implementationsTetrahedral mesh implementation ofsubdivide.pyDihedral angle computationregular_square_meshandregular_cube_meshshould support different resolutions inxandydirection (sensible default when n_y is None, to n_y=n_x)