Source code for autojob.utils.atoms
"""Utilities for manipulating Atoms objects."""
import logging
from ase import Atoms
logger = logging.getLogger(__name__)
[docs]
def copy_atom_metadata(input_atoms: Atoms | None, output_atoms: Atoms) -> None:
"""Copy tags, constraints, and info from the input to output atoms.
This function modifies `output_atoms` in place.
Args:
input_atoms: An :class:`ase.atoms.Atoms` object.
output_atoms: An :class:`ase.atoms.Atoms` object.
"""
if input_atoms is None:
logger.warning("Unable to copy atom metadata")
else:
logger.info("Copying atom metadata")
output_atoms.set_constraint(constraint=input_atoms.constraints)
output_atoms.set_tags(tags=input_atoms.get_tags())
output_atoms.info = input_atoms.info
logger.info("Successfully copied atom metadata")