@Test public void pyrroleWithoutIdentityTemplate() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); String smiles = "C1=CNC=C1"; StructureDiagramGenerator generator = new StructureDiagramGenerator(); generator.setUseIdentityTemplates(false); IAtomContainer mol = sp.parseSmiles(smiles); generator.setMolecule(mol, false); generator.generateCoordinates(); double minY = Double.MAX_VALUE; int i = -1; // note if the SDG changes the nitrogen might be at // the bottom by chance when generated ab initio for (int j = 0; j < mol.getAtomCount(); j++) { IAtom atom = mol.getAtom(j); if (atom.getPoint2d().y < minY) { minY = atom.getPoint2d().y; i = j; } } // N is at index 2 assertThat(i, not(2)); }
@Test public void pyrroleWithIdentityTemplate() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); String smiles = "C1=CNC=C1"; StructureDiagramGenerator generator = new StructureDiagramGenerator(); generator.setUseIdentityTemplates(true); IAtomContainer mol = sp.parseSmiles(smiles); generator.setMolecule(mol, false); generator.generateCoordinates(); IAtom nitrogen = mol.getAtom(2); // nitrogen is lowest point assertThat(nitrogen.getPoint2d().y, lessThan(mol.getAtom(0).getPoint2d().y)); assertThat(nitrogen.getPoint2d().y, lessThan(mol.getAtom(1).getPoint2d().y)); assertThat(nitrogen.getPoint2d().y, lessThan(mol.getAtom(3).getPoint2d().y)); assertThat(nitrogen.getPoint2d().y, lessThan(mol.getAtom(4).getPoint2d().y)); }