AvogadroLibs 1.100.0
Loading...
Searching...
No Matches
Molecule Class Reference

A QObject derived molecule object with signals/slots.

#include <avogadro/qtgui/molecule.h>

Inheritance diagram for Molecule:
Molecule

Public Types

enum  MoleculeChange {
  NoChange = 0x0 ,
  Atoms = 0x01 ,
  Bonds = 0x02 ,
  UnitCell = 0x04 ,
  Selection = 0x08 ,
  Layers = 0x16 ,
  Properties = 0x32 ,
  Added = 0x1024 ,
  Removed = 0x2048 ,
  Modified = 0x4096
}
typedef Core::Molecule::AtomType AtomType
typedef PersistentAtom< MoleculePersistentAtomType
typedef Core::Molecule::BondType BondType
typedef PersistentBond< MoleculePersistentBondType
Public Types inherited from Molecule
using AtomType = Atom
using BondType = Bond
using CustomElementMap = std::map<unsigned char, std::string>
using ElementMask = std::bitset<element_count>

Public Slots

void emitChanged (unsigned int change)
 Force the molecule to emit the changed() signal.
void emitUpdate () const
 Request an update through the update() signal.

Signals

void changed (unsigned int change) const
 Indicates that the molecule has changed.
void update () const
 Request an update of the molecule. (e.g., re-compute properties)

Public Member Functions

 Molecule (QObject *parent_=nullptr)
 ~Molecule () override
 Molecule (const Molecule &other)
 Molecule (const Core::Molecule &other)
Moleculeoperator= (const Molecule &other)
Moleculeoperator= (const Core::Molecule &other)
AtomType addAtom (unsigned char atomicNumber) override
virtual AtomType addAtom (unsigned char atomicNumber, Index uniqueId)
AtomType addAtom (unsigned char number, Vector3 position3d, Index uniqueId=MaxIndex)
bool removeAtom (Index index) override
 Remove the specified atom from the molecule.
bool removeAtom (const AtomType &atom) override
 Remove the specified atom from the molecule.
AtomType atomByUniqueId (Index uniqueId)
 Get the atom referenced by the uniqueId, the isValid method should be queried to ensure the id still referenced a valid atom.
Core::Array< Index > & atomUniqueIds ()
BondType addBond (const AtomType &a, const AtomType &b, unsigned char bondOrder=1) override
 Add a bond between the specified atoms.
BondType addBond (Index atomId1, Index atomId2, unsigned char bondOrder=1) override
 Add a bond between the specified atoms.
void addBonds (const Core::Array< std::pair< Index, Index > > &bonds, const Core::Array< unsigned char > &orders)
virtual BondType addBond (const AtomType &a, const AtomType &b, unsigned char bondOrder, Index uniqueId)
 Add a bond between the specified atoms.
virtual BondType addBond (Index atomId1, Index atomId2, unsigned char bondOrder, Index uniqueId)
 Add a bond between the specified atoms.
bool removeBond (Index index) override
 Remove the specified bond.
bool removeBond (const BondType &bond) override
 Remove the specified bond.
BondType bondByUniqueId (Index uniqueId)
 Get the bond referenced by the uniqueId, the isValid method should be queried to ensure the id still referenced a valid bond.
Core::Array< Index > & bondUniqueIds ()
Index findAtomUniqueId (Index index) const
Index findBondUniqueId (Index index) const
RWMoleculeundoMolecule ()
bool isInteractive () const
void swapBond (Index a, Index b)
void swapAtom (Index a, Index b)
Index atomUniqueId (const AtomType &atom) const
 Get the unique ID of the atom, this will uniquely reference the atom as long as it exists.
Index atomUniqueId (Index atom) const
 Get the unique ID of the atom, this will uniquely reference the atom as long as it exists.
bool removeBond (const AtomType &atom1, const AtomType &atom2) override
 Remove the specified bond.
bool removeBond (Index atom1, Index atom2) override
 Remove the specified bond.
Index bondUniqueId (const BondType &bond) const
 Get the unique ID of the bond, this will uniquely reference the bond as long as it exists.
Index bondUniqueId (Index bond) const
 Get the unique ID of the bond, this will uniquely reference the bond as long as it exists.
Public Member Functions inherited from Molecule
 Molecule ()
 Molecule (const Molecule &other)
 Molecule (Molecule &&other) noexcept
