如果您需要专有库,那么进行可重复研究的最佳方法是什么?

计算科学 软件 出版物 文件 再现性
2021-12-14 21:56:49

计算中的可重复研究旨在使在计算论文中生成结果所需的代码可供其他研究人员使用,以便他们可以运行此代码来重现该论文中的结果。我想让我的所有研究都可重复,但我遇到了一些障碍:我正在研究的几篇论文在专有库(CHEMKIN- II ; 许可条款不明确)。

用开源版本替换这些软件组件会非常耗时。CHEMKIN-II 的开源替代品称为Cantera,但 Cantera 使用 C++,而 CHEMKIN-II 使用 Fortran 77。需要大量的努力来修改足够的 Cantera 代码,以便可以通过自动处理C++的微分工具。

鉴于我需要这些专有软件包,假设研究人员可能无法访问 CHEMKIN-II,那么让我的研究尽可能可重复的最佳方法是什么?由于 DAEPACK 是源到源的翻译器,我不一定需要分发 DAEPACK;我也许可以包含它的输出,这将是计算导数的 Fortran 源文件。

更一般地说,如果您在工作中需要专有软件,而该专有软件并未广泛使用(即不是 MATLAB、Mathematica 等),那么您如何使您的工作具有可重复性?

4个回答

我不认为“可重复研究”的定义要求作者免费提供重现所获得结果所需的所有工具。如果其中一些是专有的,那么未来的用户(而不是作者)有责任做出安排以获取所需的软件。(您不会期望必须为其他人构建软件来重现您的结果,对吗?)当然,您有责任明确指定您使用的专有软件的哪个版本,但期望这是不合理的您可以仅仅因为它是开源的,就使研究代码与开源软件兼容。

[顺便说一句,除了谈论软件在某些是专有软件时的可再现性之外,我认为首先需要解决一个更基本的问题:该软件是否在不同的安装(例如,对于不同的架构和编译器版本?例如,由于处理器数量不同而导致的舍入误差和分配差异意味着许多分子模拟计算仅通过更改分配中包含的处理器数量就会给出不同的结果。(统计平均值应达到相同地方,但轨迹可能而且可能会以非常不同的方式结束。)]

我从来不认为“可重复的研究”意味着你的读者和科学家应该只需要点击“运行”(或编译或你有什么)来完全重现你的结果。如果不出意外,这将扼杀使用专有统计分析包的任何人的研究,或者如果它们是为过时的平台或语言制作的,则会使事情“不可复制”。或者就此而言,是否有人想要复制您的代码,但不理解/使用您使用的语言。

CrossValidated 就该主题进行了类似的讨论——“可重现”是否意味着您可以复制我对我的数据的分析,或者实验本身可以从头开始重新运行并提供验证结果。链接在这里:https ://stats.stackexchange.com/questions/14999/how-are-we-defining-reproducible-research

我认为更重要的元素是描述你所做的事情,让有足够兴趣的人可以重新编码,如果使用商业工具,这些工具会被提及。因为这既符合复制实验的利益,又符合双重检查代码错误的目的。

在您的情况下,您甚至可能根本无权分发您使用的任何代码,对算法进行非常深入的描述可能是您能做的最好的事情。根据您的代码的复杂程度,有人可能能够从他们可用的任何工具中重现他们感兴趣的任何内容。

否则,请四处打听,看看您允许发布多少工作,然后发布。

在您的情况下,发布生成的 Fortran 代码听起来像是一个非常好的解决方案。

作为一般规则,我认为使用未发布的软件与可重复研究的目标不相容。这就是为什么我将可重复研究视为一项长期目标而不是需要立即应用的原因之一。