1 package org.molwind.chemical.io;
2
3 import java.util.HashMap;
4 import java.util.Map;
5 import java.util.Iterator;
6 import java.util.Map;
7 import java.util.Collection;
8 import java.io.IOException;
9 import java.io.StringWriter;
10
11 import java.io.File;
12 import java.io.FileReader;
13 import java.awt.AlphaComposite;
14 import java.awt.BorderLayout;
15 import java.awt.Color;
16 import java.awt.Container;
17 import java.awt.Dimension;
18 import java.awt.Font;
19 import java.awt.Graphics;
20 import java.awt.Graphics2D;
21 import java.awt.RenderingHints;
22 import java.awt.geom.AffineTransform;
23 import java.awt.image.BufferedImage;
24 import javax.imageio.ImageIO;
25 import javax.swing.ImageIcon;
26 import javax.swing.JFrame;
27 import javax.swing.JPanel;
28 import javax.swing.WindowConstants;
29 import java.awt.Color;
30 import java.awt.Paint;
31
32 import org.openscience.cdk.io.MDLReader;
33 import org.openscience.cdk.interfaces.IMolecule;
34 import org.openscience.cdk.Molecule;
35
36
37 import org.openscience.cdk.DefaultChemObjectBuilder;
38 import org.openscience.cdk.exception.InvalidSmilesException;
39 import org.openscience.cdk.geometry.GeometryToolsInternalCoordinates;
40 import org.openscience.cdk.interfaces.IAtomContainer;
41 import org.openscience.cdk.interfaces.IMolecule;
42 import org.openscience.cdk.layout.StructureDiagramGenerator;
43 import org.openscience.cdk.renderer.Renderer2D;
44 import org.openscience.cdk.renderer.Renderer2DModel;
45 import org.openscience.cdk.smiles.SmilesParser;
46
47 import java.io.IOException;
48
49 import org.molwind.model.PlacedWorldEntity;
50 import edu.uci.ics.jung.graph.Graph;
51 import edu.uci.ics.jung.visualization.BasicVisualizationServer;
52 import java.awt.Dimension;
53
54 import edu.uci.ics.jung.graph.SparseMultigraph;
55 import edu.uci.ics.jung.io.GraphMLWriter;
56 import edu.uci.ics.jung.*;
57 import edu.uci.ics.jung.graph.util.EdgeType;
58
59 import edu.uci.ics.jung.graph.SparseGraph;
60 import edu.uci.ics.jung.graph.DelegateTree;
61 import edu.uci.ics.jung.graph.DelegateForest;
62
63 import edu.uci.ics.jung.algorithms.layout.*;
64
65 import org.openscience.cdk.interfaces.IMolecule;
66 import org.openscience.cdk.Molecule;
67 import edu.uci.ics.jung.algorithms.layout.StaticLayout;
68
69 import org.molwind.graph.*;
70 import org.molwind.model.PartOf;
71
72 import org.molwind.util.MolwindServerConfiguration;
73 import org.molwind.chemical.model.SubstructureResolver;
74 import org.molwind.chemical.model.ChemicalWorld;
75 import org.molwind.chemical.model.ChemicalEntity;
76 import org.molwind.graph.DefaultEntityGraph;
77 import org.openscience.cdk.io.iterator.IteratingMDLReader;
78 import org.openscience.cdk.DefaultChemObjectBuilder;
79 import java.util.Vector;
80 import java.awt.image.BufferedImage;
81
82 // import net.guha.util.cdk.Misc;
83 // import net.guha.util.cdk.Renderer2DPanel;
84 import org.openscience.cdk.DefaultChemObjectBuilder;
85 import org.openscience.cdk.interfaces.IAtomContainer;
86 import org.openscience.cdk.smiles.SmilesParser;
87
88 import javax.swing.*;
89 import org.molwind.chemical.view.ChemicalTopologyManager;
90 import org.apache.commons.collections15.Transformer;
91 import java.awt.geom.Point2D;
92
93
94 public class GraphMain2{
95
96
97 public static void main(String args[]){
98 // // System.out.println("Test This out: ");
99
100 // ChemicalEntity chEnt1 = new ChemicalEntity();
101
102 // ChemicalEntity chEnt2 = new ChemicalEntity();
103
104 // ChemicalEntity chEnt3 = new ChemicalEntity();
105
106 // DefaultEntityVertex[] vertexArray = new DefaultEntityVertex[10];
107 // DefaultEntityVertex[] vertexArray2 = new DefaultEntityVertex[10];
108
109 // for(int i = 0;i<vertexArray.length;i++){
110 // vertexArray[i] = new DefaultEntityVertex();
111 // vertexArray[i].color = 1;
112 // vertexArray[i].setEntity(new ChemicalEntity());
113
114 // vertexArray2[i] = new DefaultEntityVertex();
115 // vertexArray[i].color = 0;
116 // vertexArray2[i].setEntity(new ChemicalEntity());
117
118 // }
119
120 // SparseGraph<EntityVertex,EntityEdge> subGraph = new SparseGraph<EntityVertex,EntityEdge>();//getFactory().create();
121
122 // SparseGraph<EntityVertex,EntityEdge> subGraph2 = new SparseGraph<EntityVertex,EntityEdge>();
123
124 // for(DefaultEntityVertex dev : vertexArray)
125 // subGraph.addVertex(dev);
126
127 // for(DefaultEntityVertex dev : vertexArray2)
128 // subGraph2.addVertex(dev);
129
130
131
132
133 // Transformer<EntityVertex,Paint> vertexPaint = new Transformer<EntityVertex,Paint>() {
134 // public Paint transform(EntityVertex vertex) {
135 // return Color.YELLOW;
136 // }
137 // };
138
139
140 // ///////////////////
141
142 // SpringLayout2<EntityVertex,EntityEdge> springLayout = new SpringLayout2<EntityVertex,EntityEdge>(subGraph2);
143 // SpringLayout2<EntityVertex,EntityEdge> spLayout2 = new SpringLayout2<EntityVertex,EntityEdge>(subGraph);
144
145 // KKLayout<EntityVertex,EntityEdge> cLayout2 = new KKLayout<EntityVertex,EntityEdge>(subGraph2);
146
147 // AggregateLayout aLayout = new AggregateLayout(springLayout);
148
149 // BasicVisualizationServer vv2 = new BasicVisualizationServer(aLayout);
150
151 // cLayout2.setInitializer(aLayout);
152 // cLayout2.setSize(new Dimension(100,100));
153 // Point2D.Double center = new Point2D.Double(500,500);
154
155
156 // aLayout.put(cLayout2,center);
157 // vv2.repaint();
158
159 // for(EntityVertex ver:subGraph2.getVertices()){
160
161 // ver.setPosition((Point2D.Double)aLayout.transform(ver));
162 // }
163
164 // //////////////////////
165
166 // aLayout.setDelegate(spLayout2);
167 // KKLayout<EntityVertex,EntityEdge> cLayout = new KKLayout<EntityVertex,EntityEdge>(subGraph);
168 // cLayout.setInitializer(aLayout);
169 // cLayout.setSize(new Dimension(300,300));
170 // Point2D.Double center2 = new Point2D.Double(600,200);
171
172
173 // aLayout.put(cLayout,center2);
174 // vv2.repaint();
175
176 // for(EntityVertex ver:subGraph.getVertices()){
177 // System.out.println(aLayout.transform(ver));
178 // ver.setPosition((Point2D.Double)aLayout.transform(ver));
179 // }
180
181 // SparseGraph<DefaultEntityVertex,DefaultEntityEdge> wholeGraph = new SparseGraph();
182 // for(DefaultEntityVertex dev : vertexArray)
183 // wholeGraph.addVertex(dev);
184
185 // for(DefaultEntityVertex dev : vertexArray2)
186 // wholeGraph.addVertex(dev);
187
188 // Transformer<EntityVertex,Point2D> tr = new Transformer<EntityVertex,Point2D>(){
189 // public Point2D.Double transform(EntityVertex vertex){
190 // return vertex.getPosition();
191 // }
192
193 // };
194
195 // StaticLayout stLayout = new StaticLayout(wholeGraph,tr);
196 // BasicVisualizationServer vv3 = new BasicVisualizationServer(stLayout);
197 // vv3.setPreferredSize(new Dimension(1000,1000)); //Sets the viewing area size
198 // JFrame frame = new JFrame("Simple Graph View");
199 // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
200 // frame.getContentPane().add(vv3);
201 // frame.pack();
202 // frame.setVisible(true);
203
204
205
206
207 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
208
209
210
211
212
213
214
215
216 File[] files;
217 Vector<IMolecule> molvec = new Vector<IMolecule>();
218 MolwindServerConfiguration config =MolwindServerConfiguration.getInstance(System.getProperty("user.dir")+"/../molwind-server/src/main/resources/molwind-config.xml");
219 String[] result = config.getWorldNames();
220 files = new File[result.length];
221 int i = 0;
222 for(String s:result){
223 files[i]=new File(s);
224 i++;
225 }
226
227
228 try{
229
230 SubstructureResolver sr = new SubstructureResolver("Mother","Index");
231 SDFileIterator sdfi= new SDFileIterator(files,sr);
232
233
234 sdfi.setFileReader("asinex-molwind-demo.sdf");
235
236 DefaultEntityGraph deg = sdfi.getDefaultEntityGraph();
237 ChemicalTopologyManager chtm = new ChemicalTopologyManager();
238 chtm.setRelationshipResolver(sr);
239 System.out.println("EntityCount: " + deg.getGraph().getVertexCount());
240 System.out.println("CALCULATEPOSITIONS");
241 chtm.calculatePositions();
242 System.out.println("CALCULATEPOSITIONS END");
243
244 // SparseGraph<EntityVertex,EntityEdge> gr = deg.getGraph();
245
246 // Iterator it = gr.getVertices().iterator();
247 // DefaultEntityVertex vertex = (DefaultEntityVertex)it.next();
248 // ChemicalEntity ent =(ChemicalEntity) vertex.getEntity();
249 // IMolecule molecule = ent.getMolecule();
250 // BufferedImage image = ent.getDrawing();
251 // image.createGraphics();
252 // Graphics2D graphic = (Graphics2D)image.getGraphics();
253
254 // ImageIcon icon = new ImageIcon(image);
255 // JLabel label = new JLabel(icon);
256
257
258 // JFrame frame = new JFrame("TESTE");
259
260 // frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
261 // frame.getContentPane().add(label);
262 // frame.pack();
263 // frame.setVisible(true);
264
265 // //Vector<EntityVertex> vec2 = deg.getLayer(0);
266
267
268
269 // deg.viewGraph2(2000);
270
271
272
273
274 }catch (IOException e){
275 e.printStackTrace();
276 }
277
278
279
280
281
282 }
283
284 }