Expose an AiiDA database according to the OPTiMaDe specification.
Project description
Optimade API implementation for AiiDA
Latest release | Build status | Activity |
---|---|---|
This is a RESTful API server created with FastAPI that exposes an AiiDA database according to the OPTiMaDe specification.
It is mainly used by Materials Cloud to expose access to archived AiiDA databases through the OPTiMaDe API. But it may be freely implemented by any to fulfill a similar purpose.
The server is based on the test server "template" used in the optimade-python-tools
package.
Indeed, the filter grammar and parser and pydantic
models from optimade-python-tools
are used directly here.
Lastly, the server utilizes the FastAPI concept of routers, which means each endpoint can be "setup" several times, allowing multiple base URLs and more flexibility.
Prerequisites
Environment where AiiDA is installed.
AiiDA database containing StructureData
nodes, since these are the only AiiDA nodes that are currently exposed with this API (under the /structures
endpoint).
Installation
git clone https://github.com/Materials-Consortia/optimade-python-tools
pip install -e optimade-python-tools/
git clone https://github.com/aiidateam/aiida-optimade
pip install -e aiida-optimade/
Running the server locally
# specify AiiDA profile (will use default otherwise)
export AIIDA_PROFILE=optimade
./aiida-optimade/run.sh
Navigate to http://localhost:5000/v0/info
Running via docker
Adapt profiles/quicksetup.json
and profiles/docker-compose.yml
appropriately.
docker-compose -f profiles/docker-compose.yml up --build
Navigate to http://localhost:3253/v0/info
Stop by using
docker-compose -f profiles/docker-compose.yml down
Design choices
Q: Why create an individual config.json
file instead of just mounting an existing .aiida
directory and using that directly?
A: This, currently, wouldn't work because the REPOSITORY_URI
needs to point to the right path inside the container, not on the host. Furthermore, storing all configurations in the same file can be fragile.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.