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
[email protected]
https://lists.sourceforge.net/lists/listinfo/cdk-user