Comparison of systems
*********************

Simple methods for comparing two ChemicalSystem instances:

ChemicalSystem.has_same_atoms(other: ChemicalSystem, attributes: List[Literal['gui', 'adf', 'band', 'forcefield', 'dftb', 'reaxff', 'qe', 'vasp']] = []) -> bool
ChemicalSystem.has_same_atoms(other: ChemicalSystem, comp: atom_comparator_func_t) -> bool

   Checks if two systems have identical atoms in the same order.

   Atoms are compared one by one using either a user-defined
   comparator function, or the "Atom.has_identical_attributes" method
   with a user defined list of (optional) attributes groups to
   consider in the comparison.

ChemicalSystem.has_same_coords(other: ChemicalSystem, tol: float = 0.001, unit: str = 'angstrom') -> bool

   Checks if the atomic coordinates of two systems are within a
   threshold of each other.

   This check is intended for systems that have the same number of
   atoms and all atoms in the same order. (You likely want to call
   "has_same_atoms" before calling this method.) The threshold "tol"
   is compared against the distance between two corresponding atoms.
   This ensures that the return value of this method does not depend
   on an overall rotation of the two systems.

ChemicalSystem.has_same_geometry(other: ChemicalSystem, tol: float = 0.001, unit: str = 'angstrom') -> bool

   Checks if the atomic coordinates and lattice vectors of two systems
   are within a threshold of each other. This is just a shorthand for
   calling "has_same_coords" and "lattice.is_close()" on the two
   systems.

ChemicalSystem.has_same_regions(other: ChemicalSystem) -> bool

   Checks if two systems have identical regions, meaning region names
   match and each region includes the same atoms.

   This only checks the indices of the atoms assigned to the different
   regions. It does not check if atoms with the same index are
   actually the same. Use "has_same_atoms" for that.

ChemicalSystem.has_same_selection(other: ChemicalSystem, consider_selection_order: bool = False) -> bool

   Checks if two systems have the same atom selection.

   This only checks the indices of the selected atoms. It does not
   check if atoms with the same index are actually the same. Use
   "has_same_atoms" for that.

   By default the selection order is ignored in the check and the two
   selections are compared as a set. This can be changed via the
   "consider_selection_order" argument.
