From: <mig...@us...> - 2006-10-23 09:22:33
|
Revision: 7143 http://svn.sourceforge.net/cdk/?rev=7143&view=rev Author: miguelrojasch Date: 2006-10-23 02:22:24 -0700 (Mon, 23 Oct 2006) Log Message: ----------- possibility to generate HoseCode with hydrogen explicit and test Modified Paths: -------------- trunk/cdk/src/org/openscience/cdk/test/tools/HOSECodeTest.java trunk/cdk/src/org/openscience/cdk/tools/HOSECodeGenerator.java Modified: trunk/cdk/src/org/openscience/cdk/test/tools/HOSECodeTest.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/test/tools/HOSECodeTest.java 2006-10-23 09:19:02 UTC (rev 7142) +++ trunk/cdk/src/org/openscience/cdk/test/tools/HOSECodeTest.java 2006-10-23 09:22:24 UTC (rev 7143) @@ -462,8 +462,7 @@ } } public void testGetAtomsOfSphere(){ - try - { + try{ IMolecule molecule = (new SmilesParser()).parseSmiles("CC=CBr"); HueckelAromaticityDetector.detectAromaticity(molecule); HOSECodeGenerator hcg = new HOSECodeGenerator(); @@ -474,14 +473,33 @@ assertEquals(1, atoms.size()); assertEquals("Br", ((IAtom)atoms.get(0)).getSymbol()); - } catch (Exception exc) - { + } catch (Exception exc){ exc.printStackTrace(); fail(exc.getMessage()); } } + public void testGetAtomsOfSphereWithHydr(){ + try{ + IMolecule molecule = (new SmilesParser()).parseSmiles("C([H])([H])([H])C([H])=C([H])Br"); + HueckelAromaticityDetector.detectAromaticity(molecule); + HOSECodeGenerator hcg = new HOSECodeGenerator(); + hcg.getSpheres((Molecule) molecule, molecule.getAtom(0), 3, true); + Vector atoms = hcg.getNodesInSphere(3); + + assertEquals(2, atoms.size()); + + assertEquals("H", ((IAtom)atoms.get(0)).getSymbol()); + assertEquals("Br", ((IAtom)atoms.get(1)).getSymbol()); + + } catch (Exception exc){ + exc.printStackTrace(); + fail(exc.getMessage()); + } + + } + /** * The main program for the HOSECodeTest class * Modified: trunk/cdk/src/org/openscience/cdk/tools/HOSECodeGenerator.java =================================================================== --- trunk/cdk/src/org/openscience/cdk/tools/HOSECodeGenerator.java 2006-10-23 09:19:02 UTC (rev 7142) +++ trunk/cdk/src/org/openscience/cdk/tools/HOSECodeGenerator.java 2006-10-23 09:22:24 UTC (rev 7143) @@ -335,13 +335,12 @@ IAtom atom; org.openscience.cdk.interfaces.IBond bond = null; sphereNodes.removeAllElements(); - sphereNodesWithAtoms.removeAllElements(); - for (int i = 0; i < conAtoms.size(); i++) - { - - try - { + sphereNodesWithAtoms.removeAllElements(); + for (int i = 0; i < conAtoms.size(); i++){ + try{ atom = (IAtom)conAtoms.get(i); + if(atom.getSymbol().equals("H")) + continue; bond = atomContainer.getBond(root, atom); /* * In the first sphere the atoms are labled with @@ -354,17 +353,19 @@ { tempNode = new TreeNode(atom.getSymbol(), new TreeNode(root.getSymbol(), null, root, (double) 0, 0, (long) 0), atom, bond.getOrder(), atomContainer.getBondCount(atom), 0); } - sphereNodes.addElement(tempNode); - if(!addTreeNode) - sphereNodesWithAtoms.addElement(atom); - rootNode.childs.addElement(tempNode); + + sphereNodes.addElement(tempNode); + if(!addTreeNode) + sphereNodesWithAtoms.addElement(atom); + + rootNode.childs.addElement(tempNode); atom.setFlag(CDKConstants.VISITED, true); } catch (Exception exc) { throw new CDKException("Error in HOSECodeGenerator->breadthFirstSearch.", exc); } } - Collections.sort(sphereNodes,new TreeNodeComparator()); + Collections.sort(sphereNodes,new TreeNodeComparator()); nextSphere(sphereNodes); } @@ -380,8 +381,8 @@ private void nextSphere(Vector sphereNodes) throws org.openscience.cdk.exception.CDKException { spheres[sphere] = sphereNodes; - if(spheresWithAtoms!=null) - spheresWithAtoms[sphere] = sphereNodesWithAtoms; + if(spheresWithAtoms!=null) + spheresWithAtoms[sphere] = sphereNodesWithAtoms; /* * From here we start assembling the next sphere */ @@ -397,12 +398,13 @@ if (!("&;#:,".indexOf(treeNode.symbol) >= 0)) { node = treeNode.atom; + if(node.getSymbol().equals("H")) + continue; + conAtoms = atomContainer.getConnectedAtomsList(node); - if (conAtoms.size() == 1) - { - nextSphereNodes.addElement(new TreeNode(",", treeNode, null, 0, 0, treeNode.score)); - } else - { + if (conAtoms.size() == 1){ + nextSphereNodes.addElement(new TreeNode(",", treeNode, null, 0, 0, treeNode.score)); + }else{ for (int j = 0; j < conAtoms.size(); j++) { toNode = (IAtom)conAtoms.get(j); @@ -421,7 +423,7 @@ } } } - Collections.sort(nextSphereNodes,new TreeNodeComparator()); + Collections.sort(nextSphereNodes,new TreeNodeComparator()); if (sphere < maxSphere) { sphere++; @@ -752,6 +754,8 @@ public int compare(Object obj1, Object obj2) { if(obj1==null || obj2==null || ((TreeNode) obj1).getAtom()==null || ((TreeNode) obj2).getAtom()==null) return 0; + if(((TreeNode) obj1).getAtom().getProperty("CanonicalLable")==null || ((TreeNode) obj2).getAtom().getProperty("CanonicalLable")==null) + return 0; if (((Long) ((TreeNode) obj1).getAtom().getProperty("CanonicalLable")).intValue() < ((Long) ((TreeNode) obj2).getAtom().getProperty("CanonicalLable")).intValue()) { return (-1); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |