Search in sources :

Example 61 with Edge

use of org.gephi.graph.api.Edge in project gephi by gephi.

the class ConnectedComponentsNGTest method testSpecial2UndirectedGraphConnectedComponents.

@Test
public void testSpecial2UndirectedGraphConnectedComponents() {
    GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getGraphModel();
    UndirectedGraph undirectedGraph = graphModel.getUndirectedGraph();
    Node node1 = graphModel.factory().newNode("0");
    Node node2 = graphModel.factory().newNode("1");
    Node node3 = graphModel.factory().newNode("2");
    Node node4 = graphModel.factory().newNode("3");
    Node node5 = graphModel.factory().newNode("4");
    Node node6 = graphModel.factory().newNode("5");
    Node node7 = graphModel.factory().newNode("6");
    Node node8 = graphModel.factory().newNode("7");
    Node node9 = graphModel.factory().newNode("8");
    undirectedGraph.addNode(node1);
    undirectedGraph.addNode(node2);
    undirectedGraph.addNode(node3);
    undirectedGraph.addNode(node4);
    undirectedGraph.addNode(node5);
    undirectedGraph.addNode(node6);
    undirectedGraph.addNode(node7);
    undirectedGraph.addNode(node8);
    undirectedGraph.addNode(node9);
    Edge edge12 = graphModel.factory().newEdge(node1, node2, false);
    Edge edge23 = graphModel.factory().newEdge(node2, node3, false);
    Edge edge45 = graphModel.factory().newEdge(node4, node5, false);
    Edge edge56 = graphModel.factory().newEdge(node5, node6, false);
    Edge edge64 = graphModel.factory().newEdge(node6, node4, false);
    Edge edge75 = graphModel.factory().newEdge(node7, node5, false);
    undirectedGraph.addEdge(edge12);
    undirectedGraph.addEdge(edge23);
    undirectedGraph.addEdge(edge45);
    undirectedGraph.addEdge(edge56);
    undirectedGraph.addEdge(edge64);
    undirectedGraph.addEdge(edge75);
    UndirectedGraph graph = graphModel.getUndirectedGraph();
    ConnectedComponents c = new ConnectedComponents();
    HashMap<Node, Integer> indices = c.createIndicesMap(graph);
    LinkedList<LinkedList<Node>> components = c.computeWeaklyConnectedComponents(graph, indices);
    int componentNumber3 = c.getComponentNumber(components, node3);
    int componentNumber4 = c.getComponentNumber(components, node4);
    int componentNumber7 = c.getComponentNumber(components, node7);
    int componentNumber8 = c.getComponentNumber(components, node8);
    assertEquals(components.size(), 4);
    assertEquals(componentNumber4, componentNumber7);
    assertNotEquals(componentNumber3, componentNumber8);
}
Also used : GraphModel(org.gephi.graph.api.GraphModel) UndirectedGraph(org.gephi.graph.api.UndirectedGraph) Node(org.gephi.graph.api.Node) Edge(org.gephi.graph.api.Edge) GraphController(org.gephi.graph.api.GraphController) LinkedList(java.util.LinkedList) Test(org.testng.annotations.Test)

Example 62 with Edge

use of org.gephi.graph.api.Edge in project gephi by gephi.

the class GraphDistanceNGTest method testConnectedComponentsUndirectedGraphHarmonicCloseness.

