scikit-tda/ripser.py
A Lean Persistent Homology Library for Python
Ripser.py とは?
Ripser.py は高速な C++ ライブラリ Ripser の Python ラッパー であり、トポロジカルデータ分析 (TDA) の中心的な手法である 持続的ホモロジー を計算するための軽量で使いやすいツールキットを提供します。点群、距離行列、または画像を 持続的ダイアグラム に変換でき、マルチスケールの形状情報を捉えることができます。これは多くの機械学習パイプラインで有用です。
主な機能
| 機能 | 内容 |
|---|---|
| 持続的コホモロジー | スパースまたは密なデータに対して、ビートリス・リップス(またはローワースター)フィルトレーションを計算し、誕生/消失ペアを返します。 |
| ダイアグラムの可視化 | persim パッケージを介してシンプルな plot_diagrams ヘルパーで持続的ダイアグラムを描画できます。 |
| 画像フィルトレーション | グレースケール画像から直接ローワースター・フィルトレーションを生成できます。 |
| 代表的コチェインの抽出 | ダイアグラムに表示されたホモロジー類を実現する具体的なコチェインを抽出できます。 |
| scikit-learn互換 API | パイプラインに組み込める Rips 変換器(fit_transform / plot)を提供します。 |
インストール
# PyPI から(Windows、macOS、Linux 用の事前ビルド済みウェHEEL)
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
# 2次元のランダム点群
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 の画像を参照)を生成します。
ドキュメントとリソース
- 完全なドキュメント: https://ripser.scikit-tda.org
- JOSS 論文(引用可能): DOI 10.21105/joss.00925
- 関連プロジェクト: 元の C++ ライブラリ Ripser, GPU加速版 Ripser++。
ライセンスと引用
- ライセンス: MIT(Python ラッパーおよび下位の C++ コードの両方)。
- 研究でこのライブラリを使用する際は、JOSS 論文と元の Ripser 論文の両方を引用してください(README に BibTeX エントリが提供されています)。
だれが使うべきか?
- 点群、時系列、画像に TDA を適用するデータサイエンティスト。
- 分類、クラスタリング、異常検出用の特徴を構築する研究者。
- C++ コンパイルの手間なく、高速な純粋 Python インターフェースで持続的ホモロジーが必要な人。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト