nanover.ase.converter module
Module containing methods for converting between ASE simulations consisting of
Atoms and the NanoVer FrameData object for transmission to
NanoVer clients.
- nanover.ase.converter.add_ase_box_vectors_to_frame_data(data: FrameData, ase_atoms: Atoms)
Adds the periodic box vectors from the given ASE
Atomsobject to the givenFrameData.- Parameters:
data –
FrameDataupon which to add periodic box vectors.ase_atoms –
Atomsfrom which to extract periodic box vectors.
- nanover.ase.converter.add_ase_forces_to_frame_data(data: FrameData, ase_atoms: Atoms)
Adds ASE forces to the frame data, converting to kJ mol-1 per nanometer. If the ASE calculator is an ImdCalculator, removes the iMD forces from the ASE forces to deliver the system forces (iMD forces delivered separately elsewhere).
- Parameters:
data –
FrameDatato add atom forces to.ase_atoms – ASE
Atomsto add particle positions to.
- nanover.ase.converter.add_ase_positions_to_frame_data(data: FrameData, positions: ndarray[tuple[int, ...], dtype[_ScalarType_co]])
Adds ASE positions to the frame data, converting to nanometers.
- Parameters:
data –
FrameDatato add atom positions to.positions – Array of atomic positions, in angstroms.
- nanover.ase.converter.add_ase_state_to_frame_data(frame_data: FrameData, ase_atoms: Atoms)
Adds simulation state information to the frame, consisting of the potential energy and kinetic energy of the molecular system. If the ASE calculator is an ImdCalculator, removes the iMD energy from the ASE potential energy to deliver the system potential energy (iMD energy delivered separately elsewhere).
- Parameters:
frame_data – Frame data to add ASE state information to.
ase_atoms – The ASE atoms from which to extract state information.
- nanover.ase.converter.add_ase_topology_to_frame_data(frame_data: FrameData, ase_atoms: Atoms, generate_bonds=True)
Generates a topology for the current state of the atoms and adds it to the frame.
Since ASE atoms have no concept of bonds, they are generated using distance criteria.
- Parameters:
frame_data – Frame data to add topology information to.
ase_atoms – ASE atoms to extract topology information from.
- nanover.ase.converter.add_ase_velocities_to_frame_data(data: FrameData, ase_atoms: Atoms)
Adds ASE velocities to the frame data, converting to nanometers per picosecond.
- Parameters:
data –
FrameDatato add atom velocities to.ase_atoms – ASE
Atomsto add particle positions to.
- nanover.ase.converter.add_frame_data_positions_to_ase(frame_data, ase_atoms)
Adds frame data particle positions to ASE atoms, converting to angstroms.
- Parameters:
frame_data –
FrameDatafrom which to extract positions.ase_atoms – ASE
Atomsto add particle positions to.
- nanover.ase.converter.add_frame_data_topology_to_ase(frame_data: FrameData, atoms: Atoms)
Adds frame data topology information to ASE
Atoms.Since ASE
Atomsdo not have a concept of bonds, this just adds particle elements.- Parameters:
frame_data –
FrameDatafrom which to extract topology.atoms – ASE
Atomsto add element data to.
- nanover.ase.converter.ase_atoms_to_frame_data(ase_atoms: Atoms, *, topology: bool, **kwargs) FrameData
- nanover.ase.converter.ase_to_frame_data(ase_atoms: Atoms, positions=True, topology=True, state=True, box_vectors=True, generate_bonds=True, include_velocities=False, include_forces=False) FrameData
Constructs a NanoVer frame from the state of the atoms in an ASE simulation.
- Parameters:
ase_atoms – The ASE atoms object representing the state of the simulation to send.
positions – Whether to add positions to the frame.
topology – Whether to generate the current state of the topology and add it to the frame.
state – Whether to add additional state information such as energies.
box_vectors – Whether to add the box vectors to the frame data.
generate_bonds – Whether to generate bonds for the topology.
include_velocities – Whether to includes per particle velocities.
include_forces – Whether to include per particle forces.
- Returns:
NanoVer frame.
- Raises:
AttributeError Raised if state is True, and ase_atoms has no calculator attached.
Example
>>> atoms = Atoms('CO', positions=[(0, 0, 0), (0, 0, 1.1)], cell=[2, 2, 2]) >>> frame = ase_to_frame_data(atoms, state=False) >>> frame.particle_count 2 >>> frame.bonds [[0, 1]] >>> frame.particle_elements [6, 8]
- nanover.ase.converter.frame_data_to_ase(frame_data: FrameData, positions: bool = True, topology: bool = True, ase_atoms: Atoms | None = None) Atoms
Constructs an ASE
Atomsobject from a NanoVerFrameData.- Parameters:
frame_data – The NanoVer
FrameData.positions – Whether to add positions to the ASE atoms.
topology – Whether to add topology information within the frame data to ASE.
ase_atoms – Optional ASE
Atomsobject, which will have its positions replaced. If the flag topology is set, then a new object will still be constructed.
- Returns:
ASE Atoms updated or created with the data contained in the NanoVer frame.
Example:
>>> frame = FrameData() >>> frame.particle_elements = [6, 8] >>> frame.particle_positions = [[0,0,0], [0,0, 0.11]] >>> atoms = frame_data_to_ase(frame) >>> atoms.symbols Symbols('CO')
- nanover.ase.converter.generate_bonds_from_ase(atoms: Atoms)
Generates bonds for the given configuration of ASE atoms using a distance criterion.
A bond is placed between two atoms if the distance between them is less than 0.6 times the VDW radii of the atoms.
- Parameters:
atoms – ASE atoms to generate bonds for.
- Returns:
A list of pairs of atom indexes representing bonds.
Example
The following example produces a bond between the two atoms in a carbon monoxide molecule:
>>> co = Atoms('CO', positions=[(0, 0, 0), (0, 0, 1.1)], cell=[2, 2, 2]) >>> generate_bonds_from_ase(co) [[0, 1]]
- nanover.ase.converter.get_radius_of_element(symbol: str, default=1.0)
Gets the radius of an atom in Angstroms.
- Parameters:
symbol – The chemical symbol representing the element.
default – Default radius to use if the radius for the given chemical symbol is not known.
- Returns:
The VDW radius of the atom in angstroms.