Skip to main content

Multiparameter Topological Persistence for Machine Learning

Project description

multipers : Multiparameter Persistence for Machine Learning

Build, test PyPI Downloads Documentation
Scikit-style PyTorch-autodiff multiparameter persistent homology python library. This library aims to provide easy to use and performant strategies for applied multiparameter topology.
Meant to be integrated in the Gudhi library.

Multiparameter Persistence

This library allows to compute several representation from "geometrical datasets", e.g., point clouds, images, graphs, that have multiple scales. A well known example is is the following one.
Pick a point cloud that has diffuse noise, or on which the sampling measure has some interesting properties, e.g., in the following example the measure has three modes.
Now define a two parameter grid (filtration) of topological spaces (on the left) from a point cloud $P$ on which we will compute the persistence of some topological structures (homological cycles). This filtration $X$, indexed over a radius parameter $r$ and a codensity parameter $s$ is defined as follows

$$ X_{r,s} = \bigcup_{x \in P, , \mathrm{density}(x) \ge s} B(x,r) = \lbrace x\in \mathbb R^2 \mid \exists p \in P, , \mathrm{density}(p) \ge s \text{ and } d(x,p) \le r \rbrace$$

The green shape on the left represent the lifetime of the biggest annulus. On the right, each cycle appearing on the left gets a colored shape (the color is only a label) and the shape of this colored shape represents the lifetime of this cycle.
In our case, the big green shape on the left corresponds to the largest green shape appearing on the right, recovering the structure of the annulus here. Alt text

The magic part is that we never had to choose any parameter to remove the noise in this construction, but the annulus still naturally appears!
A more strinking example is the following one. Using the same constructions, we can identify topological structure, and their size, in a parameter free approach, even though the majority of the sampling measure's mass is noise.
In this example, the lifetime shape associated to each cycle can be identified from

  • Their radius : the smaller cycle will naturally live more this shape will appear on the "left" (smaller radius)
  • Their concentration : Cycles having more concentration will appear lower than others (smaller co-density)

Notice that this construction is also very stable w.r.t. the noise. The more noise is added the smaller the "rainbow strip" is, and the more the "large shape" are visible. alt text We also provide several other descriptors, as well as associated Machine Learning technics and pipelines. In the following example from the same dataset, the Hilbert decomposition signed measure, the Euler decomposition signed measure and the rank decomposition signed measure. alt text

A non-exhaustive list of features can be found in the Features section, and in the documentation.

Quick start

This library is available on PyPI for Linux and macOS, via

pip install multipers

We recommend Windows user to use WSL.
A documentation and building instructions are available here.

Features, and linked projects

This library features a bunch of different functions and helpers. See below for a non-exhaustive list.
Filled box refers to implemented or interfaced code.

If I missed something, or you want to add something, feel free to open an issue.

Authors

David Loiseaux,
Hannah Schreiber (Persistence backend code),
Luis Scoccola (Möbius inversion in python, degree-rips using persistable and RIVET),
Mathieu Carrière (Sliced Wasserstein)

Contributions

Feel free to contribute, report a bug on a pipeline, or ask for documentation by opening an issue.
In particular, if you have a nice example or application that is not taken care in the documentation (see the ./docs/notebooks/ folder), please contact me to add it there.

Project details


Download files

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

Source Distribution

multipers-2.2.0.tar.gz (6.1 MB view details)

Uploaded Source

Built Distributions