@Test
public void testConnectedComponentsUndirectedGraphHarmonicCloseness() {
    // expected that values are computed separatly for every connected component
    GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getGraphModel();
    UndirectedGraph undirectedGraph = graphModel.getUndirectedGraph();
    Node node1 = graphModel.factory().newNode("0");
    Node node2 = graphModel.factory().newNode("1");
    Node node3 = graphModel.factory().newNode("2");
    Node node4 = graphModel.factory().newNode("3");
    Node node5 = graphModel.factory().newNode("4");
    undirectedGraph.addNode(node1);
    undirectedGraph.addNode(node2);
    undirectedGraph.addNode(node3);
    undirectedGraph.addNode(node4);
    undirectedGraph.addNode(node5);
    Edge edge12 = graphModel.factory().newEdge(node1, node2, false);
    Edge edge23 = graphModel.factory().newEdge(node2, node3, false);
    Edge edge45 = graphModel.factory().newEdge(node4, node5, false);
    undirectedGraph.addEdge(edge12);
    undirectedGraph.addEdge(edge23);
    undirectedGraph.addEdge(edge45);
    GraphDistance d = new GraphDistance();
    d.initializeStartValues();
    UndirectedGraph hierarchicalUndirectedGraph = graphModel.getUndirectedGraph();
    HashMap<Node, Integer> indicies = d.createIndiciesMap(hierarchicalUndirectedGraph);
    HashMap<String, double[]> metricsMap = (HashMap) d.calculateDistanceMetrics(graphModel.getGraph(), indicies, false, false);
    double[] harmonic = metricsMap.get(GraphDistance.HARMONIC_CLOSENESS);
    int index1 = indicies.get(node1);
    int index4 = indicies.get(node4);
    assertEquals(harmonic[index1], (1.0 + 1.0 / 2.0) / 2.0, TOLERANCE);
    assertEquals(harmonic[index4], 1.0, TOLERANCE);
}
Also used : HashMap(java.util.HashMap) Node(org.gephi.graph.api.Node) GraphModel(org.gephi.graph.api.GraphModel) UndirectedGraph(org.gephi.graph.api.UndirectedGraph) Edge(org.gephi.graph.api.Edge) GraphController(org.gephi.graph.api.GraphController) Test(org.testng.annotations.Test)

Example 63 with Edge

use of org.gephi.graph.api.Edge in project gephi-plugins-bootcamp by gephi.

the class RemoveSelfLoopsAction method actionPerformed.

@Override
public void actionPerformed(ActionEvent e) {
    // Get the current graph model
    GraphController gc = Lookup.getDefault().lookup(GraphController.class);
    GraphModel graphModel = gc.getGraphModel();
    if (graphModel != null) {
        // Remove self loops
        int removed = 0;
        Graph graph = graphModel.getGraph();
        graph.writeLock();
        for (Edge edge : graph.getEdges().toArray()) {
            if (edge.isSelfLoop()) {
                graph.removeEdge(edge);
                removed++;
            }
        }
        graph.writeUnlock();
        // Notification message
        NotifyDescriptor d = new NotifyDescriptor.Message(removed + " self-loop have been removed", NotifyDescriptor.INFORMATION_MESSAGE);
        DialogDisplayer.getDefault().notify(d);
    } else {
        // Error message
        NotifyDescriptor d = new NotifyDescriptor.Message("No active workspace", NotifyDescriptor.ERROR_MESSAGE);
        DialogDisplayer.getDefault().notify(d);
    }
}
Also used : NotifyDescriptor(org.openide.NotifyDescriptor) Graph(org.gephi.graph.api.Graph) GraphModel(org.gephi.graph.api.GraphModel) Edge(org.gephi.graph.api.Edge) GraphController(org.gephi.graph.api.GraphController)

Example 64 with Edge

use of org.gephi.graph.api.Edge in project gephi-plugins-bootcamp by gephi.

the class AddNodesTool method getListeners.

@Override
public ToolEventListener[] getListeners() {
    return new ToolEventListener[] { new MouseClickEventListener() {

        @Override
        public void mouseClick(int[] positionViewport, float[] position3d) {
            // Get current graph
            GraphController gc = Lookup.getDefault().lookup(GraphController.class);
            Graph graph = gc.getGraphModel().getGraph();
            GraphFactory factory = gc.getGraphModel().factory();
            // Add node
            Node node = factory.newNode();
            node.setX(position3d[0]);
            node.setY(position3d[1]);
            node.setSize(10f);
            graph.addNode(node);
        }
    }, new NodeClickEventListener() {

        @Override
        public void clickNodes(Node[] nodes) {
            // Get mouse position
            float[] position3d = VizController.getInstance().getGraphIO().getMousePosition3d();
            // Get current graph
            GraphController gc = Lookup.getDefault().lookup(GraphController.class);
            Graph graph = gc.getGraphModel().getGraph();
            GraphFactory factory = gc.getGraphModel().factory();
            // Add node
            Node node = factory.newNode();
            node.setX(position3d[0]);
            node.setY(position3d[1]);
            node.setSize(10f);
            graph.addNode(node);
            // Add edges with the clicked nodes
            for (Node n : nodes) {
                Edge edge = factory.newEdge(node, n);
                graph.addEdge(edge);
            }
        }
    } };
}
Also used : MouseClickEventListener(org.gephi.tools.spi.MouseClickEventListener) GraphFactory(org.gephi.graph.api.GraphFactory) ToolEventListener(org.gephi.tools.spi.ToolEventListener) Graph(org.gephi.graph.api.Graph) Node(org.gephi.graph.api.Node) NodeClickEventListener(org.gephi.tools.spi.NodeClickEventListener) Edge(org.gephi.graph.api.Edge) GraphController(org.gephi.graph.api.GraphController)

