问题标签 [reproducible-research]

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 投票
1 回答
84 浏览

build-system - 使用构建系统进行可重复的研究?

我正在做一个涉及一系列程序的研究项目,每个程序都会生成一个输出文件,该文件成为下一个程序的输入。我想让重复我用来创建所需输出的一系列命令变得容易。似乎make或任何其他构建系统都非常适合这项任务,但是我看过的所有构建系统(可能除了make本身)似乎都强烈倾向于从源代码构建可执行文件,并且我不知道如何对他们做任何其他事情。除了将源代码编译成可执行文件之外,有没有人有使用构建系统完成任务的经验?我可以轻松地使用构建系统来促进可重复的研究,还是应该寻找不同类型的工具?

0 投票
3 回答
21574 浏览

r - 使用插入符号的完全可重现的并行模型

当我在插入符号中运行 2 个随机森林时,如果我设置一个随机种子,我会得到完全相同的结果:

但是,如果我注册一个并行后端来加速建模,每次运行模型时都会得到不同的结果:

有没有办法解决这个问题?一个建议是使用doRNG包,但train使用当前不支持的嵌套循环:

doSNOW更新:我认为可以使用and来解决这个问题clusterSetupRNG,但我无法做到。

foreach有什么特别之处,为什么不用我在集群上发起的种子?对象ab是相同的,那么为什么不model1model2

0 投票
10 回答
13423 浏览

ipython - 以编程方式将单元格添加到 ipython 笔记本以生成报告

我看过一些 iPython 开发人员关于如何将 ipython 笔记本转换 为博客文章、pdf甚至整本书的演讲(大约 43 分钟)。PDF-to-X 转换器会解释用 markdown 或代码编写的iPython 单元格,并在一个步骤中输出一个新格式化的文档。

我的问题是我想生成一个大型文档,其中许多图形和部分都是以编程方式生成的 - 类似这样。为了使用上述方法在 iPython 中工作,我需要能够编写一个函数来编写其他 iPython-Code-Blocks。这种能力存在吗?

我认为这可能有用,所以我想知道是否:

  1. 通过 iPython 生成 iPython 单元是可能的
  2. 如果有理由认为这是一个坏主意,我应该坚持使用模板库(Jinja)等“经典”解决方案。

谢谢,扎克cp

编辑:根据 Thomas 的建议,我在ipython 邮件列表上发布了一些关于这个想法可行性的反馈。简而言之 - 有一些技术上的困难使这个想法对于最初的想法不太理想。对于想要生成 markdown 单元和相应图像/表格的重复报告,通过 ipython 内核/浏览器工作比直接使用 Jinja 等模板系统生成报告要复杂得多。

0 投票
1 回答
258 浏览

r - 用于可重复研究的自动化文本

我正在使用 RStudio、R Markdown、Latex 和 Pandoc 来清理数据、构造变量、运行分析并报告结果。我对可重复研究的概念不熟悉,但我被迷住了。很有意义。

动态表格和数字没有问题。然而,动态文本难倒我。我可以插入内联代码来说明所有统计数据中有 95% 是错误的,但我不确定如何以可重现的方式改变我的语言。

例如,如果我有一个对象 x=0.66,我想写“三分之二的牙医使用 Crest”怎么办?我可以查看 x 的当前值 0.66,然后在文本中键入“2 out of 3”,但这是不可重现的。假设我得到新数据并重新运行分析,x 变为 0.52。我的文字会过时。当然,我可以动态报告 52% 的牙医更喜欢 Crest,但是当所有内容都以百分比报告时,报告就会变得陈旧。

我的想法是,当我想改变写作时,我可以创建可以在文本中调用的函数。例如,“out.of”函数可以处理 if else 语句来生成文本:

我还可以创建一个分数函数,它可以对十分之一、五分之二、三分之一做类似的事情......

我相信其他人已经解决了这个问题。有什么线索吗?想法?

0 投票
3 回答
2222 浏览

r - 带有 knitr 字幕的循环

