pymatgen¶
Convert an OPTIMADE structure, in the format of StructureResource
to a pymatgen Molecule
or Structure
object.
This conversion function relies on the pymatgen package.
For more information on the pymatgen code see their documentation.
get_pymatgen(optimade_structure)
¶
Get pymatgen Structure
or Molecule
from OPTIMADE structure.
This function will return either a pymatgen Structure
or Molecule
based on the periodicity or periodic dimensionality of OPTIMADE structure.
For bulk, three-dimensional structures, a pymatgen Structure
is returned. This means, if the dimension_types
attribute is comprised of all 1
s (or Periodicity.PERIODIC
s).
Otherwise, a pymatgen Molecule
is returned.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
optimade_structure | StructureResource | OPTIMADE structure. | required |
Returns:
Type | Description |
---|---|
Union[pymatgen.core.structure.Structure, pymatgen.core.structure.Molecule] | A pymatgen |
Source code in optimade/adapters/structures/pymatgen.py
def get_pymatgen(optimade_structure: OptimadeStructure) -> Union[Structure, Molecule]:
"""Get pymatgen `Structure` or `Molecule` from OPTIMADE structure.
This function will return either a pymatgen `Structure` or `Molecule` based
on the periodicity or periodic dimensionality of OPTIMADE structure.
For bulk, three-dimensional structures, a pymatgen `Structure` is returned.
This means, if the [`dimension_types`][optimade.models.structures.StructureResourceAttributes.dimension_types]
attribute is comprised of all `1`s (or [`Periodicity.PERIODIC`][optimade.models.structures.Periodicity.PERIODIC]s).
Otherwise, a pymatgen `Molecule` is returned.
Parameters:
optimade_structure: OPTIMADE structure.
Returns:
A pymatgen `Structure` or `Molecule` based on the periodicity of the
OPTIMADE structure.
"""
if "optimade.adapters" in repr(globals().get("Structure")):
warn(PYMATGEN_NOT_FOUND, AdapterPackageNotFound)
return None
if all(optimade_structure.attributes.dimension_types):
return _get_structure(optimade_structure)
return _get_molecule(optimade_structure)