ASE interface
*************

The Atomic Simulation Environment (ASE) is a set of tools and Python
modules for setting up, manipulating, running, visualizing, and
analyzing atomistic simulations. The PLAMS interface to ASE is limited
to handling "Molecule" objects. It features access to the "ase.io"
module for reading/writing "Molecule" objects and two functions that
translate PLAMS "Molecule" objects into ASE "Atoms" objects and vice
versa (see "readase()" and "writease()").

Please refer to the ASE documentation to see what can be done with ASE
"Atoms" and its I/O module.

toASE(molecule, set_atomic_charges=False)

   Convert a PLAMS "Molecule" to an ASE molecule ("ase.Atoms"
   instance). Translate coordinates, atomic numbers, and lattice
   vectors (if present). The order of atoms is preserved.

   set_atomic_charges: bool
      If True, set_initial_charges() will be called with the average
      atomic charge (taken from molecule.properties.charge). The
      purpose is to preserve the total charge, not to set any
      reasonable initial charges.

   Parameters:
      * **molecule** (*Molecule*) --

      * **set_atomic_charges** (*bool*) --

   Return type:
      ASEAtoms

fromASE(molecule, properties=None, set_charge=False)

   Convert an ASE molecule to a PLAMS "Molecule". Translate
   coordinates, atomic numbers, and lattice vectors (if present). The
   order of atoms is preserved.

   Pass a "Settings" instance through the "properties" option to
   inherit them to the returned molecule.

   Parameters:
      * **molecule** (*ASEAtoms*) --

      * **properties** (*Settings** | **None*) --

      * **set_charge** (*bool*) --

   Return type:
      *Molecule*
