Skip to main content
Help the Python Software Foundation raise $60,000 USD by December 31st!  Building the PSF Q4 Fundraiser

Exabyte Source of Schemas and Examples

Project description


Exabyte Source of Schemas and Examples (ESSE) contains data formats and associated examples specifically designed for digital materials science 1.


ESSE can be used as a Node.js or Python package on the server side. Please note that schemas and examples are unavailable on the client side (JS).


ESSE is compatible with Python 2.7 up until version 2.3.0, and Python 3.6+ afterward. It can be installed as a Python package either via PyPI or the repository as below.


pip install esse


virtualenv .venv
source .venv/bin/activate


ESSE can be installed as a Node.js package either via NPM or the repository as below.


npm install @exabyte-io/esse.js


Add "esse-js": "file:PATH_TO_ESSE_REPOSITORY" to package.json.


ESSE contains separate but equivalent interfaces for Python and Javascript. The package provides ESSE class that can be initialized and used as below.


from esse import ESSE

es = ESSE()
schema = es.get_schema_by_id("material")


import {ESSE} from "esse-js";

const es = new ESSE();
const schema = es.getSchemaById("material");


ESSE contains 3 main directories, schema, example and src outlined below.


The schema directory contains the schemas specifying the rules to structure data. A set of core schemas, outlined below, are defined to facilitate the schema modularity.


Primitive directory contains a set of custom primitives that extends default standard primitive types allowed by schema, such as String and Number. Primitives are solely defined by the default primitives and can not be re-constructed from each other.


Abstract directory contains unit-less schemas that are constructed from default and custom primitives.


Reusable directory contains the schemas that are widely used in other schemas to avoid duplication, constructed from the abstract and primitive schemas.


Reference directory contains the schemas defining the rules to structure the references to data sources.


This directory contains the examples formed according to the schemas and implements the same directory structure as the schema directory.


This directory contains Python and Javascript interfaces implementing the functionality to access and validate schemas and examples.


Execute the following command from the root directory of this repository to run the tests. The script will run both Javascript and Python tests in which examples are validated against the corresponding schemas.


The script has been tested with node.js v12.16.3 and v8.17.0 as well as Python version 2.7 (up to version 2.3.0) and 3.6+ (for version 2020.10.19 and later).


This repository is an open-source work-in-progress and we welcome contributions. We suggest forking this repository and introducing the adjustments there, the changes in the fork can further be considered for merging into this repository as it is commonly done on Github #links.

Best Practices

  • Use unique IDs for schemas. One can run sh to automatically set the IDs and reformat examples.

  • Do not use circular references in the schemas, instead leave the type as object and add explanation to description.


1: Data-centric online ecosystem for digital materials science

2: GitHub Standard Fork & Pull Request Workflow

Project details

Download files

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

Files for esse, version 2020.10.19.2
Filename, size File type Python version Upload date Hashes
Filename, size esse-2020.10.19.2-py3-none-any.whl (147.6 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size esse-2020.10.19.2.tar.gz (54.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page