/** * Assings a molecule to be layed out. Call generateCoordinates() to do the * actual layout. * * @param molecule the molecule for which coordinates are to be generated. */ public void setMolecule(IAtomContainer molecule) { setMolecule(molecule, true); }
/** * Assings a molecule to be layed out. Call generateCoordinates() to do the * actual layout. * * @param molecule the molecule for which coordinates are to be generated. */ public void setMolecule(IAtomContainer molecule) { setMolecule(molecule, true); }
/** * Creates an instance of this class while assigning a molecule to be layed * out. * * @param molecule The molecule to be layed out. */ public StructureDiagramGenerator(IAtomContainer molecule) { this(); setMolecule(molecule, false); }
/** * Creates an instance of this class while assigning a molecule to be layed * out. * * @param molecule The molecule to be layed out. */ public StructureDiagramGenerator(IAtomContainer molecule) { this(); setMolecule(molecule, false); }
public void setMolecule(IAtomContainer mol, boolean clone) { setMolecule(mol, clone, Collections.<IAtom>emptySet(), Collections.<IBond>emptySet()); }
public void setMolecule(IAtomContainer mol, boolean clone) { setMolecule(mol, clone, Collections.<IAtom>emptySet(), Collections.<IBond>emptySet()); }
/** * <p>Convenience method for generating 2D coordinates.</p> * * <p>The method is short-hand for calling:</p> * <pre> * sdg.setMolecule(mol, false); * sdg.generateCoordinates(); * </pre> * * @param mol molecule to layout * @throws CDKException problem with layout */ public final void generateCoordinates(IAtomContainer mol) throws CDKException { setMolecule(mol, false); generateCoordinates(); }
/** * <p>Convenience method for generating 2D coordinates.</p> * * <p>The method is short-hand for calling:</p> * <pre> * sdg.setMolecule(mol, false); * sdg.generateCoordinates(); * </pre> * * @param mol molecule to layout * @throws CDKException problem with layout */ public final void generateCoordinates(IAtomContainer mol) throws CDKException { setMolecule(mol, false); generateCoordinates(); }
public static IAtomContainer layout(IAtomContainer mol) throws Exception { SDG.setMolecule(mol, false); SDG.generateCoordinates(); return mol; }
/** * * @param AtomContainer * @return */ protected IAtomContainer layout(IAtomContainer AtomContainer) { try { StructureDiagramGenerator sdg = new StructureDiagramGenerator(); sdg.setMolecule(AtomContainer, true); sdg.generateCoordinates(); return sdg.getMolecule(); } catch (CDKException e) { return AtomContainer; } }
public IAtomContainer layout(IAtomContainer molecule) { sdg.setMolecule(molecule); try { sdg.generateCoordinates(); } catch (Exception e) { System.err.println(e); } return sdg.getMolecule(); }
/** * @param structures * @return */ private boolean everythingOk(Vector structures) throws Exception { StructureDiagramGenerator sdg; IAtomContainer mol; if (debug) System.out.println("number of structures in vector: " + structures.size()); for (int f = 0; f < structures.size(); f++) { sdg = new StructureDiagramGenerator(); mol = (IAtomContainer) structures.elementAt(f); sdg.setMolecule(mol); sdg.generateCoordinates(new Vector2d(0, 1)); } return true; }
/** * Helper method to generate 2d coordinates when JChempaint loads a molecule * without 2D coordinates. Typically happens for SMILES strings. * * @param molecules * @throws Exception */ private static void generate2dCoordinates(List<IAtomContainer> molecules) { StructureDiagramGenerator sdg = new StructureDiagramGenerator(); for (int atIdx = 0; atIdx < molecules.size(); atIdx++) { IAtomContainer mol = molecules.get(atIdx); sdg.setMolecule(mol.getBuilder().newInstance(IAtomContainer.class,mol)); try { sdg.generateCoordinates(); } catch (Exception e) { e.printStackTrace(); } IAtomContainer ac = sdg.getMolecule(); for(int i=0;i<ac.getAtomCount();i++){ mol.getAtom(i).setPoint2d(ac.getAtom(i).getPoint2d()); } } }
private boolean showIt(IAtomContainer molecule, String name) throws Exception { StructureDiagramGenerator sdg = new StructureDiagramGenerator(); sdg.setMolecule((IAtomContainer) molecule.clone()); sdg.generateCoordinates(new Vector2d(0, 1)); return true; }
/** * * @param mol * @return * @throws CDKException */ @Override public synchronized BitSet getFingerprint(IAtomContainer mol) throws CDKException { if (!has2DCoordinates(mol)) { StructureDiagramGenerator structureDiagramGenerator = new StructureDiagramGenerator(); structureDiagramGenerator.setMolecule(mol, true); if (isConnected(mol)) { structureDiagramGenerator.generateCoordinates(); mol = structureDiagramGenerator.getMolecule(); } else { LOGGER.debug("Disconnected components needs to be layout separately"); } } return fingerprinter.getBitFingerprint(mol).asBitSet(); }
/** * Tests case where calling generateExperimentalCoordinates threw an NPE. * * @cdk.bug 1269 */ @Test(timeout = 5000) public void testBug1269() throws Exception { SmilesParser sp = new SmilesParser(SilentChemObjectBuilder.getInstance()); String smiles = "O=C(O)[C@H](N)C"; // L-alanine, but any [C@H] will do IAtomContainer mol = sp.parseSmiles(smiles); SDG.setMolecule(mol); SDG.generateExperimentalCoordinates(new Vector2d(0, 1)); }
@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)); }
/** * A unit test for JUnit * *@exception Exception Description of the Exception */ @Test public void testResolveOverlap5() throws Exception { double overlapScore = 0; logger.debug("Test case with atom clash"); IAtomContainer atomContainer = new SmilesParser(DefaultChemObjectBuilder.getInstance()) .parseSmiles("OC4C(N2C1=C(C(=NC(=N1)SC)SC)C3=C2N=CN=C3N)OC(C4O)CO"); StructureDiagramGenerator sdg = new StructureDiagramGenerator(); sdg.setMolecule(new AtomContainer(atomContainer)); sdg.generateCoordinates(); atomContainer = sdg.getMolecule(); OverlapResolver or = new OverlapResolver(); overlapScore = or.resolveOverlap(atomContainer, null); //MoleculeViewer2D.display(new AtomContainer(atomContainer), true); Assert.assertEquals(0.0, overlapScore, 0.0001); logger.debug("End of test case with atom clash"); }
@Test public void testAddMolecule() throws Exception { logger.debug("***TestAddMolecule***"); boolean itIsInThere = false; TemplateHandler th = new TemplateHandler(DefaultChemObjectBuilder.getInstance()); IAtomContainer mol = TestMoleculeFactory.makeAlphaPinene(); sdg.setMolecule(mol); sdg.generateCoordinates(); mol = sdg.getMolecule(); String smiles = "C1=C(C)C2CC(C1)C2(C)(C)"; IAtomContainer smilesMol = sp.parseSmiles(smiles); itIsInThere = th.mapTemplates(smilesMol); logger.debug("Alpha-Pinene found by templateMapper: " + itIsInThere); Assert.assertFalse(itIsInThere); th.addMolecule(mol); logger.debug("now adding template for alpha-Pinen and trying again."); itIsInThere = th.mapTemplates(smilesMol); logger.debug("Alpha-Pinene found by templateMapper: " + itIsInThere); Assert.assertTrue(itIsInThere); }