问题标签 [rpy2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2526 浏览

python - Python 和 Rpy2:使用带有“.”的选项调用绘图函数 在他们中

我刚刚开始学习如何将 rpy2 与 python 一起使用。我能够制作简单的情节等,但我遇到了 R 中的许多选项使用“。”的问题。例如,这是一个有效的 R 调用:

barplot(t, col=heat.colors(2), names.arg=c("pwn", "pwn2"))

其中 t 是一个矩阵。

我想在 python 中使用相同的调用,但它拒绝“。” names.arg 的一部分。我的理解是在python中你替换了“。” 使用“_”,例如 names_arg,但这也不起作用。我知道这是一个基本问题,所以我希望有人已经看到并知道解决方法。谢谢!

0 投票
3 回答
17238 浏览

python - 为 rpy2 转换 python 对象

以下代码应该在 rpy2 中创建热图

但是,它会导致以下错误

从文档中我了解到 r.heatmap 需要“数字矩阵”。如何将 np.array 转换为所需的数据类型?

0 投票
2 回答
5517 浏览

python - rpy2:将 data.frame 转换为 numpy 数组

我在 R 中有一个 data.frame。它包含很多数据:来自许多 (125) 数组的基因表达水平。我想要 Python 中的数据,主要是因为我在 R 方面的无能以及这应该是一个 30 分钟的工作。

我希望以下代码能够工作。要理解此代码,请知道该变量path包含我的数据集的完整路径,加载时会为我提供一个名为immgen. 知道这immgen是一个对象(一个 BioconductorExpressionSet对象),它exprs(immgen)返回一个包含 125 列(实验)和数万行(命名基因)的数据框。(以防万一不清楚,这是Python代码,使用robjects.r调用R代码)

此代码运行,但expression_data只是array([[1]]).

我很确定这e并不代表由于以下exprs()原因生成的数据框:

但话说回来,谁知道呢?即使e确实代表了我的 data.frame,它不会直接转换为数组也足够公平 - 数据框比数组(行名和列名)包含更多,所以也许生活不应该这么容易。但是我仍然无法弄清楚如何执行转换。文档对我来说有点太简洁了,尽管我对文档标题的有限理解意味着这应该是可能的。

有人有什么想法吗?

0 投票
1 回答
641 浏览

python - 如何抑制 rpy2 中的错误消息

以下代码不起作用。似乎 R 警告消息引发了 python 错误。

在 ipython 中运行该代码示例是可行的,但是,在脚本中运行它会引发 errorTypeError: 'module' object is unsubscriptable。我认为这是由于警告消息。

避免此问题的最佳方法是什么?提前致谢!

0 投票
3 回答
36754 浏览

python - 使用 matplotlib 在曲面/等高线图中绘制 3 元组数据点

我有一些由外部程序生成的表面数据作为 XYZ 值。我想使用 matplotlib 创建以下图表:

  • 曲面图
  • 等高线图
  • 等高线图与曲面图重叠

我已经查看了几个在 matplotlib 中绘制曲面和轮廓的示例 - 但是,Z 值似乎是 X 和 Y 的函数,即 Y ~ f(X,Y)。

我假设我将需要以某种方式转换我的 Y 变量,但我还没有看到任何示例来说明如何做到这一点。

所以,我的问题是:给定一组 (X,Y,Z) 点,我如何从该数据生成表面和等高线图?

顺便说一句,为了澄清,我不想创建散点图。此外,虽然我在标题中提到了 matplotlib,但我并不反对使用 rpy(2),如果这样可以让我创建这些图表。

0 投票
2 回答
844 浏览

python - Python 和 rpy2:如何在运行时调整/清除图形?

我正在使用 rpy2 在 python 中进行数据分析和绘图。它工作正常,除了当我绘制绘图时,它的窗口会一直挂起,直到程序终止。有没有办法在运行时清除情节?此外,如果我调整窗口大小,绘图就会消失,但窗口仍然存在。当以交互方式使用 R 时,调整窗口大小只会调整我的绘图大小。我想在 python 中有这个功能。

例如,如果我运行以下代码,我将看到一个简单的绘图。

但是,如果我想调整窗口大小,情节就会消失,如果我想让我的代码继续做其他事情,这个窗口就会挂起。如果有一个在 R 中有效的命令来清除可能有效的情节,但我似乎找不到。任何指针将不胜感激。

0 投票
2 回答
1005 浏览

python - Python Rpy R 数据处理优化

我正在用 Python 和 R 编写一个与 Rpy2 桥接的数据处理程序。

输入数据是二进制的,我使用 Python 读取数据并将它们传递给 R,然后收集结果以输出。

数据被组织成片段,每个片段大约 100 个字节(每个值 1 个字节 * 100 个值)。

他们现在才工作,但速度非常低。以下是我对 1GB 大小(即 10^7 条)数据的一些测试:

如果我禁用 Rpy2 调用以进行空运行,Python 需要大约 90 分钟才能使用一个单线程在 Intel(R) Xeon(TM) CPU 3.06GHz 上循环。

如果我在 Xeon 双核上启用全部功能和多线程,则(估计)程序需要大约 200 小时才能完成。

我多次杀死Python程序的调用堆栈几乎总是指向Rpy2函数接口。我也做了分析,得到了类似的结果。

所有这些观察表明 Rpy2 调用的 R 部分是瓶颈。所以我分析了我的 R 程序的独立版本,但分析摘要指向“匿名”。我仍在努力查看我的 R 脚本的哪一部分是最耗时的。*****已更新,请参阅下面的编辑 *****

有两个可疑的候选通过,一个是使用来自 cran[1] 的 wmtsa 的连续小波变换(CWT)和小波变换模最大值(WTMM),另一个是前高斯曲线的非线性拟合。

我想到的是:

  1. 为了拟合,我可以用内联 C 代码代替 R 路由吗?C和fortran中有许多合适的库......(来自网络的想法;我从来没有这样做过;不确定)

  2. 对于小波算法....我将不得不分析 wmtsa 包以重写 C 中的热点?.... 使用 C 或 fortran 重新实现整个 wmtsa 包对我来说非常重要。我没有太多的编程经验。

  3. 文件中的数据块以 20 个连续字节组织,我可以直接映射到类似 C 的 char* 数组吗?目前我的 Python 程序一次只读取一个字节并将其附加到一个列表中,这很慢。这部分代码需要 1.5 小时,而 R 需要约 200 小时,所以不是那么紧急。

这是我第一次遇到解决实际问题的程序效率。我对这些信息感到不知所措。请给我一些关于下一步做什么和如何做的建议。

干杯!

脚注:

  1. http://cran.r-project.org/web/packages/wmtsa/index.html

* 更新 *

感谢 cran 的 proftools,我设法创建了一个调用堆栈图。我可以看到大约 56% 的时间都花在了 wmtsa 上,代码片段如下:

约 28% 的时间花在 nls 上:

从 gamlss.dist 包中评估 dexGAUS 需要花费大部分时间。

剩余约 10% 的 R 时间花在数据传递/拆分/聚合/子集上。

0 投票
2 回答
1312 浏览

python - 通过 rpy2 在 Python 中运行测试的问题

考虑到我两周前开始编码,我觉得这将是一个快速解决方案。我正在尝试运行一个统计测试 - 一个 Mantel,寻找两个距离矩阵之间的相关性 - 在 Python 中,使用已经通过 Rpy2 用 R 编写的函数(?)。R 模块是“ade4”,它包含“mantel.rtest”

编辑:这现在有效! “这会返回错误:“AttributeError: 'R' object has no attribute 'mantel'”这让我相信这里被调用的对象在“.”处被截断(即“mantel”与完整的“mantel.rtest” “)。我尝试将“mantel.rtest”重新分配为没有“。”的对象,例如)rmantel =“mantel.rtest”并将结果替换为 = robjects.r.rmantel(M1,M2,nrepet = 9999)仅收到错误:“AttributeError:'R' 对象没有属性'rmantel'” - 所以这不起作用。关于如何解决这个问题的任何想法?

