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

How to compute descriptors?#

 In [1]:
import geomstats.backend as gs

from geomfum.dataset import NotebooksDataset
from geomfum.descriptor.spectral import HeatKernelSignature, WaveKernelSignature
from geomfum.shape import TriangleMesh

Load a mesh.

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

Set Laplace eigenbasis.

 In [3]:
mesh.laplacian.find_spectrum(spectrum_size=10, set_as_basis=True)

mesh.basis
 Out [3]:
<geomfum.basis.LaplaceEigenBasis at 0x78d00e101010>

Heat kernel signature#

 In [4]:
heat_signature = HeatKernelSignature.from_registry(
    scale=True, n_domain=3, use_landmarks=False
)

hsign = heat_signature(mesh)

hsign.shape
 Out [4]:
(3, 7207)

Use landmarks.

 In [6]:
mesh.set_landmarks(gs.array([3177, 7178, 6565, 5472]))

heat_signature.use_landmarks = True

hsign = heat_signature(mesh)

hsign.shape
 Out [6]:
(12, 7207)

Tip: other descriptors work in the same manner.

Wave kernel signature#

 In [7]:
wave_signature = WaveKernelSignature.from_registry(n_domain=5)

wsign = wave_signature(mesh)

wsign.shape
 Out [7]:
(5, 7207)

Further reading#