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


19

可重复进行的计算研究旨在使计算论文中生成结果所需的代码可供其他研究人员使用,以便他们可以运行此代码以在该论文中复制结果。我想提出我的研究可重复的,但我快到有点障碍的:一对夫妇的论文,我就利用工作的内部自动分化包(称为DAEPACK一种专有库)(CHEMKIN- II;许可条款不清楚)。

用开源版本替换这些软件组件将非常耗时。已经存在CHEMKIN-II的开源替代品,名为Cantera,但Cantera使用C ++,而CHEMKIN-II使用Fortran77。这将需要大量的精力来修改足够的Cantera代码,以便可以自动处理它。 C ++的差异化工具。

鉴于我需要这些专有软件包,假设研究人员可能无法使用CHEMKIN-II,那么使我的研究尽可能可重复的最佳方法是什么?由于DAEPACK是一个源到源的翻译器,因此我不必分发DAEPACK。我也许可以包含其输出,该输出将是计算派生的Fortran源文件。

更一般而言,如果您在工作中需要专有软件,并且专有软件不广泛使用(例如,MATLAB,Mathematica等不是),那么如何使您的工作可再现?


DAEPACK会修改CHEMKIN-II源代码,还是在内部使用CHEMKIN-II?
2012年

DAEPACK解析CHEMKIN-II源代码并生成Fortran源文件,该文件包含用于计算Jacobian矩阵,稀疏模式和区间扩展的子例程。它不会修改源代码。从某种意义上说,它就像一个编译器。
Geoff Oxberry 2012年

如果DAEPACK的输出是修改后的CHEMKIN-II源,为什么允许分发它?
2012年

它是派生的作品,但是我不清楚源代码是否被修改。复制了变量名,但是通过该参数,我编写的许多程序都是“修改后的CHEMKIN-II源”。我必须检查一下这一点。
Geoff Oxberry 2012年

CHEMKIN-II许可证是否允许您自由分发未修改的源,并限制您分发更改的方式?我在网上找不到许可证的副本。

Answers:


13

我不认为“可重复研究”的定义要求作者免费提供复制所获得结果所需的所有工具。如果其中一些是专有的,那么将来的用户(而不是作者)应负责安排购买所需的软件。(您不必期望为他人提供的软件来生成您的结果,对吗?)当然,您有责任明确指定所使用的专有软件的发行版,但是期望这是不合理的。你做一个研究代码开源软件兼容只是因为它是开源的。

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


2
我当然同意,可重复的研究并不强迫作者免费提供所有必需的软件。但是,根本没有公开可用的软件确实造成了问题。可重现性研究运动的目标之一是帮助社区建立对这一问题的认识,鼓励人们即使为了复制性而不打算为此提供任何支持,也要公开研究代码。
khinsen 2012年

2
商业出售的代码仍然是可用的代码。如果不再可能获得许可证,那当然是另一回事了。但是,一个代码原作者不应该重写代码,以适应另一个库可重复性的目的。(为了提高代码的可行性和使用性,有一个论点,但可再现性论点并不是表面上必要的,尽管可以说足够了。)
aeismail 2012年

4

我从来没有认为“可重复的研究”意味着您的读者和科学家同伴仅需单击“运行”(或编译或您拥有什么)即可完全再现您的结果。如果没有别的,那将扼杀任何使用专有统计分析包的人的研究,或者如果将其用于不合时宜的平台或语言,则使它们“不可复制”。或者说,有人想要重现您的代码,但不理解/使用您使用的语言。

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

我认为更重要的元素是描述什么水平上所做的工作,以便有足够兴趣的人可以重新编码它,并且如果使用了商业工具,则提到这些工具。因为这样做既有利于复制实验,又可以仔细检查代码错误。


2

在您的情况下,您甚至可能根本无权分发您使用的任何代码,因此,最好的方法是对算法进行非常深入的描述。取决于您代码的复杂程度,某人可能能够从他们可用的任何工具中复制他们感兴趣的任何东西。

否则,四处询问,看看您可以释放多少工作,然后再释放。


其中很多来自聊天对话。
2012年

1

进行可重复研究的最佳方法是不要依赖任何短暂的事物,例如特定平台上的特定代码。昨天,我们在打孔卡上进行计算,今天在硅上的电子上进行计算,明天可能在蛋白质或什至是活细胞的激光器上进行,后天在量子点上进行计算,谁知道下周将会发生什么。

可再现的研究应明确其概念和思想,而不应将当前可用的工具(如硬件或软件)提升为再现研究结果的前提。使用的算法应以清晰的通用形式进行详细说明;特定硬件,编译器或软件包的当前版本只能用作演示研究结果的工具。


我认为我们既需要-人类理解和长期可解释性的概念和思想,也需要短期验证的代码。
khinsen 2012年

1

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

通常,我认为未发布软件的使用与可重复研究的目标不符。这就是为什么我将可重复的研究视为一项长期目标而不是可能需要立即应用的一项长期目标。


1

我为爱思唯尔工作。我的公司已开始在期刊问题中使用Collage框架(为响应Executable Paper Grand Challenge而开发),以使作者能够在其文章中发布大块可执行代码。此功能使读者可以更轻松地复制文章中报告的结果,并将已出版的材料重新用于自己的研究。除开源软件外,Collage还支持各种专有软件;有关更多信息,请参见此处的参考视频和Collage Authoring Environment网站

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.