AvogadroLibs 1.98.1
|
The Molecule class represents a chemical molecule.
#include <avogadro/core/molecule.h>
Public Types | |
typedef Atom | AtomType |
typedef Bond | BondType |
typedef std::map< unsigned char, std::string > | CustomElementMap |
typedef std::bitset< element_count > | ElementMask |
Public Member Functions | |
Molecule () | |
Molecule (const Molecule &other) | |
Molecule (Molecule &&other) noexcept | |
Molecule & | operator= (const Molecule &other) |
Molecule & | operator= (Molecule &&other) noexcept |
virtual | ~Molecule () |
void | setData (const std::string &name, const Variant &value) |
Variant | data (const std::string &name) const |
bool | hasData (const std::string &name) const |
void | setDataMap (const VariantMap &map) |
const VariantMap & | dataMap () const |
VariantMap & | dataMap () |
void | setPartialCharges (const std::string &type, const MatrixX &value) |
MatrixX | partialCharges (const std::string &type) const |
std::set< std::string > | partialChargeTypes () const |
Array< AtomHybridization > & | hybridizations () |
const Array< AtomHybridization > & | hybridizations () const |
AtomHybridization | hybridization (Index atomId) const |
bool | setHybridizations (const Core::Array< AtomHybridization > &hybs) |
bool | setHybridization (Index atomId, AtomHybridization hybridization) |
Array< signed char > & | formalCharges () |
const Array< signed char > & | formalCharges () const |
signed char | totalCharge () const |
char | totalSpinMultiplicity () const |
signed char | formalCharge (Index atomId) const |
bool | setFormalCharges (const Core::Array< signed char > &charges) |
bool | setFormalCharge (Index atomId, signed char charge) |
Array< Vector3ub > & | colors () |
const Array< Vector3ub > & | colors () const |
Vector3ub | color (Index atomId) const |
bool | setColors (const Core::Array< Vector3ub > &colors) |
bool | setColor (Index atomId, Vector3ub color) |
bool | setLayer (Index atomId, size_t layer) |
size_t | layer (Index atomId) const |
const Array< Vector2 > & | atomPositions2d () const |
Array< Vector2 > & | atomPositions2d () |
Vector2 | atomPosition2d (Index atomId) const |
bool | setAtomPositions2d (const Core::Array< Vector2 > &pos) |
bool | setAtomPosition2d (Index atomId, const Vector2 &pos) |
const Array< Vector3 > & | atomPositions3d () const |
Array< Vector3 > & | atomPositions3d () |
Vector3 | atomPosition3d (Index atomId) const |
bool | setAtomPositions3d (const Core::Array< Vector3 > &pos) |
bool | setAtomPosition3d (Index atomId, const Vector3 &pos) |
std::string | label (Index atomId) const |
bool | setLabel (const Core::Array< std::string > &label) |
bool | setLabel (Index atomId, const std::string &label) |
void | setAtomSelected (Index atomId, bool selected) |
bool | atomSelected (Index atomId) const |
bool | isSelectionEmpty () const |
const ElementMask | elements () const |
virtual AtomType | addAtom (unsigned char atomicNumber) |
AtomType | addAtom (unsigned char atomicNumber, Vector3 position3d) |
virtual bool | removeAtom (Index index) |
Remove the specified atom from the molecule. | |
virtual bool | removeAtom (const AtomType &atom) |
Remove the specified atom from the molecule. | |
virtual void | clearAtoms () |
AtomType | atom (Index index) const |
virtual bool | removeBond (Index index) |
Remove the specified bond. | |
virtual bool | removeBond (const BondType &bond) |
Remove the specified bond. | |
virtual void | clearBonds () |
BondType | bond (Index index) const |
BondType | bond (const AtomType &a, const AtomType &b) const |
BondType | bond (Index atomId1, Index atomId2) const |
Mesh * | addMesh () |
Add a mesh to the molecule. | |
Mesh * | mesh (Index index) |
const Mesh * | mesh (Index index) const |
Index | meshCount () const |
void | clearMeshes () |
Cube * | addCube () |
Add a cube to the molecule. | |
Cube * | cube (Index index) |
const Cube * | cube (Index index) const |
Index | cubeCount () const |
void | clearCubes () |
std::vector< Cube * > | cubes () |
Get the cubes vector set (if present) for the molecule. | |
const std::vector< Cube * > | cubes () const |
std::string | formula (const std::string &delimiter="", int showCountsOver=1) const |
double | mass () const |
Vector3 | centerOfGeometry () const |
Vector3 | centerOfMass () const |
double | radius () const |
std::pair< Vector3, Vector3 > | bestFitPlane () const |
void | setBasisSet (BasisSet *basis) |
BasisSet * | basisSet () |
const BasisSet * | basisSet () const |
Array< double > | vibrationFrequencies () const |
void | setVibrationFrequencies (const Array< double > &freq) |
Array< double > | vibrationIRIntensities () const |
void | setVibrationIRIntensities (const Array< double > &intensities) |
Array< double > | vibrationRamanIntensities () const |
void | setVibrationRamanIntensities (const Array< double > &intensities) |
Array< Vector3 > | vibrationLx (int mode) const |
void | setVibrationLx (const Array< Array< Vector3 > > &lx) |
void | perceiveBondsSimple (const double tolerance=0.45, const double minDistance=0.32) |
void | perceiveBondsFromResidueData () |
void | perceiveBondOrders () |
void | perceiveSubstitutedCations () |
int | coordinate3dCount () |
bool | setCoordinate3d (int coord) |
Array< Vector3 > | coordinate3d (int index) const |
bool | setCoordinate3d (const Array< Vector3 > &coords, int index) |
bool | setTimeStep (double timestep, int index) |
double | timeStep (int index, bool &status) |
const Array< Vector3 > & | forceVectors () const |
Array< Vector3 > & | forceVectors () |
Vector3 | forceVector (Index atomId) const |
bool | setForceVectors (const Core::Array< Vector3 > &forces) |
bool | setForceVector (Index atomId, const Vector3 &force) |
Residue & | addResidue (std::string &name, Index &number, char &id) |
void | addResidue (Residue &residue) |
Residue & | residue (Index index) |
Array< Residue > & | residues () |
const Array< Residue > & | residues () const |
Index | residueCount () const |
Index | atomCount () const |
Index | atomCount (unsigned char atomicNumber) const |
Get the number of atoms in the molecule that match atomicNumber. | |
Index | bondCount () const |
std::pair< Index, Index > | bondPair (Index bondId) const |
bool | setBondPairs (const Array< std::pair< Index, Index > > &pairs) |
const Array< std::pair< Index, Index > > & | bondPairs () const |
const Array< unsigned char > & | bondOrders () const |
const Graph & | graph () const |
const Array< unsigned char > & | atomicNumbers () const |
unsigned char | atomicNumber (Index atomId) const |
bool | setBondOrders (const Array< unsigned char > &orders) |
bool | setBondOrder (Index bondId, unsigned char order) |
bool | hasCustomElements () const |
bool | setBondPair (Index bondId, const std::pair< Index, Index > &pair) |
unsigned char | bondOrder (Index bondId) const |
bool | setAtomicNumbers (const Core::Array< unsigned char > &nums) |
bool | setAtomicNumber (Index atomId, unsigned char atomicNumber) |
void | setFrozenAtom (Index atomId, bool frozen) |
bool | frozenAtom (Index atomId) const |
void | setFrozenAtomAxis (Index atomId, int axis, bool frozen) |
Eigen::VectorXd | frozenAtomMask () const |
std::map< unsigned char, size_t > | composition () const |
Array< std::pair< Index, Index > > | getAtomBonds (Index index) const |
Array< unsigned char > | getAtomOrders (Index index) const |
bool | removeBonds (Index atom) |
void | addBonds (const Array< std::pair< Index, Index > > &bonds, const Array< unsigned char > &orders) |
void | swapBond (Index a, Index b) |
void | swapAtom (Index a, Index b) |
std::list< Index > | getAtomsAtLayer (size_t layer) |
Layer & | layer () |
const Layer & | layer () const |
void | boundingBox (Vector3 &boxMin, Vector3 &boxMax, const double radius=1.0) const |
const CustomElementMap & | customElementMap () const |
void | setCustomElementMap (const CustomElementMap &map) |
virtual BondType | addBond (Index atom1, Index atom2, unsigned char order=1) |
virtual BondType | addBond (const AtomType &atom1, const AtomType &atom2, unsigned char order=1) |
virtual bool | removeBond (Index atom1, Index atom2) |
Remove the specified bond. | |
virtual bool | removeBond (const AtomType &atom1, const AtomType &atom2) |
Remove the specified bond. | |
Array< BondType > | bonds (const AtomType &a) |
Get all bonds to a . | |
Array< BondType > | bonds (Index a) |
Get all bonds to a . | |
Array< const BondType * > | bonds (Index a) const |
Get all bonds to a . | |
void | setUnitCell (UnitCell *uc) |
UnitCell * | unitCell () |
const UnitCell * | unitCell () const |
void | setHallNumber (unsigned short hallNumber) |
unsigned short | hallNumber () const |
Static Public Member Functions | |
static std::pair< Vector3, Vector3 > | bestFitPlane (const Array< Vector3 > &pos) |
static std::pair< Index, Index > | makeBondPair (const Index &a, const Index &b) |
Protected Attributes | |
VariantMap | m_data |
std::map< std::string, MatrixX > | m_partialCharges |
Sets of atomic partial charges. | |
CustomElementMap | m_customElementMap |
ElementMask | m_elements |
Array< Vector2 > | m_positions2d |
Array< Vector3 > | m_positions3d |
Array< std::string > | m_label |
Array< Array< Vector3 > > | m_coordinates3d |
Store conformers/trajectories. | |
Array< double > | m_timesteps |
Array< AtomHybridization > | m_hybridizations |
Array< signed char > | m_formalCharges |
Array< Vector3 > | m_forceVectors |
Array< Vector3ub > | m_colors |
Array< double > | m_vibrationFrequencies |
Array< double > | m_vibrationIRIntensities |
Array< double > | m_vibrationRamanIntensities |
Array< Array< Vector3 > > | m_vibrationLx |
std::vector< bool > | m_selectedAtoms |
std::vector< Mesh * > | m_meshes |
std::vector< Cube * > | m_cubes |
BasisSet * | m_basisSet |
UnitCell * | m_unitCell |
Array< Residue > | m_residues |
unsigned short | m_hallNumber = 0 |
Eigen::VectorXd | m_frozenAtomMask |
typedef std::map<unsigned char, std::string> CustomElementMap |
Type for custom element map.
typedef std::bitset<element_count> ElementMask |
Type for element masks (e.g., does this molecule contain certain elements)
Molecule | ( | ) |
Creates a new, empty molecule.
void setData | ( | const std::string & | name, |
const Variant & | value | ||
) |
Sets the data value with name
to value
.
Variant data | ( | const std::string & | name | ) | const |
name
. bool hasData | ( | const std::string & | name | ) | const |
void setDataMap | ( | const VariantMap & | map | ) |
Set the molecule's variant data to the entries in map.
const VariantMap & dataMap | ( | ) | const |
VariantMap & dataMap | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void setPartialCharges | ( | const std::string & | type, |
const MatrixX & | value | ||
) |
Sets atomic partial charges with type
to value
.
MatrixX partialCharges | ( | const std::string & | type | ) | const |
type
std::set< std::string > partialChargeTypes | ( | ) | const |
Array< AtomHybridization > & hybridizations | ( | ) |
const Array< AtomHybridization > & hybridizations | ( | ) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
AtomHybridization hybridization | ( | Index | atomId | ) | const |
Get the hybridization for the requested atom.
atomId | The index of the atom. |
bool setHybridizations | ( | const Core::Array< AtomHybridization > & | hybs | ) |
Replace the current array of hybridizations.
hybs | The new hybridization array. Must be of length atomCount(). |
bool setHybridization | ( | Index | atomId, |
AtomHybridization | hybridization | ||
) |
Set the hybridization of a single atom.
atomId | The index of the atom to modify. |
hybridization | The new hybridization. |
Array< signed char > & formalCharges | ( | ) |
const Array< signed char > & formalCharges | ( | ) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
signed char totalCharge | ( | ) | const |
Get the total charge on the molecule. The method will first check to see if a total charge has been set. If not, it will calculate the total charge from the formal charges (if set). If neither has been set, it will assume the total charge is zero.
char totalSpinMultiplicity | ( | ) | const |
Get the total spin multiplicity of the molecule. The method will first check to see if a total spin has been set. If not, it will either suggest a singlet if an even number of electrons are present, or a doublet if an odd number of electrons are present.
signed char formalCharge | ( | Index | atomId | ) | const |
Get the formal charge for the requested atom.
atomId | The index of the atom. |
bool setFormalCharges | ( | const Core::Array< signed char > & | charges | ) |
Replace the current array of formal charges.
charges | The new formal charge array. Must be of length atomCount(). |
bool setFormalCharge | ( | Index | atomId, |
signed char | charge | ||
) |
Set the formal charge of a single atom.
atomId | The index of the atom to modify. |
charge | The new formal charge. |
Array< Vector3ub > & colors | ( | ) |
const Array< Vector3ub > & colors | ( | ) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Vector3ub color | ( | Index | atomId | ) | const |
Get the color for the requested atom.
atomId | The index of the atom. |
bool setColors | ( | const Core::Array< Vector3ub > & | colors | ) |
Replace the current array of colors.
colors | The new color array. Must be of length atomCount(). |
bool setColor | ( | Index | atomId, |
Vector3ub | color | ||
) |
Set the color of a single atom.
atomId | The index of the atom to modify. |
color | The new color. |
const Array< Vector2 > & atomPositions2d | ( | ) | const |
Array< Vector2 > & atomPositions2d | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Vector2 atomPosition2d | ( | Index | atomId | ) | const |
Get the 2D position of a single atom.
atomId | The index of the atom. |
bool setAtomPositions2d | ( | const Core::Array< Vector2 > & | pos | ) |
Replace the current array of 2D atomic coordinates.
pos | The new coordinate array. Must be of length atomCount(). |
bool setAtomPosition2d | ( | Index | atomId, |
const Vector2 & | pos | ||
) |
Set the 2D position of a single atom.
atomId | The index of the atom to modify. |
pos | The new position of the atom. |
const Array< Vector3 > & atomPositions3d | ( | ) | const |
Array< Vector3 > & atomPositions3d | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Vector3 atomPosition3d | ( | Index | atomId | ) | const |
Get the 3D position of a single atom.
atomId | The index of the atom. |
bool setAtomPositions3d | ( | const Core::Array< Vector3 > & | pos | ) |
Replace the current array of 3D atomic coordinates.
pos | The new coordinate array. Must be of length atomCount(). |
bool setAtomPosition3d | ( | Index | atomId, |
const Vector3 & | pos | ||
) |
Set the 3D position of a single atom.
atomId | The index of the atom to modify. |
pos | The new position of the atom. |
void setAtomSelected | ( | Index | atomId, |
bool | selected | ||
) |
Set whether the specified atom is selected or not.
bool atomSelected | ( | Index | atomId | ) | const |
Query whether the supplied atom index has been selected.
bool isSelectionEmpty | ( | ) | const |
const CustomElementMap & customElementMap | ( | ) | const |
A map of custom element atomic numbers to string identifiers. These ids can be used to override the generic custom element names returned by the Elements class, and should be somewhat meaningful to the user.
void setCustomElementMap | ( | const CustomElementMap & | map | ) |
A map of custom element atomic numbers to string identifiers. These ids can be used to override the generic custom element names returned by the Elements class, and should be somewhat meaningful to the user.
const Molecule::ElementMask elements | ( | ) | const |
|
virtual |
Adds an atom to the molecule.
Reimplemented in Molecule.
|
virtual |
index | The index of the atom to be removed. |
Reimplemented in Molecule.
|
virtual |
atom | The atom to be removed. |
Reimplemented in Molecule.
|
virtual |
Remove all atoms from the molecule.
AtomType atom | ( | Index | index | ) | const |
index
in the molecule.
|
virtual |
Create a new bond in the molecule.
atom1 | The first atom in the bond. |
atom2 | The second atom in the bond. |
order | The bond order. |
Reimplemented in Molecule.
|
virtual |
Create a new bond in the molecule.
atom1 | The first atom in the bond. |
atom2 | The second atom in the bond. |
order | The bond order. |
Reimplemented in Molecule.
|
virtual |
index | The index of the bond to be removed. |
Reimplemented in Molecule.
|
virtual |
bond | The bond to be removed. |
Reimplemented in Molecule.
|
virtual |
atom1 | One atom in the bond. |
atom2 | The other atom in the bond. |
Reimplemented in Molecule.
atom1 | One atom in the bond. |
atom2 | The other atom in the bond. |
Reimplemented in Molecule.
|
virtual |
Remove all bonds from the molecule.
BondType bond | ( | Index | index | ) | const |
index
in the molecule. a
and b
. BondType bond | ( | Index | atomId1, |
Index | atomId2 | ||
) | const |
Mesh * addMesh | ( | ) |
Cube * addCube | ( | ) |
std::vector< Cube * > cubes | ( | ) |
std::string formula | ( | const std::string & | delimiter = "" , |
int | showCountsOver = 1 |
||
) | const |
delimiter | Delimiter to insert between tokens, defaults to none. |
showCountsOver | Show atom counts above this (defaults to 1). |
double mass | ( | ) | const |
Vector3 centerOfGeometry | ( | ) | const |
Vector3 centerOfMass | ( | ) | const |
double radius | ( | ) | const |
std::pair< Vector3, Vector3 > bestFitPlane | ( | ) | const |
|
static |
void setBasisSet | ( | BasisSet * | basis | ) |
Set the basis set for the molecule, note that the molecule takes ownership of the object.
BasisSet * basisSet | ( | ) |
void setUnitCell | ( | UnitCell * | uc | ) |
The unit cell for this molecule. May be nullptr for non-periodic structures.
UnitCell * unitCell | ( | ) |
The unit cell for this molecule. May be nullptr for non-periodic structures.
const UnitCell * unitCell | ( | ) | const |
The unit cell for this molecule. May be nullptr for non-periodic structures.
void setHallNumber | ( | unsigned short | hallNumber | ) |
The space group for this molecule. It is updated after every space group operation.
unsigned short hallNumber | ( | ) | const |
The space group for this molecule. It is updated after every space group operation.
void perceiveBondsSimple | ( | const double | tolerance = 0.45 , |
const double | minDistance = 0.32 |
||
) |
Perceives bonds in the molecule based on the 3D coordinates of the atoms. atoms are considered bonded if within the sum of radii plus a small tolerance
.
tolerance | The calculation tolerance. |
minDistance | = atoms closer than the square of this are ignored |
void perceiveBondsFromResidueData | ( | ) |
Perceives bonds in the molecule based on preset residue data.
Use this if you have residue data available (e.g., reading PDB or MMTF files) Otherwise consider
void perceiveSubstitutedCations | ( | ) |
Perceives all-carbon-substituted onium ions of nitrogen, oxygen, phosphorus, sulfur, arsenic and selenium.
bool setTimeStep | ( | double | timestep, |
int | index | ||
) |
Timestep property is used when molecular dynamics trajectories are read
const Array< Vector3 > & forceVectors | ( | ) | const |
Array< Vector3 > & forceVectors | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Vector3 forceVector | ( | Index | atomId | ) | const |
Get the force of a single atom.
atomId | The index of the atom. |
bool setForceVectors | ( | const Core::Array< Vector3 > & | forces | ) |
Replace the current array of force vectors.
forces | The new coordinate array. Must be of length atomCount(). |
bool setForceVector | ( | Index | atomId, |
const Vector3 & | force | ||
) |
Set the 3D position of a single atom.
atomId | The index of the atom to modify. |
force | The new position of the atom. |
Index residueCount | ( | ) | const |
Index atomCount | ( | ) | const |
Index atomCount | ( | unsigned char | atomicNumber | ) | const |
atomicNumber | The atomic number to match on. |
Index bondCount | ( | ) | const |
std::pair< Index, Index > bondPair | ( | Index | bondId | ) | const |
Get the set of bonded atoms corresponding to bondId.
bondId | The index of the requested bond. |
bool setBondPairs | ( | const Array< std::pair< Index, Index > > & | pairs | ) |
Replace the current array of bonded atoms.
pairs | The array. |
const Array< std::pair< Index, Index > > & bondPairs | ( | ) | const |
const Array< unsigned char > & bondOrders | ( | ) | const |
const Graph & graph | ( | ) | const |
const Array< unsigned char > & atomicNumbers | ( | ) | const |
unsigned char atomicNumber | ( | Index | atomId | ) | const |
Get the atomic number for the requested atom.
atomId | The index of the atom. |
bool setBondOrders | ( | const Array< unsigned char > & | orders | ) |
Replace the current array of bond orders.
orders | The new array. |
bool setBondOrder | ( | Index | bondId, |
unsigned char | order | ||
) |
Set the order of a bond in the molecule.
bondId | The bond's index. |
order | The new order of the bond. |
bool hasCustomElements | ( | ) | const |
bool setBondPair | ( | Index | bondId, |
const std::pair< Index, Index > & | pair | ||
) |
Set the bonded atoms for a bond.
bondId | The bond to modify. |
pair | The new bond pair. |
unsigned char bondOrder | ( | Index | bondId | ) | const |
Get the order of a bond.
bondId | The id of the bond. |
bool setAtomicNumbers | ( | const Core::Array< unsigned char > & | nums | ) |
Replace the current array of atomic numbers.
nums | The new atomic number array. Must be of length atomCount(). |
bool setAtomicNumber | ( | Index | atomId, |
unsigned char | atomicNumber | ||
) |
Set the atomic number of a single atom.
atomId | The index of the atom to modify. |
atomicNumber | The new atomic number. |
void setFrozenAtom | ( | Index | atomId, |
bool | frozen | ||
) |
Freeze or unfreeze an atom for optimization
bool frozenAtom | ( | Index | atomId | ) | const |
Get the frozen status of an atom
void setFrozenAtomAxis | ( | Index | atomId, |
int | axis, | ||
bool | frozen | ||
) |
Freeze or unfreeze X, Y, or Z coordinate of an atom for optimization
atomId | The index of the atom to modify. |
axis | The axis to freeze (0, 1, or 2 for X, Y, or Z) |
frozen | True to freeze, false to unfreeze |
std::map< unsigned char, size_t > composition | ( | ) | const |
void boundingBox | ( | Vector3 & | boxMin, |
Vector3 & | boxMax, | ||
const double | radius = 1.0 |
||
) | const |
Calculte and return bounding box of the whole molecule or selected atoms only.
boxMin | [out] the minimum corner (first end of the box diagonal) |
boxMax | [out] the maximum corner (second end of the box diagonal) |
radius | [in] radius of a single sphere |
|
protected |
Which elements this molecule contains (e.g., for force fields)