Akriti

ĀKRITI

Assured Knowledge & Reasoning In Topological Inference

Modern topological data analysis for Python.

Compute persistence diagrams, vectorise them, classify, compare, and certify — in two lines of code. Built on GUDHI, integrates with scikit-learn and PyTorch Geometric. Apache-2.0, open source, contributions welcome.

v0.0.1 launching August 2026 Apache-2.0 Built on GUDHI

About

A modern Python library for topological data analysis.

आकृति
ākṛti · Sanskrit, n.
The configurational form by which an instance is recognised as a member of its class.
AKRITI · backronym
Assured Knowledge & Reasoning In Topological Inference

Akriti is a Python library for topological data analysis — persistence, Mapper, topological deep learning, and topological signal processing. It computes diagrams, vectorises them, measures distances, classifies, compares two samples, and ships per-prediction certificates as a free upsell. Practitioner-friendly verbs at the top, mathematical authority underneath.

A distinguishing feature: every method choice in the AutoML pipeline — filtration, scale, landmark grid, descriptor — is fixed analytically from your training data, with provable guarantees. No held-out validation. No held-out anything.

Akriti sits on top of GUDHI for persistence computation and integrates with the scientific Python ecosystem (scikit-learn, PyTorch Geometric, AnnData, scanpy). It does not replace existing tools; it makes them easier to use together.

What Akriti does

A toolkit, not a single trick.

akriti.persistence
Compute diagrams
Vietoris–Rips, alpha, cubical, weight, and sublevel-set filtrations on point clouds, images, time series, and graphs. Delegates to GUDHI under the hood.
akriti.vectorise
Embed for ML
Persistence images, landscapes, Betti curves, and the bi-Lipschitz landmark embeddings of PLACE / PALACE. Returns NumPy by default, PyTorch on request.
akriti.distance
Measure between diagrams
Bottleneck and p-Wasserstein. GPU-batched for large pairwise comparisons. Plays nicely with scipy.spatial.distance.
akriti.classify
Predict with certificates
Persistence-aware classification with per-prediction correctness guarantees. No calibration split required; the certificate is decided once at training time.
akriti.compare
Two-sample testing
"Are these two samples topologically different?" — a permutation test with sample-size calculator (CASTLE). Built for biostatistics and applied science.
akriti.auto
AutoML pipeline
Filtration, scale, descriptor, and landmark grid picked closed-form from training data — with bounds. The library decides; the bound is provable.

Where Akriti fits

A thin smart layer above GUDHI.

Akriti doesn't replace GUDHI — it sits on top of it. GUDHI computes the persistence diagrams; Akriti decides what to compute, vectorises the result, classifies it, certifies it, and ships it to scikit-learn or PyTorch Geometric. The relationship is the one pandas has with NumPy.

Akriti GUDHI giotto-tda
Role in the stack High-level toolkit Persistence backend sklearn-style wrapper
Persistence computation delegates to GUDHI C++ canonical engine Python wrapper
Closed-form filtration & scale selection
Per-prediction certificates
Two-sample testing for diagrams
sklearn estimators partial
PyTorch Geometric layers
AnnData / scanpy interop
GPU-batched embeddings
Licence Apache-2.0 GPL-3.0 AGPL-3.0

Three gaps prompted Akriti:

  1. No existing library picks the filtration and scale for you, closed-form, with provable bounds.
  2. None ship per-prediction correctness certificates — only Lipschitz upper bounds on the embedding.
  3. The closest analogue, giotto-tda, is AGPL — which most US industry legal teams won't allow into production.

GUDHI is the persistence backend we depend on; we ship our work as a complement, not a replacement.

In Python

Two-line answers to topological questions.

No filtration choice. No scale choice. No held-out calibration. Pick a verb; Akriti does the rest.

import akriti

# ── Detect cycles in a point cloud ────────────────────────────────
result = akriti.cycles(X)
result.plot()

# ── Compare two biological samples topologically ──────────────────
test = akriti.compare(sample_A, sample_B)
print(test.p_value, test.certificate)

# ── Train a certified classifier ──────────────────────────────────
clf = akriti.classify(X_train, y_train)
preds = clf.predict(X_test)  # per-prediction certificates included

Founding team

Portrait of Sushovan Majhi
Lead PI
Sushovan Majhi
Data Science · GW
Library architecture · API design · project execution.
Portrait of Pramita Bagchi
Co-PI
Pramita Bagchi
Biostatistics
Practitioner statistics · bio adoption channel.
Portrait of Atish Mitra
Co-PI
Atish Mitra
Mathematics · Montana Tech
Math primitives · theoretical foundations.
Portrait of Žiga Virk
Senior advisor
Žiga Virk
Mathematics · Ljubljana
Theory advisor · landmark-embedding originator (with Mitra).
And built by an open community. Akriti is Apache-2.0. We welcome bug reports, pull requests, new vectorisations, integrations, and case studies.
Contribute on GitHub →

Founding research

The papers behind the library.

Akriti is grounded in four research papers from the founding team. Each contributes a layer of the library; akriti.core is the integration substrate.

PLACE · Paper I
A Closed-Form Persistence-Landmark Pipeline for Certified Point-Cloud and Graph Classification
TMLR · 2026 (under review)
PALACE · Paper II
Adaptive Landmark Embeddings for Persistence Diagrams: Closed-Form Mahalanobis Selection and Per-Prediction Certificates
JMLR · 2026 (under review)
Paper III
Inferential Theory for Persistence-Landmark Embeddings: CLT, Berry–Esseen, and Functional Limits
In preparation · 2026
CASTLE · Paper IV
A Practitioner's Toolkit for Topological Two-Sample Testing, Sample-Size Calculation, and Robustness Certification
In preparation · 2026

Built on

Akriti delegates persistence computation to GUDHI (INRIA) and builds on the landmark embedding of Mitra & Virk (2024). We are grateful to the broader topological data analysis community — giotto-tda, persim, ripser.py, and the many vectorisation and stability results that the library stands on.

A "Publications using Akriti" section will appear here as case studies are published.