multipers-2.2.0-cp312-cp312-manylinux_2_34_x86_64.whl (13.6 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.34+ x86-64

multipers-2.2.0-cp312-cp312-macosx_13_0_x86_64.whl (15.5 MB view details)

Uploaded CPython 3.12 macOS 13.0+ x86-64

multipers-2.2.0-cp312-cp312-macosx_13_0_arm64.whl (14.4 MB view details)

Uploaded CPython 3.12 macOS 13.0+ ARM64

multipers-2.2.0-cp311-cp311-manylinux_2_34_x86_64.whl (13.9 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.34+ x86-64

multipers-2.2.0-cp311-cp311-macosx_13_0_x86_64.whl (15.7 MB view details)

Uploaded CPython 3.11 macOS 13.0+ x86-64

multipers-2.2.0-cp311-cp311-macosx_13_0_arm64.whl (14.5 MB view details)

Uploaded CPython 3.11 macOS 13.0+ ARM64

multipers-2.2.0-cp310-cp310-manylinux_2_34_x86_64.whl (14.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.34+ x86-64

multipers-2.2.0-cp310-cp310-macosx_13_0_x86_64.whl (15.8 MB view details)

Uploaded CPython 3.10 macOS 13.0+ x86-64

multipers-2.2.0-cp310-cp310-macosx_13_0_arm64.whl (14.6 MB view details)

Uploaded CPython 3.10 macOS 13.0+ ARM64

File details

Details for the file multipers-2.2.0.tar.gz.

File metadata

  • Download URL: multipers-2.2.0.tar.gz
  • Upload date:
  • Size: 6.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.10

File hashes

Hashes for multipers-2.2.0.tar.gz
Algorithm Hash digest
SHA256 8106c4fb2dcc983790c588211e4e348b552fff851f01968feb4d379a5c4cf73e
MD5 85cc29d6c44b5e62b8ccfb3c65695265
BLAKE2b-256 0e0bd27ff3ac7a74db45244e38aa807e7643865450df91a2ea6737c453a4660d

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b8b3aac2ca144eaaca0d4a8862acee87187978f7c7be04085e8fb7c50e462a17
MD5 5854d791888665e829249d6c148bea59
BLAKE2b-256 d2ce6c635feaf7ffe70c73fc67bde6353754bd303195fc31f62f2fd9d3f3abf9

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 37f3bbe560c0b1b9557e6c814c39d623e5826ba0d5d54df08a105073c9920eb4
MD5 552c1a83d07cf67d426ef3dd6a5a7d6a
BLAKE2b-256 d40006753f00402517e23bdc731568115d5626b3b6a57dbfea5c265f759c84e5

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 004db4ef34524b2ee00744b14634162f5ed8e28b3ae3f3b3036d307ac0b7ea32
MD5 b8bcfd87009e60625e068d56c4615429
BLAKE2b-256 7499e3dcf356a3c7ad65c30dc8f9ee949ad94dc6647ceeb6f76016beaa5b7e69

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7dffde84cf54705e1b2ed028a32fd495cde7832ebdfbad4f0306c43747857317
MD5 a7f26bf455fdb1c2cae299ecd7208c26
BLAKE2b-256 7aa3836d72601479510505d722fdb5dca80b4c4b11027d0a741a377c6c46b54b

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 1a2d55d34342c718f7f762db85ff6c7d149fac2ead8eb47076cc1c3abaee47c5
MD5 5535c17f97dee49536208fac923fbf98
BLAKE2b-256 f8e0fd54719329688efdf4ccd31192819afda6bc865a43559a878b5b2c8e08bb

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 e09e2e4e6e445ba6fe48d63e763ea37b2091cc3e366d0ab1ffca9f8514cf5f4c
MD5 323e4b260553b7156e6977edb3f27eb3
BLAKE2b-256 cff4bd9d76ffbe4e9d36713522e9a8d5ca76e0eb6b5122a278af3d024d0326d9

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 6fcab8e9f29471356480a3717ca65ca11d808a79ad1e0df08fcf33728c5fd5cb
MD5 ee685c7081a765d9d7b8eccc487db54e
BLAKE2b-256 b8a992d0a9050f7f9185e3b4e26ee4caaf09f9a28866e781405919093820792c

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 914733f07dff6e7d83f98e9877c45113193487e21a02f75b32993f2503fabd7e
MD5 65c334494e9dd3703106378000c3a4cf
BLAKE2b-256 217518568146f43697df27a77112cb43d4abbf0ab6ea568a460d9f53e50acf11

See more details on using hashes here.

File details

Details for the file multipers-2.2.0-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for multipers-2.2.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 fc259652f386d87c900d2e6773a760b52c8315af642056b75acd21d9ab5b6044
MD5 78f9dbe7264f8ec6bda2889d557c2588
BLAKE2b-256 470a9d8a5fc9e7c951f7497528bdb063271ebfdc5e44cc149c483ba1467c943b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page