高级配置#

本章涵盖 standard setup of AiiDA 以外的主题。如果你是 AiiDA 的新手,我们建议你先学习 Basic Tutorial,或查看我们的 Next steps guide

创建数据库#

AiiDA使用数据库存储nodes、node属性和其他信息,允许终端用户对结果进行快速查询。目前,支持高性能的 PostgreSQL 数据库作为数据库后端。

要手动创建 AiiDA 数据库,需要运行 psql 程序与 postgres 交互。在大多数操作系统中,你需要以安装软件时创建的 postgres 用户身份运行。要扮演 postgres 的角色,请以 root 用户身份运行:

$ su - postgres

(或视发行版而定键入 sudo su - postgres ),然后启动 postgres 程序:

$ psql

小技巧

If you have installed PostgreSQL through Conda and you see an error like psql: FATAL:  role "<role_name>" does not exist or psql: FATAL:  database "<database_name>" does not exist, the default role and database apparently do no exist. The command psql -l prints the list of existing databases and the associated roles. You can try connecting to one of those by using the -d and -U option to specify the database and role, respectively, for example, psql -d template0 -U some-role.

为 AiiDA 创建一个新的数据库用户账户:

CREATE USER aiida WITH PASSWORD '<password>';

<password> 替换为您选择的密码。

当你通过 verdi setup 配置 AiiDA 使用该数据库时,需要再次提供密码。如果你想更改刚刚创建的密码,请使用以下命令:

ALTER USER aiida PASSWORD '<password>';

接下来,我们创建数据库本身。我们强制执行 UTF-8 编码和特定的本地语言:

CREATE DATABASE aiidadb OWNER aiida ENCODING 'UTF8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE=template0;

并将此 DB 上的所有权限授予之前创建的 aiida 用户:

GRANT ALL PRIVILEGES ON DATABASE aiidadb to aiida;

现在你已经为 AiiDA 创建了一个数据库,可以输入 \q 关闭 postgres shell。要测试数据库是否创建成功,可以以普通用户身份在 bash 终端运行以下命令:

$ psql -h localhost -d aiidadb -U aiida -W

并在出现提示时输入之前插入的密码。如果一切顺利,就不会出错,并能看到 psql shell 的提示。

如果使用与上述命令示例中相同的名称,则在 verdi setup 阶段,以下参数将适用于新创建的数据库:

$ Database engine: postgresql_psycopg2
$ Database host: localhost
$ Database port: 5432
$ AiiDA Database name: aiidadb
$ AiiDA Database user: aiida
$ AiiDA Database password: <password>

不要忘记备份数据库!

参见 Database backup how-to)和 how to move your database

使用 ‘peer’ 身份验证设置数据库#

在 Ubuntu Linux 上,PostgreSQL 的默认设置是使用 peer 身份验证,允许通过本地 Unix 套接字进行无密码登录。在这种模式下,PostgreSQL 会将连接到套接字的 Unix 用户与自己的用户数据库进行比较,如果存在匹配的用户,则允许连接。

备注

这是设置数据库的另一种方法–标准方法在 Ubuntu 上同样适用。

下面我们将利用 Ubuntu 提供的命令行实用程序来简化创建用户和数据库的过程,而不是直接发布 SQL 命令。

扮演 postgres 的角色:

$ sudo su postgres

创建一个与运行 AiiDA 的 UNIX 用户(通常是你的登录名)同名的数据库用户:

$ createuser <username>

<username> 替换为您的用户名。

接下来,创建数据库本身,并将用户作为所有者:

$ createdb -O <username> aiidadb

退出 shell,返回登录用户。要测试数据库是否创建成功,请尝试

$ psql aiidadb

verdi setup 阶段,使用 ! 将主机留空,并指定您的 Unix 用户名为 AiiDA 数据库用户

$ Database engine: postgresql_psycopg2
$ Database host: !
$ Database port: 5432
$ AiiDA Database name: aiidadb
$ AiiDA Database user: <username>
$ AiiDA Database password: ""

RabbitMQ 配置#

