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

aiida-optimade的Python项目详细描述


AiiDA的OPTIMADE API实现

Latest releaseBuild statusActivity
AiiDA
PyPI
PyPI - Python Version
OPTIMADE
GitHub Workflow Status
Codecov
GitHub last commit

这是一个使用FastAPI创建的restfulapi服务器,它根据OPTIMADE specification公开AiiDA数据库。在

它主要用于Materials Cloud通过optimadeapi公开对归档AiiDA数据库的访问。 但任何人都可以自由地执行它来实现类似的目的。在

服务器基于^{}包中使用的测试服务器“模板”。 实际上,这里直接使用了过滤语法和解析器以及来自^{}^{}模型。在

先决条件

安装AiiDA的环境。
包含StructureData节点的AiiDA数据库,因为这些节点是当前使用此API公开的onlyAiiDA节点(在/structures端点下)。在

安装

该软件包基于PyPI,因此您可以通过以下方式进行安装:

$ pip install aiida-optimade

否则,您还可以从GitHub git clone存储库:

^{pr2}$

开发

对于开发人员,有一个特殊的setuptools extra dev,可以通过以下方式安装:

$ pip install aiida-optimade[dev]

或者

$ pip install -e /path/to/aiida-optimade[dev]

此包使用Black进行格式化。 如果您愿意参与,请安装git pre-commit钩子:

/path/to/aiida-optimade$ pre-commit install

这将在运行git commit时自动更新格式,并检查各种存储库JSON和YAML文件的有效性。在

初始化

您应该首先初始化AiiDA配置文件。在

这可以通过使用aiida-optimadeCLI来完成:

$ aiida-optimade -p <PROFILE> init

其中<PROFILE>是AiiDA配置文件。在

Note: Currently, the default is optimade_sqla, if the -p / --profile option is now specified. This will be changed in the future to use the default AiiDA profile.

初始化通过概要文件的StructureData节点,添加一个额外的optimade,其中存储所有没有等效AiiDA属性的OPTIMADE特定字段。在

如果将来有更多的StructureData节点被添加到概要文件的数据库中,这些节点将在第一次查询时自动更新,并过滤这些OPTIMADE特定字段中的任何一个。 但是,如果您不希望用户出现明显的延迟,或者不想冒着同时收到多个GET请求的风险,尝试更新概要文件的数据库,您应该为概要文件重新运行aiida-optimade init(在关闭服务器和重新启动服务器之间)。在

运行服务器

局部

使用aiida-optimadeCLI,可以执行以下操作:

$ aiida-optimade -p <PROFILE> run

其中<PROFILE>是您希望服务的AiiDA配置文件。在

Note: Currently, the default is optimade_sqla, if the -p / --profile option is now specified. This will be changed in the future to use the default AiiDA profile.

您还可以通过环境变量AIIDA_PROFILE指定AiiDA概要文件。 但是请注意,如果一个概要文件名被传递给CLI,它将否决,并替换当前的AIIDA_PROFILE环境变量。在

# Specifying AiiDA profile as an environment variable
$ exportAIIDA_PROFILE=optimade
$ aiida-optimade run

导航到http://localhost:5000/v1/info

Tip: To see the default AiiDA profile, type verdi profile list to find the colored profile name marked with an asterisk (*), or type verdi profile show, which will show you more detailed information about the default profile.

Note: The aiida-optimade run command has more options to configure your server, run

$ aiida-optimade run --help

for more information.

与Docker

适当调整profiles/test_django.json和{}。在

$ 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和{}。在

配置服务器

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

要了解更多信息,请参阅^{}存储库。在

设计选择

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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Github操作在生成期间未识别机密值   java根据给定的索引号选择适当的字符。开关语句   java如何在我的项目中使用SCA mvn插件在Fortify SCA扫描中仅包含一个文件夹?   java SwingWorker无法完成   使用KeyBindings Java在按住键时摆动停止暂停   java如何从sqlite数据库获取数据   java如何使用windows批处理文件逐个启动spring引导jar文件?   在Java中,字典是在构造函数中初始化映射的更好方法   用于在Java中创建2D形状的swing高级API   JavaSwing:制作一个可滚动的JPanel列表   引用泛型类中枚举成员的c#语法   java Doc4j:由于元素类型不同,比较两个文档失败   java如何优化绘制这些标记?