Skip to main content

pyFM - Python Functional Maps Library

animated

NEW API Documentation is available here

This package contains a comprehensive Python implementation for shape correspondence using functional maps, featuring code from multiple papers

Core Features

  • Complete TriMesh class with geometric measures (geodesics, normals, LBO projections, differential operators)
  • Fast Laplace-Beltrami Operator implementation
  • Shape descriptors (HKS, WKS) with flexible parameter control
  • Efficient correspondence refinement (ICP, ZoomOut)
  • Fast functional-to-pointwise map conversion
  • Functional Map Network utilities

Installation

pip install pyfmaps

Please check the PyPi page to ensure the latest version is uploaded.

Key Dependencies

Design Philosophy

This codebase prioritizes readability and adaptability over rigid modularity. The implementation seeks to make it easy to:

  • Read and understand the underlying algorithms
  • Copy and modify code snippets for your research
  • Experiment with and extend existing methods
  • Avoid rewriting core functionality from scratch

Under the hood, core algorithms are implemented as standalone functions operating on basic numpy arrays. This dual-layer design means you can use the high-level interface for standard workflows, but still easily extract and modify the core functions for your research, as they work with simple numpy arrays.

While this approach differs from highly modular packages like scikit-learn, it better serves researchers who need to modify and build upon existing shape correspondence methods.

This design choice comes with some trade-offs:

  • Less abstraction means potentially more code to achieve certain tasks
  • Users need some familiarity with shape correspondence concepts
  • Implementation favors explicit algorithms over general-purpose interfaces

I selected this approach from my personal experience with research codebases and may not suit everyone's needs. More generic and abstracted implementations of geometric processing can be expected to appear soonish in the scikit-shapes or geomstats libraries.

Notation Convention

  • Functional maps (FM_12): mesh1 → mesh2
  • Pointwise maps (p2p_21): mesh2 → mesh1

Documentation & Examples

Implemented Papers

This library implements methods from several key papers in shape correspondence, including:

Torch Version

Most functions in this package can easily be translated to torch. However, for clarity of the code, a separate version will be released.

For now, the torch implementations can be found in different githubs (see my GitHub profile).

Coming Soon

Contact and Citation

You can contact me for any questions or requests at robin.magnet@inria.fr

This package has not (yet) been presented as a paper in itself, although all my works heavily rely on this.

If you use this package or copy and paste parts of it for you experiments, please cite this github or one of the following paper. Note these papers never directly refer to pyfmaps as so I am fine with you only citing the github for now.

@inproceedings{magnetDWKSLocalDescriptor2021,
  title = {{{DWKS}} : {{A Local Descriptor}} of {{Deformations Between Meshes}} and {{Point Clouds}}},
  shorttitle = {{{DWKS}}},
  booktitle = {2021 {{IEEE}}/{{CVF International Conference}} on {{Computer Vision}} ({{ICCV}})},
  author = {Magnet, Robin and Ovsjanikov, Maks},
  publisher = {IEEE},
}


@inproceedings{magnetSmoothNonRigidShape2022,
  title = {Smooth {{Non-Rigid Shape Matching}} via {{Effective Dirichlet Energy Optimization}}},
  booktitle = {2022 {{International Conference}} on {{3D Vision}} ({{3DV}})},
  author = {Magnet, Robin and Ren, Jing and {Sorkine-Hornung}, Olga and Ovsjanikov, Maks},
  year = {2022},
  publisher = {{IEEE}},

}

@article{magnetScalableEfficientFunctional2023,
  title = {Scalable and {{Efficient Functional Map Computations}} on {{Dense Meshes}}},
  author = {Magnet, Robin and Ovsjanikov, Maks},
  year = {2023},
  journal = {Computer Graphics Forum},
}

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfmaps-1.2.0.tar.gz (2.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfmaps-1.2.0-py3-none-any.whl (495.5 kB view details)

Uploaded Python 3

File details

Details for the file pyfmaps-1.2.0.tar.gz.

File metadata

  • Download URL: pyfmaps-1.2.0.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pyfmaps-1.2.0.tar.gz
Algorithm Hash digest
SHA256 611eb66076d80b87e29e292483dfec22e50715ffab440d39b94fd09c728b7e07
MD5 5c5fcad544844ce9b3a70b5905f9e3c8
BLAKE2b-256 b4301d75cd7b71e153fe14ec0a47ac9834db3476add661977251a12dcd4fd46e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfmaps-1.2.0.tar.gz:

Publisher: test_and_deploy.yml on RobinMagnet/pyFM

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyfmaps-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: pyfmaps-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 495.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for pyfmaps-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ad96a06e8cfa8deb5b8b181d15dc0e957f605b72cb5f336194a86b6580d6559d
MD5 e65d56b42dfe872673ac17eacf730b8f
BLAKE2b-256 4b60731923dca8fd736f07979984007906d907f3f93282fad58c06949c066f21

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyfmaps-1.2.0-py3-none-any.whl:

Publisher: test_and_deploy.yml on RobinMagnet/pyFM

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.3.0

2 files

This release

1.2.0 This release

2 files

1.1.1

2 files

1.1.0

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page