scikit-tda/ripser.py

A Lean Persistent Homology Library for Python

什么是 Ripser.py?

Ripser.py 是快速 C++ 库 RipserPython 封装,提供一个轻量、易用的工具包,用于计算 拓扑数据分析 (TDA) 的核心方法——持久同调(persistent homology)。它可将点云、距离矩阵或图像转换为 持久图(persistence diagrams),捕捉多尺度的形状信息,适用于许多机器学习流水线。


主要功能

功能 说明
持久上同调 对稀疏或密集数据计算 Vietoris-Rips(或下星)滤波,并返回出生/死亡对。
图谱可视化 通过 persim 包提供简单的 plot_diagrams 辅助函数,绘制持久图。
图像滤波 直接从灰度图像生成下星滤波。
代表性上链 提取实现图谱中显示的同调类的具体上链。
scikit-learn 兼容 API 提供 Rips 变换器(fit_transform / plot),可无缝接入流水线。

安装

# 从 PyPI(支持 Windows、macOS、Linux 的预构建轮子)
pip install ripser

如需从源码构建(例如修改代码),请克隆仓库并运行 pip install . 或使用 pip install -e . 进行可编辑安装。唯一必需的依赖是 Cython, numpy, scipy, scikit-learn, persim。Windows 用户可能需要 MinGW;macOS 用户请确保 Xcode 命令行工具为最新版本。

可选性能提升:将 robin-hood-hashing 仓库克隆到项目根目录,可启用更快的哈希表实现,带来最高约 30% 的速度提升。


快速示例

import numpy as np
from ripser import ripser, Rips
from persim import plot_diagrams

# 随机 2D 点云
X = np.random.random((100, 2))

# 函数式 API
dgms = ripser(X)['dgms']
plot_diagrams(dgms, show=True)

# scikit-learn 风格
rips = Rips()
dgms2 = rips.fit_transform(X)
rips.plot(dgms2)

上述代码生成一个持久图(参见 README 图像),展示不同尺度下拓扑特征的生命周期。


文档与资源


许可与引用

  • 许可:MIT(Python 封装和底层 C++ 代码均适用)。
  • 在研究中使用该库时,请引用 JOSS 论文和原始 Ripser 论文(README 中提供 BibTeX 条目)。

谁会使用它?

  • 将 TDA 应用于点云、时间序列或图像的数据科学家。
  • 构建分类、聚类或异常检测特征的研究人员。
  • 需要无需处理 C++ 编译问题的快速纯 Python 接口的任何人。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目