问题标签 [mri]

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 回答
6932 浏览

ruby - 与使用 Puma 的最新 MRI 相比,运行 JRuby 是否仍然有好处?

我正在考虑将我们的 ruby​​ 解释器更新为 JRuby,这非常令人头疼,因为我们不得不从我们的应用程序中删除任何 2.x 特定语法并求助于 ruby​​ 1.9.3 兼容性。这不是世界末日。

到了运行应用程序的时候,我发现我们不能在集群模式下使用 Puma。问题是,鉴于过去几年对 MRI 的所有修复和更改,拥有“真实线程”的好处仍然有效吗?

更新

为了使这更客观,问题是,“最新版本的 MRI 是否不需要采用 JRuby 来实现与本地线程相同的好处?”

0 投票
1 回答
70 浏览

c - Where error message ArgumentError: no id given comes from when calling method_missing

When you call method_missing with first parameter as 'string' instead of :symbol you get this cryptic error message:

When you look at the source code for method_missing

there is nothing with error message ArgumentError: no id given. Where it comes from?

0 投票
1 回答
1632 浏览

ruby - 为什么这个 Ruby 程序不将堆内存返回给操作系统?

我试图了解从 Ruby 堆分配的内存何时返回给操作系统。我知道 Ruby 永远不会返回分配给它的堆的内存,但我仍然不确定堆外内存的行为。即那些不适合 40 字节 RVALUE 的对象。

考虑以下程序,它分配一些大字符串,然后强制执行一次主要 GC。

在 MRI 上使用 Ruby 2.2.3 运行该程序会产生以下输出。在强制执行主要 GC 之后,堆大小与预期一致,但 RSS 并没有显着减少。

当我们分配一个大对象而不是许多小对象时,将这些结果与以下结果进行比较。

注意最终的 RSS 值。我们似乎已经释放了为大字符串分配的所有内存。

我不确定为什么第二个示例释放内存,但第一个示例没有释放内存,因为它们都从 Ruby 堆中分配内存。这是一个可以提供解释的参考资料,但我会对其他人的解释感兴趣。

将内存释放回内核也是有代价的。用户空间内存分配器可能会(私下)保留该内存,希望它可以在同一进程中重用,而不是将其交还给内核以供其他进程使用。

0 投票
0 回答
1200 浏览

matlab - Matlab 编程:使用 iradon.m 函数的 3D 氡变换

我正在编写一段用于重建径向 3D NMR 数据的 Matlab 代码。但是,由于 Matlab 中内置的氡函数只是 2D 的,我将不得不应用它们两次。在我的代码中的第一个 iradon 变换之后,我得到了成像对象的投影,因为它们应该看起来(从不同的角度)。但是在第二次 iradon 变换之后,我看不到对象的正确重建(只有很多噪声和一些模糊的东西,对象应该在哪里)。

我的解决方案尝试如下所示。

输入数据是自由感应衰减或 fid:fid(NP,nv,nv2) 其中 NP 是投影数,nv 是 theta 角增量数,nv2 是 phi 角增量数。

在 FID 上进行 ifft 将为每个 theta 角提供尺寸 proj(NP,phi) 的正弦图。

执行第一个 iradon 会为每个 theta 角提供尺寸为 I(r,x) 的过滤和未过滤的反投影。(因此 I3 和 I4 具有尺寸 (r,z,theta) )

执行最后一个 iradon 变换后,应渲染尺寸为 I(x,y,z) 的重构 3D 图像

0 投票
1 回答
35 浏览

mri - 将 mri 与不同大小的 fdg 共同注册

fdg我想将图像与mri具有不同大小的图像共同注册。我尝试过使用SPM但无法做到。

有人可以告诉我要遵循的步骤吗?

我是否需要调整其中一张图像的大小或重新采样?

0 投票
1 回答
501 浏览

ruby - Ruby 解释器是否以惰性方式编译为字节码?如何?

