GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - Materials-Consortia/optimade-python-tools: Tools for implementing and consuming OPTIMADE APIs in Python

BranchesTags
Open more actions menu

Latest commit

 

History

1,862 Commits
1,862 Commits

Folders and files

NameName
Last commit message
Last commit date
.docker
.docker
 
 
.github
.github
 
 
docs
docs
 
 
images
images
 
 
openapi
openapi
 
 
optimade
optimade
 
 
paper
paper
 
 
providers @ 5d87232
providers @ 5d87232
 
 
tests
tests
 
 
.codecov.yml
.codecov.yml
 
 
.gitignore
.gitignore
 
 
.gitmodules
.gitmodules
 
 
.pre-commit-config.yaml
.pre-commit-config.yaml
 
 
CHANGELOG.md
CHANGELOG.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
Dockerfile
Dockerfile
 
 
INSTALL.md
INSTALL.md
 
 
LICENSE
LICENSE
 
 
Procfile
Procfile
 
 
README.md
README.md
 
 
mkdocs.yml
mkdocs.yml
 
 
optimade-version.json
optimade-version.json
 
 
optimade_config.json
optimade_config.json
 
 
pyproject.toml
pyproject.toml
 
 
run.sh
run.sh
 
 
runtime.txt
runtime.txt
 
 
tasks.py
tasks.py
 
 
uv.lock
uv.lock
 
 

Repository files navigation

OPTIMADE Python tools

JOSS DOI

Latest releaseBuild statusActivity
PyPI version
PyPI - Python Version
OPTIMADE version
Build Status
Docs
Codecov
Commit Activity
Last Commit
Contributors

The aim of OPTIMADE is to develop a common API, compliant with the JSON:API 1.0 specification. This is to enable interoperability among databases that serve crystal structures and calculated properties of existing and hypothetical materials.

This repository contains a library of tools for implementing and consuming OPTIMADE APIs using Python:

  1. pydantic data models for all OPTIMADE entry types and endpoint responses, and a Lark EBNF grammar implementation for the OPTIMADE filter language.
  2. Adapters to map OPTIMADE data to and from many commonly used atomistic Python frameworks (e.g., pymatgen, ASE) and crystallographic file types (e.g., CIF), using the optimade.adapters module.
  3. A configurable reference server implementation that can make use of either MongoDB or Elasticsearch database backends out-of-the-box, and is readily extensible to other backends. Try it out on the demo site! The OpenAPI schemas of the server are used to construct the OPTIMADE schemas site.
  4. An OPTIMADE client (optimade-get) that can query multiple OPTIMADE providers concurrently with a given filter, at the command-line or from Python code.
  5. A fuzzy API validator tool, which may be called from the shell (optimade-validator) or used as a GitHub Action from optimade-validator-action; this validator is used to construct the providers dashboard.

Documentation

This document, guides, and the full module API documentation can be found online at https://optimade.org/optimade-python-tools. In particular, documentation of the OPTIMADE API response data models (implemented here with pydantic) can be found online under OPTIMADE Data Models.

The release history and changelog can be found in the changelog.

Installation

Detailed installation instructions for different use cases (e.g., using the library or running a server) can be found in the installation documentation.

The latest stable version of this package can be obtained from PyPI:

pip install optimade

The latest development version of this package can be obtained from the main branch of this repository:

git clone https://github.com/Materials-Consortia/optimade-python-tools

Supported OPTIMADE versions

Each release of the optimade package from this repository only targets one version of the OPTIMADE specification, summarised in the table below.

OPTIMADE API version optimade requirements
v1.0.0 optimade<=0.12.9
v1.1.0 optimade>=0.16,<1.2
v1.2.0 optimade>=1.2.0

Contributing and Getting Help

All development of this package (bug reports, suggestions, feedback and pull requests) occurs in the optimade-python-tools GitHub repository. Contribution guidelines and tips for getting help can be found in the contributing notes.

How to cite

If you use this package to access or serve OPTIMADE data, we kindly request that you cite the following:

  • Evans et al., Developments and applications of the OPTIMADE API for materials discovery, design, and data exchange, Digital Discovery, 3, 1509-1533 (2024) 10.1039/D4DD00039K
  • Andersen et al., OPTIMADE, an API for exchanging materials data, Sci. Data 8, 217 (2021) 10.1038/s41597-021-00974-z
  • Evans et al., optimade-python-tools: a Python library for serving and consuming materials data via OPTIMADE APIs. Journal of Open Source Software, 6(65), 3458 (2021) 10.21105/joss.03458

Links

  • OPTIMADE Specification, the human-readable specification that this library is based on.
  • optimade-validator-action, a GitHub action that can be used to validate implementations from a URL (using the validator from this repo).
  • OpenAPI, the machine-readable format used to specify the OPTIMADE API in openapi.json and index_openapi.json.
  • Interactive documentation generated from openapi.json (see also interactive JSON editor).
  • pydantic, the library used for generating the OpenAPI schema from Python models.
  • FastAPI, the framework used for generating the reference implementation expressed by the openapi.json specification.
  • Lark, the library used to parse the filter language in OPTIMADE queries.

About

Tools for implementing and consuming OPTIMADE APIs in Python

www.optimade.org/optimade-python-tools/

Topics

openapioptimadeoptimade-apioptimade-pythonoptimade-specificationpython

Resources

Readme
MIT license

Contributing

Contributing
Activity
Custom properties

Stars

92 stars

Watchers

5 watching

Forks

56 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.