// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.extensions.io; import Jama.Matrix; import graphtea.graph.graph.Edge; import graphtea.graph.graph.GraphModel; import graphtea.graph.graph.Vertex; import graphtea.plugins.graphgenerator.core.PositionGenerators; import graphtea.plugins.main.saveload.SaveLoadPluginMethods; import graphtea.plugins.main.saveload.core.GraphIOException; import graphtea.plugins.main.saveload.core.extension.GraphReaderExtension; import java.awt.*; import java.io.File; import java.io.IOException; /** * @author Ali ROstami */ public class LoadMtx implements GraphReaderExtension { public boolean accepts(File file) { return SaveLoadPluginMethods.getExtension(file).equals(getExtension()); } public String getName() { return "Mtx format"; } public String getExtension() { return "mtx"; } public GraphModel read(File file) throws GraphIOException { try { Matrix mm = MM.loadMatrixFromSPARSE(file); int rows = mm.getRowDimension(); int cols = mm.getColumnDimension(); GraphModel g = new GraphModel(false); for(int i=0;i<rows;i++) { g.addVertex(new Vertex()); } for(int i=0;i<rows;i++) { for(int j=0;j<cols;j++) { if(mm.get(i,j) > 0) { g.addEdge(new Edge( g.getVertex(i), g.getVertex(j) )); } } } Point pp[] = PositionGenerators.circle(420, 300, 250, g.numOfVertices()); int tmpcnt = 0; for (Vertex v : g) { v.setLocation(pp[tmpcnt]); tmpcnt++; } return g; } catch (IOException e) { e.printStackTrace(); } return null; } public String getDescription() { return "GraphTea File Format"; } }