/** * <p>Sorts the IAtomContainers in the given IAtomContainerSet by the following * criteria with decreasing priority:</p> * <ul> * <li>Compare atom count * <li>Compare molecular weight (heavy atoms only) * <li>Compare bond count * <li>Compare sum of bond orders (heavy atoms only) * </ul> * <p>If no difference can be found with the above criteria, the IAtomContainers are * considered equal.</p> * @param atomContainerSet The collection of IAtomContainer objects */ public static void sort(IAtomContainerSet atomContainerSet) { List<IAtomContainer> atomContainerList = AtomContainerSetManipulator.getAllAtomContainers(atomContainerSet); Collections.sort(atomContainerList, new AtomContainerComparator()); atomContainerSet.removeAllAtomContainers(); for (Object anAtomContainerList : atomContainerList) atomContainerSet.addAtomContainer((IAtomContainer) anAtomContainerList); }
double mw2 = 0; try { mw1 = getMolecularWeight(atomContainer1); mw2 = getMolecularWeight(atomContainer2); } catch (CDKException e) { logger.warn("Exception in molecular mass calculation.");
@Test public void testCompare_Null_Null() { // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); // Assert.assert correct comparison Assert.assertEquals("null <-> null", 0, comparator.compare(null, null)); }
@Test public void testCompare_Null_IAtomContainer() { IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IRing cycloPentane = builder.newInstance(IRing.class, 5, "C"); // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); // Assert.assert correct comparison Assert.assertEquals("null <-> cycloPentane", 1, comparator.compare(null, cycloPentane)); }
@Test public void testCompare_IAtomContainer_Null() { IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IRing cycloPentane = builder.newInstance(IRing.class, 5, "C"); // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); // Assert.assert correct comparison Assert.assertEquals("cycloPentane <-> null", -1, comparator.compare(cycloPentane, null)); }
@Test public void testCompare_RingSize() { // Create some IAtomContainers IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IRing cycloPentane = builder.newInstance(IRing.class, 5, "C"); IRing cycloHexane = builder.newInstance(IRing.class, 6, "C"); // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); Assert.assertEquals("cycloPentane <-> cycloHexane", -1, comparator.compare(cycloPentane, cycloHexane)); Assert.assertEquals("cycloPentane <-> cycloPentane", 0, comparator.compare(cycloPentane, cycloPentane)); Assert.assertEquals("cycloHexane <-> cycloPentane", 1, comparator.compare(cycloHexane, cycloPentane)); }
@Test public void testCompare_Ring_NonRing() { // Create some IAtomContainers IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IRing cycloHexane = builder.newInstance(IRing.class, 6, "C"); IAtomContainer hexaneNitrogen = builder.newInstance(IRing.class, 6, "N"); hexaneNitrogen.removeBond(0); // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); Assert.assertEquals("cycloHexane <-> hexaneNitrogen", -1, comparator.compare(cycloHexane, hexaneNitrogen)); Assert.assertEquals("cycloHexane <-> cycloHexane", 0, comparator.compare(cycloHexane, cycloHexane)); Assert.assertEquals("hexaneNitrogen <-> cycloHexane", 1, comparator.compare(hexaneNitrogen, cycloHexane)); }
@Test public void testCompare_Ring_NonRing2() { // Create some IAtomContainers IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IAtomContainer hexaneNitrogen = builder.newInstance(IRing.class, 6, "N"); hexaneNitrogen.removeBond(0); IRing cycloHexaneNitrogen = builder.newInstance(IRing.class, 6, "N"); // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); Assert.assertEquals("hexaneNitrogen <-> cycloHexaneNitrogen", -1, comparator.compare(hexaneNitrogen, cycloHexaneNitrogen)); Assert.assertEquals("hexaneNitrogen <-> hexaneNitrogen", 0, comparator.compare(hexaneNitrogen, hexaneNitrogen)); Assert.assertEquals("cycloHexaneNitrogen <-> hexaneNitrogen", 1, comparator.compare(cycloHexaneNitrogen, hexaneNitrogen)); }
@Test public void testCompare_BondOrder() { // Create some IAtomContainers IChemObjectBuilder builder = DefaultChemObjectBuilder.getInstance(); IRing cycloHexaneNitrogen = builder.newInstance(IRing.class, 6, "N"); IRing cycloHexeneNitrogen = builder.newInstance(IRing.class, 6, "N"); cycloHexeneNitrogen.getBond(0).setOrder(Order.DOUBLE); // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); Assert.assertEquals("cycloHexaneNitrogen <-> cycloHexeneNitrogen", -1, comparator.compare(cycloHexaneNitrogen, cycloHexeneNitrogen)); Assert.assertEquals("cycloHexaneNitrogen <-> cycloHexaneNitrogen", 0, comparator.compare(cycloHexaneNitrogen, cycloHexaneNitrogen)); Assert.assertEquals("cycloHexeneNitrogen <-> cycloHexeneNitrogen", 0, comparator.compare(cycloHexeneNitrogen, cycloHexeneNitrogen)); Assert.assertEquals("cycloHexeneNitrogen <-> cycloHexaneNitrogen", 1, comparator.compare(cycloHexeneNitrogen, cycloHexaneNitrogen)); }
@Test public void testCompare_Atom_PseudoAtom() { // Instantiate the comparator Comparator<IAtomContainer> comparator = new AtomContainerComparator(); IAtomContainer atomContainer1 = new AtomContainer(); atomContainer1.addAtom(new Atom("C")); IAtomContainer atomContainer2 = new AtomContainer(); atomContainer2.addAtom(new PseudoAtom("*")); Assert.assertEquals(atomContainer1 + " <-> " + atomContainer2, 1, comparator.compare(atomContainer1, atomContainer2)); }
/** * @cdk.bug 3093241 */ @Test public void testSortAtomContainers_Comparator_Null() { IAtomContainerSet som = (IAtomContainerSet) newChemObject(); IChemObjectBuilder builder = som.getBuilder(); IAtomContainer con1 = builder.newInstance(IAtomContainer.class); con1.addAtom(builder.newInstance(IAtom.class, "C")); con1.addAtom(builder.newInstance(IAtom.class, "C")); IAtomContainer con2 = builder.newInstance(IAtomContainer.class); con2.addAtom(builder.newInstance(IAtom.class, "C")); som.addAtomContainer(con1); som.addAtomContainer(con2); Assert.assertNotNull(som.getAtomContainer(0)); Assert.assertNotNull(som.getAtomContainer(1)); AtomContainerComparator comparator = new AtomContainerComparator(); som.sortAtomContainers(comparator); Assert.assertNotNull(som.getAtomContainer(0)); Assert.assertEquals(1, som.getAtomContainer(0).getAtomCount()); Assert.assertNotNull(som.getAtomContainer(1)); Assert.assertEquals(2, som.getAtomContainer(1).getAtomCount()); }