Skip to content

adapter

Structure (EntryAdapter)

Lazy structure resource converter.

Go to EntryAdapter to see the full list of methods and properties.

Attributes:

Name Type Description
ENTRY_RESOURCE type

This adapter stores entry resources as StructureResources.

_type_converters dict

Dictionary of valid conversion types for entry.

Currently available types:

  • aiida_structuredata
  • ase
  • cif
  • pdb
  • pdbx_mmcif
  • pymatgen
  • jarvis
_type_ingesters dict

Dictionary of valid ingesters.

as_<_type_converters>

Convert entry to a type listed in _type_converters.

from_<_type_converters>

Convert an external type to an OPTIMADE StructureResourceAttributes model.

Source code in optimade/adapters/structures/adapter.py
class Structure(EntryAdapter):
    """
    Lazy structure resource converter.

    Go to [`EntryAdapter`][optimade.adapters.base.EntryAdapter] to see the full list of methods
    and properties.

    Attributes:
        ENTRY_RESOURCE: This adapter stores entry resources as
            [`StructureResource`][optimade.models.structures.StructureResource]s.
        _type_converters: Dictionary of valid conversion types for entry.

            Currently available types:

            - `aiida_structuredata`
            - `ase`
            - `cif`
            - `pdb`
            - `pdbx_mmcif`
            - `pymatgen`
            - `jarvis`

        _type_ingesters: Dictionary of valid ingesters.

        as_<_type_converters>: Convert entry to a type listed in `_type_converters`.
        from_<_type_converters>: Convert an external type to an OPTIMADE
            [`StructureResourceAttributes`][optimade.models.structures.StructureResourceAttributes]
            model.

    """

    ENTRY_RESOURCE: type[StructureResource] = StructureResource
    _type_converters: dict[str, Callable] = {
        "aiida_structuredata": get_aiida_structure_data,
        "ase": get_ase_atoms,
        "cif": get_cif,
        "pdb": get_pdb,
        "pdbx_mmcif": get_pdbx_mmcif,
        "pymatgen": get_pymatgen,
        "jarvis": get_jarvis_atoms,
    }

    _type_ingesters: dict[str, Callable] = {
        "pymatgen": from_pymatgen,
        "ase": from_ase_atoms,
    }

    _type_ingesters_by_type: dict[str, type] = {
        "pymatgen": PymatgenStructure,
        "ase": ASEAtoms,
    }

ENTRY_RESOURCE (EntryResource) pydantic-model

Representing a structure.

Source code in optimade/adapters/structures/adapter.py
class StructureResource(EntryResource):
    """Representing a structure."""

    type: str = StrictField(
        "structures",
        description="""The name of the type of an entry.

- **Type**: string.

- **Requirements/Conventions**:
    - **Support**: MUST be supported by all implementations, MUST NOT be `null`.
    - **Query**: MUST be a queryable property with support for all mandatory filter features.
    - **Response**: REQUIRED in the response.
    - MUST be an existing entry type.
    - The entry of type `<type>` and ID `<id>` MUST be returned in response to a request for `/<type>/<id>` under the versioned base URL.

- **Examples**:
    - `"structures"`""",
        regex="^structures$",
        support=SupportLevel.MUST,
        queryable=SupportLevel.MUST,
    )

    attributes: StructureResourceAttributes