Hi all, I've been trying to add reactions to the chemViz2 plugin for Cytoscape and have been unsuccessful so far. I do get the something rendered, but everything is on top of each other and much, much larger that I think it should be. Here are the steps I'm taking -- any direction would be really helpful.
First, I layout the reaction: static public IReaction layoutReaction(IReaction reaction) throws CDKException { int offset = -10; // Layout agents AtomContainerSet agents = new AtomContainerSet(); for (IAtomContainer agent: reaction.getAgents().atomContainers()) { IAtomContainer newAgent = layoutMolecule(agent); agents.addAtomContainer(newAgent); } // ??? no setAgents method ??? reaction.getAgents().removeAllAtomContainers(); for (IAtomContainer agent: agents.atomContainers()) { reaction.addAgent(agent); } // Layout reactants AtomContainerSet reactants = new AtomContainerSet(); for (IAtomContainer reactant: reaction.getReactants().atomContainers()) { IAtomContainer newReactant = layoutMolecule(reactant); GeometryTools.translate2DCenterTo(newReactant, new Point2d(offset, 0)); offset += 2; reactants.addAtomContainer(newReactant); } reaction.setReactants(reactants); // Layout Products offset += 6; AtomContainerSet products = new AtomContainerSet(); for (IAtomContainer product: reaction.getProducts().atomContainers()) { IAtomContainer newProduct = layoutMolecule(product); GeometryTools.translate2DCenterTo(newProduct, new Point2d(offset, 0)); offset += 2; products.addAtomContainer(newProduct); } reaction.setProducts(products); return reaction; } where layoutMolecule is the code I'm already using to layout IAtomContainers and seems to work well. Then, when I actually do the rendering: ChemModelRenderer renderer = getReactionRenderer((Color)background); ChemModel chemModel = new ChemModel(); ReactionSet rSet = new ReactionSet(); rSet.addReaction(iReaction); chemModel.setReactionSet(rSet); if (renderer == null) return null; (I tried ReactionRenderer also, but got the same results....) where getReactionRenderer is: private static ChemModelRenderer getReactionRenderer(Color background) { // generators make the image elements Font font = new Font("Arial", Font.PLAIN, 24); ChemModelRenderer renderer = new ChemModelRenderer(Arrays.asList(new BasicSceneGenerator(), new StandardGenerator(font)), Arrays.asList((IGenerator<IReaction>)new ReactionSceneGenerator(), (IGenerator<IReaction>)new ReactionArrowGenerator(), (IGenerator<IReaction>)new ReactionPlusGenerator()), new AWTFontManager()); RendererModel model = renderer.getRenderer2DModel(); model.set(StandardGenerator.Visibility.class, SymbolVisibility.iupacRecommendations()); model.set(StandardGenerator.AtomColor.class, new CDK2DAtomColors()); model.set(StandardGenerator.StrokeRatio.class, 0.85); model.set(StandardGenerator.SymbolMarginRatio.class, 4d); if (background == null) background = new Color(255,255,255,255); return renderer; } I seem to be missing a major step here since the result is a mess. Any suggestions or direction would be helpful. I'm currently using 1.5.12, but I've also tried with 1.5.11 to no avail.... -- scooter ------------------------------------------------------------------------------ _______________________________________________ Cdk-user mailing list Cdk-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/cdk-user