AvogadroLibs
1.96.0
|
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 |
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 () |
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 | 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 |
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. More... | |
virtual bool | removeAtom (const AtomType &atom) |
Remove the specified atom from the molecule. More... | |
virtual void | clearAtoms () |
AtomType | atom (Index index) const |
virtual bool | removeBond (Index index) |
Remove the specified bond. More... | |
virtual bool | removeBond (const BondType &bond) |
Remove the specified bond. More... | |
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. More... | |
Mesh * | mesh (Index index) |
const Mesh * | mesh (Index index) const |
Index | meshCount () const |
void | clearMeshes () |
Cube * | addCube () |
Add a cube to the molecule. More... | |
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. More... | |
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 > | vibrationIntensities () const |
void | setVibrationIntensities (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 | 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. More... | |
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) |
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 |
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. More... | |
virtual bool | removeBond (const AtomType &atom1, const AtomType &atom2) |
Remove the specified bond. More... | |
Array< BondType > | bonds (const AtomType &a) |
Get all bonds to a . More... | |
Array< BondType > | bonds (Index a) |
Get all bonds to a . More... | |
Array< const BondType * > | bonds (Index a) const |
Get all bonds to a . More... | |
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 |
CustomElementMap | m_customElementMap |
Array< Vector2 > | m_positions2d |
Array< Vector3 > | m_positions3d |
Array< std::string > | m_label |
Array< Array< Vector3 > > | m_coordinates3d |
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_vibrationIntensities |
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 |
typedef std::map<unsigned char, std::string> CustomElementMap |
Type for custom element map.
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 |
Returns the data value for name
.
bool hasData | ( | const std::string & | name | ) | const |
Returns true if the molecule has data with the given key, false otherwise.
void setDataMap | ( | const VariantMap & | map | ) |
Set the molecule's variant data to the entries in map.
const VariantMap& dataMap | ( | ) | const |
Return the molecule's variant data.
VariantMap& dataMap | ( | ) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Array<AtomHybridization>& hybridizations | ( | ) |
Returns a vector of hybridizations for the atoms in the molecule.
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 | ( | ) |
Returns a vector of formal charges for the atoms in the molecule.
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 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 | ( | ) |
Returns a vector of colors for the atoms in the moleucle.
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. |
Returns a vector of 2d atom positions for the atoms in the molecule.
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
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(). |
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 |
Returns a vector of 2d atom positions for the atoms in the molecule.
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 |
Returns whether the selection is empty or not
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.
|
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.
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.
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.
Returns the bond between atoms a
and b
.
Mesh* addMesh | ( | ) |
Cube* addCube | ( | ) |
std::vector<Cube*> cubes | ( | ) |
std::string formula | ( | const std::string & | delimiter = "" , |
int | showCountsOver = 1 |
||
) | const |
Returns the chemical formula of the molecule.
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 | ( | ) |
Get the basis set (if present) for the molecule.
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.
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 |
Returns the number of bonds in the molecule.
Get the set of bonded atoms corresponding to bondId.
bondId | The index of the requested bond. |
Replace the current array of bonded atoms.
pairs | The array. |
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 |
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. |
std::map<unsigned char, size_t> composition | ( | ) | const |