Search in sources :

Example 11 with Edge

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

the class ConnectedComponents method computeWeeklyConnectedComponents.

public LinkedList<LinkedList<Node>> computeWeeklyConnectedComponents(Graph graph, HashMap<Node, Integer> indicies) {
    int N = graph.getNodeCount();
    //Keep track of which nodes have been seen
    int[] color = new int[N];
    Progress.start(progress, N);
    int seenCount = 0;
    LinkedList<LinkedList<Node>> components = new LinkedList<>();
    while (seenCount < N) {
        //The search Q
        LinkedList<Node> Q = new LinkedList<>();
        //The component-list
        LinkedList<Node> component = new LinkedList<>();
        //Seed the seach Q
        NodeIterable iter = graph.getNodes();
        for (Node first : iter) {
            if (color[indicies.get(first)] == 0) {
                Q.add(first);
                iter.doBreak();
                break;
            }
        }
        //While there are more nodes to search
        while (!Q.isEmpty()) {
            if (isCanceled) {
                return new LinkedList<>();
            }
            //Get the next Node and add it to the component list
            Node u = Q.removeFirst();
            component.add(u);
            //Iterate over all of u's neighbors
            EdgeIterable edgeIter = graph.getEdges(u);
            //For each neighbor
            for (Edge edge : edgeIter) {
                Node reachable = graph.getOpposite(u, edge);
                int id = indicies.get(reachable);
                //If this neighbor is unvisited
                if (color[id] == 0) {
                    color[id] = 1;
                    //Add it to the search Q
                    Q.addLast(reachable);
                    //Mark it as used 
                    Progress.progress(progress, seenCount);
                }
            }
            color[indicies.get(u)] = 2;
            seenCount++;
        }
        components.add(component);
    }
    return components;
}
Also used : NodeIterable(org.gephi.graph.api.NodeIterable) EdgeIterable(org.gephi.graph.api.EdgeIterable) Node(org.gephi.graph.api.Node) Edge(org.gephi.graph.api.Edge) LinkedList(java.util.LinkedList)

Example 12 with Edge

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

the class EigenvectorCentrality method computeMaxValueAndTempValues.

private double computeMaxValueAndTempValues(Graph graph, HashMap<Integer, Node> indicies, HashMap<Node, Integer> invIndicies, double[] tempValues, double[] centralityValues, boolean directed) {
    double max = 0.;
    int N = graph.getNodeCount();
    for (int i = 0; i < N; i++) {
        Node u = indicies.get(i);
        EdgeIterable iter;
        if (directed) {
            iter = ((DirectedGraph) graph).getInEdges(u);
        } else {
            iter = graph.getEdges(u);
        }
        for (Edge e : iter) {
            Node v = graph.getOpposite(u, e);
            Integer id = invIndicies.get(v);
            tempValues[i] += centralityValues[id];
        }
        max = Math.max(max, tempValues[i]);
        if (isCanceled) {
            return max;
        }
    }
    return max;
}
Also used : EdgeIterable(org.gephi.graph.api.EdgeIterable) Node(org.gephi.graph.api.Node) Edge(org.gephi.graph.api.Edge)

Example 13 with Edge

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

the class ClusteringCoefficientNGTest method testSpecial2DirectedGraphClusteringCoefficient.

@Test
public void testSpecial2DirectedGraphClusteringCoefficient() {
    GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getGraphModel();
    DirectedGraph directedGraph = graphModel.getDirectedGraph();
    Node node1 = graphModel.factory().newNode("0");
    Node node2 = graphModel.factory().newNode("1");
    Node node3 = graphModel.factory().newNode("2");
    Node node4 = graphModel.factory().newNode("3");
    directedGraph.addNode(node1);
    directedGraph.addNode(node2);
    directedGraph.addNode(node3);
    directedGraph.addNode(node4);
    Edge edge21 = graphModel.factory().newEdge(node2, node1);
    Edge edge24 = graphModel.factory().newEdge(node2, node4);
    Edge edge31 = graphModel.factory().newEdge(node3, node1);
    Edge edge32 = graphModel.factory().newEdge(node3, node2);
    Edge edge43 = graphModel.factory().newEdge(node4, node3);
    directedGraph.addEdge(edge21);
    directedGraph.addEdge(edge24);
    directedGraph.addEdge(edge31);
    directedGraph.addEdge(edge32);
    directedGraph.addEdge(edge43);
    DirectedGraph graph = graphModel.getDirectedGraph();
    ClusteringCoefficient cc = new ClusteringCoefficient();
    ArrayWrapper[] network = new ArrayWrapper[4];
    int[] triangles = new int[4];
    double[] nodeClustering = new double[4];
    HashMap<String, Double> results = cc.computeClusteringCoefficient(graph, network, triangles, nodeClustering, true);
    double avClusteringCoefficient = results.get("clusteringCoefficient");
    double res = 0.4167;
    double diff = 0.01;
    assertTrue(Math.abs(avClusteringCoefficient - res) < diff);
}
Also used : Node(org.gephi.graph.api.Node) DirectedGraph(org.gephi.graph.api.DirectedGraph) GraphModel(org.gephi.graph.api.GraphModel) Edge(org.gephi.graph.api.Edge) GraphController(org.gephi.graph.api.GraphController) Test(org.testng.annotations.Test)

