SOFT7#

Installation#

Install the core soft7 package, which supports SOFT7 entities and entity instances, with:

pip install soft7

Some functionality depends on optional dependencies, which are grouped into extras:

  • oteapi: SOFT7 data sources (s7.factories.create_datasource()) and the SOFT7 OTEAPI plugin. These rely on OTEAPI Core and OTELib.

  • graph: Utilities for working with SOFT7 entities as knowledge graphs (s7.graph).

To install soft7 with an extra, e.g., oteapi, run:

pip install 'soft7[oteapi]'

If you use oteapi functionality without the extra installed, an ImportError (s7.exceptions.MissingExtra) is raised that says how to install it.

OTEAPI plugin#

The soft7 packages comes with an OTEAPI plugin that allows one to convert any core parser data to a SOFT7 Entity instance. The plugin requires the oteapi extra (see Installation).

To use the plugin, call the 'soft7' functionType function strategy.

Test the plugin#

At the root of the repository is a Docker Compose file, which, when run, will start an OTEAPI Service that includes the soft7 OTEAPI plugin.

To start the service, run:

docker compose pull
docker compose up -d

To follow along with the installation of the soft7 package and startup of the OTEAPI Service, run:

docker logs -f soft7-oteapi-1

Press Ctrl+C to stop following the logs.

To eventually stop the services, run:

docker compose down

But first, let’s test the plugin.

Open a Python shell, an IPython shell, or a Jupyter Notebook, and run:

from s7.factories import create_datasource

# Let us use an OPTIMADE structure from the Materials Project as our "raw" data source.
# The chosen structure is mp-1228448 (Al2O3):
# https://materialsproject.org/materials/mp-1228448/
# For more information about OPTIMADE, see https://www.optimade.org/
# For more information about the Materials Project, see https://materialsproject.org/
dataresource_config = {
    "downloadUrl": (
        "https://optimade.materialsproject.org/v1/structures/mp-1228448?"
        "response_format=json"
    ),
    "mediaType": "application/json",
}

# We need to setup a mapping configuration to tell the plugin how to map the OPTIMADE
# structure to a SOFT7 Entity instance.
# This requires knowledge of the OPTIMADE structure and the SOFT7 Entity.
# In our case the OPTIMADE structure specification is available at
# https://github.com/Materials-Consortia/OPTIMADE/blob/v1.1.0/optimade.rst#structures-entries
# and the SOFT7 Entity of choice is the `OPTIMADEStructure` Entity, which can be found
# at http://onto-ns.com/meta/1.0/OPTIMADEStructure
mapping_config = {
    "mappingType": "triples",
    "prefixes": {
        "optimade": "https://optimade.materialsproject.org/v1/structures/mp-1228448#",
        "soft7": "http://onto-ns.com/meta/1.0/OPTIMADEStructure#",
    },
    "triples": {
        ("optimade:data.id", "", "soft7:properties.id"),
        ("optimade:data.type", "", "soft7:properties.type"),
        ("optimade:data.attributes", "", "soft7:properties."),
    },
}

Examples#

Indices and tables#

  • :ref:genindex

  • :ref:modindex

  • :ref:search