加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

版本控制 – 如何标记科学数据处理工具以确保可重复性

发布时间:2020-12-14 04:34:50 所属栏目:大数据 来源:网络整理
导读:我们开发了一个数据处理工具,从一组给定的原始数据中提取一些科学结果.在数据科学中,您可以重新获得结果并重复计算,从而产生结果集非常重要 由于该工具正在发展,我们需要一种方法来找出我们的工具的哪个版本/构建生成给定的结果集以及如何找到构建工具的相应
我们开发了一个数据处理工具,从一组给定的原始数据中提取一些科学结果.在数据科学中,您可以重新获得结果并重复计算,从而产生结果集非常重要

由于该工具正在发展,我们需要一种方法来找出我们的工具的哪个版本/构建生成给定的结果集以及如何找到构建工具的相应源.

该工具是用C和Python编写的;使用Boost :: Python将C部分粘合在一起.我们使用CMake作为构建系统,为Linux生成Make文件.目前该项目存储在subversion repo中,但是我们中的一些人已经使用了git resp. hg,我们计划在不久的将来将整个项目迁移到其中一个项目.

在这样的场景中,获得源代码,二进制和结果集之间的唯一映射的最佳实践是什么?

我们已经在讨论的想法:

>以某种方式注入全局修订号
>使用内部版本号生成器
>将整个源代码存储在可执行文件本身中

解决方法

这是我花费大量时间工作的问题. @VonC已经写过的内容让我添加了一些想法.

我认为软件配置管理的主题很好理解,并且经常在商业环境中仔细实践.然而,这种一般方法通常缺乏科学数据处理环境,其中许多环境保留在学术界或已经从学术界发展出来.但是,如果您处于这样一个工作环境中,那么随时可以获得信息和建议的来源以及许多可以提供帮助的工具.我不会进一步扩展这一点.

我认为,即使在可行的情况下,您建议将整个源代码包含在可执行文件中也是必要的.实际上,如果你的SCM正确,那么你已经完成的一项基本测试,并且继续这样做,就是你能够按需重建“旧的”可执行文件.您还应该能够确定每个可执行文件和版本中使用的源代码版本.这些应该使源代码包含在可执行文件中是不必要的.

正如您所说,将结果集绑定到计算中的主题也是必不可少的.以下是我们正在构建的解决方案的一些组件:

我们正在远离传统的非结构化文本文件,这是许多科学程序输出结构化文件的特征,在我们的例子中,我们正在研究HDF5和XML,其中感兴趣的数据和元数据被储存了.元数据包括用于产生结果的程序(和版本)的识别,输入数据集的识别,作业参数和一堆其他东西.

我们研究了使用DBMS存储结果;我们想要这样做,但我们今年没有足够的资源去做,也许下次也不会.但是企业出于各种原因使用DBMS,其中一个原因是它们能够回滚,提供审计跟踪等等.

我们还在密切关注需要存储哪些结果集.一种很好的方法只能存储从我们的现场传感器捕获的原始数据集.不幸的是,我们的一些计算需要花费1000个CPU小时来生成,因此根据需要从头开始再生它们是不可行的.但是,我们将来存储的中间数据集将远远少于过去.

我们也在努力让用户更直接地编辑结果集(我想不可能,但我不确定我们是否在那里).一旦有人这样做,世界上所有的出处信息都是错误和无用的.

最后,如果您想了解有关该主题的更多信息,请尝试使用Google搜索“科学工作流程”和“数据来源”类似主题.

编辑:我上面写的不清楚,但我们修改了我们的程序,以便它们包含自己的标识(我们使用Subversion的关键字功能,使用我们自己的扩展或两个)并将其写入它们生成的任何输出中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读