Python 的精益持久同源库
项目描述
撕裂者.py
Ripser.py 是 Python 的精益持久同源包。Ripser.py 以超快的 C++ Ripser 包为核心计算引擎,提供了一个直观的界面
- 计算稀疏和密集数据集的持久性上同调,
- 可视化持久性图,
- 计算图像的lowerstar过滤,以及
- 计算有代表性的 cochains。
此外,通过广泛的测试和持续集成,Ripser.py 易于安装在 Mac、Linux 和 Windows 平台上。
为了帮助您使用该软件包,我们整理了一大套笔记本,展示了许多可用的功能。有关该软件包的完整文档可以在ripser.scikit-tda.org找到。
相关项目
如果您正在寻找原始的 C++ 库,您可以在Ripser/ripser找到它。
如果您正在寻找 Ripser 的 GPU 加速版本,您可以在Ripser++上找到它
设置
Ripser.py 在所有主要平台上都可用。您只需安装标准的 Python 数值计算库和 Cython。
依赖项:
- 赛通
- 麻木的
- scipy
- scikit-学习
- 柿子
Windows 用户:如果您使用的是 Windows 机器,您还需要在系统上安装MinGW。
Mac 用户:更新您的 Xcode 和 Xcode 命令行工具可能会解决您在安装时遇到的任何问题。
Cython 应该是安装前唯一需要的库。要安装,请在您的环境中键入以下命令:
pip install cython
pip install ripser
如果您在安装时遇到问题,请告诉我们!
可选依赖
从源代码编译的 Ripser.py 可以通过将 STL 中的标准替换为可用的最快实现之一来获得类固醇1 : robin_hood。使用该实现对 Ripser.py 的基准测试显示速度提升高达30%。unordered_map
robin_hood
为了能够使用robin_hood
而不是 STL,您只需要克隆包含实现的存储库:
# Run this command at the root of the project
git clone https://github.com/martinus/robin-hood-hashing ripser/robinhood
1 Python 包已经robin_hood
默认编译。
用法
界面非常简单:
import numpy as np
from ripser import ripser
from persim import plot_diagrams
data = np.random.random((100,2))
diagrams = ripser(data)['dgms']
plot_diagrams(diagrams, show=True)
如果您更愿意使用它,我们还提供了一个 Scikit-learn 转换器样式对象:
import numpy as np
from ripser import Rips
rips = Rips()
data = np.random.random((100,2))
diagrams = rips.fit_transform(data)
rips.plot(diagrams)
贡献
欢迎各种投稿!如果您想提供帮助,请与我们联系。从代码到笔记本再到示例和文档的所有内容都同样有价值,所以请不要觉得自己不能做出贡献。要做出贡献,请 fork 项目进行更改并提交拉取请求。我们将尽最大努力与您一起解决任何问题,并将您的代码合并到主分支中。
如果您发现错误、有疑问或只是在使用库时遇到问题,请在我们的问题跟踪器中打开问题,我们将尝试帮助解决问题。
执照
Ripser.py 在 MIT 许可下可用!核心 C++ 代码源自 Ripser,它也可在 MIT 许可下使用,版权归 Ulrich Bauer 所有。修改、Python 代码和文档的版权归 Christopher Tralie 和 Nathaniel Saul 所有。
引用
如果您使用此软件包,请在此处找到 JoSS 论文和在此处找到关于 Ripser 的 JACT 论文
。
您可以使用以下 bibtex 条目:
@article{ctralie2018ripser,
doi = {10.21105/joss.00925},
url = {https://doi.org/10.21105/joss.00925},
year = {2018},
month = {Sep},
publisher = {The Open Journal},
volume = {3},
number = {29},
pages = {925},
author = {Christopher Tralie and Nathaniel Saul and Rann Bar-On},
title = {{Ripser.py}: A Lean Persistent Homology Library for Python},
journal = {The Journal of Open Source Software}
}
@article{Bauer2021Ripser,
AUTHOR = {Bauer, Ulrich},
TITLE = {Ripser: efficient computation of {V}ietoris-{R}ips persistence
barcodes},
JOURNAL = {J. Appl. Comput. Topol.},
FJOURNAL = {Journal of Applied and Computational Topology},
VOLUME = {5},
YEAR = {2021},
NUMBER = {3},
PAGES = {391--423},
ISSN = {2367-1726},
MRCLASS = {55N31 (55-04)},
MRNUMBER = {4298669},
DOI = {10.1007/s41468-021-00071-5},
URL = {https://doi.org/10.1007/s41468-021-00071-5},
}
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。