跳转到主要内容

根据[OPTIMADE API规范](https://www.optimade.org)公开AiiDA数据库。

项目描述

为AiiDA提供的OPTIMADE API实现

下面的兼容性矩阵假设用户总是安装指定次版本的最新补丁版本,这是推荐的。

插件 AiiDA Python 规范
v1.2 < v2.0 Compatibility for v1.0 PyPI pyversions OPTIMADE API compatibility
v1.0 < v1.2 Compatibility for v1.0 PyPI pyversions OPTIMADE API compatibility
v0.18 <= v0.20 Compatibility for v0 PyPI pyversions OPTIMADE API compatibility
最新发布 构建状态 活动
AiiDA
PyPI
PyPI - Python Version
OPTIMADE
GitHub Workflow Status
Codecov
GitHub last commit

这是一个使用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.jsonprofiles/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.j2profiles/docker-compose.j2,分别。

配置服务器

您可以使用 aiida_optimade/config.json 文件或设置某些环境变量来配置服务器。

有关更多信息,请参阅 optimade-python-tools 仓库。

使用 AiiDA 群组管理精选数据

AiiDA 群组可以用来管理数据,并通过 OPTIMADE 服务器仅提供这些精选数据。在 config.json 中设置 query_group 选项将确保只提供给定 AiiDA 群组中的有效(StructureDataCifData)数据节点。将 query_group 参数设置为 null(默认值)以提供数据库中的所有结构数据。

设计选择

问:为什么创建单独的 config.json 文件,而不是直接挂载现有的 .aiida 目录并使用它呢?
答:目前这不会工作,因为 REPOSITORY_URI 需要指向容器内的正确路径,而不是主机上的路径。此外,将所有配置存储在同一个文件中可能会很脆弱。

对于维护者

要发布新版本,请转到仓库的 GitHub 发布 API,创建一个新的发布并更新发布信息。
发布操作将由新创建的发布触发。注意,标签应以 v 开头,后跟完整的语义版本(参见 SemVer)。例如:v2.3.12

项目详情


下载文件

下载适用于您平台文件的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

aiida-optimade-1.2.0.tar.gz (46.5 kB 查看哈希值

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面