根据[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第三方库


热门话题
显示图像的RGB编号的java   java JavaFX画布2D游戏:背景变换vs.绘画   在到达maxElementsInMemory之前创建的java DiskMarker   a4j:ajax可用事件的java详尽列表?   java从批处理文件运行jar文件,如果出现错误,则显示meessage   音频Java在背景音乐之上播放声音   用于在FTP中上载文件的java更改目录   尽管设置了必要的属性,java列表项仍不会保持选中状态   java Stanford Core NLP解析与CSV   java使用缓冲区合并热态和冷态   java无法初始化类javax。加密。JCE安全   对这个Java循环如此困惑的输入   java Spring RabbitMQ SimpleRabbitListenerContainerFactory用法   java如何使用jGrowl创建JSF消息   安装jRebel插件后,Netbeans项目中的java源文件夹不可见?   如何在Java中解析复杂的json字符串   java Spark KafkaUtils CreateRDD在键上应用过滤器   try块中的java代码被忽略,为什么?