Data-driven calculus, geometry, and topology on point clouds.
Diffusion Geometry is a Python framework for computing differential geometry on discrete data. By reformulating calculus in terms of heat diffusion, this package allows you to perform robust geometric analysis on noisy point clouds, graphs, and non-manifold singularities without requiring a mesh.
This software implements the methods described in the paper Computing Diffusion Geometry (Jones & Lanners, 2026).
pip install -e .- numpy: Numerical computing.
- scipy: Scientific computing and sparse matrices.
- opt_einsum: Optimized Einstein summation.
- scikit-learn: Nearest neighbor search and utilities.
- pytest: (Optional) For running tests.
Compute the gradient of a function on a noisy point cloud:
import numpy as np
import diffusion_geometry as dg
# 1. Load Data (e.g., a noisy torus)
# shape: (n_points, 3)
points = np.load("torus_points.npy")
values = points[:, 2] # Scalar signal (e.g., height)
# 2. Initialize Geometry
model = dg.DiffusionGeometry.from_point_cloud(points)
# 3. Create a Function
f = model.function(values)
# 4. Compute Calculus Operations
grad_f = f.grad() # Returns a VectorField
laplacian_f = f.laplacian() # Returns a Function
# 5. Spectra of geometric Laplacians (on 1-forms / vector fields)
hodge_eigenvalues, hodge_eigenvectors = model.laplacian(1).spectrum()
connection_laplacian = model.levi_civita.adjoint @ model.levi_civita
connection_eigenvalues, connection_eigenvectors = connection_laplacian.spectrum()If you use this software in your research, please cite:
@article{jones2026computing,
title={Computing Diffusion Geometry},
author={Jones, Iolo and Lanners, David},
journal={arXiv preprint arXiv:2602.06006},
year={2026}
}
@article{jones2024diffusion,
title={Diffusion Geometry},
author={Jones, Iolo},
journal={arXiv preprint arXiv:2405.10858},
year={2024}
}