PHAT的Python绑定,基于C++的持久同调算法工具箱

phat的Python项目详细描述


持久同调算法工具包(PHAT)
由一个带z:'sub:'2'系数的有序边界矩阵计算。

这个软件包包含了几个算法变体的代码:

*标准算法(见[1]\153页)
*来自[2]的"row"算法(在那篇论文中称为phrow)
*如[3]所述的"twist"算法(默认算法)
*呈现的"chunk"算法d在[4]
*谱序列算法(见[1]

中,除了标准算法外,所有算法都利用边界矩阵的特殊结构在计算中走捷径。如果phat是使用openmp支持编译的,那么块和谱序列算法可以利用多个cpu核。


表单可以很容易地提取持久性对。
或者,可以使用以
算法为参数的"计算持久性对函数",减少给定的"边界矩阵",并将
结果对存储在给定的"持久性对"对象中。

"boundary_matrix"类以"representation"类作为参数。
此表示定义如何表示矩阵的列,以及如何执行低级操作(例如列添加)。正确选择
表示类对于程序的性能和选择
算法一样重要。我们提供了以下表示类的选择:
BR/> *"向量向量":每个列被表示为整数的"‘STD::vector’",包含列的非零项的索引。矩阵本身STD:"Std::vector"。Br/**‘Vector THEAP':每个列都表示为整数的"STD::vector",包含列的非零项的索引。矩阵本身STD:"STD:向量"。Br/**‘Vector’SET’:每个列是整数的"STD::集",与上面的含义相同。矩阵存储STD:"vector":"这些列"。BR/> *‘Vector’LIST’:每个列是整数的"STD::列表",与上面的含义相同。矩阵存储为这样的列的‘STD::vector’。
*`` heap_pivot_column``与稀疏版本中的想法相同。而不是STD:"设置",枢轴列由"STD:PrimyIyQueQue}"表示。
* 'FuluxPioToVixCube '':与稀疏版本相同的想法。但是,不是将"STD::‘设置’,而是将枢轴列扩展成大小n的位向量(矩阵的维数)。为了避免代价高昂的初始化,该类会记住哪些条目已被某个数据透视列操作过,并在另一列成为数据透视时仅更新这些条目。
*``位树数据透视列'`(默认表示法):类似于``全数据透视列',但实现是更有效率。在内部,它是一个位集,具有对非零元素的快速迭代和对e最大元素。

installation
----


如果您希望使用发布版本的phat,您只需从pypi安装:


位置$phat。然后您可以:




这将为与您的"pip"可执行文件关联的任何python安装安装安装phat。
请确保您使用来自您的"python"可执行文件所在目录的"pip"!

目前,phat python绑定的工作原理是:

*Linux with python 2.7(在ubuntu 14.04上使用系统python进行测试)
*Linux with python 3.5(在ubuntu 14.04上使用anaconda进行测试)
*Mac OS X with python 2.7.12(在Sierra上使用自制程序进行测试)
*Mac OS X withpython 3.5(使用自制软件在sierra上测试)


其他配置未经测试。


请注意,此软件包不适用于mac os x操作系统中附带的python 2.7.10。这些来自"python.org"的智慧之言值得注意:

os x附带的python的ion对学习很有帮助,但不利于开发。
os x附带的版本可能已经从当前的python官方版本中过时,
该版本被认为是稳定的生产版本。

根据您的喜好,使用自制或水蟒的OS X。


如果您希望我们支持某个平台,请告知我们,如果可以,我们将提供支持。

单个三角形:


>3





<4
5<

































定义边界矩阵使用所选的内部表示
边界矩阵=phat.边界矩阵(表示=phat.表示.向量向量)

[]),
(1,[0,1]),
(0,[]),
(1,[1,3]),
(1,[0,3]),
(2,[2,4,5])

边界矩阵(表示=…,列=…)
将合并矩阵的创建和列的分配

l在边界矩阵中。列:
s="列%d表示维度为%d的单元格。"%(列索引,列维度)
如果(列边界):
s=s+"其边界由单元格"+"组成。联接([str(c)表示列边界中的c])
打印
打印("over全部,边界矩阵有%d个条目。"%len(边界矩阵))


pairs=boundary_matrix.compute_persistence_pairs()



print("\n有%d个持久性对:"%len(pairs))
对于成对:
print("出生:%d,死亡:%d%pa"ir)

参考文献:

…[1]H.Edelsbrunner,J.Harer:计算拓扑,导论。美国数学学会,2010年,ISBN 0-8218-4925-5
。[2]V.de Silva,D.Morozov,M.Vejdemo-Johansson:持久同源性中的二元论。反问题27,2011
…[3]C.Chen,M.Kerber:具有扭曲的持久同调计算。第27届欧洲计算几何研讨会,2011年。
…[4]U.Bauer,M.Kerber,J.Reininghaus:Clear and Compress:计算大块持久同源性。arxiv:1303.0477_
_ arxiv:1303.0477:http://arxiv.org/pdf/1303.0477.pdf
。_`持久同源算法工具包`:https://bitbucket.org/phat/phat code
。_` org`:http://docs.python-guide.org/en/latest/starting/install/osx/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用Array和ArrayList做同样的事情?   用户界面使Java JScrollpane仅垂直滚动   查找字符串中最长的重复子字符串所需的算法Java函数?   java我想在listview中检索firebase数据   java如何使用Jsoup提取链接?   java 安卓。看法使用RTEditor时发生充气异常   maven为什么自动依赖是错误版本?(java.lang.ClassNotFoundException:org.junit.jupiter.api.MethodOrderContext)   使用apachespark进行java开发   java glDrawBuffers是否应该翻转IntBuffer?   java在添加回调之前完成CompletableFuture<T>   用Java构建搜索树   java将web应用程序部署到Heroku   active directory Java LDAP:属性为只读   启动Spring启动应用程序时未考虑java DB端口   使用Mockito的java模拟   C++从运行时运行java的过程。执行出口代码139   javascript使用脚本删除旧SonarQube项目   java代理每节点模型?   java无法在Android上通过Internet从PC服务器接收UDP数据   在bluemix:java上加载p12时发生ibm云错误。木卫一。IOException:数据不足