8 个版本
0.8.11 | 2024年3月4日 |
---|---|
0.8.10 | 2024年2月23日 |
0.8.7 | 2024年1月24日 |
0.8.6 | 2023年10月2日 |
0.8.0 | 2023年9月6日 |
48 在 生物学 类别中排名
299 每月下载量
2.5MB
4K SLoC
SciDataFlow — 促进科学数据流动
问题 1:您是否曾经想要重用或基于某个研究项目的输出或补充数据,但找不到它?
SciDataFlow 通过轻松地将研究项目的 数据 与其 代码 结合起来解决此问题。通常,开源计算项目的代码使用 Git 管理,并存储在类似 GitHub 的网站上。然而,许多科学数据太大,无法存储在这些网站上,而是托管在 Zenodo 或 FigShare 等网站上。
问题 2:您的计算项目是否有数十甚至数百个需要跟踪的中间数据文件?您是否想查看这些文件是否被计算管道的更新所更改?
SciDataFlow 通过记录跟踪数据更改所需的信息来解决此问题。这些信息与从远程数据存储库检索数据或推送数据所需的信息一起存储。所有这些信息都存储在 SciDataFlow 管理的简单 YAML "数据清单" (data_manifest.yml
) 文件中。此文件存储在主项目目录中,并打算提交到 Git,以便可以使用 Git 提交历史记录查看数据更改。数据清单是一个简单、最小、可读性强的规范。但您不需要了解具体细节——简单的 sdf
命令行工具会为您处理所有这些。
SciDataFlow 论文已发表在 Bioinformatics 上。如果您使用 SciDataFlow,请考虑引用它
V. Buffalo, SciDataFlow: A Tool for Improving the Flow of Data through Science.
Bioinformatics (2024), doi:10.1093/bioinformatics/btad754.
可以通过点击 主 GitHub 仓库页面 右侧的“引用此仓库”来访问 BibTeX 条目。
文档
SciDataFlow 拥有丰富的文档,其中包含各种子命令的使用示例。
SciDataFlow 的愿景
SciDataFlow 的更大愿景是改变科学项目中数据流动的方式。目前科学数据的共享方式在根本上是有缺陷的,这阻碍了在科学过程中某个小步骤产生的数据的重复使用。我们称这些为科学资产。
科学资产是某些计算管道或分析的结果,它具有以下重要特征:科学资产应该被每个人重复使用,并且被每个人重复使用。 可重复使用意味着所有其他研究人员都应该能够快速重复使用科学资产(而无需花费数小时寻找和下载数据)。被每个人重复使用意味着使用科学资产应该是最佳的方式。
例如,如果我将重组图谱提升到一个新的参考基因组上,那么这个管道和输出数据应该是一个科学资产。它应该对每个人都可重复使用——我们不应每个人都为常规任务重写相同的生物信息学管道。这有三个问题:(1)每次重新实现都有独立出错的机会,(2)这是浪费时间,(3)输出数据没有累积的改进。它不是一个资产;每次实现的结果都是一项负担!
降低重复使用计算步骤的门槛是 SciDataFlow 的主要动机之一。每个科学资产都应该记录产生输出数据的计算步骤,并且通过一个命令(sdf pull
),应该能够从这个存储库检索所有数据输出。如果用户只想重复使用数据,他们可以停止在这里——他们已经拥有数据并且可以继续进行研究。如果用户想调查输入数据是如何产生的,代码就在那里。如果他们想尝试重新运行产生该分析的计算步骤,他们也可以这样做。请注意,SciDataFlow 对此是中立的——按照设计,它不解决管理软件版本、计算环境等难题。它可以与试图解决该问题的软件(例如 Docker 或 Singularity)协同工作。
通过降低共享和检索科学数据的门槛,SciDataFlow 希望提高数据的重复使用率。
未来计划
从长远来看,SciDataFlow YAML 规范将允许数据像食谱一样重复使用。我希望看到,例如,GitHub 上的一系列不断更新和重复使用的人类基因组学科学资产。然后,而不是研究人员开始项目时在许多网站上导航人类基因组注释或数据,他们可能做的是
$ mkdir -p new_adna_analysis/data/annotation
$ cd new_adna_analysis/data/annotation
$ git clone [email protected]:human_genome_assets/decode_recmap_hg38
$ (cd decode_recmap/ && sdf pull)
$ git clone [email protected]:human_genome_assets/annotation_hg38
$ (cd annotation_hg38 && sdf pull)
等等。然后,他们可以查看 annotation_hg38/
资产,发现问题,修复它,并向 GitHub 发起拉取请求。如果更改被修复,维护者只需执行 sdf push --overwrite
将数据文件推送到数据存储库。然后,科学资产就会为每个人更新并从中受益。其他所有研究人员都可以立即使用更新的资产;只需要一个简单的 sdf pull --overwrite
。
安装 SciDataFlow
如果您想手动安装 Rust 编程语言,请参阅此页面,该页面指导您运行
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
然后,要安装 SciDataFlow,只需运行
$ cargo install scidataflow
要测试,只需尝试运行 sdf --help
。
报告错误
如果您是 SciDataFlow 的用户并遇到问题,请向https://github.com/vsbuffalo/scidataflow/issues提交问题!
为 SciDataFlow 做贡献
如果您是Rust开发者,请贡献力量!以下是一些开始的方法(也请查看下面的TODO列表,或者代码中的TODO!)
-
编写一些API测试。以
src/lib/api/zenodo.api
中的测试为例。 -
编写一些集成测试。以
tests/test_project.rs
为例。 -
更简洁的错误框架。目前SciDataflow使用anyhow,它工作得很好,但更具体的错误
枚举
会更好。 -
改进文档!
Todo
- []
sdf mv
测试,在不同的目录中。
依赖项
~34–50MB
~854K SLoC