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

Reply via email to