Skip to main content

Tools for implementing and consuming OPTIMADE APIs.

Project description

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

Project details


Release history Release notifications | RSS feed

This version

1.2.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

optimade-1.2.1.tar.gz (192.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

optimade-1.2.1-py3-none-any.whl (240.8 kB view details)

Uploaded Python 3

File details

Details for the file optimade-1.2.1.tar.gz.

File metadata

  • Download URL: optimade-1.2.1.tar.gz
  • Upload date:
  • Size: 192.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for optimade-1.2.1.tar.gz
Algorithm Hash digest
SHA256 3ffb99ede3e2185e98cc2fad20ea9c840dab40828fb095076b08b746c61c8278
MD5 50d6c2cf8ff07c01c594976400242a47
BLAKE2b-256 e298db9e50b0a3ef4db0d0d7216adeefeb3797eac42bb3ac2645fe8024c71739

See more details on using hashes here.

Provenance

The following attestation bundles were made for optimade-1.2.1.tar.gz:

Publisher: cd_release.yml on Materials-Consortia/optimade-python-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file optimade-1.2.1-py3-none-any.whl.

File metadata

  • Download URL: optimade-1.2.1-py3-none-any.whl
  • Upload date:
  • Size: 240.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for optimade-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fded5c47c28f84764101b5bb5aebdb6294b0676049865780623b18c8c440f332
MD5 c32ac9a070c530dc79fbda06a1702b59
BLAKE2b-256 4b60b28f9d36f092d5cf62842e12412b367e3945fe7f1e79da55cdf7d1c32cc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for optimade-1.2.1-py3-none-any.whl:

Publisher: cd_release.yml on Materials-Consortia/optimade-python-tools

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page