根据[OPTIMADE API规范](https://www.optimade.org)公开AiiDA数据库。
项目描述
为AiiDA提供的OPTIMADE API实现
下面的兼容性矩阵假设用户总是安装指定次版本的最新补丁版本,这是推荐的。
插件 | AiiDA | Python | 规范 |
---|---|---|---|
v1.2 < v2.0 |
|||
v1.0 < v1.2 |
|||
v0.18 <= v0.20 |
最新发布 | 构建状态 | 活动 |
---|---|---|
这是一个使用FastAPI创建的RESTful API服务器,根据OPTIMADE规范公开AiiDA数据库。
它主要用于Materials Cloud,通过OPTIMADE API公开访问存档的AiiDA数据库。但它可以由任何人为实现类似目的而自由实施。
服务器基于在optimade-python-tools
包中使用的测试服务器“模板”。实际上,这里直接使用了来自optimade-python-tools
的过滤器语法和解析器以及pydantic
模型。
先决条件
AiiDA安装的环境。
AiiDA数据库包含StructureData
节点,因为这些是当前通过此API(在/structures
端点下)公开的唯一 AiiDA节点。
安装
该软件包已发布在PyPI上,因此您可以按以下方式安装:
$ pip install aiida-optimade
否则,您还可以从GitHub克隆存储库
$ git clone https://github.com/aiidateam/aiida-optimade /path/to/aiida-optimade/parent/dir
$ pip install -e /path/to/aiida-optimade
开发
对于开发者,有一个特殊的setuptools扩展dev
,可以通过以下方式安装:
$ pip install aiida-optimade[dev]
或
$ pip install -e /path/to/aiida-optimade[dev]
此软件包使用Black进行格式化。如果您想贡献,请安装git预提交钩子
/path/to/aiida-optimade$ pre-commit install
这将在运行git commit
时自动更新格式,并检查各种存储库JSON和YAML文件的有效性。
对于测试运行pytest
,它将以AiiDA后端作为标准运行。测试还可以通过设置环境变量PYTEST_OPTIMADE_CONFIG_FILE
(其值为要使用的配置文件路径)使用MongoDB后端运行
$ PYTEST_OPTIMADE_CONFIG_FILE=/path/to/aiida-optimade/tests/static/test_mongo_config.json pytest
但是,请注意,mongo_uri
值将必须根据您的本地设置进行更新。
初始化
您应该首先初始化您的AiiDA配置文件。
这可以通过使用aiida-optimade
CLI来完成
$ aiida-optimade -p <PROFILE> init
其中<PROFILE>
是AiiDA配置文件。
注意:目前默认为
optimade
,如果没有指定-p / --profile
选项。这将在未来更改为使用默认的AiiDA配置文件。
初始化将遍历您的配置文件的StructureData
节点,添加一个optimade
扩展,其中存储了所有没有等效AiiDA属性的OPTIMADE特定字段。
如果在将来,您的配置文件数据库中添加了更多的StructureData
节点,这些节点将在第一次查询时自动更新,对任何这些OPTIMADE特定字段进行筛选。但是,如果您不希望用户出现显著的延迟或冒几个GET请求同时到达的风险,试图更新您的配置文件数据库,您应该重新运行您的配置文件(在关闭服务器并重新启动之间)的aiida-optimade init
。
运行服务器
本地
使用aiida-optimade
CLI,您可以执行以下操作
$ aiida-optimade -p <PROFILE> run
其中<PROFILE>
是您希望提供服务的AiiDA配置文件。
注意:目前默认为
optimade
,如果没有指定-p / --profile
选项。这将在未来更改为使用默认的AiiDA配置文件。
您还可以通过环境变量AIIDA_PROFILE
指定AiiDA配置文件。请注意,但是,如果传递了配置文件名称到CLI,它将覆盖并替换当前的AIIDA_PROFILE
环境变量。
# Specifying AiiDA profile as an environment variable
$ export AIIDA_PROFILE=optimade
$ aiida-optimade run
导航到http://localhost:5000/v1/info
提示:要查看默认的AiiDA配置文件,请输入
verdi profile list
以找到带有星号(*
)标记的彩色配置文件名称,或输入verdi profile show
,这将显示有关默认配置文件更详细的信息。
注意:
aiida-optimade run
命令有更多选项来配置您的服务器,运行$ aiida-optimade run --help以获取更多信息。
使用Docker
适当修改profiles/test_psql_dos.json
和profiles/docker-compose.yml
。
$ docker-compose -f profiles/docker-compose.yml up --build
导航到http://localhost:3253/v1/info
使用以下命令停止:
$ docker-compose -f profiles/docker-compose.yml down
Jinja模板
如果您熟悉Jinja,有两个模板用于创建JSON和YAML文件:profiles/config.j2
和profiles/docker-compose.j2
,分别。
配置服务器
您可以使用 aiida_optimade/config.json
文件或设置某些环境变量来配置服务器。
有关更多信息,请参阅 optimade-python-tools
仓库。
使用 AiiDA 群组管理精选数据
AiiDA 群组可以用来管理数据,并通过 OPTIMADE 服务器仅提供这些精选数据。在 config.json
中设置 query_group
选项将确保只提供给定 AiiDA 群组中的有效(StructureData
,CifData
)数据节点。将 query_group
参数设置为 null
(默认值)以提供数据库中的所有结构数据。
设计选择
问:为什么创建单独的 config.json
文件,而不是直接挂载现有的 .aiida
目录并使用它呢?
答:目前这不会工作,因为 REPOSITORY_URI
需要指向容器内的正确路径,而不是主机上的路径。此外,将所有配置存储在同一个文件中可能会很脆弱。
对于维护者
要发布新版本,请转到仓库的 GitHub 发布 API,创建一个新的发布并更新发布信息。
发布操作将由新创建的发布触发。注意,标签应以 v
开头,后跟完整的语义版本(参见 SemVer)。例如:v2.3.12
。
项目详情
aiida-optimade-1.2.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9c9d87684288b5813154ebf237c99ccc842329620676ab13e040577e1b20f438 |
|
MD5 | abe3ce3453da25a894077b5f1b99d03d |
|
BLAKE2b-256 | 41134bffe7417a6ad537fc51538eb88f9b2ecf2a7333a78452a8d70ad2e2a879 |