Notebook source code:
notebooks/how_to/03_descriptors.ipynb
Run it yourself on binder
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
In [2]:
dataset = NotebooksDataset()
mesh = TriangleMesh.from_file(dataset.get_filename("cat-00"))
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)