Ah in that case you'll have to roll on your own I'm afraid but the code is
all there for reaction layout etc. Would be curious to see your
IDrawVisitior do you have a link? It's not impossible to open up an API
point to render an IDrawVisitor but I'm not a huge fan of the interface but
they are used under the surface.

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

On 6 March 2016 at 01:05, Scooter Morris <scoo...@cgl.ucsf.edu> wrote:

> John,
>     Thanks -- this works great for creating images for both reactions and
> molecules!  One question, though.  I have a special Visitor that I use to
> paint images onto Cytoscape nodes.  Using the new depiction approach, there
> doesn't seem to be a way to pass my own IDrawVisitor down to the rendering
> routines.  The draw() method is protected, and even if it wasn't, it would
> be quite a pain to figure out how to create all of the bounds outside of
> the Depiction.  Ideally, there would be something like
>     void toVisitor(IDrawVisitor myVisitor)
> that would look a lot like toImg(), as far as creation of all of the
> transformations and bounding boxes, but would call the myVisitor visitor
> instead of the AWTDrawVisitor.
>
> -- scooter
>
>
> On 03/05/2016 01:51 AM, John M wrote:
>
> 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>
>> 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