OEGet2dPSA¶
bool OEGet2dPSA(const OEChem::OEMolBase &mol, float &psa, float *atomPSA=0,
bool SandP=false)
Returns the topological polar surface area for a given molecule as
described in the Polar Surface Area section. The
SandP
parameter controls whether sulfur and phosphorus should be
counted towards the total surface area.
See example in Figure: Example of depicting the atom contributions of
the polar surface area.
Warning
TPSA values are mildly sensitive to the protonation state of a molecule.
The atomPSA
parameter can be used to retrieve the contribution
of each atom to the total polar surface area as shown in
Listing 1
.
Listing 1: Example of retrieving individual atom contributions to PSA
// declare an array for atom values
float * atomPSA = new float[mol.GetMaxAtomIdx()];
float psa;
OEGet2dPSA(mol, psa, atomPSA);
std::cout << "PSA = " << psa << std::endl;
for (OEIter<OEAtomBase> atom=mol.GetAtoms();atom;++atom)
{
unsigned int idx = atom->GetIdx();
std::cout << idx << " " << atomPSA[idx] << std::endl;
}
// clean up
delete [] atomPSA;
(Darker colors and longer spikes indicate larger PSA atom contributions)
(Darker colors and longer spikes indicate larger PSA atom contributions)
See also
The Python script that visualizes the polar surface area of a molecule can be downloaded from the OpenEye Python Cookbook
See also
Polar Surface Area section