Update of /cvsroot/cdk/cdk/src/org/openscience/cdk/qsar In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4682/src/org/openscience/cdk/qsar Added Files: ConnectivityOrderOneDescriptor.java ConnectivityOrderZeroDescriptor.java ValenceConnectivityOrderOneDescriptor.java ValenceConnectivityOrderZeroDescriptor.java Log Message: added new set of 8 Kier-Hall descriptors, with test file, and added a ZagrebIndex test file --- NEW FILE: ConnectivityOrderOneDescriptor.java --- /* * $RCSfile: ConnectivityOrderOneDescriptor.java,v $ * $Author: mfe4 $ * $Date: 2004/12/02 12:27:27 $ * $Revision: 1.1 $ * * Copyright (C) 2004 The Chemistry Development Kit (CDK) project * * Contact: cdk...@li... * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.openscience.cdk.qsar; import org.openscience.cdk.Atom; import org.openscience.cdk.Bond; import org.openscience.cdk.AtomContainer; import org.openscience.cdk.exception.CDKException; import java.util.Map; import java.util.Hashtable; import java.util.ArrayList; /** * Connectivity index (order 1): * http://www.edusoft-lc.com/molconn/manuals/400/chaptwo.html * http://www.chemcomp.com/Journal_of_CCG/Features/descr.htm#KH * returned values are: * chi1 is the Atomic connectivity index (order 1), * chi1_C is the Carbon connectivity index (order 1); * *@author mfe4 *@cdk.created 2004-11-03 * @cdk.module qsar */ public class ConnectivityOrderOneDescriptor implements Descriptor { /** * Constructor for the ConnectivityOrderOneDescriptor object */ public ConnectivityOrderOneDescriptor() { } /** * Gets the specification attribute of the ConnectivityOrderOneDescriptor object * *@return The specification value */ public Map getSpecification() { Hashtable specs = new Hashtable(); specs.put("Specification-Reference", "http://qsar.sourceforge.net/dicts/qsar-descriptors:chiValuesCOO"); specs.put("Implementation-Title", this.getClass().getName()); specs.put("Implementation-Identifier", "$Id: ConnectivityOrderOneDescriptor.java,v 1.1 2004/12/02 12:27:27 mfe4 Exp $"); // added by CVS specs.put("Implementation-Vendor", "The Chemistry Development Kit"); return specs; } /** * Sets the parameters attribute of the ConnectivityOrderOneDescriptor object * *@param params The new parameters value *@exception CDKException Description of the Exception */ public void setParameters(Object[] params) throws CDKException { // no parameters for this descriptor } /** * Gets the parameters attribute of the ConnectivityOrderOneDescriptor object * *@return The parameters value */ public Object[] getParameters() { return (null); // no parameters to return } /** * Description of the Method * *@param ac AtomContainer *@return chiValuesCOO is an arrayList that contains chi1 and chi1_C *@exception CDKException Possible Exceptions */ public Object calculate(AtomContainer ac) throws CDKException { ArrayList chiValuesCOO = new ArrayList(2); ArrayList degrees = new ArrayList(2); double chi1 = 0; double chi1_C = 0; double val0 = 0; double val1 = 0; int atomDegree = 0; Bond[] bonds = ac.getBonds(); Atom[] atoms = null; for (int b = 0; b < bonds.length; b++) { atoms = bonds[b].getAtoms(); if ((!atoms[0].getSymbol().equals("H")) || (!atoms[1].getSymbol().equals("H"))) { degrees.clear(); for (int a = 0; a < atoms.length; a++) { atomDegree = 0; Atom[] neighboors = ac.getConnectedAtoms(atoms[a]); for (int n = 0; n < neighboors.length; n++) { if (!neighboors[n].getSymbol().equals("H")) { atomDegree += 1; } } if(atomDegree > 0) { degrees.add(new Double(atomDegree)); } } val0 = ( (Double)degrees.get(0) ).doubleValue(); val1 = ( (Double)degrees.get(1) ).doubleValue(); if((atoms[0].getSymbol().equals("C")) && (atoms[1].getSymbol().equals("C"))) { chi1_C += 1/(Math.sqrt(val0 * val1)); } chi1 += 1/(Math.sqrt(val0 * val1)); } } chiValuesCOO.add(new Double(chi1)); chiValuesCOO.add(new Double(chi1_C)); return new ArrayList(chiValuesCOO); } /** * Gets the parameterNames attribute of the ConnectivityOrderOneDescriptor object * *@return The parameterNames value */ public String[] getParameterNames() { // no param names to return return (null); } /** * Gets the parameterType attribute of the ConnectivityOrderOneDescriptor object * *@param name Description of the Parameter *@return The parameterType value */ public Object getParameterType(String name) { return (null); } } --- NEW FILE: ConnectivityOrderZeroDescriptor.java --- /* * $RCSfile: ConnectivityOrderZeroDescriptor.java,v $ * $Author: mfe4 $ * $Date: 2004/12/02 12:27:27 $ * $Revision: 1.1 $ * * Copyright (C) 2004 The Chemistry Development Kit (CDK) project * * Contact: cdk...@li... * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.openscience.cdk.qsar; import org.openscience.cdk.Atom; import org.openscience.cdk.AtomContainer; import org.openscience.cdk.exception.CDKException; import java.util.Map; import java.util.Hashtable; import java.util.ArrayList; /** * Connectivity index (order 0): * http://www.edusoft-lc.com/molconn/manuals/400/chaptwo.html * http://www.chemcomp.com/Journal_of_CCG/Features/descr.htm#KH * returned values are: * chi0 is the Atomic connectivity index (order 0), * chi0_C is the Carbon connectivity index (order 0); * *@author mfe4 *@cdk.created 2004-11-03 * @cdk.module qsar */ public class ConnectivityOrderZeroDescriptor implements Descriptor { /** * Constructor for the ConnectivityOrderZeroDescriptor object */ public ConnectivityOrderZeroDescriptor() { } /** * Gets the specification attribute of the ConnectivityOrderZeroDescriptor object * *@return The specification value */ public Map getSpecification() { Hashtable specs = new Hashtable(); specs.put("Specification-Reference", "http://qsar.sourceforge.net/dicts/qsar-descriptors:chiValuesCOZ"); specs.put("Implementation-Title", this.getClass().getName()); specs.put("Implementation-Identifier", "$Id: ConnectivityOrderZeroDescriptor.java,v 1.1 2004/12/02 12:27:27 mfe4 Exp $"); // added by CVS specs.put("Implementation-Vendor", "The Chemistry Development Kit"); return specs; } /** * Sets the parameters attribute of the ConnectivityOrderZeroDescriptor object * *@param params The new parameters value *@exception CDKException Description of the Exception */ public void setParameters(Object[] params) throws CDKException { // no parameters for this descriptor } /** * Gets the parameters attribute of the ConnectivityOrderZeroDescriptor object * *@return The parameters value */ public Object[] getParameters() { return (null); // no parameters to return } /** * Description of the Method * *@param ac AtomContainer *@return chiValuesCOZ is an arrayList that contains chi0 and chi0_C *@exception CDKException Possible Exceptions */ public Object calculate(AtomContainer ac) throws CDKException { ArrayList chiValuesCOZ = new ArrayList(2); double chi0 = 0; double chi0_C = 0; Atom[] atoms = ac.getAtoms(); for (int i = 0; i < atoms.length; i++) { int atomDegree = 0; Atom[] neighboors = ac.getConnectedAtoms(atoms[i]); for (int a = 0; a < neighboors.length; a++) { if (!neighboors[a].getSymbol().equals("H")) { atomDegree += 1; } } if(atomDegree > 0) { if(atoms[i].getSymbol().equals("C")) { chi0_C += 1/(Math.sqrt(atomDegree)); } chi0 += 1/(Math.sqrt(atomDegree)); } } chiValuesCOZ.add(new Double(chi0)); chiValuesCOZ.add(new Double(chi0_C)); return new ArrayList(chiValuesCOZ); } /** * Gets the parameterNames attribute of the ConnectivityOrderZeroDescriptor object * *@return The parameterNames value */ public String[] getParameterNames() { // no param names to return return (null); } /** * Gets the parameterType attribute of the ConnectivityOrderZeroDescriptor object * *@param name Description of the Parameter *@return The parameterType value */ public Object getParameterType(String name) { return (null); } } --- NEW FILE: ValenceConnectivityOrderOneDescriptor.java --- /* * $RCSfile: ValenceConnectivityOrderOneDescriptor.java,v $ * $Author: mfe4 $ * $Date: 2004/12/02 12:27:27 $ * $Revision: 1.1 $ * * Copyright (C) 2004 The Chemistry Development Kit (CDK) project * * Contact: cdk...@li... * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.openscience.cdk.qsar; import org.openscience.cdk.Atom; import org.openscience.cdk.Bond; import org.openscience.cdk.Element; import org.openscience.cdk.AtomContainer; import org.openscience.cdk.tools.*; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.config.IsotopeFactory; import junit.framework.AssertionFailedError; import java.util.Map; import java.util.Hashtable; import java.util.ArrayList; /** * Atomic valence connectivity index (order 1): * http://www.edusoft-lc.com/molconn/manuals/400/chaptwo.html * http://www.chemcomp.com/Journal_of_CCG/Features/descr.htm#KH * returned values are: * chi1v is the Atomic valence connectivity index (order 1), * chi1_C is the Carbon valence connectivity index (order 1); * valence is the number of s and p valence electrons of atom. * *@author mfe4 *@cdk.created 2004-11-03 * @cdk.module qsar */ public class ValenceConnectivityOrderOneDescriptor implements Descriptor { /** * Constructor for the ValenceConnectivityOrderOneDescriptor object */ public ValenceConnectivityOrderOneDescriptor() { } /** * Gets the specification attribute of the * ValenceConnectivityOrderOneDescriptor object * *@return The specification value */ public Map getSpecification() { Hashtable specs = new Hashtable(); specs.put("Specification-Reference", "http://qsar.sourceforge.net/dicts/qsar-descriptors:chiValuesVCOO"); specs.put("Implementation-Title", this.getClass().getName()); specs.put("Implementation-Identifier", "$Id: ValenceConnectivityOrderOneDescriptor.java,v 1.1 2004/12/02 12:27:27 mfe4 Exp $"); // added by CVS specs.put("Implementation-Vendor", "The Chemistry Development Kit"); return specs; } /** * Sets the parameters attribute of the * ValenceConnectivityOrderOneDescriptor object * *@param params The new parameters value *@exception CDKException Description of the Exception */ public void setParameters(Object[] params) throws CDKException { // no parameters for this descriptor } /** * Gets the parameters attribute of the * ValenceConnectivityOrderOneDescriptor object * *@return The parameters value */ public Object[] getParameters() { // no parameters to return return (null); } /** * calculates the chi1v and chi1v_C descriptors for an atom container * *@param ac AtomContainer *@return chi1v and chi1_C returned as arrayList *@exception CDKException Possible Exceptions */ public Object calculate(AtomContainer ac) throws CDKException { Hashtable valences = new Hashtable(); valences.put("Li", new Integer(1)); valences.put("Be", new Integer(2)); valences.put("B", new Integer(3)); valences.put("C", new Integer(4)); valences.put("N", new Integer(5)); valences.put("O", new Integer(6)); valences.put("F", new Integer(7)); valences.put("Na", new Integer(1)); valences.put("Mg", new Integer(2)); valences.put("Al", new Integer(3)); valences.put("Si", new Integer(4)); valences.put("P", new Integer(5)); valences.put("S", new Integer(6)); valences.put("Cl", new Integer(7)); valences.put("K", new Integer(1)); valences.put("Ca", new Integer(2)); valences.put("Ga", new Integer(3)); valences.put("Ge", new Integer(4)); valences.put("As", new Integer(5)); valences.put("Se", new Integer(6)); valences.put("Br", new Integer(7)); valences.put("Rb", new Integer(1)); valences.put("Sr", new Integer(2)); valences.put("In", new Integer(3)); valences.put("Sn", new Integer(4)); valences.put("Sb", new Integer(5)); valences.put("Te", new Integer(6)); valences.put("I", new Integer(7)); valences.put("Cs", new Integer(1)); valences.put("Ba", new Integer(2)); valences.put("Tl", new Integer(3)); valences.put("Pb", new Integer(4)); valences.put("Bi", new Integer(5)); valences.put("Po", new Integer(6)); valences.put("At", new Integer(7)); valences.put("Fr", new Integer(1)); valences.put("Ra", new Integer(2)); int valence = 0; int atomicNumber = 0; int hcount = 0; int atomValue = 0; double val0 = 0; double val1 = 0; ArrayList chiValuesVCOO = new ArrayList(2); ArrayList chiAtom = new ArrayList(2); ArrayList chiCarbon = new ArrayList(2); double chi1v = 0; double chi1v_C = 0; Atom[] atoms = null; Atom[] neighatoms = null; Element element = null; IsotopeFactory elfac = null; String symbol = null; Bond[] bonds = ac.getBonds(); for (int b = 0; b < bonds.length; b++) { atoms = bonds[b].getAtoms(); if ((!atoms[0].getSymbol().equals("H")) || (!atoms[1].getSymbol().equals("H"))) { val0 = 0; val1 = 0; chiAtom.clear(); chiCarbon.clear(); for (int a = 0; a < atoms.length; a++) { symbol = atoms[a].getSymbol(); try { elfac = IsotopeFactory.getInstance(); } catch (Exception exc) { throw new AssertionFailedError("Problem instantiating IsotopeFactory: " + exc.toString()); } try { element = elfac.getElement(symbol); } catch (Exception exc) { throw new AssertionFailedError("Problem getting isotope " + symbol + " from ElementFactory: " + exc.toString()); } atomicNumber = element.getAtomicNumber(); valence = ((Integer)valences.get(symbol)).intValue(); hcount = 0; atomValue = 0; neighatoms = ac.getConnectedAtoms(atoms[a]); for (int n = 0; n < neighatoms.length; n++) { if (neighatoms[n].getSymbol().equals("H")) { hcount += 1; } } hcount += atoms[a].getHydrogenCount(); atomValue = (valence - hcount) / (atomicNumber - valence - 1); if(atomValue > 0) { chiAtom.add(new Double(atomValue)); System.out.println(symbol+"= atomvalue: "+atomValue+",val: "+valence+",h:"+hcount); } } val0 = ( (Double)chiAtom.get(0) ).doubleValue(); val1 = ( (Double)chiAtom.get(1) ).doubleValue(); if((atoms[0].getSymbol().equals("C")) && (atoms[1].getSymbol().equals("C"))) { chi1v_C += 1/(Math.sqrt(val0 * val1)); } chi1v += 1/(Math.sqrt(val0 * val1)); } } chiValuesVCOO.add(new Double(chi1v)); chiValuesVCOO.add(new Double(chi1v_C)); return new ArrayList(chiValuesVCOO); } /** * Gets the parameterNames attribute of the * ValenceConnectivityOrderOneDescriptor object * *@return The parameterNames value */ public String[] getParameterNames() { // no param names to return return (null); } /** * Gets the parameterType attribute of the * ValenceConnectivityOrderOneDescriptor object * *@param name Description of the Parameter *@return The parameterType value */ public Object getParameterType(String name) { return (null); } } --- NEW FILE: ValenceConnectivityOrderZeroDescriptor.java --- /* * $RCSfile: ValenceConnectivityOrderZeroDescriptor.java,v $ * $Author: mfe4 $ * $Date: 2004/12/02 12:27:27 $ * $Revision: 1.1 $ * * Copyright (C) 2004 The Chemistry Development Kit (CDK) project * * Contact: cdk...@li... * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.openscience.cdk.qsar; import org.openscience.cdk.Atom; import org.openscience.cdk.Element; import org.openscience.cdk.AtomContainer; import org.openscience.cdk.tools.*; import org.openscience.cdk.exception.CDKException; import org.openscience.cdk.config.IsotopeFactory; import junit.framework.AssertionFailedError; import java.util.Map; import java.util.Hashtable; import java.util.ArrayList; /** * Atomic valence connectivity index (order 0): * http://www.edusoft-lc.com/molconn/manuals/400/chaptwo.html * http://www.chemcomp.com/Journal_of_CCG/Features/descr.htm#KH * returned values are: * chi0v is the Atomic valence connectivity index (order 0), * chi0_C is the Carbon valence connectivity index (order 0); * valence is the number of s and p valence electrons of atom. * *@author mfe4 *@cdk.created 2004-11-03 * @cdk.module qsar */ public class ValenceConnectivityOrderZeroDescriptor implements Descriptor { /** * Constructor for the ValenceConnectivityOrderZeroDescriptor object */ public ValenceConnectivityOrderZeroDescriptor() { } /** * Gets the specification attribute of the * ValenceConnectivityOrderZeroDescriptor object * *@return The specification value */ public Map getSpecification() { Hashtable specs = new Hashtable(); specs.put("Specification-Reference", "http://qsar.sourceforge.net/dicts/qsar-descriptors:chiValuesVCOZ"); specs.put("Implementation-Title", this.getClass().getName()); specs.put("Implementation-Identifier", "$Id: ValenceConnectivityOrderZeroDescriptor.java,v 1.1 2004/12/02 12:27:27 mfe4 Exp $"); // added by CVS specs.put("Implementation-Vendor", "The Chemistry Development Kit"); return specs; } /** * Sets the parameters attribute of the * ValenceConnectivityOrderZeroDescriptor object * *@param params The new parameters value *@exception CDKException Description of the Exception */ public void setParameters(Object[] params) throws CDKException { // no parameters for this descriptor } /** * Gets the parameters attribute of the * ValenceConnectivityOrderZeroDescriptor object * *@return The parameters value */ public Object[] getParameters() { // no parameters to return return (null); } /** * calculates the chiOv and chiOv_C descriptors for an atom container * *@param ac AtomContainer *@return chi0v and chi0_C returned as arrayList *@exception CDKException Possible Exceptions */ public Object calculate(AtomContainer ac) throws CDKException { Hashtable valences = new Hashtable(); valences.put("Li", new Integer(1)); valences.put("Be", new Integer(2)); valences.put("B", new Integer(3)); valences.put("C", new Integer(4)); valences.put("N", new Integer(5)); valences.put("O", new Integer(6)); valences.put("F", new Integer(7)); valences.put("Na", new Integer(1)); valences.put("Mg", new Integer(2)); valences.put("Al", new Integer(3)); valences.put("Si", new Integer(4)); valences.put("P", new Integer(5)); valences.put("S", new Integer(6)); valences.put("Cl", new Integer(7)); valences.put("K", new Integer(1)); valences.put("Ca", new Integer(2)); valences.put("Ga", new Integer(3)); valences.put("Ge", new Integer(4)); valences.put("As", new Integer(5)); valences.put("Se", new Integer(6)); valences.put("Br", new Integer(7)); valences.put("Rb", new Integer(1)); valences.put("Sr", new Integer(2)); valences.put("In", new Integer(3)); valences.put("Sn", new Integer(4)); valences.put("Sb", new Integer(5)); valences.put("Te", new Integer(6)); valences.put("I", new Integer(7)); valences.put("Cs", new Integer(1)); valences.put("Ba", new Integer(2)); valences.put("Tl", new Integer(3)); valences.put("Pb", new Integer(4)); valences.put("Bi", new Integer(5)); valences.put("Po", new Integer(6)); valences.put("At", new Integer(7)); valences.put("Fr", new Integer(1)); valences.put("Ra", new Integer(2)); int valence = 0; int atomicNumber = 0; int hcount = 0; int atomValue = 0; ArrayList chiValuesVCOZ = new ArrayList(2); double chi0v = 0; double chi0v_C = 0; Atom[] atoms = ac.getAtoms(); Atom[] neighatoms = null; Element element = null; IsotopeFactory elfac = null; String symbol = null; for (int i = 0; i < atoms.length; i++) { symbol = atoms[i].getSymbol(); try { elfac = IsotopeFactory.getInstance(); } catch (Exception exc) { throw new AssertionFailedError("Problem instantiating IsotopeFactory: " + exc.toString()); } try { element = elfac.getElement(symbol); } catch (Exception exc) { throw new AssertionFailedError("Problem getting isotope " + symbol + " from ElementFactory: " + exc.toString()); } atomicNumber = element.getAtomicNumber(); valence = ((Integer)valences.get(symbol)).intValue(); hcount = 0; atomValue = 0; neighatoms = ac.getConnectedAtoms(atoms[i]); for (int a = 0; a < neighatoms.length; a++) { if (neighatoms[a].getSymbol().equals("H")) { hcount += 1; } } hcount += ac.getAtomAt(i).getHydrogenCount(); atomValue = (valence - hcount) / (atomicNumber - valence - 1); if (atomValue > 0) { if(symbol.equals("C")) { chi0v_C += (1/(Math.sqrt(atomValue))); // chi0v_C } chi0v += (1/(Math.sqrt(atomValue))); // chi0v } } chiValuesVCOZ.add(new Double(chi0v)); chiValuesVCOZ.add(new Double(chi0v_C)); return new ArrayList(chiValuesVCOZ); } /** * Gets the parameterNames attribute of the * ValenceConnectivityOrderZeroDescriptor object * *@return The parameterNames value */ public String[] getParameterNames() { // no param names to return return (null); } /** * Gets the parameterType attribute of the * ValenceConnectivityOrderZeroDescriptor object * *@param name Description of the Parameter *@return The parameterType value */ public Object getParameterType(String name) { return (null); } } |