对于 MRI 1.9+ 和 Rubinius 实现,Ruby 源代码被编译成字节码,然后由 VM 解释该字节码。当使用解释器从命令行运行 Ruby 脚本时,我想知道这种机制的细节。

  • 解释器是否首先编译脚本中所需的所有相关源文件,然后运行所有内容?还是它会执行一些代码,然后在需要时以一种懒惰的方式编译其他文件?
  • 如果是后者(我怀疑),这个过程是通过文件还是通过代码块完成的?
  • 在什么时候它停止执行字节码并再次运行编译过程?
  • 这个过程与 MRI 和 Rubinius 有什么不同吗?

例如,如果我运行“ruby my_main_script.rb”,它需要 3 个其他 rb 源文件(并且这个文件本身没有任何要求),我想象的可能性是:

  • :解释器解析 my_main_script.rb 和 3 个文件。在解析之后,它将所有 AST 树编译为字节码。然后它继续使用 VM 运行字节码。

  • B : Ruby 解析 my_main_script.rb 并将其编译为字节码。然后它运行字节码。当遇到对另一个文件中的方法的调用时,它首先解析并编译该文件并继续执行。如果是这种情况,我想详细了解一下。

  • C : Ruby 根据一些(对我来说不知道的)标准解析和编译来自 my_main_script.rb 的一些代码,它运行该字节码,然后在需要时解析和编译另一段。这个过程和“当需要时”条件检测方法对我来说是有趣的理解。


2016 年 3 月 30 日更新

我编写了这个小实验脚本来尝试检查 B 是否是正确答案:

'say_hi.rb' 只包含“puts 'hello'”这一行。如果 B 是正确答案,那么输出不应该如下吗?

它只是输出“你好”......

0 投票
1 回答
195 浏览

ruby - MRI 红宝石线程和性能

我的第一个问题,但我已经潜伏了很长时间,所以如果我违反任何规则或发布垃圾问题,你将不得不原谅我。

我试图更好地理解线程,我决定测试 MRI,看看它的总体表现如何。

给定以下代码(和输出),为什么线程操作比非线程变体慢得多?

代码

输出

提前致谢。

0 投票
1 回答
221 浏览

ruby - Ruby 我们如何使用指针解冻字符串

我正在浏览一个博客,发现以下代码片段:

谁能解释一下,我不明白下一行实际上是如何解冻字符串的。

0 投票
1 回答
44 浏览

ruby - 使用 twitter gem 进行并行调用

我正在使用twitter gem 从我的应用程序中进行 API 调用并获取一些数据。

我有一个数组,user_ids我想通过执行以下操作来获取每个用户的所有推文:

有没有办法让这些调用并发?有什么方法可以让我在twitter上使用typhoeus或任何类似的 gem吗?有没有其他方法可以快速完成此操作?

0 投票
1 回答
1690 浏览

dicom - 查找在同一扫描会话中获取的两个 MR 数据集的相同切片位置的坐标 (mm)

我有两个 MR 采集,第一个是 3D 采集(1x1x1 mm3),第二个是 2D 采集(2.24 x 2.24 x 5.00 mm,轴向切片)。高分辨率数据集是一个完整的头部 3D 采集,如果在轴向方向上重新切片(方向最初是采集中的矢状),则可提供 176 个切片。2D 采集仅包含 3 个轴向切片,这些切片被选择以针对大脑中的特定区域并连续采集。

是否有可能知道 3D 高分辨率数据集中的哪些切片与 2D 数据集中的 3 个切片准确对应,假设受试者在两次扫描之间没有移动,并且这些数据集是在同一扫描会话中获取的?我正在查看这两个数据集的 dicom,并尝试使用 ImageOrientationPatient 和 ImagePositionPatient 标签来尝试准确找出二维扫描中切片相对于磁体等中心的坐标。这样我就可以知道 2D 采集中第一个切片相对于磁体等中心的精确坐标,并假设两次扫描共享相同的原点,然后我可以确切地知道坐标对应于 3D 扫描中的哪个轴向切片?我面临的问题是两次采集的 ImageOrientationPatient 向量是不同的,因为高分辨率是通过矢状方向规范获得的(尽管是 3d 并且可以在任何方向获得切片),而 2D 数据是专门作为轴向切片采集的。

有dicom处理经验的人能否请教一下我如何链接这两个扫描?由于它是相同的扫描会话,我假设这两个采集的参考位置应该相同。那是对的吗?