From: Egon W. <eg...@us...> - 2005-10-17 19:57:52
|
Update of /cvsroot/cdk/cdk-taverna/src/org/openscience/cdk/applications/taverna/charges In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9685/src/org/openscience/cdk/applications/taverna/charges Modified Files: PartialChargesCalculator.java Log Message: Added two other methods for calculating partial charges. Index: PartialChargesCalculator.java =================================================================== RCS file: /cvsroot/cdk/cdk-taverna/src/org/openscience/cdk/applications/taverna/charges/PartialChargesCalculator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PartialChargesCalculator.java 16 Oct 2005 16:06:12 -0000 1.3 +++ PartialChargesCalculator.java 17 Oct 2005 19:57:42 -0000 1.4 @@ -27,12 +27,17 @@ import org.openscience.cdk.applications.taverna.CMLChemFile; import org.openscience.cdk.charges.GasteigerMarsiliPartialCharges; +import org.openscience.cdk.charges.InductivePartialCharges; +import org.openscience.cdk.charges.MMFF94PartialCharges; +import org.openscience.cdk.interfaces.Atom; import org.openscience.cdk.interfaces.AtomContainer; import org.openscience.cdk.tools.manipulator.ChemFileManipulator; public class PartialChargesCalculator { private static GasteigerMarsiliPartialCharges gmCalculator; + private static InductivePartialCharges indCalculator; + private static MMFF94PartialCharges mmff94Calculator; /** * Calculates Gasteiger-Marsili partial charges. @@ -57,5 +62,63 @@ return file.toCML(); } + /** + * Calculates inductive partial charges.. + * + * @taverna.consume + */ + public static String calculateInductivePartialCharges(String cmlString) throws Exception { + if (indCalculator == null) indCalculator = new InductivePartialCharges(); + + CMLChemFile file = new CMLChemFile(cmlString); + + AtomContainer[] molecules = ChemFileManipulator.getAllAtomContainers(file); + for (int i=0; i<molecules.length; i++) { + try { + indCalculator.assignInductivePartialCharges(molecules[i]); + Atom[] atoms = molecules[i].getAtoms(); + for (int j=0; j<atoms.length; j++) { + Object object = atoms[i].getProperty("InductivePartialCharge"); + if (object != null && object instanceof Double) { + atoms[j].setCharge(((Double)object).doubleValue()); + } + } + } catch (Exception exception) { + // this is going to happen a lot :( + // what to do about it?? + } + } + + return file.toCML(); + } + /** + * Calculates MMFF94 partial charges.. + * + * @taverna.consume + */ + public static String calculateMMFF94PartialCharges(String cmlString) throws Exception { + if (mmff94Calculator == null) mmff94Calculator = new MMFF94PartialCharges(); + + CMLChemFile file = new CMLChemFile(cmlString); + + AtomContainer[] molecules = ChemFileManipulator.getAllAtomContainers(file); + for (int i=0; i<molecules.length; i++) { + try { + mmff94Calculator.assignMMFF94PartialCharges(molecules[i]); + Atom[] atoms = molecules[i].getAtoms(); + for (int j=0; j<atoms.length; j++) { + Object object = atoms[i].getProperty("MMFF94charge"); + if (object != null && object instanceof Double) { + atoms[j].setCharge(((Double)object).doubleValue()); + } + } + } catch (Exception exception) { + // this is going to happen a lot :( + // what to do about it?? + } + } + + return file.toCML(); + } } |