高级配置

本章涉及的主题超出了:ref:AiiDA的标准设置<intro:get_started:setup>。如果你是AiiDA的新手,我们建议你先看一下 基础教程,或者看看我们的 下一步指南

创建数据库

AiiDA 使用一个关系型数据库来保存数据节点,节点属性以及其他信息, 以方便使用者实现对结果数据的快速查询。当前仅支持 PostgreSQL 作为后端数据库系统。

有关数据库的更多内容请看

要手动为 AiiDA创建数据库, 你需要使用命令 psql 与postgres 进行交互。 在多数系统中, 你需要以 postgres 用户身份来完成交互。 通过root权限来进入 postgres 用户:

$ su - postgres

(或者同样地,也可以输入 sudo su - postgres ,这取决于你使用的发行版)并启动postgres程序:

$ psql

运行以下命令为AiiDA创建一个新的postgreSQL用户:

CREATE USER aiida WITH PASSWORD '<password>';

<password> 替换为你设置的密码。

千万别忘记密码,因为之后在运行配置命令 verdi setup 时你会用到该密码。 如果你要修改刚刚设置的密码,运行:

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;

并且将该数据库的所有权限赋予刚刚创建的 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>

说认真的,请不要忘了备份你的数据!

参考 如何备份数据库 )以及 如何迁移你的数据库

使用用户对认证设置数据库

在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

During the在使用 verdi setup 设置配置档案时,使用 ! 将主机host名设置为空并将你的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

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

用户名

--broker-username

guest

要连接的用户名。 默认的RabbitMQ安装支持使用以 guest 帐号。

密码

--broker-password

guest

连接所需的密码。 默认的RabbitMQ安装支持使用以 guest 帐号。

主机名

--broker-host

127.0.0.1

RabbitMQ服务器所在的主机名。

端口

--broker-port

5672

服务器侦听的端口。

虚拟主机

--broker-virtual-host

''

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

参数

不可用

n.a.

这些是附加的代理参数,通常被编码为URL参数,例如,用于指定SSL参数,例如要使用的证书的文件路径。参数目前不能通过CLI定义,但必须手动添加在 config.json 。需要添加 broker_parameters 的对象,它是一个字典,可以包含字段 cafilecapathcadatacertfilekeyfile``和 ``no_verify_ssl

verdi setup

在数据库成功创建后,

$ verdi setup --profile <profile_name>

其中 <profile_name> 是你选择配置文件的名称。 命令 verdi setup 会通过提示的方式指导你完成之后的配置步骤。

首先需要提供你的邮箱,邮箱会被用于关联你的算例。在AiiDA中,邮箱是你的用户名,并且作为你从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):

说认真的,请不要忘了备份你的数据!

参考 如何安装并备份.

管理守护进程

AiiDA的守护进程在后台运行,并守护你你所提交的计算算例和工作流,检查他们的状态,并当其结束后回收他们的结果储存入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]

  2. (可选)注册 %aiida IPython magic以加载与 ``verdi shell``相同的环境:

    复制以下代码片段到 <home_folder>/.ipython/profile_default/startup/aiida_magic_register.py

    if __name__ == '__main__':
    
        try:
            import aiida
            del aiida
        except ImportError:
            # AiiDA is not installed in this Python environment
            pass
        else:
            from aiida.tools.ipython.ipython_magics import register_ipython_extension
            register_ipython_extension()
    

    注解

    如果不确定ipython配置文件文件夹的位置,请使用 ipython locate profile

有了这个设置,您就可以在Jupyter记事本中使用AiiDA了。

启动jupiter笔记本服务器:

$ jupyter notebook

这会在你的浏览器中打开一个标签页。点击 新建(New) -> Python .

如果你注册了``%aiida`` IPython magic,只需运行:

%aiida

通过 Shift-Enter 执行单元格后,您应该会看到“Loaded AiiDA DB environment”的消息。否则,你可以像在Python脚本中那样手动加载配置文件:

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