Moleculeoperator= (const Molecule &other)
Moleculeoperator= (Molecule &&other) noexcept
void readProperties (const Molecule &other)
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 VariantMapdataMap () const
VariantMapdataMap ()
MatrixX spectra (const std::string &name) const
void setSpectra (const std::string &name, const MatrixX &value)
std::set< std::string > spectraTypes () const
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 atomLabel (Index atomId) const
bool setAtomLabel (Index atomId, const std::string &label)
const Core::Array< std::string > atomLabels () const
bool setAtomLabels (const Core::Array< std::string > &label)
void setAtomSelected (Index atomId, bool selected)
bool atomSelected (Index atomId) const
bool isSelectionEmpty () const
const ElementMask elements () const
AtomType addAtom (unsigned char atomicNumber, Vector3 position3d)
virtual void clearAtoms ()
AtomType atom (Index index) const
virtual void clearBonds ()
BondType bond (Index index) const
BondType bond (const AtomType &a, const AtomType &b) const
BondType bond (Index atomId1, Index atomId2) const
std::string bondLabel (Index bondIndex) const
bool setBondLabel (Index bondIndex, const std::string &label)
const Core::Array< std::string > bondLabels () const
bool setBondLabels (const Core::Array< std::string > &label)
MeshaddMesh ()
 Add a mesh to the molecule.
Meshmesh (Index index)
const Meshmesh (Index index) const
Index meshCount () const
void clearMeshes ()
CubeaddCube ()
 Add a cube to the molecule.
Cubecube (Index index)
const Cubecube (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)
BasisSetbasisSet ()
const BasisSetbasisSet () 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)
void clearCoordinate3d ()
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)
ResidueaddResidue (std::string &name, Index &number, char &id)
void addResidue (Residue &residue)
Residueresidue (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 Graphgraph () 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)
Layerlayer ()
const Layerlayer () const
void boundingBox (Vector3 &boxMin, Vector3 &boxMax, const double radius=1.0) const
const CustomElementMapcustomElementMap () const
void setCustomElementMap (const CustomElementMap &map)
Array< BondTypebonds (const AtomType &a)
 Get all bonds to a.
Array< BondTypebonds (Index a)
 Get all bonds to a.
Array< const BondType * > bonds (Index a) const
 Get all bonds to a.
void setUnitCell (UnitCell *uc)
UnitCellunitCell ()
const UnitCellunitCell () const
void setHallNumber (unsigned short hallNumber)
unsigned short hallNumber () const

Additional Inherited Members

Static Public Member Functions inherited from Molecule
static std::pair< Vector3, Vector3 > bestFitPlane (const Array< Vector3 > &pos)
static std::pair< Index, Index > makeBondPair (const Index &a, const Index &b)
Protected Attributes inherited from Molecule
VariantMap m_data
std::map< std::string, MatrixX > m_partialCharges
 Sets of atomic partial charges.
std::map< std::string, MatrixX > m_spectra
 Sets of spectra.
CustomElementMap m_customElementMap
ElementMask m_elements
Array< Vector2 > m_positions2d
Array< Vector3 > m_positions3d
Array< std::string > m_atomLabels
Array< std::string > m_bondLabels
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
BasisSetm_basisSet
UnitCellm_unitCell
Array< Residuem_residues
unsigned short m_hallNumber = 0
Eigen::VectorXd m_frozenAtomMask

Member Typedef Documentation

◆ AtomType

Typedef for Atom class.

◆ PersistentAtomType

◆ BondType

Typedef for Bond class.

◆ PersistentBondType

Member Enumeration Documentation

◆ MoleculeChange

Enumeration of change types that can be given.

Enumerator
NoChange 

Useful for initializing MoleculeChange variables.

Atoms 

Object types that can be changed.

Added 

Operations that can affect the above types.

Constructor & Destructor Documentation

◆ ~Molecule()

~Molecule ( )
overridevirtual

Destroys the molecule object.

Reimplemented from Molecule.

◆ Molecule() [1/2]

Molecule ( const Molecule & other)

copy constructor

◆ Molecule() [2/2]

Molecule ( const Core::Molecule & other)

copy constructor to copy data from base instance

Member Function Documentation

◆ operator=() [1/2]

Molecule & operator= ( const Molecule & other)

Assignment operator

◆ operator=() [2/2]

Molecule & operator= ( const Core::Molecule & other)

Assignment operator to copy data from base instance

◆ addAtom() [1/2]

AtomType addAtom ( unsigned char atomicNumber)
overridevirtual

Add an atom with atomicNumber to the molecule.

Returns
The atom created.

Reimplemented from Molecule.

◆ addAtom() [2/2]

virtual AtomType addAtom ( unsigned char atomicNumber,
Index uniqueId )
virtual

Add an atom with atomicNumber and uniqueId to the molecule.

Returns
The atom created. This can be invalid if the unique ID was already in use.

◆ removeAtom() [1/2]

