use of org.gephi.graph.api.Node in project gephi by gephi.
the class Modularity method saveValues.
private void saveValues(int[] struct, Graph graph, CommunityStructure theStructure) {
Table nodeTable = graph.getModel().getNodeTable();
Column modCol = nodeTable.getColumn(MODULARITY_CLASS);
if (modCol == null) {
modCol = nodeTable.addColumn(MODULARITY_CLASS, "Modularity Class", Integer.class, 0);
}
for (Node n : graph.getNodes()) {
int n_index = theStructure.map.get(n);
n.setAttribute(modCol, struct[n_index]);
}
}
use of org.gephi.graph.api.Node in project gephi by gephi.
the class PageRank method setInitialValues.
private void setInitialValues(Graph graph, double[] pagerankValues, double[] weights, boolean directed, boolean useWeights) {
int N = graph.getNodeCount();
int index = 0;
for (Node s : graph.getNodes()) {
pagerankValues[index] = 1.0f / N;
if (useWeights) {
double sum = 0;
EdgeIterable eIter;
if (directed) {
eIter = ((DirectedGraph) graph).getOutEdges(s);
} else {
eIter = ((UndirectedGraph) graph).getEdges(s);
}
for (Edge edge : eIter) {
sum += edge.getWeight();
}
weights[index] = sum;
}
index++;
}
}
use of org.gephi.graph.api.Node in project gephi by gephi.
the class DynamicDegree method loop.
@Override
public void loop(GraphView window, Interval interval) {
Graph graph = graphModel.getGraph(window);
DirectedGraph directedGraph = null;
if (isDirected) {
directedGraph = graphModel.getDirectedGraph(window);
}
TimeRepresentation tr = graphModel.getConfiguration().getTimeRepresentation();
long sum = 0;
for (Node n : graph.getNodes().toArray()) {
int degree = graph.getDegree(n);
if (!averageOnly) {
switch(tr) {
case INTERVAL:
n.setAttribute(dynamicDegreeColumn, degree, new Interval(interval.getLow(), interval.getLow() + tick));
break;
case TIMESTAMP:
n.setAttribute(dynamicDegreeColumn, degree, interval.getLow());
n.setAttribute(dynamicDegreeColumn, degree, interval.getHigh());
break;
}
if (isDirected) {
int indegree = directedGraph.getInDegree(n);
int outdegree = directedGraph.getOutDegree(n);
switch(tr) {
case INTERVAL:
n.setAttribute(dynamicInDegreeColumn, indegree, new Interval(interval.getLow(), interval.getLow() + tick));
n.setAttribute(dynamicOutDegreeColumn, outdegree, new Interval(interval.getLow(), interval.getLow() + tick));
break;
case TIMESTAMP:
n.setAttribute(dynamicInDegreeColumn, indegree, interval.getLow());
n.setAttribute(dynamicInDegreeColumn, indegree, interval.getHigh());
n.setAttribute(dynamicOutDegreeColumn, outdegree, interval.getLow());
n.setAttribute(dynamicOutDegreeColumn, outdegree, interval.getHigh());
break;
}
}
}
sum += degree;
if (cancel) {
break;
}
}
double avg = sum / (double) graph.getNodeCount();
averages.put(interval.getLow(), avg);
averages.put(interval.getHigh(), avg);
graphModel.getGraphVisible().setAttribute(DYNAMIC_AVGDEGREE, avg, interval.getLow());
graphModel.getGraphVisible().setAttribute(DYNAMIC_AVGDEGREE, avg, interval.getHigh());
}
use of org.gephi.graph.api.Node in project gephi by gephi.
the class ClusteringCoefficientNGTest method testTriangleNonCompleteDirectedGraphClusteringCoefficient.
@Test
public void testTriangleNonCompleteDirectedGraphClusteringCoefficient() {
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");
directedGraph.addNode(node1);
directedGraph.addNode(node2);
directedGraph.addNode(node3);
Edge edge12 = graphModel.factory().newEdge(node1, node2);
Edge edge21 = graphModel.factory().newEdge(node2, node1);
Edge edge23 = graphModel.factory().newEdge(node2, node3);
Edge edge32 = graphModel.factory().newEdge(node3, node2);
Edge edge13 = graphModel.factory().newEdge(node1, node3);
directedGraph.addEdge(edge12);
directedGraph.addEdge(edge21);
directedGraph.addEdge(edge23);
directedGraph.addEdge(edge32);
directedGraph.addEdge(edge13);
DirectedGraph graph = graphModel.getDirectedGraph();
ClusteringCoefficient cc = new ClusteringCoefficient();
ArrayWrapper[] network = new ArrayWrapper[3];
int[] triangles = new int[3];
double[] nodeClustering = new double[3];
HashMap<String, Double> results = cc.computeClusteringCoefficient(graph, network, triangles, nodeClustering, true);
double avClusteringCoefficient = results.get("clusteringCoefficient");
double res = 0.833;
double diff = 0.01;
assertTrue(Math.abs(avClusteringCoefficient - res) < diff);
}
use of org.gephi.graph.api.Node in project gephi by gephi.
the class ClusteringCoefficientNGTest method testSpecial3UndirectedGraphClusteringCoefficient.
@Test
public void testSpecial3UndirectedGraphClusteringCoefficient() {
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");
undirectedGraph.addNode(node1);
undirectedGraph.addNode(node2);
undirectedGraph.addNode(node3);
undirectedGraph.addNode(node4);
undirectedGraph.addNode(node5);
undirectedGraph.addNode(node6);
Edge edge12 = graphModel.factory().newEdge(node1, node2, false);
Edge edge23 = graphModel.factory().newEdge(node2, node3, false);
Edge edge31 = graphModel.factory().newEdge(node3, node1, false);
Edge edge14 = graphModel.factory().newEdge(node1, node4, false);
Edge edge25 = graphModel.factory().newEdge(node2, node5, false);
Edge edge36 = graphModel.factory().newEdge(node3, node6, false);
undirectedGraph.addEdge(edge12);
undirectedGraph.addEdge(edge23);
undirectedGraph.addEdge(edge31);
undirectedGraph.addEdge(edge14);
undirectedGraph.addEdge(edge25);
undirectedGraph.addEdge(edge36);
Graph graph = graphModel.getGraph();
ClusteringCoefficient cc = new ClusteringCoefficient();
ArrayWrapper[] network = new ArrayWrapper[6];
int[] triangles = new int[6];
double[] nodeClustering = new double[6];
HashMap<String, Double> results = cc.computeClusteringCoefficient(graph, network, triangles, nodeClustering, false);
double cl1 = nodeClustering[0];
double res1 = 0.333;
double diff = 0.01;
assertTrue(Math.abs(cl1 - res1) < diff);
}
Aggregations