The following example demonstrates how to use OEChem's periodic table functions to perform the common task of determining the molecular weight of a compound. Average molecular weight is commonly used in filtering (Lipinski's Rules) and as a descriptor in QSAR. The use of inaccurate values for molecular weight in these applications may help explain their limited success.
# ch20-2.py
from openeye.oechem import *
def CalculateMolecularWeight(mol):
result = 0.0
for atom in mol.GetAtoms():
elem = atom.GetAtomicNum()
mass = atom.GetIsotope()
if (elem != 0 and mass != 0):
result += OEGetIsotopicWeight(elem,mass)
else:
result += OEGetAverageWeight(elem)
return result
ims = oemolistream("drugs.sdf");
for mol in ims.GetOEMols():
print mol.GetTitle(), " mw = ", CalculateMolecularWeight(mol)