首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的GUDHI + rpy2交互

奇怪的GUDHI + rpy2交互
EN

Stack Overflow用户
提问于 2021-03-01 04:45:49
回答 1查看 32关注 0票数 0

这可能是一个很小的问题,但我遇到了它,并找到了一个解决方案,也许最终会对某些人有所帮助。基本上,我尝试使用以下代码通过R使用rpy2调用GUDHI C++库:

代码语言:javascript
复制
import gudhi
import rpy2.robjects.packages as rpackages
import rpy2.robjects.vectors as rvectors
import rpy2.robjects as robjects
import rpy2.robjects.numpy2ri
import numpy as np


point_cloud = np.random.uniform(0, 10, size=(30, 3))
# tda.point_cloud_to_pl(point_cloud, method="GUDHI_R")
rpy2.robjects.numpy2ri.activate()

# import R's "base" package
base = rpackages.importr('base')

# import R's "utils" package
utils = rpackages.importr('utils')

# select a mirror for R packages
utils.chooseCRANmirror(ind=1) # select the first mirror in the list

# R package names
packnames = ('TDA', 'deldir', 'Matrix', 'SparseM')
names_to_install = [x for x in packnames if not rpackages.isinstalled(x)]
if len(names_to_install) > 0:
    utils.install_packages(rvectors.StrVector(names_to_install))

# Importing packages
rpackages.importr('TDA')
rpackages.importr('deldir')
rpackages.importr('Matrix')
rpackages.importr('SparseM')

X = robjects.r.assign("X", point_cloud)
alpha_complex_diag = robjects.r['alphaComplexDiag']
ph_output = alpha_complex_diag(X)
print(ph_output)

但不断收到分段错误提示

代码语言:javascript
复制
 *** caught segfault ***

R[write to console]: address 0x7fa6ac2c6090, cause 'invalid permissions'

解决方案是删除python脚本顶部的import gudhi。因为某些原因导致R不能使用它?也许是因为他们试图调用同一个库?

EN

回答 1

Stack Overflow用户

发布于 2021-03-07 04:21:15

这可能确实是Python和R使用的动态加载的库之间的冲突。一个这样的例子是scipy使用BLAS做看起来很奇怪的事情,这会导致崩溃:https://github.com/rpy2/rpy2/issues/505

不幸的是,我一点也不了解古迪。如果这是一个阻塞程序,你需要通过一个调试器来运行它,以找出它在C库中发生了什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66413674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档