Example 65 with Edge

use of org.gephi.graph.api.Edge in project gephi-plugins-bootcamp by gephi.

the class SQLiteDatabaseExporter method execute.

@Override
public boolean execute() {
    Connection connection = null;
    try {
        if (path.getParentFile().exists()) {
            // Create connection
            SQLiteDriver sQLiteDriver = Lookup.getDefault().lookup(SQLiteDriver.class);
            String connectionUrl = SQLUtils.getUrl(sQLiteDriver, path.getAbsolutePath(), 0, "");
            connection = sQLiteDriver.getConnection(connectionUrl, "", "");
            // Create statement and create nodes and egdes table
            Statement statement = connection.createStatement();
            // set timeout to 30 sec.
            statement.setQueryTimeout(30);
            statement.executeUpdate("drop table if exists nodes");
            statement.executeUpdate("drop table if exists edges");
            statement.executeUpdate("create table nodes (id string, label string)");
            statement.executeUpdate("create table edges (source string, target string, weight real)");
            // Get the current graph in the defined workspace
            GraphController graphController = Lookup.getDefault().lookup(GraphController.class);
            GraphModel graphModel = graphController.getGraphModel(workspace);
            Graph graph = graphModel.getGraphVisible();
            // Count the number of tasks (nodes + edges) and start the progress
            int tasks = graph.getNodeCount() + graph.getEdgeCount();
            Progress.start(progress, tasks);
            // Export nodes. Progress is incremented at each step.
            for (Node n : graph.getNodes().toArray()) {
                String id = n.getId().toString();
                String label = n.getLabel();
                statement.executeUpdate("insert into nodes values('" + id + "', '" + label + "')");
                if (cancel) {
                    return false;
                }
                Progress.progress(progress);
            }
            // Export edges. Progress is incremented at each step.
            for (Edge e : graph.getEdges().toArray()) {
                String sourceId = e.getSource().getId().toString();
                String targetId = e.getTarget().getId().toString();
                String weight = String.valueOf(e.getWeight());
                statement.executeUpdate("insert into edges values('" + sourceId + "', '" + targetId + "', '" + weight + "')");
                if (cancel) {
                    return false;
                }
                Progress.progress(progress);
            }
            // Finish progress
            Progress.finish(progress);
            return true;
        } else {
            throw new FileNotFoundException(path.getAbsolutePath() + " does not exist");
        }
    } catch (Exception e) {
        throw new RuntimeException(e);
    } finally {
        try {
            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
            // connection close failed.
            System.err.println(e);
        }
    }
}
Also used : SQLException(java.sql.SQLException) Statement(java.sql.Statement) SQLiteDriver(org.gephi.io.database.drivers.SQLiteDriver) Node(org.gephi.graph.api.Node) Connection(java.sql.Connection) FileNotFoundException(java.io.FileNotFoundException) FileNotFoundException(java.io.FileNotFoundException) SQLException(java.sql.SQLException) Graph(org.gephi.graph.api.Graph) GraphModel(org.gephi.graph.api.GraphModel) Edge(org.gephi.graph.api.Edge) GraphController(org.gephi.graph.api.GraphController)

Aggregations

Edge (org.gephi.graph.api.Edge)151 Node (org.gephi.graph.api.Node)122 GraphModel (org.gephi.graph.api.GraphModel)84 GraphController (org.gephi.graph.api.GraphController)79 Test (org.testng.annotations.Test)67 UndirectedGraph (org.gephi.graph.api.UndirectedGraph)46 DirectedGraph (org.gephi.graph.api.DirectedGraph)44 Graph (org.gephi.graph.api.Graph)31 HashMap (java.util.HashMap)26 EdgeIterable (org.gephi.graph.api.EdgeIterable)18 LinkedList (java.util.LinkedList)13 Column (org.gephi.graph.api.Column)11 NodeIterable (org.gephi.graph.api.NodeIterable)9 ArrayList (java.util.ArrayList)8 Table (org.gephi.graph.api.Table)6 GraphView (org.gephi.graph.api.GraphView)5 HashSet (java.util.HashSet)4 Interval (org.gephi.graph.api.Interval)4 TimeFormat (org.gephi.graph.api.TimeFormat)4 DateTimeZone (org.joda.time.DateTimeZone)4