概念#

数据 provenance 和逻辑 provenance#

AiiDA 自动在数据库中存储实体,并将它们连接起来,形成一个 有向图 。这个有向图自动追踪所有由计算产生或由workflow返回的数据的 provenance 。通过这种方式跟踪 provenance,人们总能完全追溯到某个特定数据是如何产生的,从而确保其可重复性。

我们特别定义了两种类型的 provenance:

  • 数据 provenance,由图形中只包含数据和计算(即不考虑 workflow)的部分以及连接它们的 输入创建 链接组成。数据 provenance 记录了数据生成的全部历史。根据因果关系原理,数据图 provenance 的部分是 有向无循环图 (DAG),即其 node 由有向边连接,不包含任何循环。

  • 逻辑 provenance由 workflow 和数据 node 以及连接它们的 输入返回调用 链路组成。逻辑 provenance 并非不可循环,例如,作为过滤器的 workflow 可以返回自己的一个输入,直接引入一个循环。

数据 provenance 实质上是一个日志,记录了使用特定输入进行的计算产生了哪些数据。仅数据 provenance 就已经保证了可重复性(人们可以使用所提供的输入再次逐一运行计算,并获得相同的输出)。逻辑 provenance 则提供了更多信息,说明为什么要进行特定计算。试想一下,从 100 个结构开始,通过过滤操作选出其中一个,然后对其进行模拟运算。数据 provenance 只显示了在被选中的结构上运行的模拟,而逻辑 provenance 还可以显示特定结构不是随机选中的,而是通过特定的 workflow 逻辑选中的。

其他实体#

除了 node(数据和 processes),AiiDA 还定义了其他一些实体,如 Computer (代表运行计算或存储数据的计算机、超级计算机或计算机集群)、 Group (为组织目的将 node 组合在一起)和 User (跟踪首次生成特定 node、计算机或组的用户)。

在下面的章节中,我们将更详细地描述上述 provenance 概念在 AiiDA 中的实际实现方式,并具体提及实现这些概念的 python 类和类继承关系。