v0.2.0
Minimum AiiDA version: 1.0.0
First public release of aiida-optimade: An OPTiMaDe API implementation for AiiDA.
README:
Optimade API implementation for AiiDA
This is a RESTful API server created with FastAPI that exposes an AiiDA database according to the OPTiMaDe specification.
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).
Note: At the moment,
aiida-optimadeworks most optimally with an AiiDA database using the SQLAlchemy backend.
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
sh run.shNavigate to http://127.0.0.1:5000/optimade/info
Running via docker
Adapt profiles/quicksetup.json and profiles/docker-compose.yml appropriately.
docker-compose -f profiles/docker-compose.yml up --buildNavigate to http://127.0.0.1:3253/optimade/info
Stop by using
docker-compose -f profiles/docker-compose.yml downDesign 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.