"""Geometry-related functions for atomic structures."""fromitertoolsimportproductimportmathimportasefromnumpy.linalgimportnorm
[docs]defcalculate_separation(structure1:ase.Atoms,structure2:ase.Atoms)->float:"""Calculates the separation between two Atoms instances. The distance is defined as the smallest distance between an atom in one structure and an atom in the second structure. Args: structure1: An :class:`.atoms.Atoms` instance. structure2: An :class:`.atoms.Atoms` instance. Returns: A float representing the separation between the two structures. """minimum_separation=math.infstructures=product(structure1.positions,structure2.positions)forposition1,position2instructures:separation=norm(position1-position2)ifseparation<minimum_separation:minimum_separation=separationreturnminimum_separation