Notebook source code: notebooks/how_to/02_mesh_laplacian_spectrum.ipynb
Run it yourself on binder Binder badge

How to compute the mesh Laplacian spectrum?#

 In [1]:
from geomfum.dataset import NotebooksDataset
from geomfum.laplacian import LaplacianFinder, LaplacianSpectrumFinder
from geomfum.numerics.eig import ScipyEigsh
from geomfum.shape import TriangleMesh

Load a mesh.

 In [2]:
dataset = NotebooksDataset()
mesh = TriangleMesh.from_file(dataset.get_filename("cat-00"))

Compute spectrum of Laplacian.

 In [3]:
spectrum_finder = LaplacianSpectrumFinder(
    nonzero=False,
    fix_sign=False,
    laplacian_finder=LaplacianFinder.from_registry(which="robust"),
    eig_solver=ScipyEigsh(spectrum_size=5, sigma=-0.01),
)

eigvals, eigvecs = spectrum_finder(mesh, as_basis=False)

(eigvals.shape, eigvecs.shape)
 Out [3]:
((5,), (7207, 5))

Syntax sugar:

 In [4]:
mesh.laplacian.find_spectrum(laplacian_spectrum_finder=spectrum_finder)

(mesh.basis.vals.shape, mesh.basis.vecs.shape)
 Out [4]:
((5,), (7207, 5))

Further reading#