use of org.gephi.graph.api.Edge in project gephi by gephi.
the class GraphDistanceNGTest method testSpecial2DirectedGraphRadius.
@Test
public void testSpecial2DirectedGraphRadius() {
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");
Node node5 = graphModel.factory().newNode("4");
directedGraph.addNode(node1);
directedGraph.addNode(node2);
directedGraph.addNode(node3);
directedGraph.addNode(node4);
directedGraph.addNode(node5);
Edge edge12 = graphModel.factory().newEdge(node1, node2);
Edge edge14 = graphModel.factory().newEdge(node1, node4);
Edge edge23 = graphModel.factory().newEdge(node2, node3);
Edge edge25 = graphModel.factory().newEdge(node2, node5);
Edge edge35 = graphModel.factory().newEdge(node3, node5);
Edge edge43 = graphModel.factory().newEdge(node4, node3);
Edge edge51 = graphModel.factory().newEdge(node5, node1);
Edge edge54 = graphModel.factory().newEdge(node5, node4);
directedGraph.addEdge(edge12);
directedGraph.addEdge(edge14);
directedGraph.addEdge(edge23);
directedGraph.addEdge(edge25);
directedGraph.addEdge(edge35);
directedGraph.addEdge(edge43);
directedGraph.addEdge(edge51);
directedGraph.addEdge(edge54);
GraphDistance d = new GraphDistance();
d.initializeStartValues();
UndirectedGraph undirectedGraph = graphModel.getUndirectedGraph();
HashMap<Node, Integer> indicies = d.createIndiciesMap(undirectedGraph);
d.calculateDistanceMetrics(graphModel.getGraph(), indicies, true, false);
double radius = d.getRadius();
assertEquals(radius, 2.0, TOLERANCE);
}
use of org.gephi.graph.api.Edge in project gephi by gephi.
the class ExporterPajek method exportData.
private void exportData(Graph graph) throws Exception {
int max = graph.getNodeCount(), i = 1;
HashMap<String, Integer> idx = new HashMap<>(3 * max / 2 + 1);
Progress.start(progressTicket, max);
writer.append("*Vertices " + max + "\n");
NodeIterable nodeIterable = graph.getNodes();
for (Node node : nodeIterable) {
writer.append(Integer.toString(i));
writer.append(" \"" + node.getLabel() + "\"");
if (exportPosition) {
writer.append(" " + node.x() + " " + node.y() + " " + node.z());
}
writer.append("\n");
// assigns Ids from the interval [1..max]
idx.put(node.getId().toString(), i++);
if (cancel) {
nodeIterable.doBreak();
return;
}
}
if (graph.isUndirected()) {
writer.append("*Edges\n");
} else {
writer.append("*Arcs\n");
}
EdgeIterable edgeIterable = graph.getEdges();
for (Edge edge : edgeIterable) {
if (cancel) {
edgeIterable.doBreak();
return;
}
writer.append(Integer.toString(idx.get(edge.getSource().getId().toString())) + " ");
writer.append(Integer.toString(idx.get(edge.getTarget().getId().toString())));
if (exportEdgeWeight) {
writer.append(" " + edge.getWeight());
}
writer.append("\n");
Progress.progress(progressTicket);
}
Progress.finish(progressTicket);
}
use of org.gephi.graph.api.Edge in project gephi by gephi.
the class LegacyAttributeRowsPersistenceProvider method readRows.
public void readRows(XMLStreamReader reader, GraphModel graphModel, LegacyMapHelper mapHelper) throws XMLStreamException {
Graph graph = graphModel.getGraph();
boolean end = false;
while (reader.hasNext() && !end) {
int type = reader.next();
switch(type) {
case XMLStreamReader.START_ELEMENT:
String name = reader.getLocalName();
if (ELEMENT_NODE_ROW.equalsIgnoreCase(name)) {
String id = reader.getAttributeValue(null, "for");
Node node = graph.getNode(id);
readRow(reader, node, graphModel.getNodeTable(), mapHelper);
} else if (ELEMENT_EDGE_ROW.equalsIgnoreCase(name)) {
String id = reader.getAttributeValue(null, "for");
Edge edge = graph.getEdge(id);
readRow(reader, edge, graphModel.getEdgeTable(), mapHelper);
}
break;
case XMLStreamReader.END_ELEMENT:
if (ELEMENT_ROWS.equalsIgnoreCase(reader.getLocalName())) {
end = true;
}
break;
}
}
}
use of org.gephi.graph.api.Edge in project gephi by gephi.
the class ClusteringCoefficient method createNeighbourTable.
private HashMap<Node, EdgeWrapper> createNeighbourTable(Graph graph, Node node, HashMap<Node, Integer> indicies, ArrayWrapper[] networks, boolean directed) {
HashMap<Node, EdgeWrapper> neighborTable = new HashMap<>();
if (!directed) {
for (Edge edge : graph.getEdges(node)) {
Node neighbor = graph.getOpposite(node, edge);
neighborTable.put(neighbor, new EdgeWrapper(1, networks[indicies.get(neighbor)]));
}
} else {
for (Node neighbor : ((DirectedGraph) graph).getPredecessors(node)) {
neighborTable.put(neighbor, new EdgeWrapper(1, networks[indicies.get(neighbor)]));
}
for (Edge out : ((DirectedGraph) graph).getOutEdges(node)) {
Node neighbor = out.getTarget();
EdgeWrapper ew = neighborTable.get(neighbor);
if (ew == null) {
neighborTable.put(neighbor, new EdgeWrapper(1, network[indicies.get(neighbor)]));
} else {
ew.count++;
}
}
}
return neighborTable;
}
use of org.gephi.graph.api.Edge in project gephi by gephi.
the class GraphElementsControllerImpl method buildEdge.
private Edge buildEdge(Graph graph, String id, Node source, Node target, boolean directed, Object typeLabel) {
int type;
if (typeLabel == null) {
type = graph.getModel().getEdgeType(null);
} else {
// Create the type if missing:
type = graph.getModel().addEdgeType(typeLabel);
}
Edge newEdge;
if (id != null) {
newEdge = graph.getModel().factory().newEdge(id, source, target, type, DEFAULT_EDGE_WEIGHT, directed);
} else {
newEdge = graph.getModel().factory().newEdge(source, target, type, DEFAULT_EDGE_WEIGHT, directed);
}
return newEdge;
}
Aggregations