Hi Scooter,

This is now much easier, for most use-cases you use the new
DepictionGenerator
<http://cdk.github.io/cdk/1.5/docs/api/index.html?org/openscience/cdk/depict/DepictionGenerator.html>
abstract (module cdk-depict will be bundled but needs to be load
separately). Lots of tweaks you can do but it's a one liner:

new DepictionGenerator().depict(rxn).writeTo("~/myrxn.svg");


The web application can show you what it will look like:

http://cdkdepict-openchem.rhcloud.com/depict.html


John

Regards,
John W May
john.wilkinson...@gmail.com

On 5 March 2016 at 04:49, Scooter Morris <scoo...@cgl.ucsf.edu> wrote:

> 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
>
------------------------------------------------------------------------------
_______________________________________________
Cdk-user mailing list
Cdk-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/cdk-user

Reply via email to