OEGet2dPSA

float OEGet2dPSA(OEMolBase mol, OEFloatArray atomPSA, boolean SandP)
float OEGet2dPSA(OEMolBase mol, OEFloatArray atomPSA)
float OEGet2dPSA(OEMolBase mol)

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

OEFloatArray atomPSA = new OEFloatArray(mol.GetMaxAtomIdx());
float psa = oemolprop.OEGet2dPSA(mol, atomPSA);

System.out.println("PSA = " + psa);
for (OEAtomBase atom : mol.GetAtoms()) {
    int idx = atom.GetIdx();
    System.out.println(idx + " " + atomPSA.getItem(idx));          
}
../../_images/OEGet2dPSA.png

Example of depicting the atom contributions of the polar surface area (ignoring S and P atoms)

(Darker colors and longer spikes indicate larger PSA atom contributions)

../../_images/OEGet2dPSA-SAndP.png

Example of depicting the atom contributions of the polar surface area (considering S and P atoms)

(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