为了使我的计算研究具有可重复性,我应该在期刊文章(或在线发布)中包含哪些材料?

计算科学 软件 出版物 文件 再现性
2021-12-08 21:10:21

可重复性在计算科学研究中变得越来越重要。(例如,请参阅Roger Peng 在Science中的这篇文章;我也知道其他此类文章和网站。)但是,我不清楚我应该在期刊文章(或在线)中包含多少信息我的计算研究可重现(假设没有其他障碍,如知识产权协议)。是否有任何指导方针,如果没有,人们能否建议研究人员应该采取哪些步骤来使他们的计算科学研究具有可重复性?

在答案中特别有用的是实现这些建议的可能方法——基本上是工作流。与系统无关或基于 Linux 的工作流程更可取。此外,讨论任何相关的个人经历也会有所帮助。

在我的特殊情况下,我正在写一篇理论论文,其中包含几个示例计算,这些计算非常简单,可以在 MATLAB 中完成。我认为在这种情况下,包括 MATLAB 脚本,以及在我的机器上注明 MATLAB 的特定版本,就足以确保可重复性。但是,我敢肯定还有更复杂的场景,关于如何进行可重复研究的建议对于了解未来的项目非常有帮助。

4个回答

按重要性的粗略顺序。

源代码

  1. 使实现算法关键方面的代码可用。即使用户不能构建或运行它,他们也可以准确地阅读所做的事情。我有好几次注意到没有在论文中记录的简单决定,但是几分钟后源代码就给出了结论性的回答。
  2. 使其可运行。这涉及记录依赖库的版本,并且通常需要您编写一些可移植的代码。确保它至少构建在您自己以外的一台机器上(如果您从未在干净的环境中构建它,很容易隐藏依赖项)。
  3. 指定使用的代码版本。如果不是正式发布的版本(有时甚至是这样),请记录该版本的 SHA1。(这最自然地适用于 Git 和 Mercurial 等 DSCM,但可以在任何地方使用。)这是一种非常可靠的方法,可以保证某人确实拥有相同版本的代码。
  4. 包括配置和主机参数,包括编译器供应商、版本和优化标志、libc 等系统库、CPU 类型以及内存类型和拓扑(尤其是用于性能研究)。

运行时参数/输入文件

包括完整的输入规范。如果它是由脚本生成的,请包含该脚本。如果是海量数据,记录如何获取和处理数据。如果您的算法具有随机性,请指定使用的随机数生成器和种子。

生成图形和表格的脚本

包含这些脚本非常有帮助,既可以澄清有关数字真实显示的任何问题,也可以让读者试验如果他们更改参数或修改算法,事情会如何变化。

大多数期刊都没有以任何正式的方式为此而设立,但我们最近建立了数值软件档案馆,专门用于将源代码和所有其他必要的内容作为文章的一部分。查看:http: //journals.tdl.org/ans 欢迎投稿!

Stodden, V. 2009。“可重复科学研究的法律框架”。西塞

Victoria Stodden 建议出版完整的“研究纲要”,并在第 3 页列出以下组件。38:

  1. 研究论文
  2. 数据- 包括用于处理数据的文档和代码
  3. 实验——所有源代码;文档、参数、设置和操​​作系统依赖项
  4. 实验结果——图形、数据、插图源文件;以及实验结果处理的文件和解释
  5. 任何辅助材料

至少,您用来执行实验的源代码和数据应该可以在某个地方访问。如有必要,添加构建代码的说明。确实,开放获取期刊太少了,以至于没有开放和既定的规则。