问题标签 [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.
ruby - 与使用 Puma 的最新 MRI 相比,运行 JRuby 是否仍然有好处?
我正在考虑将我们的 ruby 解释器更新为 JRuby,这非常令人头疼,因为我们不得不从我们的应用程序中删除任何 2.x 特定语法并求助于 ruby 1.9.3 兼容性。这不是世界末日。
到了运行应用程序的时候,我发现我们不能在集群模式下使用 Puma。问题是,鉴于过去几年对 MRI 的所有修复和更改,拥有“真实线程”的好处仍然有效吗?
更新
为了使这更客观,问题是,“最新版本的 MRI 是否不需要采用 JRuby 来实现与本地线程相同的好处?”
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?
ruby - 为什么这个 Ruby 程序不将堆内存返回给操作系统?
我试图了解从 Ruby 堆分配的内存何时返回给操作系统。我知道 Ruby 永远不会返回分配给它的堆的内存,但我仍然不确定堆外内存的行为。即那些不适合 40 字节 RVALUE 的对象。
考虑以下程序,它分配一些大字符串,然后强制执行一次主要 GC。
在 MRI 上使用 Ruby 2.2.3 运行该程序会产生以下输出。在强制执行主要 GC 之后,堆大小与预期一致,但 RSS 并没有显着减少。
当我们分配一个大对象而不是许多小对象时,将这些结果与以下结果进行比较。
注意最终的 RSS 值。我们似乎已经释放了为大字符串分配的所有内存。
我不确定为什么第二个示例释放内存,但第一个示例没有释放内存,因为它们都从 Ruby 堆中分配内存。这是一个可以提供解释的参考资料,但我会对其他人的解释感兴趣。
将内存释放回内核也是有代价的。用户空间内存分配器可能会(私下)保留该内存,希望它可以在同一进程中重用,而不是将其交还给内核以供其他进程使用。
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 图像
mri - 将 mri 与不同大小的 fdg 共同注册
fdg
我想将图像与mri
具有不同大小的图像共同注册。我尝试过使用SPM
但无法做到。
有人可以告诉我要遵循的步骤吗?
我是否需要调整其中一张图像的大小或重新采样?
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 是正确答案,那么输出不应该如下吗?
它只是输出“你好”......
ruby - MRI 红宝石线程和性能
我的第一个问题,但我已经潜伏了很长时间,所以如果我违反任何规则或发布垃圾问题,你将不得不原谅我。
我试图更好地理解线程,我决定测试 MRI,看看它的总体表现如何。
给定以下代码(和输出),为什么线程操作比非线程变体慢得多?
代码
输出
提前致谢。
ruby - Ruby 我们如何使用指针解冻字符串
我正在浏览一个博客,发现以下代码片段:
谁能解释一下,我不明白下一行实际上是如何解冻字符串的。
ruby - 使用 twitter gem 进行并行调用
我正在使用twitter gem 从我的应用程序中进行 API 调用并获取一些数据。
我有一个数组,user_ids
我想通过执行以下操作来获取每个用户的所有推文:
有没有办法让这些调用并发?有什么方法可以让我在twitter上使用typhoeus或任何类似的 gem吗?有没有其他方法可以快速完成此操作?
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处理经验的人能否请教一下我如何链接这两个扫描?由于它是相同的扫描会话,我假设这两个采集的参考位置应该相同。那是对的吗?