From: <mig...@us...> - 2006-07-21 08:25:49
|
Revision: 6697 Author: miguelrojasch Date: 2006-07-21 01:25:41 -0700 (Fri, 21 Jul 2006) ViewCVS: http://svn.sourceforge.net/cdk/?rev=6697&view=rev Log Message: ----------- Clearing code Modified Paths: -------------- trunk/cdk/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/PiElectronegativityDescriptor.java trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java Modified: trunk/cdk/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java 2006-07-21 08:07:09 UTC (rev 6696) +++ trunk/cdk/src/org/openscience/cdk/charges/GasteigerPEPEPartialCharges.java 2006-07-21 08:25:41 UTC (rev 6697) @@ -72,6 +72,14 @@ /** Flag is set if the formal charge of a chemobject is changed due to resonance.*/ private static int ISCHANGEDFC = 0; + /** Corresponds an empirical influence between the electrostatic potential and + * the neighbours.*/ + private double fE = 1.0;/*1.1*/ + /** Scalle factor which makes same heavay for all structures*/ + private double fS = 0.37; + + + private LoggingTool logger = new LoggingTool(GasteigerPEPEPartialCharges.class); @@ -105,17 +113,15 @@ /* detect conjugated Pi systems*/ SetOfAtomContainers set = ConjugatedPiSystemsDetector.detect(ac); if(set.getAtomContainerCount() == 0 ){ - /* detect hyperconjugation interactions //TODO - it should be integrated in ResonanceStructure class*/ + /* detect hyperconjugation interactions */ setHI = getHyperconjugationInteractions(ac); - if(setHI.getAtomContainerCount() == 0 ){ + if(setHI.getAtomContainerCount() == 0 ) for(int i = 0; i < ac.getAtomCount() ; i++) ac.getAtomAt(i).setCharge(0.0); - - } } - /*0: remove charge, flag ac*/ + /*0: remove charge, and possible flag ac*/ for(int j = 0 ; j < ac.getAtomCount(); j++){ ac.getAtomAt(j).setCharge(0.0); ac.getAtomAt(j).setFlag(ISCHANGEDFC, false); @@ -132,22 +138,20 @@ double[][] sumCharges = new double[iSet.getAtomContainerCount()][ac.getAtomCount( )]; for(int i = 1; i < iSet.getAtomContainerCount() ; i++){ IAtomContainer iac = iSet.getAtomContainer(i); - for(int j = 0 ; j < iac.getAtomCount(); j++){ + for(int j = 0 ; j < iac.getAtomCount(); j++) sumCharges[i][j] = iac.getAtomAt(j).getFormalCharge(); - } + } for(int i = 1; i < iSet.getAtomContainerCount() ; i++){ IAtomContainer iac = iSet.getAtomContainer(i); - for(int j = 0 ; j < ac.getAtomCount(); j++){ + for(int j = 0 ; j < ac.getAtomCount(); j++) if(sumCharges[i][j] != ac.getAtomAt(j).getFormalCharge()){ ac.getAtomAt(j).setFlag(ISCHANGEDFC, true); iac.getAtomAt(j).setFlag(ISCHANGEDFC, true); } - } - } - /*3: set sigma charge (PEOE). Initial Point*/ + /*3: set sigma charge (PEOE). Initial start point*/ GasteigerMarsiliPartialCharges peoe = new GasteigerMarsiliPartialCharges();; peoe.setMaxGasteigerIters(6); IAtomContainer acCloned; @@ -164,11 +168,8 @@ Wt[i-1]= getTopologicalFactors(iSet.getAtomContainer(i),ac); + double[][] gasteigerFactors = assignPiFactors(iSet);//a,b,c,deoc,chi,q - double fE = 1.0;/*1.1*/ - double fS = 0.37; - double[][] gasteigerFactors = assignGasteigerPiMarsiliFactors(iSet);//a,b,c,deoc,chi,q - /*calculate electronegativity for changed atoms and make the difference between whose * atoms which change their formal charge*/ for (int iter = 0; iter < MX_ITERATIONS; iter++) { @@ -207,10 +208,12 @@ double epN2 = getElectrostaticPotentialN(acCloned,atom2); double SumQN = Math.abs(epN1 - epN2); // System.out.println("sum("+SumQN+") = ("+epN1+") - ("+epN2+")"); + /* electronic weight*/ double WE = Dq + fE*SumQN; // System.out.println("WE : "+WE+" = Dq("+Dq+")+fE("+fE+")*SumQN("+SumQN); int iTE = iter+1; + /* total topological*/ double W = WE*Wt[k-1]*fS/(iTE); // System.out.println("W : "+W+" = WE("+WE+")*Wt("+Wt[k-1]+")*fS("+fS+")/iter("+iTE+"), atoms: "+atom1+", "+atom2); @@ -234,9 +237,7 @@ } -// for (int i = 0; i < ac.getAtomCount(); i++) { -// System.out.println(ac.getAtomAt(i).getSymbol()+" - charget: "+ac.getAtomAt(i).getCharge()); -// } + return ac; } @@ -311,7 +312,9 @@ } catch (CDKException e) { e.printStackTrace(); } - hAdder.addExplicitHydrogensToSatisfyValency((IMolecule) ac); + + hAdder.addExplicitHydrogensToSatisfyValency((IMolecule) ac); + return set; } /** @@ -322,7 +325,7 @@ * @return The sum of electrostatic potential of the neighbours */ private double getElectrostaticPotentialN(IAtomContainer ac, int atom1) { -// IMolecularDescriptor descriptor; + double CoulombForceConstant = 1/(4*Math.PI*0.885/*Math.pow(10, -12)*/); double sum = 0.0; try { @@ -331,20 +334,15 @@ "org/openscience/cdk/config/data/jmol_atomtypes.txt", ac.getBuilder() ); - - - -// descriptor = new CovalentRadiusDescriptor(); + IAtom[] atoms = ac.getConnectedAtoms(ac.getAtomAt(atom1)); for(int i = 0 ; i < atoms.length ; i++){ double covalentradius = 0; String symbol = atoms[i].getSymbol(); IAtomType type = factory.getAtomType(symbol); covalentradius = type.getCovalentRadius(); -// Object[] params1 = {new Integer(ac.getAtomNumber(atoms[i]))}; -// descriptor.setParameters(params1); -// double retval = ((DoubleResult)descriptor.calculate(ac).getValue()).doubleValue(); - double charge = atoms[i].getCharge(); + + double charge = atoms[i].getCharge(); double sumI = CoulombForceConstant*charge/covalentradius; // System.out.println("sum("+sumI+") = CFC("+CoulombForceConstant+")*charge("+charge+"/ret("+covalentradius); sum += sumI; @@ -371,7 +369,7 @@ private double getTopologicalFactors(IAtomContainer atomContainer,IAtomContainer ac) { /*factor for separation of charge*/ int totalNCharge1 = AtomContainerManipulator.getTotalNegativeFormalCharge(atomContainer); - int totalNCharge2 = AtomContainerManipulator.getTotalNegativeFormalCharge(atomContainer); + double fQ = 1.0; if(totalNCharge1 != 0.0){ fQ = 0.5; @@ -415,104 +413,94 @@ return STEP_SIZE; } - - /** * Method which stores and assigns the factors a,b,c and CHI+ * * @return Array of doubles [a1,b1,c1,denom1,chi1,q1...an,bn,cn...] 1:Atom 1-n in AtomContainer */ - public double[][] assignGasteigerPiMarsiliFactors(ISetOfAtomContainers setAc) { + private double[][] assignPiFactors(ISetOfAtomContainers setAc) { //a,b,c,denom,chi,q double[][] gasteigerFactors = new double[setAc.getAtomContainerCount()][(setAc.getAtomContainer(0).getAtomCount() * (STEP_SIZE+1))]; String AtomSymbol = ""; double[] factors = new double[]{0.0, 0.0, 0.0}; for( int k = 1 ; k < setAc.getAtomContainerCount(); k ++){ IAtomContainer ac = setAc.getAtomContainer(k); - for (int i = 0; i < ac.getAtomCount(); i++) { - factors[0] = 0.0; - factors[1] = 0.0; - factors[2] = 0.0; - AtomSymbol = ac.getAtomAt(i).getSymbol(); - if (AtomSymbol.equals("H")) { + for (int i = 0; i < ac.getAtomCount(); i++) { factors[0] = 0.0; factors[1] = 0.0; factors[2] = 0.0; - } else if (AtomSymbol.equals("C")) { - if(ac.getAtomAt(i).getFlag(ISCHANGEDFC)){ - factors[0] = 5.60; - factors[1] = 8.93; - factors[2] = 2.94; - } - } else if (AtomSymbol.equals("O")) { + AtomSymbol = ac.getAtomAt(i).getSymbol(); + if (AtomSymbol.equals("H")) { + factors[0] = 0.0; + factors[1] = 0.0; + factors[2] = 0.0; + } else if (AtomSymbol.equals("C")) { + if(ac.getAtomAt(i).getFlag(ISCHANGEDFC)){ + factors[0] = 5.60; + factors[1] = 8.93; + factors[2] = 2.94; + } + } else if (AtomSymbol.equals("O")) { + if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ + factors[0] = 10.0; + factors[1] = 13.86; + factors[2] = 9.68; + }else { + factors[0] = 7.91; + factors[1] = 14.76; + factors[2] = 6.85; + } + } else if (AtomSymbol.equals("N")) { if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - factors[0] = 10.0; - factors[1] = 13.86; - factors[2] = 9.68; + factors[0] = 7.95;/*7.95*/ + factors[1] = 9.73;/*9.73*/ + factors[2] = 2.67;/*2.67*/ }else { - factors[0] = 7.91; - factors[1] = 14.76; - factors[2] = 6.85; + factors[0] = 5.5;/*4.54*/ + factors[1] = 10.86;/*11.86*/ + factors[2] = 7.99;/*7.32*/ } - } else if (AtomSymbol.equals("N")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - factors[0] = 7.95;/*7.95*/ - factors[1] = 9.73;/*9.73*/ - factors[2] = 2.67;/*2.67*/ - }else { - factors[0] = 5.5;/*4.54*/ - factors[1] = 10.86;/*11.86*/ - factors[2] = 7.99;/*7.32*/ + } else if (AtomSymbol.equals("S")) { + if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ + factors[0] = 7.73; + factors[1] = 8.16; + factors[2] = 1.81; + }else { + factors[0] = 6.60; + factors[1] = 10.32; + factors[2] = 3.72; + } + } else if (AtomSymbol.equals("F")) { + factors[0] = 7.34; + factors[1] = 13.86; + factors[2] = 9.68; + } else if (AtomSymbol.equals("Cl")) { + factors[0] = 6.50; + factors[1] = 11.02; + factors[2] = 4.52; + } else if (AtomSymbol.equals("Br")) { + factors[0] = 5.20; + factors[1] = 9.68; + factors[2] = 4.48; + } else if (AtomSymbol.equals("I")) { + factors[0] = 4.95; + factors[1] = 8.81; + factors[2] = 3.86; } - } else if (AtomSymbol.equals("S")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - factors[0] = 7.73; - factors[1] = 8.16; - factors[2] = 1.81; - }else { - factors[0] = 6.60; - factors[1] = 10.32; - factors[2] = 3.72; + + gasteigerFactors[k][STEP_SIZE * i + i] = factors[0]; + gasteigerFactors[k][STEP_SIZE * i + i + 1] = factors[1]; + gasteigerFactors[k][STEP_SIZE * i + i + 2] = factors[2]; + gasteigerFactors[k][STEP_SIZE * i + i + 5] = ac.getAtomAt(i).getCharge(); + + if (factors[0] == 0 && factors[1] == 0 && factors[2] == 0) { + gasteigerFactors[k][STEP_SIZE * i + i + 3] = 1; + } else { + gasteigerFactors[k][STEP_SIZE * i + i + 3] = factors[0] + factors[1] + factors[2]; } - } else if (AtomSymbol.equals("F")) { - factors[0] = 7.34; - factors[1] = 13.86; - factors[2] = 9.68; - } else if (AtomSymbol.equals("Cl")) { - factors[0] = 6.50; - factors[1] = 11.02; - factors[2] = 4.52; - } else if (AtomSymbol.equals("Br")) { - factors[0] = 5.20; - factors[1] = 9.68; - factors[2] = 4.48; - } else if (AtomSymbol.equals("I")) { - factors[0] = 4.95; - factors[1] = 8.81; - factors[2] = 3.86; } - - gasteigerFactors[k][STEP_SIZE * i + i] = factors[0]; - gasteigerFactors[k][STEP_SIZE * i + i + 1] = factors[1]; - gasteigerFactors[k][STEP_SIZE * i + i + 2] = factors[2]; -// if(ac.getAtomAt(i).getFlag(ISCHANGEDFC)){ -// System.out.println("S: "+AtomSymbol+" "+ac.getAtomAt(i).getCharge()); - gasteigerFactors[k][STEP_SIZE * i + i + 5] = ac.getAtomAt(i).getCharge(); -// } - -// else{ -// gasteigerFactors[k][STEP_SIZE * i + i + 5] = 0.0; -// ac.getAtomAt(i).setCharge(0.0); -// } - - if (factors[0] == 0 && factors[1] == 0 && factors[2] == 0) { - gasteigerFactors[k][STEP_SIZE * i + i + 3] = 1; - } else { - gasteigerFactors[k][STEP_SIZE * i + i + 3] = factors[0] + factors[1] + factors[2]; - } } - } return gasteigerFactors; @@ -522,7 +510,7 @@ * *@return Array of doubles [a1,b1,c1,denom1,chi1,q1...an,bn,cn...] 1:Atom 1-n in AtomContainer */ - public double[][] assignGasteigerPiMarsiliFactors2(ISetOfAtomContainers setAc) { + public double[][] assignrPiMarsilliFactors(ISetOfAtomContainers setAc) { //a,b,c,denom,chi,q double[][] gasteigerFactors = new double[setAc.getAtomContainerCount()][(setAc.getAtomContainer(0).getAtomCount() * (STEP_SIZE+1))]; String AtomSymbol = ""; @@ -530,284 +518,80 @@ for( int k = 1 ; k < setAc.getAtomContainerCount(); k ++){ IAtomContainer ac = setAc.getAtomContainer(k); - for (int i = 0; i < ac.getAtomCount(); i++) { - factors[0] = 0.0; - factors[1] = 0.0; - factors[2] = 0.0; - AtomSymbol = ac.getAtomAt(i).getSymbol(); - if (AtomSymbol.equals("H")) { + for (int i = 0; i < ac.getAtomCount(); i++) { factors[0] = 0.0; factors[1] = 0.0; factors[2] = 0.0; - } else if (AtomSymbol.equals("C")) { - factors[0] = 5.98;/*5.98-5.60*/ - factors[1] = 7.93;/*7.93-8.93*/ - factors[2] = 1.94; - } else if (AtomSymbol.equals("O")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) > 1){ - factors[0] = 11.2;/*11.2-10.0*/ - factors[1] = 13.24;/*13.24-13.86*/ - factors[2] = 9.68; + AtomSymbol = ac.getAtomAt(i).getSymbol(); + if (AtomSymbol.equals("H")) { + factors[0] = 0.0; + factors[1] = 0.0; + factors[2] = 0.0; + } else if (AtomSymbol.equals("C")) { + factors[0] = 5.98;/*5.98-5.60*/ + factors[1] = 7.93;/*7.93-8.93*/ + factors[2] = 1.94; + } else if (AtomSymbol.equals("O")) { + if(ac.getMaximumBondOrder(ac.getAtomAt(i)) > 1){ + factors[0] = 11.2;/*11.2-10.0*/ + factors[1] = 13.24;/*13.24-13.86*/ + factors[2] = 9.68; + }else { + factors[0] = 7.91; + factors[1] = 14.76; + factors[2] = 6.85; + } + } else if (AtomSymbol.equals("N")) { + if(ac.getMaximumBondOrder(ac.getAtomAt(i)) > 1){ + + factors[0] = 8.95;/*7.95*/ + factors[1] = 9.73;/*9.73*/ + factors[2] = 2.67;/*2.67*/ }else { - factors[0] = 7.91; - factors[1] = 14.76; - factors[2] = 6.85; + factors[0] = 4.54; + factors[1] = 11.86; + factors[2] = 7.32; } - } else if (AtomSymbol.equals("N")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) > 1){ - - factors[0] = 8.95;/*7.95*/ - factors[1] = 9.73;/*9.73*/ - factors[2] = 2.67;/*2.67*/ - }else { - factors[0] = 4.54; - factors[1] = 11.86; - factors[2] = 7.32; - } - } else if (AtomSymbol.equals("S")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) > 1){ - - factors[0] = 7.73; - factors[1] = 8.16; - factors[2] = 1.81; - }else { - factors[0] = 6.60; - factors[1] = 10.32; - factors[2] = 3.72; - } - } else if (AtomSymbol.equals("F")) { - factors[0] = 7.14/*7.34*/; - factors[1] = 13.86; - factors[2] = 5.68; - } else if (AtomSymbol.equals("Cl")) { - factors[0] = 6.51;/*6.50*/ - factors[1] = 11.02; - factors[2] = 4.52; - } else if (AtomSymbol.equals("Br")) { - factors[0] = 5.20; - factors[1] = 9.68; - factors[2] = 4.48; - } else if (AtomSymbol.equals("I")) { - factors[0] = 4.95; - factors[1] = 8.81; - factors[2] = 3.86; - } - - gasteigerFactors[k][STEP_SIZE * i + i] = factors[0]; - gasteigerFactors[k][STEP_SIZE * i + i + 1] = factors[1]; - gasteigerFactors[k][STEP_SIZE * i + i + 2] = factors[2]; -// if(ac.getAtomAt(i).getFlag(ISCHANGEDFC)){ -// System.out.println("S: "+AtomSymbol+" "+ac.getAtomAt(i).getCharge()); - gasteigerFactors[k][STEP_SIZE * i + i + 5] = ac.getAtomAt(i).getCharge(); -// } - -// else{ -// gasteigerFactors[k][STEP_SIZE * i + i + 5] = 0.0; -// ac.getAtomAt(i).setCharge(0.0); -// } - - if (factors[0] == 0 && factors[1] == 0 && factors[2] == 0) { - gasteigerFactors[k][STEP_SIZE * i + i + 3] = 1; - } else { - gasteigerFactors[k][STEP_SIZE * i + i + 3] = factors[0] + factors[1] + factors[2]; - } - } - } - - - return gasteigerFactors; - } - /** - * Method which stores and assigns the factors a,b,c and CHI+ - * - *@param ac AtomContainer - *@return Array of doubles [a1,b1,c1,denom1,chi1,q1...an,bn,cn...] 1:Atom 1-n in AtomContainer - */ - public double[] assignGasteigerPiMarsiliFactors2(IAtomContainer ac) { - //a,b,c,denom,chi,q - double[] gasteigerFactors = new double[(ac.getAtomCount() * (STEP_SIZE+1))]; - String AtomSymbol = ""; - double[] factors = new double[]{0.0, 0.0, 0.0}; - - for (int i = 0; i < ac.getAtomCount(); i++) { - factors[0] = 0.0; - factors[1] = 0.0; - factors[2] = 0.0; - AtomSymbol = ac.getAtomAt(i).getSymbol(); - if (AtomSymbol.equals("H")) { - factors[0] = 0.0; - factors[1] = 0.0; - factors[2] = 0.0; - } else if (AtomSymbol.equals("C")) { - factors[0] = 5.60; - factors[1] = 8.93; - factors[2] = 2.94; - } else if (AtomSymbol.equals("O")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ + } else if (AtomSymbol.equals("S")) { + if(ac.getMaximumBondOrder(ac.getAtomAt(i)) > 1){ - factors[0] = 10.0; - factors[1] = 13.86; - factors[2] = 9.68; + factors[0] = 7.73; + factors[1] = 8.16; + factors[2] = 1.81; }else { - factors[0] = 7.91; - factors[1] = 14.76; - factors[2] = 6.85; + factors[0] = 6.60; + factors[1] = 10.32; + factors[2] = 3.72; } - } else if (AtomSymbol.equals("N")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - - factors[0] = 7.95; - factors[1] = 9.73; - factors[2] = 2.67; - }else { - factors[0] = 4.54; - factors[1] = 11.86; - factors[2] = 7.32; + } else if (AtomSymbol.equals("F")) { + factors[0] = 7.14/*7.34*/; + factors[1] = 13.86; + factors[2] = 5.68; + } else if (AtomSymbol.equals("Cl")) { + factors[0] = 6.51;/*6.50*/ + factors[1] = 11.02; + factors[2] = 4.52; + } else if (AtomSymbol.equals("Br")) { + factors[0] = 5.20; + factors[1] = 9.68; + factors[2] = 4.48; + } else if (AtomSymbol.equals("I")) { + factors[0] = 4.95; + factors[1] = 8.81; + factors[2] = 3.86; } - } else if (AtomSymbol.equals("S")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - - factors[0] = 7.73; - factors[1] = 8.16; - factors[2] = 1.81; - }else { - factors[0] = 6.60; - factors[1] = 10.32; - factors[2] = 3.72; - } - } else if (AtomSymbol.equals("F")) { - factors[0] = 7.34; - factors[1] = 13.86; - factors[2] = 9.68; - } else if (AtomSymbol.equals("Cl")) { - factors[0] = 6.50; - factors[1] = 11.02; - factors[2] = 4.52; - } else if (AtomSymbol.equals("Br")) { - factors[0] = 5.20; - factors[1] = 9.68; - factors[2] = 4.48; - } else if (AtomSymbol.equals("I")) { - factors[0] = 4.95; - factors[1] = 8.81; - factors[2] = 3.86; - } - - gasteigerFactors[STEP_SIZE * i + i] = factors[0]; - gasteigerFactors[STEP_SIZE * i + i + 1] = factors[1]; - gasteigerFactors[STEP_SIZE * i + i + 2] = factors[2]; -// if(ac.getLonePairCount(ac.getAtomAt(i)) > 0){ -// System.out.println("S: "+AtomSymbol+" "+ac.getAtomAt(i).getCharge()); - gasteigerFactors[STEP_SIZE * i + i + 5] = ac.getAtomAt(i).getCharge(); -// } -// else{ -// gasteigerFactors[STEP_SIZE * i + i + 5] = 0.0; -// ac.getAtomAt(i).setCharge(0.0); -// } - if (factors[0] == 0 && factors[1] == 0 && factors[2] == 0) { - gasteigerFactors[STEP_SIZE * i + i + 3] = 1; - } else { - gasteigerFactors[STEP_SIZE * i + i + 3] = factors[0] + factors[1] + factors[2]; - } - } - - - return gasteigerFactors; - } - /** - * Method which stores and assigns the factors a,b,c and CHI+ - * - *@param ac AtomContainer - *@return Array of doubles [a1,b1,c1,denom1,chi1,q1...an,bn,cn...] 1:Atom 1-n in AtomContainer - */ - public double[] assignGasteigerPiMarsiliFactors3(IAtomContainer ac) { - //a,b,c,denom,chi,q - double[] gasteigerFactors = new double[(ac.getAtomCount() * (STEP_SIZE+1))]; - String AtomSymbol = ""; - double[] factors = new double[]{0.0, 0.0, 0.0}; - - for (int i = 0; i < ac.getAtomCount(); i++) { - factors[0] = 0.0; - factors[1] = 0.0; - factors[2] = 0.0; - AtomSymbol = ac.getAtomAt(i).getSymbol(); - if (AtomSymbol.equals("H")) { - factors[0] = 0.0; - factors[1] = 0.0; - factors[2] = 0.0; - } else if (AtomSymbol.equals("C")) { - factors[0] = 5.60; - factors[1] = 8.93; - factors[2] = 2.94; - } else if (AtomSymbol.equals("O")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - - factors[0] = 10.0; - factors[1] = 13.86; - factors[2] = 9.68; - }else { - factors[0] = 7.91; - factors[1] = 14.76; - factors[2] = 6.85; - } - } else if (AtomSymbol.equals("N")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - - factors[0] = 7.95; - factors[1] = 9.73; - factors[2] = 2.67; - }else { - factors[0] = 4.54; - factors[1] = 11.86; - factors[2] = 7.32; + gasteigerFactors[k][STEP_SIZE * i + i] = factors[0]; + gasteigerFactors[k][STEP_SIZE * i + i + 1] = factors[1]; + gasteigerFactors[k][STEP_SIZE * i + i + 2] = factors[2]; + gasteigerFactors[k][STEP_SIZE * i + i + 5] = ac.getAtomAt(i).getCharge(); + + if (factors[0] == 0 && factors[1] == 0 && factors[2] == 0) { + gasteigerFactors[k][STEP_SIZE * i + i + 3] = 1; + } else { + gasteigerFactors[k][STEP_SIZE * i + i + 3] = factors[0] + factors[1] + factors[2]; } - } else if (AtomSymbol.equals("S")) { - if(ac.getMaximumBondOrder(ac.getAtomAt(i)) == 1){ - - factors[0] = 7.73; - factors[1] = 8.16; - factors[2] = 1.81; - }else { - factors[0] = 6.60; - factors[1] = 10.32; - factors[2] = 3.72; - } - } else if (AtomSymbol.equals("F")) { - factors[0] = 7.34; - factors[1] = 13.86; - factors[2] = 9.68; - } else if (AtomSymbol.equals("Cl")) { - factors[0] = 6.50; - factors[1] = 11.02; - factors[2] = 4.52; - } else if (AtomSymbol.equals("Br")) { - factors[0] = 5.20; - factors[1] = 9.68; - factors[2] = 4.48; - } else if (AtomSymbol.equals("I")) { - factors[0] = 4.95; - factors[1] = 8.81; - factors[2] = 3.86; } - - gasteigerFactors[STEP_SIZE * i + i] = factors[0]; - gasteigerFactors[STEP_SIZE * i + i + 1] = factors[1]; - gasteigerFactors[STEP_SIZE * i + i + 2] = factors[2]; - if(ac.getLonePairCount(ac.getAtomAt(i)) > 0 || ac.getMaximumBondOrder(ac.getAtomAt(i)) == 2){ -// System.out.println("S: "+AtomSymbol+" "+ac.getAtomAt(i).getCharge()); - gasteigerFactors[STEP_SIZE * i + i + 5] = ac.getAtomAt(i).getCharge(); - } - else{ - gasteigerFactors[STEP_SIZE * i + i + 5] = 0.0; - ac.getAtomAt(i).setCharge(0.0); - } - - if (factors[0] == 0 && factors[1] == 0 && factors[2] == 0) { - gasteigerFactors[STEP_SIZE * i + i + 3] = 1; - } else { - gasteigerFactors[STEP_SIZE * i + i + 3] = factors[0] + factors[1] + factors[2]; - } } Modified: trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/PiElectronegativityDescriptor.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/PiElectronegativityDescriptor.java 2006-07-21 08:07:09 UTC (rev 6696) +++ trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/PiElectronegativityDescriptor.java 2006-07-21 08:25:41 UTC (rev 6697) @@ -145,7 +145,7 @@ ISetOfAtomContainers iSet = ac.getBuilder().newSetOfAtomContainers(); iSet.addAtomContainer(ac);/*2 times*/ iSet.addAtomContainer(ac); - double[][] gasteigerFactors = pepe.assignGasteigerPiMarsiliFactors2(iSet); + double[][] gasteigerFactors = pepe.assignrPiMarsilliFactors(iSet); int stepSize = pepe.getStepSize(); int atomPosition = ac.getAtomNumber(atom); Modified: trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java 2006-07-21 08:07:09 UTC (rev 6696) +++ trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/ResonancePositiveChargeDescriptor.java 2006-07-21 08:25:41 UTC (rev 6697) @@ -47,7 +47,6 @@ import org.openscience.cdk.qsar.result.DoubleResult; import org.openscience.cdk.qsar.result.IntegerResult; import org.openscience.cdk.reaction.type.BreakingBondReaction; -//import org.openscience.cdk.smiles.SmilesGenerator; import org.openscience.cdk.tools.HydrogenAdder; import org.openscience.cdk.tools.StructureResonanceGenerator; @@ -62,9 +61,9 @@ * <td>Description</td> * </tr> * <tr> - * <td>atomPosition</td> + * <td>bondPosition</td> * <td>0</td> - * <td>The position of the target atom</td> + * <td>The position of the target bond</td> * </tr> * </table> * @@ -175,9 +174,6 @@ int atomPos1 = ac.getAtomNumber(atoms[1]); ac.getBondAt(bondPosition).setFlag(CDKConstants.REACTIVE_CENTER,true); - - - Object[] paramsR = {Boolean.TRUE}; type.setParameters(paramsR); @@ -192,9 +188,7 @@ IAtomContainer product = setOfReactions.getReaction(i).getProducts().getAtomContainer(z); if(product.getAtomCount() < 2) continue; -// SmilesGenerator sg = new SmilesGenerator(ac.getBuilder()); -// String smiles2 = sg.createSMILES((IMolecule) product); -// System.out.println("smiles; "+smiles2); + StructureResonanceGenerator gRI = new StructureResonanceGenerator(true,true,false,false,true,false); ISetOfAtomContainers setOfResonance = gRI.getAllStructures(product); if(setOfResonance.getAtomContainerCount() == 1) @@ -211,8 +205,6 @@ outRes: for(int j = 1 ; j < setOfResonance.getAtomContainerCount() ; j++){ IAtomContainer prod = setOfResonance.getAtomContainer(j); -// String smilesr = sg.createSMILES((IMolecule) prod); -// System.out.println("smilesR�; "+smilesr); HydrogenAdder hAdder = new HydrogenAdder(); hAdder.addImplicitHydrogensToSatisfyValency((IMolecule) prod); @@ -236,17 +228,17 @@ } catch (Exception ex1) { continue; } -// System.out.println("result_: "+electroneg.doubleValue()); if(i == 0)result1.add(electroneg); else result2.add(electroneg); BondsToAtomDescriptor descriptor = new BondsToAtomDescriptor(); Object[] paramsD = {new Integer(prod.getAtomNumber(atomsP))}; descriptor.setParameters(paramsD); IntegerResult dis = ((IntegerResult)descriptor.calculate(prod.getAtomAt(positionAC),prod).getValue()); + if(i == 0)distance1.add(dis); else distance2.add(dis); -// System.out.println("distan: "+dis.intValue()); - break; + + break; } } @@ -261,45 +253,35 @@ double sum = 0.0; for(int i = 0 ; i < result1.size() ; i++){ double suM = ((DoubleResult)result1.get(i)).doubleValue(); -// System.out.println(i+"; "+suM); if(suM < 0) suM = -1*suM; sum += suM*Math.pow(0.67,((IntegerResult)distance1.get(i)).intValue()); - -// System.out.println("sum; "+sum); } value = 26.63/sum; if(result1.size() > 0){ -// System.out.println("value1="+value); dar.add(value); }else{ -// System.out.println("value1_="+0.0); dar.add(0.0); } value = 0.0; sum = 0.0; for(int i = 0 ; i < result2.size() ; i++){ double suM = ((DoubleResult)result2.get(i)).doubleValue(); -// System.out.println(i+"; "+suM); if(suM < 0) suM = -1*suM; sum += suM*Math.pow(0.67,((IntegerResult)distance2.get(i)).intValue()); } value = 26.63/sum; if(result2.size() > 0){ -// System.out.println("value2="+value); dar.add(value); }else{ -// System.out.println("value2="+0.0); dar.add(0.0); } /*put first the atom which is smaller*/ int p0 = atomPos0; int p1 = atomPos1; -// System.out.println(p0+"="+p1); if(p0 > p1){ -// System.out.println("icorrect"); double o1 = dar.get(0); double o0 = dar.get(1); dar = new DoubleArrayResult(2); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |