Source code for pymatgen.io.jarvis

"""
This module provides conversion between the JARVIS
Atoms object and pymatgen Structure objects.
"""

from pymatgen.core.structure import Structure

try:
    from jarvis.core.atoms import Atoms

    jarvis_loaded = True
except ImportError:
    jarvis_loaded = False


[docs]class JarvisAtomsAdaptor: """ Adaptor serves as a bridge between JARVIS Atoms and pymatgen objects. """
[docs] @staticmethod def get_atoms(structure): """ Returns JARVIS Atoms object from pymatgen structure. Args: structure: pymatgen.core.structure.Structure Returns: JARVIS Atoms object """ if not structure.is_ordered: raise ValueError("JARVIS Atoms only supports ordered structures") if not jarvis_loaded: raise ImportError("JarvisAtomsAdaptor requires jarvis-tools package.\n" "Use `pip install -U jarvis-tools`") elements = [str(site.specie.symbol) for site in structure] coords = [site.frac_coords for site in structure] lattice_mat = structure.lattice.matrix return Atoms( lattice_mat=lattice_mat, elements=elements, coords=coords, cartesian=False, )
[docs] @staticmethod def get_structure(atoms): """ Returns pymatgen structure from JARVIS Atoms. Args: atoms: JARVIS Atoms object Returns: Equivalent pymatgen.core.structure.Structure """ elements = atoms.elements coords = atoms.frac_coords lattice_mat = atoms.lattice_mat return Structure(lattice_mat, elements, coords, coords_are_cartesian=False)