Notebook source code:
notebooks/how_to/02_mesh_laplacian_spectrum.ipynb
Run it yourself on binder
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
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))