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

How to compute descriptors?#

 In [ ]:
import gsops.backend as gs

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

Load a mesh.

 In [2]:
dataset = NotebooksDataset()
mesh = TriangleMesh.from_file(dataset.get_filename("cat-00"))
INFO: Data has already been downloaded... using cached file ('C:\Users\giuli\.geomfum\data\cat-00.off').

Set Laplace eigenbasis.

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

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

Heat kernel signature#

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

hsign = heat_signature(mesh)

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

Use landmarks.

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

heat_signature = LandmarkHeatKernelSignature.from_registry(
    scale=True,
    n_domain=3,
)

hsign = heat_signature(mesh)

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

Tip: other descriptors work in the same manner.

Wave kernel signature#

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

wsign = wave_signature(mesh)

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

Further reading#