[论文解读] Enhancing reproducibility and collaboration via management of R package cohorts
本文提出了一种通过版本化清单管理 R 包群组的框架,以提升科学计算中的可重现性和协作性。该框架使用户能够通过跟踪来自不同来源的精确版本的包清单,创建、在不同环境间切换并部署一致的软件上下文,同时提供安装、溯源追踪和发布工具——已在 switchr 和 GRANbase 中得到验证,许可证为 Artistic 2.0。
Science depends on collaboration, result reproduction, and the development of supporting software tools. Each of these requires careful management of software versions. We present a unified model for installing, managing, and publishing software contexts in R. It introduces the package manifest as a central data structure for representing version specific, decentralized package cohorts. The manifest points to package sources on arbitrary hosts and in various forms, including tarballs and directories under version control. We provide a high-level interface for creating and switching between side-by-side package libraries derived from manifests. Finally, we extend package installation to support the retrieval of exact package versions as indicated by manifests, and to maintain provenance for installed packages. The provenance information enables the user to publish libraries or sessions as manifests, hence completing the loop between publication and deployment. We have implemented this model across two software packages, switchr and GRANbase, and have released the source code under the Artistic 2.0 license.
研究动机与目标
- 解决协作人员和分析中软件版本不一致的问题,该问题会损害基于 R 的研究的可重现性。
- 使用户能够定义、管理和在隔离的、基于版本的软件上下文(包群组)之间切换,以实现可重现的分析。
- 支持从非 CRAN 源(包括版本控制系统和归档 tar 包)安装精确的包版本。
- 提供一种机制,将可重现的软件上下文作为自包含的、版本化的清单进行发布和部署。
- 通过溯源追踪和基于清单的软件环境重新创建,实现从发表到部署的闭环。
提出的方法
- 引入包清单作为核心数据结构,列出精确的包版本及其来源,包括 CRAN、Bioconductor、Git 仓库和本地目录。
- 使用 `libManifest()` 函数从当前库或会话生成清单,捕获完整的软件上下文。
- 使用 `switchTo()` 和 `switchBack()` 函数基于清单创建和管理隔离的 R 库环境。
- 通过标准 R 安装机制从清单安装精确的包版本,同时实现溯源追踪以保障可重现性。
- 通过 `switchrGist` 包将清单发布为 GitHub gists,便于共享和部署。
- 与外部系统(如 crandb)集成,支持基于日期或 R 版本的回溯安装历史包群组。
实验结果
研究问题
- RQ1R 用户如何可靠地在不同协作人员和时间点之间重现和共享精确的软件上下文,以实现可重现分析?
- RQ2去中心化的、基于清单的系统能否有效管理来自多样化来源(包括版本控制和归档)的特定版本包群组?
- RQ3如何捕获并利用溯源信息,以实现完整软件环境的发布和重新部署?
- RQ4在没有清单或 sessionInfo 的情况下,历史 CRAN 状态在多大程度上可被近似并用于恢复软件上下文?
- RQ5该框架能否扩展以支持动态文档和科学出版中的自动化可重现工作流?
主要发现
- 包清单模型成功捕获并表示了完整的、基于版本的软件上下文,实现了在不同环境中的稳定部署。
- 该框架允许用户在不干扰默认站点库的情况下,在隔离的 R 库之间切换,确保了可重现性并避免了依赖冲突。
- 从清单安装支持从非仓库源(包括 Git 仓库和归档 tar 包)精确获取版本,提升了灵活性和可移植性。
- 对已安装包的溯源追踪使用户能够将完整的软件上下文作为可重用的、版本化的清单进行发布和重新部署。
- 与 crandb 的集成支持基于日期或 R 版本的回溯重建历史包群组,有助于重现旧的研究。
- 该框架通过两个开源包——switchr 和 GRANbase——得到验证,许可证为 Artistic 2.0,源代码可在 GitHub 上获取。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。