Example 14 with Edge

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

the class GraphDistanceNGTest method testSpecial2UndirectedGraphCloseness.

@Test
public void testSpecial2UndirectedGraphCloseness() {
    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");
    undirectedGraph.addNode(node1);
    undirectedGraph.addNode(node2);
    undirectedGraph.addNode(node3);
    undirectedGraph.addNode(node4);
    undirectedGraph.addNode(node5);
    undirectedGraph.addNode(node6);
    undirectedGraph.addNode(node7);
    undirectedGraph.addNode(node8);
    Edge edge12 = graphModel.factory().newEdge(node1, node2, false);
    Edge edge13 = graphModel.factory().newEdge(node1, node3, false);
    Edge edge34 = graphModel.factory().newEdge(node3, node4, false);
    Edge edge24 = graphModel.factory().newEdge(node2, node4, false);
    Edge edge56 = graphModel.factory().newEdge(node5, node6, false);
    Edge edge67 = graphModel.factory().newEdge(node6, node7, false);
    Edge edge78 = graphModel.factory().newEdge(node7, node8, false);
    Edge edge85 = graphModel.factory().newEdge(node8, node5, false);
    Edge edge45 = graphModel.factory().newEdge(node4, node5, false);
    undirectedGraph.addEdge(edge12);
    undirectedGraph.addEdge(edge13);
    undirectedGraph.addEdge(edge34);
    undirectedGraph.addEdge(edge24);
    undirectedGraph.addEdge(edge56);
    undirectedGraph.addEdge(edge67);
    undirectedGraph.addEdge(edge78);
    undirectedGraph.addEdge(edge85);
    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[] closeness = metricsMap.get(GraphDistance.CLOSENESS);
    int index2 = indicies.get(node2);
    double res = 1.0 / 2.2857;
    assertEquals(closeness[index2], res, 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 15 with Edge

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

the class GraphDistanceNGTest method testSpecial2UndirectedGraphDiameter.

@Test
public void testSpecial2UndirectedGraphDiameter() {
    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");
    undirectedGraph.addNode(node1);
    undirectedGraph.addNode(node2);
    undirectedGraph.addNode(node3);
    undirectedGraph.addNode(node4);
    undirectedGraph.addNode(node5);
    undirectedGraph.addNode(node6);
    undirectedGraph.addNode(node7);
    undirectedGraph.addNode(node8);
    Edge edge12 = graphModel.factory().newEdge(node1, node2, false);
    Edge edge23 = graphModel.factory().newEdge(node2, node3, false);
    Edge edge34 = graphModel.factory().newEdge(node3, node4, false);
    Edge edge45 = graphModel.factory().newEdge(node4, node5, false);
    Edge edge56 = graphModel.factory().newEdge(node5, node6, false);
    Edge edge67 = graphModel.factory().newEdge(node6, node7, false);
    Edge edge78 = graphModel.factory().newEdge(node7, node8, false);
    Edge edge81 = graphModel.factory().newEdge(node8, node1, false);
    Edge edge14 = graphModel.factory().newEdge(node1, node4, false);
    Edge edge85 = graphModel.factory().newEdge(node8, node5, false);
    undirectedGraph.addEdge(edge12);
    undirectedGraph.addEdge(edge23);
    undirectedGraph.addEdge(edge34);
    undirectedGraph.addEdge(edge45);
    undirectedGraph.addEdge(edge56);
    undirectedGraph.addEdge(edge67);
    undirectedGraph.addEdge(edge78);
    undirectedGraph.addEdge(edge81);
    undirectedGraph.addEdge(edge14);
    undirectedGraph.addEdge(edge85);
    GraphDistance d = new GraphDistance();
    d.initializeStartValues();
    UndirectedGraph hierarchicalUndirectedGraph = graphModel.getUndirectedGraph();
    HashMap<Node, Integer> indicies = d.createIndiciesMap(hierarchicalUndirectedGraph);
    d.calculateDistanceMetrics(graphModel.getGraph(), indicies, false, false);
    double diameter = d.getDiameter();
    assertEquals(diameter, 4.0, TOLERANCE);
}
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) Test(org.testng.annotations.Test)

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