新问题 Mantel 测试需要“dist”格式的数据,所以当我运行编辑后的代码时,我收到以下错误“RRuntimeError: Error in function (m1, m2, nrepet = 99) : Object of class 'dist' expected "

所以我尝试将文件转换为该格式,当我打印结果时,它是正确大小的矩阵的下半部分,但所有字段都填充了“NA”

我明白了

1 2 3 4 5 6 7 8 9 10 11 12 13

2 不适用

3 无 无

4 不适用 不适用

5 不适用 不适用 不适用

6 NA NA NA NA NA

7 NA NA NA NA NA NA

8 NA NA NA NA NA NA NA

9 NA NA NA NA NA NA NA NA

10 NA NA NA NA NA NA NA NA NA

11 NA NA NA NA NA NA NA NA NA NA

12 NA NA NA NA NA NA NA NA NA NA NA

13 NA NA NA NA NA NA NA NA NA NA NA NA

14 NA NA NA NA NA NA NA NA NA NA NA NA NA

0 投票
2 回答
2026 浏览

python - 用rpy2映射python元组和R列表?

我在理解与 rpy2 对象和 python 对象的映射时遇到了一些麻烦。

我有一个函数(x),它在 python 中返回一个元组对象,我想用 R 对象列表或向量映射这个元组对象。

首先,我正在尝试这样做:

失败并出现错误:rinterface.RRuntimeError:eval(expr,envir,enclos)中的错误:找不到对象'tlist'

所以我正在尝试另一种策略:

失败并出现此错误:TypeError: 'R' object does not support item assignment

你能帮我理解吗?非常感谢 !!

0 投票
4 回答
3854 浏览

python - 在 Python 中运行程序 (R) 以执行操作(执行脚本)的问题

我想从 python 执行一个 R 脚本,理想情况下显示和保存结果。使用 rpy2 有点困难,所以我想我应该直接调用 R。我有一种感觉,我需要使用“os.system”或“subprocess.call”之类的东西,但我很难解读模块指南。

这是 R 脚本“MantelScript”,它使用特定的统计测试来一次比较两个距离矩阵(distmatA1 和 distmatB1)。这在 R 中有效,尽管我还没有放入迭代位以便以成对的方式通读和比较一堆文件(我真的需要一些帮助,顺便说一句!):

这是我的 python 脚本的相关位,它读取了一些以前制定的列表并拉出矩阵,以便通过这个 Mantel 测试进行比较(它应该从 identityA 中提取第一个矩阵并顺序将其与 identityB 中的每个矩阵进行比较,然后重复与来自identityB的第二个矩阵等)。我想保存这些文件,然后调用 R 程序来比较它们: