Two color force fields, ImplicitMillsDean and ExplicitMillsDean, are built into the Shape toolkit. (The OEColorForceField class is defined in the next section.) Both of these force fields define similar 6 TYPE color force-fields. The types are hydrogen-bond donors, hydrogen-bond acceptors, hydrophobes, anions, cations, and rings. The ImplicitMillsDean force field is recommended.
ImplicitMillsDean includes a simple pKa model that assumes pH=7. It defines cations, anions, donors and acceptors in such a way that they will be assigned the appropriate value independent of the protonation state in the reference or fit molecule. For example, if a molecule contains a carboxylate, ImplicitMillsDean will consider it an anionic center independent of whether it is protonated or deprotonated. This is convenient for searching databases which have not had careful curation of their protonation states. The ExplicitMillsDean file has a similar overall interaction model, however, it does not include a pKa model. It interprets the protonation and charge state of each molecule exactly. Thus, if a sulfate is protonated and neutral, it will not be considered an anion.
The hydrogen-bond models in both ImplicitMillsDean and ExplicitMillsDean are extensions of the original model presented by Mills and Dean(1). They both have donors and acceptors segregated into strong, moderate and weak categories.
This next example uses the ImplicitMillsDean force field to rescore a set of ROCS hits and add the color scores to SD tags.
1 /*******************************************************************************
2 * Copyright 2005,2006,2007,2008 OpenEye Scientific Software, Inc.
3 ******************************************************************************/
4 package openeye.examples.oeshape;
5
6 import openeye.oechem.*;
7 import openeye.oeshape.*;
8
9 public class ColorScore {
10 public static void main(String[] args) {
11 if (args.length!=3) {
12 System.out.println("ColorScore <reffile> <rocs_hits> <output.sdf>");
13 System.exit(0);
14 }
15
16 oemolistream reffs = new oemolistream(args[0]);
17 oemolistream fitfs = new oemolistream(args[1]);
18 oemolostream outfs = new oemolostream(args[2]);
19
20 OEGraphMol refmol = new OEGraphMol();
21 oechem.OEReadMolecule(reffs, refmol);
22
23 OEColorOverlap ov = new OEColorOverlap();
24 ov.SetColorForceField(OEColorFFType.ImplicitMillsDean);
25 ov.SetRefMol(refmol);
26
27 System.out.print("Ref. Title: "+refmol.GetTitle()+" ");
28 System.out.println("Self color: "+ov.GetSelfColor());
29
30 OEColorResults res = new OEColorResults();
31 OEGraphMol fitmol = new OEGraphMol();
32 while (oechem.OEReadMolecule(fitfs, fitmol)) {
33 ov.ColorScore(fitmol, res);
34 oechem.OESetSDData(fitmol, "MyColorScore",
35 String.valueOf(res.getColorscore()));
36 oechem.OESetSDData(fitmol, "MyScaledColor",
37 String.valueOf(res.getScaledcolor()));
38 oechem.OEWriteMolecule(outfs, fitmol);
39
40 System.out.print("Fit. Title: "+fitmol.GetTitle()+" ");
41 System.out.print("Color Score: "+res.getColorscore()+" ");
42 System.out.println("Scaled color: "+res.getScaledcolor());
43 }
44 }
45 }
46
47