Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.

Molecule

class Molecule(geometry, multiplicity=1, charge=0, degrees_of_freedom=None, masses=None)

GitHub

Bases: object

Driver-independent Molecule definition.

This module implements an interface for a driver-independent, i.e. generic molecule definition. It defines the composing atoms (with properties like masses), and allows for changing the molecular geometry through given degrees of freedom (e.g. bond-stretching, angle-bending, etc.). The geometry as provided in the constructor can be affected, through setting perturbations, and it is this perturbed geometry that is supplied by the geometry getter. Setting perturbations to None will cause the original geometry to be returned, and there is a getter to get this value directly if its needed.

Parameters

  • geometry (List[Tuple[str, List[float]]]) – A list of atoms defining a given molecule where each item in the list is an atom name together with a list of 3 floats representing the x,y and z Cartesian coordinates of the atom’s position in units of Angstrom.
  • multiplicity (int) – Multiplicity (2S+1) of the molecule
  • charge (int) – Charge on the molecule
  • degrees_of_freedom (Optional[List[Callable]]) – List of functions taking a perturbation value and geometry and returns a perturbed geometry. Helper functions for typical perturbations are provided and can be used by the form itertools.partial(Molecule.stretching_potential,{‘atom_pair’: (1, 2)) to specify the desired degree of freedom.
  • masses (Optional[List[float]]) – Mass of each atom the molecule may optionally be provided.

Raises

ValueError – Length of masses must match length of geometries.


Methods

absolute_angle

classmethod Molecule.absolute_angle(angle, geometry, atom_trio)

Parameters

  • angle (float) – The magnitude of the perturbation in radians. Positive bend is always in the direction toward Atom3. the direction of increasing the starting angle.**
  • geometry (List[Tuple[str, List[float]]]) – The initial geometry to perturb.
  • atom_trio (Tuple[int, int, int]) – A tuple with three integers, indexing which atoms from the starting geometry should be bent apart. Atom1 is bent *away* from Atom3 by an angle whose vertex is Atom2 and equal to **angle, while Atom2 and Atom3 remain stationary.**

Return type

List[Tuple[str, List[float]]]

Returns

end geometry

absolute_bending

classmethod Molecule.absolute_bending(bend, geometry, atom_trio)

Parameters

  • bend (float) – The magnitude of the perturbation in radians. Positive bend is always in the direction toward Atom3. the direction of increasing the starting angle.**
  • geometry (List[Tuple[str, List[float]]]) – The initial geometry to perturb.
  • atom_trio (Tuple[int, int, int]) – A tuple with three integers, indexing which atoms from the starting geometry should be bent apart. Atom1 is bent *away* from Atom3 by an angle whose vertex is Atom2 and equal to the initial angle **plus bend, while Atom2 and Atom3 remain stationary.**

Return type

List[Tuple[str, List[float]]]

Returns

end geometry

absolute_distance

classmethod Molecule.absolute_distance(distance, geometry, atom_pair)

Parameters

  • distance (float) – The (new) distance between the two atoms.
  • geometry (List[Tuple[str, List[float]]]) – The initial geometry to perturb.
  • atom_pair (Tuple[int, int]) – A tuple with two integers, indexing which atoms from the starting geometry should be moved apart. Atom1 is moved away (at the given distance) from Atom2, while Atom2 remains stationary.

Return type

List[Tuple[str, List[float]]]

Returns

end geometry

absolute_stretching

classmethod Molecule.absolute_stretching(perturbation, geometry, atom_pair)

Parameters

  • perturbation (float) – The magnitude of the stretch. (New distance = stretch + old distance)
  • geometry (List[Tuple[str, List[float]]]) – The initial geometry to perturb.
  • atom_pair (Tuple[int, int]) – A tuple with two integers, indexing which atoms from the starting geometry should be stretched apart. Atom1 is stretched away from Atom2, while Atom2 remains stationary.

Return type

List[Tuple[str, List[float]]]

Returns

end geometry

relative_bending

classmethod Molecule.relative_bending(bend, geometry, atom_trio)

Parameters

  • bend (float) – The magnitude of the perturbation in radians. Positive bend is always in the direction toward Atom3. the direction of increasing the starting angle.**
  • geometry (List[Tuple[str, List[float]]]) – The initial geometry to perturb.
  • atom_trio (Tuple[int, int, int]) – A tuple with three integers, indexing which atoms from the starting geometry should be bent apart. Atom1 is bent *away* from Atom3 by an angle whose vertex is Atom2 and equal to the initial angle **times bend, while Atom2 and Atom3 remain stationary.**

Return type

List[Tuple[str, List[float]]]

Returns

end geometry

relative_stretching

classmethod Molecule.relative_stretching(perturbation, geometry, atom_pair)

Parameters

  • perturbation (float) – The magnitude of the stretch. (New distance = stretch * old distance)
  • geometry (List[Tuple[str, List[float]]]) – The initial geometry to perturb.
  • atom_pair (Tuple[int, int]) – A tuple with two integers, indexing which atoms from the starting geometry should be stretched apart. Atom1 is stretched away from Atom2, while Atom2 remains stationary.

Return type

List[Tuple[str, List[float]]]

Returns

end geometry


Attributes

charge

Get charge

Return type

int

geometry

Get geometry accounting for any perturbations

Return type

List[Tuple[str, List[float]]]

masses

Get masses

Return type

Optional[List[float]]

multiplicity

Get multiplicity

Return type

int

perturbations

Get perturbations

Return type

Optional[List[float]]

units

The geometry coordinate units

Was this page helpful?
Report a bug or request content on GitHub.