GithubHelp home page GithubHelp logo

bchao1 / lapy Goto Github PK

View Code? Open in Web Editor NEW

This project forked from deep-mi/lapy

0.0 1.0 0.0 672 KB

Toolbox for Differential Geometry on Triangle and Tetrahedra Meshes (FEM, Laplace, Poisson, Heat Flow ...)

License: MIT License

Python 100.00%

lapy's Introduction

LaPy

LaPy is a package to compute spectral features (Laplace-Beltrami operator) on tetrahedral and triangle meshes. It is written purely in python 3 without sacrificing speed as almost all loops are vectorized, drawing upon efficient and sparse mesh data structures. It is basically a port of the C++ ShapeDNA project with extended differential geometry capabilities.

Contents:

  • TriaMesh: a class for triangle meshes offering various operations, such as fixing orientation, smoothing, curvature, boundary, quality, normals, and various efficient mesh datastructure (edges, adjacency matrices)
  • TetMesh: a class for tetrahedral meshes (orientation, boundary ...)
  • TriaIO, TetIO: for both tets and trias from off, vtk, etc. formats
  • FuncIO: import/export vertex functions and eigenvector files
  • Solver: a class for linear FEM computation (Laplace stiffness and mass matrix, fast and sparse eigenvalue solver, anisotropic Laplace, Poisson)
  • DiffGeo: compute gradients, divergence, mean curvature flow, etc.
  • Heat: for heat kernel and diffusion
  • ShapeDNA: compute the ShapeDNA descriptor of surfaces and solids
  • Plot: functions for interactive visualization (wrapping plotly)

ToDo:

  • Add unit tests and automated testing (e.g. travis)
  • Add command line scripts for various functions

Usage:

The LaPy package is a comprehensive collection of scripts, so we refer to the 'help' function and docstring of each module / function / class for usage info. For example:

import lapy as lp
help(lp.TriaMesh)
help(lp.Solver)

In the examples subdirectory, we provide several Jupyter notebooks that illustrate prototypical use cases of the toolbox.

Installation:

Use the following code to download, build and install a package from this repository into your local Python package directory:

pip3 install --user git+https://github.com/Deep-MI/LaPy.git#egg=lapy

Use the following code to install the package in editable mode to a location of your choice:

pip3 install --user --src /my/preferred/location --editable git+https://github.com/Deep-MI/Lapy.git#egg=lapy

Several functions, e.g. the Solver, require a sparse matrix decomposition, for which either the LU decomposition (from scipy sparse) or the faster Cholesky decomposition (from scikit-sparse cholmod) can be used. If the parameter flag use_cholmod is True, the code will try to import cholmod from the scikit-sparse package and will fall back to LU if the import fails. If you would like to use cholmod, you need to install scikit-sparse separately. It cannot be listed among LaPy's dependencies (e.g. in setup.py or requirements.txt) as that causes errors with pip. scikit-sparse requires numpy and scipy to be installed separately beforehand.

References:

If you use this software for a publication please cite both these papers:

[1] Laplace-Beltrami spectra as 'Shape-DNA' of surfaces and solids. Reuter M, Wolter F-E, Peinecke N Computer-Aided Design. 2006;38(4):342-366. http://dx.doi.org/10.1016/j.cad.2005.10.011

[2] BrainPrint: a discriminative characterization of brain morphology. Wachinger C, Golland P, Kremen W, Fischl B, Reuter M Neuroimage. 2015;109:232-48. http://dx.doi.org/10.1016/j.neuroimage.2015.01.032 http://www.ncbi.nlm.nih.gov/pubmed/25613439

[1] introduces the FEM methods and the Laplace spectra for shape analysis, while [2] focusses on medical applications.

For Geodesics please cite:

[3] Crane K, Weischedel C, Wardetzky M. Geodesics in heat: A new approach to computing distance based on heat flow. ACM Transactions on Graphics. https://doi.org/10.1145/2516971.2516977

For non-singular mean curvature flow please cite:

[4] Kazhdan M, Solomon J, Ben-Chen M. 2012. Can Mean-Curvature Flow be Modified to be Non-singular? Comput. Graph. Forum 31, 5, 1745โ€“1754. https://doi.org/10.1111/j.1467-8659.2012.03179.x

We also invite you to check out our lab webpage at https://deep-mi.org

Martin Reuter

lapy's People

Contributors

m-reuter avatar kdiers avatar af-a avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.