我想知道是否有一种简单的方法可以在knitr. 我知道的唯一方法是:(从https://github.com/yihui/knitr-examples/blob/master/075-knit-expand.Rnw简化)。但是将输出收集到src然后在循环之后打印它是一个拖累,因为我想编写一个函数来从任意数据集产生这样的循环。

所以我希望能够做的是这样的事情:

...如果我在其上运行 brew() 会产生...

...然后我可以 knit2pdf() 的输出。所以如果模板被称为 tmpl.Rnw,我会运行 brew('tmpl.Rnw','doc.Rnw');knit2pdf('doc.Rnw)

0 投票
3 回答
2514 浏览

r - 在 R 中包含从外部文件运行的源代码

我有一个标准的数据分析程序,需要在各种(约 50 个数据集)上运行。我已经开发了一段时间,现在我想把它变成一个函数,它接受一个数据集并为每个数据集吐出一些合理的表。但是,完成的过程跨越了四个脚本文件,到目前为止,我已经source从一个到另一个运行它,但似乎不可能使用function.

我有以下问题:

当您在数据集上运行代码时,它会崩溃。

是否有某种方式(命令)可以在编译时从其他文件中复制粘贴命令(不知道如何以不同的方式调用它,即使它不是真正的编译)函数?我知道我可以自己复制粘贴它,但我不想这样做,因为各种步骤包括神经网络和 ARFIMA 估计,为了代码的可读性,我想将它们保存在单独的文件中。无论如何,复制粘贴后的功能将类似于 200 行代码,这绝对不是用户友好的......

谢谢

0 投票
2 回答
592 浏览

emacs - 如何在 org-babel 的评估(导出)源块中导入/扩展 noweb refs?

我正在尝试做这样的事情:

我想要发生的是在评估块以产生导出输出时,将 <<defs>> 扩展为缠结样式。实际发生的是 <<defs>> 被逐字评估并导致语法错误。

当将这样的块与输出文件纠缠在一起时,一切正常,但是当我导出缓冲区时,我不知道如何做同样的事情。

建议?

0 投票
1 回答
104 浏览

r - 用于在可重复研究中格式化数值的软件包

是否有一种标准方法可以将数值转换为应用了特定类型格式的字符。

我在想类似的东西:

显然,我自己写它们并不难,但是在准备报告时对这种东西的需求是相当恒定的,而且肯定已经有一些包了?

0 投票
1 回答
248 浏览

r - 在 org 模式下链接/导入外部源代码

这篇论文启发我检查了 Emac 的org-mode,目前我尝试评估什么更适合编写我的文档:knitr / Sweave(我主要使用 R 进行编程)或 org-mode。

我真正喜欢 knitr 的地方在于可以将实际源代码外部化(注意:R 脚本中标签/名称的声明似乎已从## ---- label -------变为## @knitr label; 参见?read_chunk)并将它们“链接”到实际的读写编程/可重复研究文档(而不是在该文档中实际编写代码):

“导入”

并通过引用相应的标签来“重用”

问题

这在 org-mode 中是否也有可能,还是我必须将实际代码放入.org文档中?

我找到了这个,但我没有找到任何链接/导入外部源代码文件的具体概念,并且能够通过将链接代码放在里面来执行它们

背景

我确实看到这种方法可能会在一定程度上对比识字编程的一般范式。但我喜欢以某种“原子”风格工作,因此我感觉更自然的是首先将文件分开,然后动态地将所有内容混合在一起。

0 投票
1 回答
201 浏览

makefile - Make 中静态模式规则的语法有多灵活?

我想使用 make 作为可重复研究的工具。这项研究涉及一个很长的管道,我将为许多独立的数据集运行它,需要一个我将在“pseudo-make”中描述的工作流程,如下所示:

如果 make 只是简单地将每个数据集的名称替换为 '%',这正是我想要的。但是,GNU make 手册对静态模式规则的语法有这样的说法:

当 target-pattern 匹配一个目标时,`%' 可以匹配目标名称的任何部分;这部分称为茎。模式的其余部分必须完全匹配。

这就解释了为什么上面的代码不起作用。在 make 中完成此任务的最佳方法是什么,或者 make 根本不是这项工作的正确工具?

在此先感谢,如果问题提出不当,我深表歉意——我是新手,几乎不知道如何表达这个问题。