bool removeAtom ( Index index)
overridevirtual
Parameters
indexThe index of the atom to be removed.
Returns
True on success, false if the atom was not found.

Reimplemented from Molecule.

◆ removeAtom() [2/2]

bool removeAtom ( const AtomType & atom)
overridevirtual
Parameters
atomThe atom to be removed.
Returns
True on success, false if the atom was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Reimplemented from Molecule.

◆ atomByUniqueId()

AtomType atomByUniqueId ( Index uniqueId)
Parameters
uniqueIdThe unique identifier for the atom.
Returns
An Atom object, check it is valid before using it.

◆ atomUniqueId() [1/2]

Index atomUniqueId ( const AtomType & atom) const
Parameters
atomThe atom to obtain the unique ID of.
Returns
The unique identifier for the atom, MaxIndex if the atom is invalid or does not belong to this molecule.

◆ atomUniqueId() [2/2]

Index atomUniqueId ( Index atom) const
Parameters
atomThe atom to obtain the unique ID of.
Returns
The unique identifier for the atom, MaxIndex if the atom is invalid or does not belong to this molecule.

◆ addBond() [1/4]

BondType addBond ( const AtomType & a,
const AtomType & b,
unsigned char bondOrder = 1 )
overridevirtual
Parameters
aThe first atom in the bond.
bThe second atom in the bond.
bondOrderThe order of the bond.
Returns
The bond created.

Reimplemented from Molecule.

◆ addBond() [2/4]

BondType addBond ( Index atomId1,
Index atomId2,
unsigned char bondOrder = 1 )
overridevirtual
Parameters
atomId1The index of the first atom in the bond.
atomId2The index of the second atom in the bond.
bondOrderThe order of the bond.
Returns
The bond created.

Reimplemented from Molecule.

◆ addBond() [3/4]

virtual BondType addBond ( const AtomType & a,
const AtomType & b,
unsigned char bondOrder,
Index uniqueId )
virtual
Parameters
aThe first atom in the bond.
bThe second atom in the bond.
bondOrderThe order of the bond.
uniqueIdThe unique ID to use for the bond.
Returns
The bond created. This can be invalid if the unique ID was already in use.

◆ addBond() [4/4]

virtual BondType addBond ( Index atomId1,
Index atomId2,
unsigned char bondOrder,
Index uniqueId )
virtual
Parameters
aThe index of the first atom in the bond.
bThe index of the second atom in the bond.
bondOrderThe order of the bond.
uniqueIdThe unique ID to use for the bond.
Returns
The bond created. This can be invalid if the unique ID was already in use.

◆ removeBond() [1/4]

bool removeBond ( Index index)
overridevirtual
Parameters
indexThe index of the bond to be removed.
Returns
True on success, false if the bond was not found.

Reimplemented from Molecule.

◆ removeBond() [2/4]

bool removeBond ( const BondType & bond)
overridevirtual
Parameters
bondThe bond to be removed.
Returns
True on success, false if the bond was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Reimplemented from Molecule.

◆ removeBond() [3/4]

bool removeBond ( const AtomType & atom1,
const AtomType & atom2 )
overridevirtual
Parameters
atom1One atom in the bond.
atom2The other atom in the bond.
Returns
True on success, false if the bond was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Reimplemented from Molecule.

◆ removeBond() [4/4]

bool removeBond ( Index atom1,
Index atom2 )
overridevirtual
Parameters
atom1One atom in the bond.
atom2The other atom in the bond.
Returns
True on success, false if the bond was not found. This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Reimplemented from Molecule.

◆ bondByUniqueId()

BondType bondByUniqueId ( Index uniqueId)
Parameters
uniqueIdThe unique identifier for the bond.
Returns
A Bond object, check it is valid before using it.

◆ bondUniqueId() [1/2]

Index bondUniqueId ( const BondType & bond) const
Parameters
bondThe bond to obtain the unique ID of.
Returns
The unique identifier for the bond, MaxIndex if the bond is invalid or does not belong to this molecule.

◆ bondUniqueId() [2/2]

Index bondUniqueId ( Index bond) const
Parameters
bondThe bond to obtain the unique ID of.
Returns
The unique identifier for the bond, MaxIndex if the bond is invalid or does not belong to this molecule.

◆ emitChanged

void emitChanged ( unsigned int change)
slot
Parameters
changeSee changed().

◆ changed

void changed ( unsigned int change) const
signal
Parameters
changeUse the MoleculeChange enum to check what has changed.

The change variable indicates what has changed, i.e. if change & Atoms == true then atoms were changed in some way, and if change & Removed == true then one or more atoms were removed.


The documentation for this class was generated from the following file: