View Javadoc

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 }