From: kalai <kal...@gm...> - 2012-08-21 14:21:36
|
Dear all, I am trying to render selected bonds in a molecule with different colour, using CDK. I use the latest nightly built of CDK and version 26 of CDK-jchempaint. I use CDK-jchempaint for ExternalHighlightGenerator class. Below is my method code. It renders image for adenine(attached) but not with bonds highlighted. Has anyone done different colouring for bonds while rendering ? Any help will be much appreciated. ------------------------------------------------------------------------------------------------------- public void generateImageWithBondsHighlighted() throws Exception { IAtomContainer molecule = MoleculeFactory.makeAdenine(); IAtomContainer selectionMolecule = molecule.getBuilder().newInstance(IAtomContainer.class); for (int i = 0; i < 3; i++) { selectionMolecule.addBond(molecule.getBond(i)); } AtomContainerManipulator.percieveAtomTypesAndConfigureAtoms(molecule); StructureDiagramGenerator structureDiagramGenerator = new StructureDiagramGenerator(); structureDiagramGenerator.setMolecule(molecule); structureDiagramGenerator.generateCoordinates(); IAtomContainer moleculeWithCoordinates = structureDiagramGenerator.getMolecule(); IRenderer chemicalMoleculeRenderer = new AtomContainerRenderer(Arrays.asList(new BasicSceneGenerator(), new ExternalHighlightGenerator(), new BasicBondGenerator(), new BasicAtomGenerator()), new AWTFontManager()); RendererModel renderer2DModel = chemicalMoleculeRenderer.getRenderer2DModel(); renderer2DModel.set(ExternalHighlightGenerator.ExternalHighlightDistance.class, (double) 12); renderer2DModel.set(RendererModel.ExternalHighlightColor.class, Color.ORANGE); renderer2DModel.setExternalSelectedPart(selectionMolecule); BufferedImage image = new BufferedImage(186, 186, BufferedImage.TYPE_INT_ARGB); Rectangle2D bounds = new Rectangle2D.Double(0, 0, image.getWidth(), image.getHeight()); Graphics2D g2 = (Graphics2D) image.createGraphics(); g2.setBackground(Color.WHITE); g2.clearRect(0, 0, 186, 186); AWTDrawVisitor awtDrawVisitor = new AWTDrawVisitor(g2); System.out.println("Atom count - " + moleculeWithCoordinates.getAtomCount()); chemicalMoleculeRenderer.paint(moleculeWithCoordinates, awtDrawVisitor, bounds, true); g2.dispose(); ImageIO.write((RenderedImage) image, "PNG", new File("/Users/kalai/adenine.png")); System.out.println("Finished rendering"); } ------------------------------------------------------------------------------------------------------- Kind regards, Kalai ---- Ms Kalai Vanii Jayaseelan (Bioinformatician) Cheminformatics and Metabolism Group European Bioinformatics Institute (EBI) Wellcome Trust Genome Campus Hinxton, Cambridge CB10 1SD UK Phone +44 1223 49 4581 |