Atom Properties

The OEAtomBase class is the workhorse of the OEChem TK library, representing the atoms of a molecule. This section details some of its important and often used properties and methods.

Read/Write Atom Properties

Property Name Type Get Method Set Method See Also
Atomic Number unsigned int GetAtomicNum SetAtomicNum  
Formal Charge int GetFormalCharge SetFormalCharge Formal Charges
Implicit Hyd. Count unsigned int GetImplicitHCount SetImplicitHCount
Isotopic Mass unsigned int GetIsotope SetIsotope  
Partial Charge double GetPartialCharge SetPartialCharge Partial Charges
Atomic Hybridization unsigned int GetHyb SetHyb  
Integer Atom Type int GetIntType SetIntType  
Atom Name string GetName SetName  
Atom Type Name string GetType SetType  
Atom Radius double GetRadius SetRadius  
Reaction Role unsigned int GetRxnRole SetRxnRole Reactions
Reaction Map Index unsigned int GetMapIdx SetMapIdx Reactions
Ring Membership bool IsInRing SetIsInRing Ring Perception
Aromaticity bool IsAromatic SetAromatic Aromaticity
Atom Chirality bool IsChiral SetChiral Stereochemistry
Atom Stereo unsigned int GetStereo SetStereo Stereochemistry

Read Only Atom Properties

Property Name Type Get Method See Also
Atom Degree unsigned int GetDegree  
Explicit Atom Degree unsigned int GetExplicitDegree  
Explicit Hydrogen Count unsigned int GetExplicitHCount
Explicit Valence unsigned int GetExplicitValence Valence Models
Atom Heavy Degree unsigned int GetHvyDegree  
Atom Heavy Valence unsigned int GetHvyValence Valence Models
Atom Parent OEMolBase GetParent  
Total Hydrogen Count unsigned int GetTotalHCount
Atom Valence unsigned int GetValence Valence Models
Atom Index unsigned int GetIdx Atom, Bond, and Conformer Indices
Atom Has Stereo bool HasStereoSpecified Stereochemistry Perception
Atom Connection bool IsConnected  

Attach Generic Data to Atoms

Generic data (see Generic Data) can be attached to any object that derives from the OEBase class. The following program shows an example where hydrogen bonding donor property is attached as a bool value to the corresponding OEAtomBase object.

Listing 2: Example of attaching generic data to atoms

#include <openeye.h>
#include <oesystem.h>
#include <oechem.h>

using namespace std;
using namespace OESystem;
using namespace OEChem;

class IsDonorAtomPred : public OEUnaryPredicate<OEAtomBase>
{
  public:
    IsDonorAtomPred() = default;
    IsDonorAtomPred(const IsDonorAtomPred &) = default;
    IsDonorAtomPred& operator=(const IsDonorAtomPred &) = default;
    ~IsDonorAtomPred() = default;

    bool operator()(const OEAtomBase &atom) const
    {
      return atom.GetData<bool>("isdonor");
    }
    OEUnaryFunction<OEAtomBase, bool> *CreateCopy() const
    {
      return new IsDonorAtomPred;
    }

};

int main()
{
  OEGraphMol mol;
  OESmilesToMol(mol, "c1c(Cl)cncc1C(=O)O");

  OEMatchFunc<OEAtomBase> IsDonorAtom("[!H0;#7,#8]");
  for (OEIter<OEAtomBase> atom = mol.GetAtoms(); atom; ++atom)
    atom->SetData("isdonor", IsDonorAtom(atom));

  cout << "Donor atoms: ";
  for (OEIter<const OEAtomBase> atom = mol.GetAtoms(IsDonorAtomPred()); atom; ++atom)
     cout << atom->GetIdx() << ' ' << OEGetAtomicSymbol(atom->GetAtomicNum());
  cout << endl;

  return 0;
}

The OEAtomBase API provides the following methods, publicly inherited from OEBase, that allow the manipulation of generic data.

Methods to manipulate generic data
Method Description
SetData sets a generic data associating it with the given tag
AddData adds a generic data associating it with the given tag
HasData determines whether a molecule has any generic data with a given tag
GetData returns the generic data associated with the given tag
DeleteData deletes all generic data with the given tag
Clear clears all stored generic data

Note

Generic data attached to a molecule or any of its atoms or bonds is automatically saved when the molecule is written into an .oeb file.