在大多数正常设置中,RabbitMQ 将作为服务安装并运行在与 AiiDA 本身主机相同的机器上。在这种情况下,使用配置文件设置时建议的默认配置将正常工作。然而,当 RabbitMQ 的安装不是标准的,例如它运行在不同的端口,甚至运行在完全不同的机器上时,所有相关的连接细节都可以通过 verdi setup 进行配置。

可以配置以下参数:

参数

选项

默认值

说明

规程

--broker-protocol

amqp

对于启用 SSL 的连接,使用的协议可以是 amqpamqps

用户名

--broker-username

guest

用于连接的用户名。guest 账户在默认安装 RabbitMQ 时可用。

密码

--broker-password

guest

连接密码。guest 账户在默认安装 RabbitMQ 时可用。

主持人

--broker-host

127.0.0.1

RabbitMQ 服务器的主机名。

港口

--broker-port

5672

服务器监听的端口。

虚拟主机

--broker-virtual-host

''

可选的虚拟主机。不应包含前导斜线,这将由 AiiDA 自动添加。

参数

不详

n.a.

这些是额外的代理参数,通常编码为 URL 参数,例如用于指定 SSL 参数,如要使用的证书的文件路径。这些参数目前无法通过 CLI 进行定义,而必须在 config.json 中手动添加。应添加一个键 broker_parameters,它是一个字典,可包含字段:cafilecapathcadatacertfilekeyfileno_verify_ssl

设置#

创建数据库后,请执行以下操作

$ verdi setup --profile <profile_name>

其中 <profile_name> 是您选择的配置文件名称。verdi setup 命令将通过一系列提示引导您完成设置过程。

第一个被询问的信息是你的电子邮件,它将被用来把计算与你联系起来。在 AiiDA 中,电子邮件是你的用户名,在 importing/ 导出 AiiDA 数据时,它是唯一的标识符。

备注

在目前的 AiiDA 版本中,密码是不使用的(它只会在 REST API 和网页界面中使用)。如果不填,就不会设置密码,用户也不能通过 REST API 和网页界面访问。

然后,以下提示将帮助您配置数据库。典型的设置有

$ Default user email: richard.wagner@leipzig.de
$ Database engine: postgresql_psycopg2
$ PostgreSQL host: localhost
$ PostgreSQL port: 5432
$ AiiDA Database name: aiida_dev
$ AiiDA Database user: aiida
$ AiiDA Database password: <password>
$ AiiDA repository directory: /home/wagner/.aiida/repository/
[...]
Configuring a new user with email 'richard.wagner@leipzig.de'
$ First name: Richard
$ Last name: Wagner
$ Institution: BRUHL, LEIPZIG
$ The user has no password, do you want to set one? [y/N] y
$ Insert the new password:
$ Insert the new password (again):

不要忘记备份数据!

参见 installation backup how-to

管理守护进程#

AiiDA 守护进程在后台运行,负责处理你提交的计算和 workflow,检查它们的状态,完成后检索它们的结果,并将它们存储在 AiiDA 数据库中。

AiiDA 守护进程由三个简单的命令控制:

  • verdi daemon start:启动守护进程

  • verdi daemon status:检查守护进程的状态

  • verdi daemon stop: 停止守护进程

备注

运行时,守护进程会将其活动记录到 ~/.aiida/daemon/log/ 文件(或更常见的 $AIIDA_PATH/.aiida/daemon/log 文件)中。通过 verdi daemon logshow 获取最新日志信息。

在 Jupyter 中使用 AiiDA#

  1. 在 AiiDA python 环境内**安装 AiiDA notebook 额外程序,例如运行 pip install aiida-core[notebook]

有了这些设置,你就可以在 Jupyter 笔记本中使用 AiiDA 了。

启动 Jupyter 笔记本服务器

$ jupyter notebook

这将在浏览器中打开一个标签页。点击 New -> Python

要加载 aiida magics 扩展程序,只需运行

%load_ext aiida

现在,您可以通过以下方式加载配置文件(除非指定,否则为默认配置文件):

%aiida

否则,您可以像在 Python 脚本中一样手动加载配置文件:

from aiida import load_profile, orm
load_profile()
qb = orm.QueryBuilder()
# ...

您还可以使用当前加载的配置文件运行 verdi CLI 命令,方法是

%verdi status