From: <mig...@us...> - 2006-12-04 11:45:42
|
Revision: 7408 http://svn.sourceforge.net/cdk/?rev=7408&view=rev Author: miguelrojasch Date: 2006-12-04 03:45:35 -0800 (Mon, 04 Dec 2006) Log Message: ----------- The calculation of Ionization potential are independent of weka lib. Modified Paths: -------------- trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java trunk/cdk/src/org/openscience/cdk/qsar/descriptors/molecular/IPMolecularDescriptor.java trunk/cdk/src/org/openscience/cdk/test/MqsarAtomicTests.java trunk/cdk/src/org/openscience/cdk/test/MqsarBondTests.java trunk/cdk/src/org/openscience/cdk/test/MqsarMolecularTests.java trunk/cdk/src/org/openscience/cdk/test/MwekaTests.java trunk/cdk/src/org/openscience/cdk/test/qsar/descriptors/atomic/IPAtomicDescriptorTest.java trunk/cdk/src/org/openscience/cdk/test/qsar/descriptors/bond/IPBondDescriptorTest.java trunk/cdk/src/org/openscience/cdk/test/qsar/descriptors/molecular/IPMolecularDescriptorTest.java Modified: trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java 2006-12-02 22:42:08 UTC (rev 7407) +++ trunk/cdk/src/org/openscience/cdk/qsar/descriptors/atomic/IPAtomicDescriptor.java 2006-12-04 11:45:35 UTC (rev 7408) @@ -20,7 +20,6 @@ */ package org.openscience.cdk.qsar.descriptors.atomic; -import java.util.HashMap; import java.util.Iterator; import org.openscience.cdk.CDKConstants; @@ -37,7 +36,6 @@ import org.openscience.cdk.qsar.IAtomicDescriptor; import org.openscience.cdk.qsar.descriptors.bond.BondPartialSigmaChargeDescriptor; import org.openscience.cdk.qsar.descriptors.bond.ResonancePositiveChargeDescriptor; -import org.openscience.cdk.qsar.model.weka.J48WModel; import org.openscience.cdk.qsar.result.DoubleArrayResult; import org.openscience.cdk.qsar.result.DoubleResult; import org.openscience.cdk.reaction.IReactionProcess; @@ -45,8 +43,8 @@ /** * This class returns the ionization potential of an atom. It is - * based in learning machine (in this case J48 see J48WModel) - * from experimental values. Up to now is + * based on a decision tree which is extracted from Weka(J48) from + * experimental values. Up to now is * only possible predict for Cl,Br,I,N,P,O,S Atoms and they are not belong to * conjugated system or not adjacent to an double bond. * @@ -66,46 +64,22 @@ * * @author Miguel Rojas * @cdk.created 2006-05-26 - * @cdk.license GPL - * @cdk.module qsar-weka + * @cdk.module qsar * @cdk.set qsar-descriptors * @cdk.dictref qsar-descriptors:ionizationPotential - * @cdk.depends weka.jar - * @cdk.builddepends weka.jar * - * @see J48WModel */ public class IPAtomicDescriptor implements IAtomicDescriptor { - /** Hash map which contains the classAttribu = value of IP */ - private HashMap hash = null; - - private String[] classAttrib = { - "05_0","05_1","05_2","05_3","05_4","05_5","05_6","05_7","05_8","05_9", - "06_0","06_1","06_2","06_3","06_4","06_5","06_6","06_7","06_8","06_9", - "07_0","07_1","07_2","07_3","07_4","07_5","07_6","07_7","07_8","07_9", - "08_0","08_1","08_2","08_3","08_4","08_5","08_6","08_7","08_8","08_9", - "09_0","09_1","09_2","09_3","09_4","09_5","09_6","09_7","09_8","09_9", - "10_0","10_1","10_2","10_3","10_4","10_5","10_6","10_7","10_8","10_9", - "11_0","11_1","11_2","11_3","11_4","11_5","11_6","11_7","11_8","11_9", - "12_0","12_1","12_2","12_3","12_4","12_5","12_6","12_7","12_8","12_9", - "13_0","13_1","13_2","13_3","13_4","13_5","13_6","13_7","13_8","13_9", - "14_0","14_1","14_2","14_3","14_4","14_5","14_6","14_7","14_8","14_9",}; - /** parameter for inizate IReactionSet*/ private boolean setEnergy = false; + private IReactionSet reactionSet; /** * Constructor for the IPAtomicDescriptor object */ public IPAtomicDescriptor() { - this.hash = new HashMap(); - double value = 5.05; - for(int i = 0 ; i < classAttrib.length ; i++){ - this.hash.put(classAttrib[i],new Double(value)); - value += 0.1; - } } /** * Gets the specification attribute of the IPAtomicDescriptor object @@ -146,9 +120,8 @@ public DescriptorValue calculate(IAtom atom, IAtomContainer container) throws CDKException{ reactionSet = container.getBuilder().newReactionSet(); double resultD = -1.0; - boolean isTarget = false; Double[][] resultsH = null; - String path = ""; + if(atom.getSymbol().equals("F")|| atom.getSymbol().equals("Cl")|| atom.getSymbol().equals("Br")|| @@ -157,50 +130,1069 @@ atom.getSymbol().equals("S")|| atom.getSymbol().equals("O")|| atom.getSymbol().equals("P")){ - if(atom.getMaxBondOrder() > 1 && atom.getSymbol().equals("O")){ + if(container.getMaximumBondOrder(atom) > 1 && atom.getSymbol().equals("O")){ resultsH = calculateCarbonylDescriptor(atom, container); - path = "data/arff/Carbonyl1.arff"; - isTarget = true; + resultD = getTreeCarbonyl(resultsH); + resultD += 0.05; }else{ resultsH = calculateHeteroAtomDescriptor(atom, container); - path = "data/arff/HeteroAtom1.arff"; - isTarget = true; + resultD = getTreeHeteroAtom(resultsH); + resultD += 0.05; } } - if(isTarget){ - J48WModel j48 = new J48WModel(true,path); - String[] options = new String[4]; - options[0] = "-C"; - options[1] = "0.25"; - options[2] = "-M"; - options[3] = "2"; - j48.setOptions(options); - j48.build(); - j48.setParameters(resultsH); - j48.predict(); - String[] result = (String[])j48.getPredictPredicted(); - resultD = ((Double)hash.get(result[0])).doubleValue(); - - /* extract reaction*/ - if(setEnergy){ - IMoleculeSet setOfReactants = container.getBuilder().newMoleculeSet(); - setOfReactants.addMolecule((IMolecule) container); - IReactionProcess type = new ElectronImpactNBEReaction(); - atom.setFlag(CDKConstants.REACTIVE_CENTER,true); - Object[] params = {Boolean.TRUE}; - type.setParameters(params); - IReactionSet nbe = type.initiate(setOfReactants, null); - Iterator it = nbe.reactions(); - while(it.hasNext()){ - IReaction reaction = (IReaction)it.next(); - reaction.setProperty("IonizationEnergy", new Double(resultD)); - reactionSet.addReaction(reaction); - } - } + /* extract reaction*/ + if(setEnergy){ + if(container.getLonePairCount(atom) > 0){ + IMoleculeSet setOfReactants = container.getBuilder().newMoleculeSet(); + setOfReactants.addMolecule((IMolecule) container); + IReactionProcess type = new ElectronImpactNBEReaction(); + atom.setFlag(CDKConstants.REACTIVE_CENTER,true); + Object[] params = {Boolean.TRUE}; + type.setParameters(params); + IReactionSet nbe = type.initiate(setOfReactants, null); + Iterator it = nbe.reactions(); + while(it.hasNext()){ + IReaction reaction = (IReaction)it.next(); + reaction.setProperty("IonizationEnergy", new Double(resultD)); + reactionSet.addReaction(reaction); + } + } } return new DescriptorValue(getSpecification(), getParameterNames(), getParameters(), new DoubleResult(resultD)); } /** + * tree desicion for the carbonyl atoms + * + * @param resultsH Array which contains the results of each descriptor + * @return the result + */ + private double getTreeCarbonyl(Double[][] resultsH) { + double result = 0.0; + double SE_c = (resultsH[0][0]).doubleValue(); + double PCH_c = (resultsH[0][1]).doubleValue(); + double SB = (resultsH[0][2]).doubleValue(); + double SE_x = (resultsH[0][3]).doubleValue(); + double PCH_x = (resultsH[0][4]).doubleValue(); + double RES_c = (resultsH[0][5]).doubleValue(); + if (SB <= 0.422256) + { + if (PCH_c <= 0.011778) { result = 09.4; /* 7.0/5.0 */} + else if (PCH_c > 0.011778) + { + if (PCH_c <= 0.016985) + { + if (SE_c <= 9.930078) { result = 09.8; /* 4.0/2.0 */} + else if (SE_c > 9.930078) + { + if (SB <= 0.420594) + { + if (SB <= 0.418344) { result = 09.7; /* 4.0/2.0 */} + else if (SB > 0.418344) { result = 09.6; /* 4.0/2.0 */} + } + if (SB > 0.420594) { result = 09.5; /* 4.0/2.0 */} + } + } + if (PCH_c > 0.016985) + { + if (RES_c <= 0.278324) + { + if (SE_c <= 8.422177) { result = 09.3; /* 2.0/1.0 */} + else if (SE_c > 8.422177) { result = 08.4; /* 2.0/1.0 */} + } + if (RES_c > 0.278324) { result = 09.7; /* 6.0/4.0 */} + } + } + } + if (SB > 0.422256) + { + if (SB <= 0.431267) + { + if (SB <= 0.427268) + { + if (RES_c <= 0.371098) { result = 08.5; /* 3.0/2.0 */} + else if (RES_c > 0.371098) + { + if (PCH_c <= 0.016985) { result = 09.0; /* 2.0 */} + else if (PCH_c > 0.016985) + { + if (PCH_x <= -0.015157) { result = 09.3; /* 12.0/6.0 */} + else if (PCH_x > -0.015157) { result = 09.4; /* 2.0/1.0 */} + } + } + } + if (SB > 0.427268) { result = 09.1; /* 44.0/28.0 */} + } + if (SB > 0.431267) + { + if (RES_c <= 0.371098) + { + if (PCH_c <= 0.025012) + { + if (RES_c <= 0) + { + if (PCH_c <= 0.015108) + { + if (SB <= 0.502853) { result = 08.8; /* 3.0/1.0 */} + else if (SB > 0.502853) { result = 08.7; /* 2.0/1.0 */} + } + if (PCH_c > 0.015108) { result = 08.6; /* 2.0 */} + } + if (RES_c > 0) + { + if (PCH_c <= 0.01453) + { + if (RES_c <= 0.247399) { result = 08.2; /* 2.0/1.0 */} + else if (RES_c > 0.247399) { result = 08.6; /* 3.0/1.0 */} + } + if (PCH_c > 0.01453) { result = 08.2; /* 2.0 */} + } + } + if (PCH_c > 0.025012) + { + if (PCH_c <= 0.029206) { result = 09.1; /* 4.0/1.0 */} + else if (PCH_c > 0.029206) { result = 08.7; /* 3.0/2.0 */} + } + } + if (RES_c > 0.371098) + { + if (SE_x <= 13.008931) + { + if (RES_c <= 0.556647) + { + if (PCH_c <= 0.029982) { result = 08.8; /* 7.0/3.0 */} + else if (PCH_c > 0.029982) { result = 08.9; /* 4.0/2.0 */} + } + if (RES_c > 0.556647) + { + if (SE_c <= 10.118553) { result = 08.5; /* 2.0/1.0 */} + else if (SE_c > 10.118553) { result = 08.7; /* 2.0/1.0 */} + } + } + if (SE_x > 13.008931) + { + if (PCH_x <= -0.014547) + { + if (SE_c <= 10.13501) { result = 08.7; /* 2.0 */} + else if (SE_c > 10.13501) { result = 08.4; /* 3.0/2.0 */} + } + if (PCH_x > -0.014547) { result = 08.9; /* 7.0/1.0 */} + } + } + } + } + return result; + } + + /** + * tree desicion for the Heteroatom + * + * @param resultsH Array which contains the results of each descriptor + * @return the result + */ + private double getTreeHeteroAtom(Double[][] resultsH) { + double result = 0.0; + double SE = (resultsH[0][0]).doubleValue(); + double SCH = (resultsH[0][1]).doubleValue(); + double EE = (resultsH[0][2]).doubleValue(); + + if (SE <= 9.104677) + { + if (EE <= 5.254344) + { + if (EE <= 2.5625) + { + if (EE <= 1.4725) + { + if (SE <= 8.1475) + { + if (SE <= 0) { result = 13.0; /* 2.0/1.0 */} + else if (SE > 0) { result = 09.8; /* 3.0/1.0 */} + } + if (SE > 8.1475) { result = 12.6; /* 6.0/2.0 */} + } + if (EE > 1.4725) + { + if (SCH <= -0.308562) { result = 10.0; /* 5.0/1.0 */} + else if (SCH > -0.308562) + { + if (SE <= 8.466176) { result = 09.1; /* 2.0/1.0 */} + else if (SE > 8.466176) { result = 10.7; /* 2.0/1.0 */} + } + } + } + if (EE > 2.5625) + { + if (SE <= 8.142501) + { + if (EE <= 4.697203) + { + if (EE <= 3.566) { result = 06.2; /* 2.0/1.0 */} + else if (EE > 3.566) { result = 09.3; /* 8.0/5.0 */} + } + if (EE > 4.697203) + { + if (EE <= 4.9695) + { + if (SE <= 8.0378) { result = 08.1; /* 2.0/1.0 */} + else if (SE > 8.0378) { result = 08.6; /* 7.0/3.0 */} + } + if (EE > 4.9695) { result = 08.5; /* 4.0/2.0 */} + } + } + if (SE > 8.142501) + { + if (EE <= 4.666375) + { + if (SE <= 8.388638) { result = 09.4; /* 7.0/4.0 */} + else if (SE > 8.388638) { result = 05.1; /* 3.0/2.0 */} + } + if (EE > 4.666375) + { + if (SE <= 8.224518) { result = 05.9; /* 3.0/2.0 */} + else if (SE > 8.224518) + { + if (SE <= 8.391308) { result = 08.6; /* 2.0/1.0 */} + else if (SE > 8.391308) { result = 07.5; /* 2.0/1.0 */} + } + } + } + } + } + if (EE > 5.254344) + { + if (EE <= 7.7465) + { + if (SE <= 8.311315) + { + if (SCH <= -0.318681) + { + if (SE <= 8.17884) + { + if (SE <= 8.1475) { result = 08.4; /* 4.0/2.0 */} + else if (SE > 8.1475) { result = 08.5; /* 5.0/2.0 */} + } + if (SE > 8.17884) { result = 08.1; /* 3.0/2.0 */} + } + if (SCH > -0.318681) + { + if (EE <= 6.934) + { + if (SCH <= -0.312287) + { + if (SCH <= -0.315987) { result = 08.6; /* 4.0/2.0 */} + else if (SCH > -0.315987) + { + if (SCH <= -0.315012) { result = 08.0; /* 7.0/3.0 */} + else if (SCH > -0.315012) { result = 08.6; /* 4.0/2.0 */} + } + } + if (SCH > -0.312287) + { + if (SE <= 8.163774) { result = 06.8; /* 2.0/1.0 */} + else if (SE > 8.163774) { result = 05.7; /* 2.0/1.0 */} + } + } + if (EE > 6.934) + { + if (SE <= 8.267991) { result = 07.8; /* 4.0/2.0 */} + else if (SE > 8.267991) { result = 08.5; /* 5.0/3.0 */} + } + } + } + if (SE > 8.311315) + { + if (EE <= 6.8065) + { + if (EE <= 6.287) { result = 09.2; /* 7.0/3.0 */} + else if (EE > 6.287) + { + if (SE <= 8.435289) { result = 07.7; /* 2.0/1.0 */} + else if (SE > 8.435289) + { + if (SE <= 8.61075) { result = 09.1; /* 4.0 */} + else if (SE > 8.61075) { result = 08.6; /* 2.0 */} + } + } + } + if (EE > 6.8065) + { + if (SCH <= -0.305241) + { + if (SCH <= -0.308632) + { + if (EE <= 6.97525) { result = 08.8; /* 2.0/1.0 */} + else if (EE > 6.97525) { result = 08.3; /* 3.0 */} + } + if (SCH > -0.308632) + { + if (EE <= 7.488688) + { + if (SCH <= -0.306392) { result = 07.5; /* 2.0/1.0 */} + else if (SCH > -0.306392) { result = 07.8; /* 3.0/1.0 */} + } + if (EE > 7.488688) + { + if (EE <= 7.6195) { result = 07.7; /* 3.0 */} + else if (EE > 7.6195) { result = 08.2; /* 2.0/1.0 */} + } + } + } + if (SCH > -0.305241) + { + if (SCH <= -0.23627) + { + if (SE <= 8.390548) { result = 08.7; /* 2.0 */} + else if (SE > 8.390548) + { + if (SE <= 8.435289) { result = 08.2; /* 3.0/1.0 */} + else if (SE > 8.435289) { result = 08.6; /* 2.0 */} + } + } + if (SCH > -0.23627) + { + if (SCH <= -0.152623) + { + if (EE <= 7.7) + { + if (SE <= 8.705097) + { + if (SE <= 8.681096) { result = 08.8; /* 5.0/3.0 */} + else if (SE > 8.681096) { result = 08.6; /* 2.0 */} + } + if (SE > 8.705097) { result = 08.5; /* 3.0/1.0 */} + } + if (EE > 7.7) { result = 08.4; /* 2.0/1.0 */} + } + if (SCH > -0.152623) { result = 08.8; /* 3.0 */} + } + } + } + } + } + if (EE > 7.7465) + { + if (SE <= 8.495417) + { + if (EE <= 8.091063) + { + if (SE <= 8.389591) + { + if (EE <= 7.813) + { + if (EE <= 7.764625) { result = 07.7; /* 2.0 */} + else if (EE > 7.764625) + { + if (SE <= 8.364009) { result = 08.2; /* 2.0/1.0 */} + else if (SE > 8.364009) { result = 07.6; /* 3.0/1.0 */} + } + } + if (EE > 7.813) + { + if (SE <= 8.376114) + { + if (EE <= 7.871438) { result = 07.6; /* 2.0 */} + else if (EE > 7.871438) + { + if (EE <= 7.997625) { result = 08.0; /* 4.0/1.0 */} + else if (EE > 7.997625) { result = 07.6; /* 2.0 */} + } + } + if (SE > 8.376114) + { + if (EE <= 7.997625) { result = 07.5; /* 2.0 */} + else if (EE > 7.997625) { result = 07.6; /* 2.0/1.0 */} + } + } + } + if (SE > 8.389591) { result = 08.4; /* 4.0/1.0 */} + } + if (EE > 8.091063) + { + if (EE <= 8.743469) + { + if (EE <= 8.332625) + { + if (SE <= 8.335921) { result = 08.2; /* 4.0/2.0 */} + else if (SE > 8.335921) { result = 07.9; /* 13.0/8.0 */} + } + if (EE > 8.332625) + { + if (SCH <= -0.301785) + { + if (EE <= 8.381) { result = 08.1; /* 2.0 */} + else if (EE > 8.381) { result = 07.5; /* 3.0/1.0 */} + } + if (SCH > -0.301785) + { + if (SE <= 8.411249) { result = 07.7; /* 2.0 */} + else if (SE > 8.411249) { result = 08.2; /* 3.0/1.0 */} + } + } + } + if (EE > 8.743469) + { + if (SCH <= -0.298112) + { + if (SCH <= -0.299978) + { + if (SE <= 8.388052) { result = 07.0; /* 4.0/2.0 */} + else if (SE > 8.388052) { result = 07.3; /* 2.0/1.0 */} + } + if (SCH > -0.299978) { result = 07.9; /* 4.0/1.0 */} + } + if (SCH > -0.298112) + { + if (SE <= 8.446749) { result = 07.7; /* 6.0/2.0 */} + else if (SE > 8.446749) + { + if (SE <= 8.466176) { result = 07.2; /* 2.0/1.0 */} + else if (SE > 8.466176) { result = 07.3; /* 2.0/1.0 */} + } + } + } + } + } + if (SE > 8.495417) + { + if (EE <= 8.864938) + { + if (SE <= 8.716941) + { + if (SE <= 8.643369) { result = 08.7; /* 2.0 */} + else if (SE > 8.643369) + { + if (SE <= 8.704665) { result = 08.4; /* 6.0/1.0 */} + else if (SE > 8.704665) + { + if (EE <= 8.44775) { result = 08.4; /* 3.0/1.0 */} + else if (EE > 8.44775) { result = 08.2; /* 3.0 */} + } + } + } + if (SE > 8.716941) + { + if (EE <= 8.4175) { result = 08.3; /* 4.0/1.0 */} + else if (EE > 8.4175) + { + if (SE <= 8.761634) { result = 08.2; /* 2.0/1.0 */} + else if (SE > 8.761634) { result = 08.5; /* 3.0/1.0 */} + } + } + } + if (EE > 8.864938) + { + if (EE <= 9.707625) + { + if (EE <= 9.255125) { result = 08.3; /* 5.0/1.0 */} + else if (EE > 9.255125) + { + if (SE <= 8.761634) + { + if (EE <= 9.352313) { result = 08.2; /* 3.0/1.0 */} + else if (EE > 9.352313) { result = 08.1; /* 3.0 */} + } + if (SE > 8.761634) { result = 08.2; /* 4.0/2.0 */} + } + } + if (EE > 9.707625) + { + if (SE <= 8.761634) { result = 07.8; /* 5.0/1.0 */} + else if (SE > 8.761634) + { + if (SE <= 8.790851) { result = 08.0; /* 2.0/1.0 */} + else if (SE > 8.790851) { result = 08.2; /* 2.0/1.0 */} + } + } + } + } + } + } + } + if (SE > 9.104677) + { + if (EE <= 3.723) + { + if (EE <= 2.6955) + { + if (SCH <= -0.293894) + { + if (SE <= 11.032853) { result = 07.5; /* 6.0/3.0 */} + else if (SE > 11.032853) { result = 08.1; /* 3.0/2.0 */} + } + if (SCH > -0.293894) + { + if (SCH <= -0.261302) { result = 13.6; /* 4.0/2.0 */} + else if (SCH > -0.261302) { result = 10.7; /* 5.0/3.0 */} + } + } + if (EE > 2.6955) + { + if (SE <= 12.932768) + { + if (SE <= 10.484963) + { + if (EE <= 3.509625) + { + if (EE <= 3.2585) { result = 06.7; /* 3.0/2.0 */} + else if (EE > 3.2585) { result = 10.4; /* 4.0/1.0 */} + } + if (EE > 3.509625) + { + if (SE <= 9.381854) { result = 09.6; /* 2.0/1.0 */} + else if (SE > 9.381854) { result = 10.5; /* 3.0/1.0 */} + } + } + if (SE > 10.484963) + { + if (SCH <= -0.236569) { result = 10.2; /* 4.0/2.0 */} + else if (SCH > -0.236569) + { + if (SCH <= -0.233254) { result = 09.2; /* 3.0 */} + else if (SCH > -0.233254) { result = 09.4; /* 2.0/1.0 */} + } + } + } + if (SE > 12.932768) + { + if (SCH <= -0.284044) + { + if (SCH <= -0.299479) + { + if (EE <= 3.3505) { result = 09.8; /* 3.0/1.0 */} + else if (EE > 3.3505) { result = 09.6; /* 15.0/10.0 */} + } + if (SCH > -0.299479) { result = 09.1; /* 8.0/6.0 */} + } + if (SCH > -0.284044) + { + if (EE <= 3.408813) { result = 09.9; /* 5.0/3.0 */} + else if (EE > 3.408813) { result = 11.8; /* 4.0/2.0 */} + } + } + } + } + if (EE > 3.723) + { + if (SCH <= -0.380455) + { + if (EE <= 4.985813) + { + if (SE <= 9.323366) + { + if (SCH <= -0.395695) { result = 10.4; /* 5.0/3.0 */} + else if (SCH > -0.395695) + { + if (EE <= 4.697203) + { + if (EE <= 4.0185) + { + if (SE <= 9.291423) { result = 09.5; /* 2.0/1.0 */} + else if (SE > 9.291423) { result = 09.6; /* 2.0/1.0 */} + } + if (EE > 4.0185) + { + if (SCH <= -0.392483) + { + if (SCH <= -0.395372) { result = 07.1; /* 2.0/1.0 */} + else if (SCH > -0.395372) { result = 09.7; /* 7.0/2.0 */} + } + if (SCH > -0.392483) { result = 09.5; /* 3.0/1.0 */} + } + } + if (EE > 4.697203) { result = 09.6; /* 6.0/3.0 */} + } + } + if (SE > 9.323366) + { + if (SCH <= -0.391062) + { + if (SE <= 9.332876) + { + if (SE <= 9.327451) { result = 09.3; /* 2.0 */} + else if (SE > 9.327451) { result = 09.1; /* 3.0/1.0 */} + } + if (SE > 9.332876) + { + if (SE <= 9.337486) { result = 08.1; /* 3.0/2.0 */} + else if (SE > 9.337486) { result = 08.2; /* 3.0/2.0 */} + } + } + if (SCH > -0.391062) + { + if (EE <= 4.5725) + { + if (EE <= 4.12225) { result = 10.0; /* 3.0/1.0 */} + else if (EE > 4.12225) + { + if (SE <= 9.368092) { result = 09.5; /* 2.0 */} + else if (SE > 9.368092) { result = 09.6; /* 2.0 */} + } + } + if (EE > 4.5725) + { + if (EE <= 4.91325) + { + if (SCH <= -0.389218) { result = 09.9; /* 2.0/1.0 */} + else if (SCH > -0.389218) + { + if (EE <= 4.61625) { result = 06.5; /* 3.0/2.0 */} + else if (EE > 4.61625) { result = 09.4; /* 3.0/1.0 */} + } + } + if (EE > 4.91325) { result = 09.1; /* 3.0/2.0 */} + } + } + } + } + if (EE > 4.985813) + { + if (SCH <= -0.389218) + { + if (EE <= 5.407875) + { + if (SCH <= -0.392127) + { + if (SE <= 10.217437) { result = 08.6; /* 2.0/1.0 */} + else if (SE > 10.217437) { result = 11.7; /* 2.0/1.0 */} + } + if (SCH > -0.392127) { result = 09.1; /* 12.0/6.0 */} + } + if (EE > 5.407875) + { + if (SCH <= -0.391888) + { + if (SCH <= -0.500959) { result = 09.6; /* 3.0/2.0 */} + else if (SCH > -0.500959) + { + if (EE <= 5.568813) { result = 09.0; /* 4.0/2.0 */} + else if (EE > 5.568813) { result = 09.3; /* 2.0/1.0 */} + } + } + if (SCH > -0.391888) + { + if (EE <= 5.584) { result = 08.6; /* 4.0/2.0 */} + else if (EE > 5.584) + { + if (SE <= 9.340057) { result = 07.8; /* 2.0/1.0 */} + else if (SE > 9.340057) { result = 09.0; /* 2.0/1.0 */} + } + } + } + } + if (SCH > -0.389218) + { + if (EE <= 5.295125) + { + if (SCH <= -0.3831) { result = 09.6; /* 4.0/2.0 */} + else if (SCH > -0.3831) { result = 09.4; /* 4.0/1.0 */} + } + if (EE > 5.295125) + { + if (SCH <= -0.387072) + { + if (SCH <= -0.388422) + { + if (SE <= 9.365372) { result = 08.7; /* 2.0/1.0 */} + else if (SE > 9.365372) { result = 09.4; /* 2.0 */} + } + if (SCH > -0.388422) + { + if (SCH <= -0.388146) { result = 09.1; /* 2.0/1.0 */} + else if (SCH > -0.388146) { result = 08.3; /* 3.0/2.0 */} + } + } + if (SCH > -0.387072) + { + if (SCH <= -0.38373) + { + if (SE <= 9.416251) { result = 09.2; /* 3.0/1.0 */} + else if (SE > 9.416251) { result = 08.0; /* 4.0/1.0 */} + } + if (SCH > -0.38373) + { + if (SE <= 9.46366) { result = 09.3; /* 12.0/5.0 */} + else if (SE > 9.46366) { result = 09.2; /* 3.0/1.0 */} + } + } + } + } + } + } + if (SCH > -0.380455) + { + if (EE <= 4.175688) + { + if (SCH <= -0.293894) + { + if (SCH <= -0.302533) + { + if (SE <= 11.204989) { result = 10.1; /* 2.0/1.0 */} + else if (SE > 11.204989) { result = 09.5; /* 2.0/1.0 */} + } + if (SCH > -0.302533) + { + if (SCH <= -0.29949) + { + if (SE <= 12.941888) { result = 08.5; /* 3.0/2.0 */} + else if (SE > 12.941888) { result = 09.5; /* 2.0 */} + } + if (SCH > -0.29949) + { + if (EE <= 4.05775) + { + if (SCH <= -0.299479) { result = 09.3; /* 2.0 */} + else if (SCH > -0.299479) { result = 09.5; /* 4.0/2.0 */} + } + if (EE > 4.05775) + { + if (SCH <= -0.299479) { result = 09.2; /* 5.0/2.0 */} + else if (SCH > -0.299479) { result = 09.3; /* 6.0/2.0 */} + } + } + } + } + if (SCH > -0.293894) + { + if (EE <= 3.9875) { result = 11.2; /* 3.0/1.0 */} + else if (EE > 3.9875) + { + if (SE <= 14.330946) { result = 09.1; /* 4.0/2.0 */} + else if (SE > 14.330946) { result = 10.5; /* 2.0/1.0 */} + } + } + } + if (EE > 4.175688) + { + if (SCH <= -0.233254) + { + if (EE <= 4.8235) + { + if (SCH <= -0.301441) + { + if (SCH <= -0.371893) { result = 10.1; /* 3.0/1.0 */} + else if (SCH > -0.371893) + { + if (SCH <= -0.341599) + { + if (EE <= 4.78025) { result = 09.7; /* 2.0 */} + else if (EE > 4.78025) { result = 09.9; /* 2.0/1.0 */} + } + if (SCH > -0.341599) { result = 10.0; /* 3.0/1.0 */} + } + } + if (SCH > -0.301441) + { + if (EE <= 4.635125) + { + if (SCH <= -0.298528) + { + if (SCH <= -0.298823) + { + if (EE <= 4.514125) + { + if (SCH <= -0.299457) { result = 09.0; /* 3.0/1.0 */} + else if (SCH > -0.299457) + { + if (SE <= 12.986371) + { + if (SE <= 12.986356) { result = 09.1; /* 2.0 */} + else if (SE > 12.986356) { result = 09.2; /* 2.0 */} + } + if (SE > 12.986371) { result = 09.1; /* 17.0/5.0 */} + } + } + if (EE > 4.514125) + { + if (SCH <= -0.299111) { result = 09.1; /* 2.0/1.0 */} + else if (SCH > -0.299111) { result = 09.0; /* 3.0/1.0 */} + } + } + if (SCH > -0.298823) + { + if (EE <= 4.4915) { result = 09.0; /* 2.0/1.0 */} + else if (EE > 4.4915) { result = 09.2; /* 3.0/1.0 */} + } + } + if (SCH > -0.298528) + { + if (SE <= 12.999905) { result = 08.2; /* 2.0/1.0 */} + else if (SE > 12.999905) { result = 08.8; /* 2.0/1.0 */} + } + } + if (EE > 4.635125) + { + if (EE <= 4.756176) + { + if (SCH <= -0.298814) + { + if (SCH <= -0.299158) { result = 08.8; /* 2.0/1.0 */} + else if (SCH > -0.299158) { result = 09.0; /* 5.0/2.0 */} + } + if (SCH > -0.298814) { result = 08.9; /* 3.0 */} + } + if (EE > 4.756176) { result = 08.2; /* 2.0/1.0 */} + } + } + } + if (EE > 4.8235) + { + if (SE <= 9.633713) + { + if (EE <= 6.102) + { + if (EE <= 5.568813) + { + if (EE <= 5.205703) + { + if (SE <= 9.526853) { result = 09.8; /* 2.0/1.0 */} + else if (SE > 9.526853) { result = 09.1; /* 3.0/1.0 */} + } + if (EE > 5.205703) + { + if (SE <= 9.561631) { result = 10.6; /* 2.0 */} + else if (SE > 9.561631) { result = 08.2; /* 3.0/2.0 */} + } + } + if (EE > 5.568813) + { + if (EE <= 5.799953) + { + if (SE <= 9.480374) { result = 08.8; /* 2.0/1.0 */} + else if (SE > 9.480374) { result = 09.2; /* 4.0/2.0 */} + } + if (EE > 5.799953) + { + if (SE <= 9.523381) { result = 09.4; /* 4.0/2.0 */} + else if (SE > 9.523381) { result = 07.4; /* 4.0/2.0 */} + } + } + } + if (EE > 6.102) + { + if (SCH <= -0.379437) + { + if (SE <= 9.470569) { result = 09.1; /* 7.0/3.0 */} + else if (SE > 9.470569) + { + if (SE <= 9.473074) + { + if (EE <= 6.259) { result = 08.6; /* 2.0 */} + else if (EE > 6.259) { result = 08.3; /* 2.0/1.0 */} + } + if (SE > 9.473074) { result = 08.2; /* 3.0/2.0 */} + } + } + if (SCH > -0.379437) + { + if (EE <= 6.73075) + { + if (SCH <= -0.374181) + { + if (SE <= 9.511648) { result = 09.2; /* 5.0/1.0 */} + else if (SE > 9.511648) + { + if (EE <= 6.40725) { result = 08.4; /* 2.0/1.0 */} + else if (EE > 6.40725) { result = 09.3; /* 4.0/2.0 */} + } + } + if (SCH > -0.374181) { result = 07.2; /* 2.0/1.0 */} + } + if (EE > 6.73075) { result = 09.1; /* 13.0/7.0 */} + } + } + } + if (SE > 9.633713) + { + if (EE <= 6.323406) + { + if (SE <= 12.995039) + { + if (SCH <= -0.321468) { result = 09.4; /* 3.0/2.0 */} + else if (SCH > -0.321468) + { + if (SE <= 9.636834) { result = 08.9; /* 3.0/1.0 */} + else if (SE > 9.636834) + { + if (SE <= 12.990987) { result = 09.8; /* 4.0/2.0 */} + else if (SE > 12.990987) { result = 08.8; /* 5.0/2.0 */} + } + } + } + if (SE > 12.995039) + { + if (EE <= 5.087813) + { + if (EE <= 5.021172) + { + if (SE <= 13.000061) { result = 07.9; /* 3.0/2.0 */} + else if (SE > 13.000061) { result = 08.5; /* 3.0/2.0 */} + } + if (EE > 5.021172) + { + if (EE <= 5.049133) { result = 08.8; /* 5.0/1.0 */} + else if (EE > 5.049133) { result = 08.2; /* 2.0/1.0 */} + } + } + if (EE > 5.087813) + { + if (SE <= 13.000061) { result = 08.9; /* 4.0/1.0 */} + else if (SE > 13.000061) { result = 08.6; /* 4.0/2.0 */} + } + } + } + if (EE > 6.323406) + { + if (SCH <= -0.29393) + { + if (EE <= 7.090875) + { + if (EE <= 6.382352) { result = 08.6; /* 2.0/1.0 */} + else if (EE > 6.382352) + { + if (EE <= 7.0065) { result = 08.8; /* 6.0/3.0 */} + else if (EE > 7.0065) { result = 08.2; /* 2.0/1.0 */} + } + } + if (EE > 7.090875) { result = 08.6; /* 3.0 */} + } + if (SCH > -0.29393) + { + if (SE <= 9.685853) { result = 08.3; /* 2.0/1.0 */} + else if (SE > 9.685853) { result = 08.2; /* 2.0/1.0 */} + } + } + } + } + } + if (SCH > -0.233254) + { + if (EE <= 7.03075) + { + if (EE <= 5.77875) + { + if (SCH <= -0.121832) + { + if (SCH <= -0.173436) + { + if (SE <= 10.475336) { result = 10.8; /* 2.0/1.0 */} + else if (SE > 10.475336) + { + if (EE <= 5.17925) { result = 10.4; /* 2.0/1.0 */} + else if (EE > 5.17925) { result = 10.1; /* 3.0/1.0 */} + } + } + if (SCH > -0.173436) + { + if (EE <= 5.649922) + { + if (EE <= 5.0735) { result = 10.0; /* 2.0/1.0 */} + else if (EE > 5.0735) + { + if (SCH <= -0.170365) { result = 10.7; /* 2.0 */} + else if (SCH > -0.170365) { result = 10.5; /* 2.0 */} + } + } + if (EE > 5.649922) { result = 09.1; /* 2.0/1.0 */} + } + } + if (SCH > -0.121832) + { + if (SE <= 9.402813) { result = 09.2; /* 3.0/1.0 */} + else if (SE > 9.402813) { result = 07.4; /* 3.0/2.0 */} + } + } + if (EE > 5.77875) + { + if (EE <= 6.153625) + { + if (SCH <= -0.168201) + { + if (EE <= 5.83925) { result = 08.7; /* 2.0/1.0 */} + else if (EE > 5.83925) + { + if (EE <= 5.923875) { result = 08.6; /* 2.0 */} + else if (EE > 5.923875) { result = 08.7; /* 4.0/2.0 */} + } + } + if (SCH > -0.168201) + { + if (SE <= 9.761799) { result = 08.2; /* 2.0/1.0 */} + else if (SE > 9.761799) { result = 10.1; /* 3.0/2.0 */} + } + } + if (EE > 6.153625) + { + if (SE <= 10.087325) + { + if (EE <= 6.331813) { result = 10.1; /* 3.0/1.0 */} + else if (EE > 6.331813) { result = 09.5; /* 3.0/2.0 */} + } + if (SE > 10.087325) + { + if (SCH <= -0.143246) { result = 09.0; /* 5.0/2.0 */} + else if (SCH > -0.143246) + { + if (EE <= 6.8065) + { + if (EE <= 6.3445) { result = 09.9; /* 3.0/1.0 */} + else if (EE > 6.3445) { result = 10.0; /* 5.0/2.0 */} + } + if (EE > 6.8065) { result = 09.9; /* 3.0/1.0 */} + } + } + } + } + } + if (EE > 7.03075) + { + if (EE <= 9.058375) + { + if (EE <= 8.619875) + { + if (SCH <= -0.138978) { result = 09.3; /* 4.0/2.0 */} + else if (SCH > -0.138978) + { + if (SCH <= -0.135867) + { + if (SE <= 10.14) { result = 09.2; /* 2.0 */} + else if (SE > 10.14) { result = 09.7; /* 3.0/1.0 */} + } + if (SCH > -0.135867) + { + if (SCH <= -0.084824) + { + if (SCH <= -0.085386) + { + if (SE <= 10.155881) { result = 09.3; /* 2.0 */} + else if (SE > 10.155881) { result = 09.2; /* 3.0/1.0 */} + } + if (SCH > -0.085386) { result = 09.2; /* 3.0 */} + } + if (SCH > -0.084824) { result = 08.4; /* 2.0/1.0 */} + } + } + } + if (EE > 8.619875) { result = 09.1; /* 6.0/1.0 */} + } + if (EE > 9.058375) + { + if (SCH <= -0.080179) { result = 09.0; /* 5.0/1.0 */} + else if (SCH > -0.080179) + { + if (SE <= 9.271976) { result = 08.9; /* 6.0/2.0 */} + else if (SE > 9.271976) { result = 08.7; /* 3.0 */} + } + } + } + } + } + } + } + } + + return result; + } + /** * This method calculates the ionization potential of an atom and set the ionization * energy into each reaction as property * @@ -236,7 +1228,6 @@ */ private Double[][] calculateCarbonylDescriptor(IAtom atom, IAtomContainer atomContainer) { Double[][] results = new Double[1][6]; - Integer[] params = new Integer[1]; IAtom positionX = atom; IAtom positionC = (IAtom) atomContainer.getConnectedAtomsList(atom).get(0); IBond bond = atomContainer.getBond(positionX, positionC); Modified: trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java 2006-12-02 22:42:08 UTC (rev 7407) +++ trunk/cdk/src/org/openscience/cdk/qsar/descriptors/bond/IPBondDescriptor.java 2006-12-04 11:45:35 UTC (rev 7408) @@ -20,7 +20,6 @@ */ package org.openscience.cdk.qsar.descriptors.bond; -import java.util.HashMap; import java.util.Iterator; import org.openscience.cdk.AtomContainerSet; @@ -41,16 +40,16 @@ import org.openscience.cdk.qsar.descriptors.atomic.PartialPiChargeDescriptor; import org.openscience.cdk.qsar.descriptors.atomic.PartialSigmaChargeDescriptor; import org.openscience.cdk.qsar.descriptors.atomic.SigmaElectronegativityDescriptor; -import org.openscience.cdk.qsar.model.weka.J48WModel; import org.openscience.cdk.qsar.result.DoubleArrayResult; import org.openscience.cdk.qsar.result.DoubleResult; import org.openscience.cdk.reaction.IReactionProcess; import org.openscience.cdk.reaction.type.ElectronImpactPDBReaction; /** - * This class returns the ionization potential of a bond (double or triple). It is - * based in learning machine (in this case J48 see J48WModel) - * from experimental values (NIST data). Up to now is + * + * This class returns the ionization potential of a Bond. It is + * based on a decision tree which is extracted from Weka(J48) from + * experimental values (NIST data). Up to now is * only possible predict for double- or triple bonds and they are not belong to * conjugated system or not adjacent to an heteroatom. * @@ -70,30 +69,12 @@ * * @author Miguel Rojas * @cdk.created 2006-05-26 - * @cdk.license GPL - * @cdk.module qsar-weka + * @cdk.module qsar * @cdk.set qsar-descriptors * @cdk.dictref qsar-descriptors:ionizationPotential - * @cdk.depends weka.jar - * @cdk.builddepends weka.jar - * @see J48WModel */ public class IPBondDescriptor implements IBondDescriptor { - /** Hash map which contains the classAttribu = value of IP */ - private HashMap hash = null; - private String[] classAttrib = { - "05_0","05_1","05_2","05_3","05_4","05_5","05_6","05_7","05_8","05_9", - "06_0","06_1","06_2","06_3","06_4","06_5","06_6","06_7","06_8","06_9", - "07_0","07_1","07_2","07_3","07_4","07_5","07_6","07_7","07_8","07_9", - "08_0","08_1","08_2","08_3","08_4","08_5","08_6","08_7","08_8","08_9", - "09_0","09_1","09_2","09_3","09_4","09_5","09_6","09_7","09_8","09_9", - "10_0","10_1","10_2","10_3","10_4","10_5","10_6","10_7","10_8","10_9", - "11_0","11_1","11_2","11_3","11_4","11_5","11_6","11_7","11_8","11_9", - "12_0","12_1","12_2","12_3","12_4","12_5","12_6","12_7","12_8","12_9", - "13_0","13_1","13_2","13_3","13_4","13_5","13_6","13_7","13_8","13_9", - "14_0","14_1","14_2","14_3","14_4","14_5","14_6","14_7","14_8","14_9",}; - /** parameter for inizate IReactionSet*/ private boolean setEnergy = false; private IReactionSet reactionSet; @@ -102,12 +83,6 @@ * Constructor for the IPBondDescriptor object */ public IPBondDescriptor() { - this.hash = new HashMap(); - double value = 5.05; - for(int i = 0 ; i < classAttrib.length ; i++){ - this.hash.put(classAttrib[i],new Double(value)); - value += 0.1; - } } /** * Gets the specification attribute of the IPBondDescriptor object @@ -150,7 +125,6 @@ double resultD = -1.0; boolean isTarget = false; Double[][] resultsH = null; - String path = ""; try{ HueckelAromaticityDetector.detectAromaticity(container,true); @@ -178,15 +152,17 @@ if(!atomsss.getSymbol().equals("C")){ isConjugatedPi_withHeteroatom = true; resultsH = calculateCojugatedPiSystWithHeteroDescriptor(bond, container, ac); - path = "data/arff/PySystWithHetero.arff"; + resultD = getPySystWithHetero(resultsH); + resultD += 0.05; break; } } if(!isConjugatedPi_withHeteroatom){ resultsH = calculateCojugatedPiSystWithoutHeteroDescriptor(bond, container, ac); - path = "data/arff/ConjugatedPiSys.arff"; - break; + resultD = getConjugatedPiSys(resultsH); + resultD += 0.05; + break; } } } @@ -194,26 +170,13 @@ if(!isConjugatedPi){ resultsH = calculatePiSystWithoutHeteroDescriptor(bond, container); - path = "data/arff/Acetyl_EthylWithoutHetero.arff"; - isTarget = true; + resultD = getAcetyl_EthylWithoutHetero(resultsH); + resultD += 0.05; + isTarget = true; } } if(isTarget){ - J48WModel j48 = new J48WModel(true,path); - String[] options = new String[4]; - options[0] = "-C"; - options[1] = "0.25"; - options[2] = "-M"; - options[3] = "2"; - j48.setOptions(options); - j48.build(); - j48.setParameters(resultsH); - j48.predict(); - String[] result = (String[])j48.getPredictPredicted(); - resultD = ((Double)hash.get(result[0])).doubleValue(); - - /* extract reaction*/ if(setEnergy){ IMoleculeSet setOfReactants = container.getBuilder().newMoleculeSet(); @@ -235,6 +198,596 @@ } /** + * tree desicion for the PySystWithHetero + * + * @param resultsH Array which contains the results of each descriptor + * @return the result + */ + private double getPySystWithHetero(Double[][] resultsH) { + double result = 0.0; + double SE_1 = (resultsH[0][0]).doubleValue(); + double SE_2 = (resultsH[0][1]).doubleValue(); + double EE_1 = (resultsH[0][2]).doubleValue(); + double RES_c2 = (resultsH[0][3]).doubleValue(); + + if (SE_2 <= 0.040658) + { + if (SE_1 <= 0) + { + if (RES_c2 <= 0.001483) + { + if (SE_2 <= 0) { result = 09.2; /* 13.0/11.0 */} + else if (SE_2 > 0) { result = 08.0; /* 2.0/1.0 */} + } + if (RES_c2 > 0.001483) + { + if (EE_1 <= 0.00984) + { + if (SE_2 <= 0.024004) { result = 07.7; /* 2.0/1.0 */} + else if (SE_2 > 0.024004) { result = 07.8; /* 3.0/2.0 */} + } + if (EE_1 > 0.00984) + { + if (SE_2 <= 0.031039) { result = 07.9; /* 3.0/1.0 */} + else if (SE_2 > 0.031039) + { + if (SE_2 <= 0.033705) { result = 08.3; /* 2.0/1.0 */} + else if (SE_2 > 0.033705) { result = 09.1; /* 2.0/1.0 */} + } + } + } + } + if (SE_1 > 0) + { + if (RES_c2 <= -0.000099) + { + if (RES_c2 <= -0.004384) { result = 08.5; /* 3.0/1.0 */} + else if (RES_c2 > -0.004384) { result = 07.3; /* 3.0/2.0 */} + } + if (RES_c2 > -0.000099) + { + if (SE_1 <= 0.00513) + { + if (SE_1 <= 0.003843) + { + if (SE_1 <= 0.002366) { result = 08.9; /* 2.0/1.0 */} + else if (SE_1 > 0.002366) { result = 07.5; /* 2.0/1.0 */} + } + if (SE_1 > 0.003843) { result = 09.1; /* 5.0/3.0 */} + } + if (SE_1 > 0.00513) + { + if (SE_1 <= 0.007954) { result = 09.6; /* 2.0/1.0 */} + else if (SE_1 > 0.007954) { result = 08.6; /* 2.0/1.0 */} + } + } + } + } + if (SE_2 > 0.040658) + { + if (SE_2 <= 0.069065) + { + if (RES_c2 <= 0.006856) + { + if (RES_c2 <= 0.005076) + { + if (RES_c2 <= 0.004962) + { + if (SE_2 <= 0.050662) { result = 07.7; /* 2.0/1.0 */} + else if (SE_2 > 0.050662) { result = 08.7; /* 2.0/1.0 */} + } + if (RES_c2 > 0.004962) { result = 08.1; /* 5.0/2.0 */} + } + if (RES_c2 > 0.005076) + { + if (SE_2 <= 0.051366) + { + if (SE_2 <= 0.049396) { result = 08.0; /* 2.0/1.0 */} + else if (SE_2 > 0.049396) { result = 09.3; /* 2.0/1.0 */} + } + if (SE_2 > 0.051366) + { + if (SE_2 <= 0.060998) { result = 08.3; /* 2.0 */} + else if (SE_2 > 0.060998) { result = 08.2; /* 2.0 */} + } + } + } + if (RES_c2 > 0.006856) + { + if (EE_1 <= 0.020934) { result = 07.4; /* 12.0/8.0 */} + else if (EE_1 > 0.020934) + { + if (SE_2 <= 0.068206) + { + if (SE_2 <= 0.063051) { result = 07.3; /* 2.0/1.0 */} + else if (SE_2 > 0.063051) { result = 07.5; /* 6.0/3.0 */} + } + if (SE_2 > 0.068206) { result = 07.6; /* 3.0/2.0 */} + } + } + } + if (SE_2 > 0.069065) + { + if (EE_1 <= 0.668163) + { + if (EE_1 <= 0.032157) + { + if (SE_1 <= 0.002366) + { + if (EE_1 <= 0.026958) + { + if (RES_c2 <= 0.005329) { result = 08.4; /* 2.0/1.0 */} + else if (RES_c2 > 0.005329) { result = 08.9; /* 5.0/1.0 */} + } + if (EE_1 > 0.026958) + { + if (SE_2 <= 0.081676) { result = 08.3; /* 2.0/1.0 */} + else if (SE_2 > 0.081676) { result = 08.0; /* 4.0/1.0 */} + } + } + if (SE_1 > 0.002366) { result = 07.7; /* 3.0/2.0 */} + } + if (EE_1 > 0.032157) + { + if (RES_c2 <= 0.015232) + { + if (SE_2 <= 0.137014) { result = 08.6; /* 5.0/2.0 */} + else if (SE_2 > 0.137014) { result = 08.4; /* 6.0/2.0 */} + } + if (RES_c2 > 0.015232) + { + if (SE_2 <= 0.138782) { result = 08.1; /* 2.0/1.0 */} + else if (SE_2 > 0.138782) { result = 08.2; /* 5.0/3.0 */} + } + } + } + if (EE_1 > 0.668163) + { + if (SE_2 <= 2.067231) { result = 07.7; /* 3.0/1.0 */} + else if (SE_2 > 2.067231) { result = 09.5; /* 4.0/2.0 */} + } + } + } + + + return result; + } + /** + * tree desicion for the ConjugatedPiSys + * + * @param resultsH Array which contains the results of each descriptor + * @return the result + */ + private double getConjugatedPiSys(Double[][] resultsH) { + double result = 0.0; + double SE_1 = (resultsH[0][0]).doubleValue(); + double EE_1 = (resultsH[0][1]).doubleValue(); + double RES_c2 = (resultsH[0][2]).doubleValue(); + + if (RES_c2 <= 8.264821) + { + if (RES_c2 <= 8.115026) + { + if (EE_1 <= 0.392309) + { + if (EE_1 <= 0.311778) { result = 08.3; /* 5.0/3.0 */} + else if (EE_1 > 0.311778) + { + if (SE_1 <= 0.003603) + { + if (SE_1 <= 0.003359) { result = 08.2; /* 2.0 */} + else if (SE_1 > 0.003359) { result = 08.3; /* 3.0/2.0 */} + } + if (SE_1 > 0.003603) + { + if (RES_c2 <= 8.085076) { result = 08.2; /* 3.0/1.0 */} + else if (RES_c2 > 8.085076) { result = 08.1; /* 4.0/1.0 */} + } + } + } + if (EE_1 > 0.392309) + { + if (RES_c2 <= 8.057972) + { + if (EE_1 <= 0.494797) + { + if (EE_1 <= 0.429063) { result = 08.6; /* 3.0/1.0 */} + else if (EE_1 > 0.429063) { result = 08.5; /* 2.0 */} + } + if (EE_1 > 0.494797) { result = 07.9; /* 2.0/1.0 */} + } + if (RES_c2 > 8.057972) + { + if (SE_1 <= 0.015213) + { + if (EE_1 <= 1.011935) + { + if (SE_1 <= 0.014856) { result = 08.4; /* 8.0/1.0 */} + else if (SE_1 > 0.014856) { result = 08.2; /* 2.0 */} + } + if (EE_1 > 1.011935) + { + if (RES_c2 <= 8.090639) { result = 08.6; /* 2.0/1.0 */} + else if (RES_c2 > 8.090639) { result = 08.4; /* 4.0/1.0 */} + } + } + if (SE_1 > 0.015213) { result = 08.5; /* 5.0/3.0 */} + } + } + } + if (RES_c2 > 8.115026) + { + if (EE_1 <= 0.303132) + { + if (SE_1 <= 0.005082) + { + if (SE_1 <= 0.002769) { result = 08.4; /* 3.0/2.0 */} + else if (SE_1 > 0.002769) { result = 06.2; /* 2.0/1.0 */} + } + if (SE_1 > 0.005082) { result = 07.7; /* 4.0/2.0 */} + } + if (EE_1 > 0.303132) + { + if (RES_c2 <= 8.152026) + { + if (SE_1 <= 0.001726) { result = 07.9; /* 2.0/1.0 */} + else if (SE_1 > 0.001726) + { + if (SE_1 <= 0.015444) { result = 08.2; /* 14.0/6.0 */} + else if (SE_1 > 0.015444) { result = 08.3; /* 2.0/1.0 */} + } + } + if (RES_c2 > 8.152026) + { + if (RES_c2 <= 8.213491) + { + if (SE_1 <= 0.00627) + { + if (SE_1 <= 0.005641) { result = 07.8; /* 3.0/1.0 */} + else if (SE_1 > 0.005641) { result = 08.1; /* 2.0/1.0 */} + } + if (SE_1 > 0.00627) + { + if (EE_1 <= 1.479227) { result = 08.0; /* 7.0/3.0 */} + else if (EE_1 > 1.479227) { result = 07.8; /* 2.0/1.0 */} + } + } + if (RES_c2 > 8.213491) + { + if (SE_1 <= 0.003487) { result = 07.8; /* 2.0/1.0 */} + else if (SE_1 > 0.003487) + { + if (EE_1 <= 0.41657) { result = 08.3; /* 2.0/1.0 */} + else if (EE_1 > 0.41657) { result = 08.5; /* 5.0/2.0 */} + } + } + } + } + } + } + if (RES_c2 > 8.264821) + { + if (RES_c2 <= 8.972797) + { + if (EE_1 <= 0.562137) + { + if (RES_c2 <= 8.568494) + { + if (SE_1 <= 0.004116) { result = 07.4; /* 4.0/2.0 */} + else if (SE_1 > 0.004116) + { + if (SE_1 <= 0.012219) { result = 07.2; /* 2.0/1.0 */} + else if (SE_1 > 0.012219) { result = 07.5; /* 2.0/1.0 */} + } + } + if (RES_c2 > 8.568494) + { + if (RES_c2 <= 8.923106) + { + if (RES_c2 <= 8.883992) + { + if (SE_1 <= 0.003412) { result = 08.4; /* 2.0/1.0 */} + else if (SE_1 > 0.003412) { result = 09.5; /* 2.0 */} + } + if (RES_c2 > 8.883992) { result = 09.0; /* 4.0/2.0 */} + } + if (RES_c2 > 8.923106) + { + if (RES_c2 <= 8.931694) { result = 08.8; /* 4.0/2.0 */} + else if (RES_c2 > 8.931694) + { + if (RES_c2 <= 8.964206) { result = 08.4; /* 2.0 */} + else if (RES_c2 > 8.964206) { result = 08.5; /* 3.0/1.0 */} + } + } + } + } + if (EE_1 > 0.562137) + { + if (EE_1 <= 1.529439) + { + if (RES_c2 <= 8.287498) { result = 07.3; /* 2.0/1.0 */} + else if (RES_c2 > 8.287498) + { + if (RES_c2 <= 8.883992) { result = 09.0; /* 2.0 */} + else if (RES_c2 > 8.883992) { result = 08.7; /* 2.0 */} + } + } + if (EE_1 > 1.529439) + { + if (EE_1 <= 1.920118) { result = 08.1; /* 2.0/1.0 */} + else if (EE_1 > 1.920118) { result = 06.3; /* 2.0/1.0 */} + } + } + } + if (RES_c2 > 8.972797) + { + if (EE_1 <= 0.204866) + { + if (SE_1 <= 0.002325) + { + if (RES_c2 <= 10.001048) + { + if (RES_c2 <= 9.853716) { result = 07.6; /* 2.0/1.0 */} + else if (RES_c2 > 9.853716) { result = 08.6; /* 2.0/1.0 */} + } + if (RES_c2 > 10.001048) + { + if (RES_c2 <= 10.098286) { result = 08.3; /* 2.0/1.0 */} + else if (RES_c2 > 10.098286) { result = 08.0; /* 2.0/1.0 */} + } + } + if (SE_1 > 0.002325) + { + if (SE_1 <= 0.004762) { result = 09.0; /* 3.0/2.0 */} + else if (SE_1 > 0.004762) { result = 09.2; /* 2.0/1.0 */} + } + } + if (EE_1 > 0.204866) + { + if (EE_1 <= 1.158042) + { + if (EE_1 <= 1.157985) { result = 08.6; /* 8.0/5.0 */} + else if (EE_1 > 1.157985) { result = 08.5; /* 3.0/1.0 */} + } + if (EE_1 > 1.158042) { result = 08.2; /* 5.0/2.0 */} + } + } + } + + + + return result; + } + + /** + * tree desicion for the Acetyl_EthylWithoutHetero + * + * @param resultsH Array which contains the results of each descriptor + * @return the result + */ + private double getAcetyl_EthylWithoutHetero(Double[][] resul... [truncated message content] |