Search in sources :

Example 46 with Edge

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

the class ImportNGTest method checkWeightsSummed.

private void checkWeightsSummed(boolean multipleContainers) {
    Graph graph = processMergeWeightsTestGraph(multipleContainers);
    Assert.assertEquals(graph.getNodeCount(), 2);
    Assert.assertEquals(graph.getEdgeCount(), 3);
    Edge edge12 = graph.getEdge(graph.getNode("1"), graph.getNode("2"));
    Assert.assertNotNull(edge12);
    Assert.assertEquals(edge12.getWeight(), 6.2);
}
Also used : Graph(org.gephi.graph.api.Graph) Edge(org.gephi.graph.api.Edge)

Example 47 with Edge

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

the class ExporterSpreadsheet method exportData.

private void exportData(Graph graph) throws Exception {
    final CSVFormat format = CSVFormat.DEFAULT.withDelimiter(fieldDelimiter);
    try (CSVPrinter csvWriter = new CSVPrinter(writer, format)) {
        boolean isEdgeTable = tableToExport != ExportTable.NODES;
        Table table = isEdgeTable ? graph.getModel().getEdgeTable() : graph.getModel().getNodeTable();
        ElementIterable<? extends Element> rows;
        Object[] edgeLabels = graph.getModel().getEdgeTypeLabels();
        boolean includeEdgeKindColumn = false;
        for (Object edgeLabel : edgeLabels) {
            if (edgeLabel != null && !edgeLabel.toString().isEmpty()) {
                includeEdgeKindColumn = true;
            }
        }
        TimeFormat timeFormat = graph.getModel().getTimeFormat();
        DateTimeZone timeZone = graph.getModel().getTimeZone();
        List<Column> columns = new ArrayList<>();
        if (columnIdsToExport != null) {
            for (String columnId : columnIdsToExport) {
                Column column = table.getColumn(columnId);
                if (column != null) {
                    columns.add(column);
                }
            }
        } else {
            for (Column column : table) {
                columns.add(column);
            }
        }
        // Write column headers:
        if (isEdgeTable) {
            csvWriter.print("Source");
            csvWriter.print("Target");
            csvWriter.print("Type");
            if (includeEdgeKindColumn) {
                csvWriter.print("Kind");
            }
        }
        for (Column column : columns) {
            // Use the title only if it's the same as the id (case insensitive):
            String columnId = column.getId();
            String columnTitle = column.getTitle();
            String columnHeader = columnId.equalsIgnoreCase(columnTitle) ? columnTitle : columnId;
            csvWriter.print(columnHeader);
        }
        csvWriter.println();
        // Write rows:
        if (isEdgeTable) {
            rows = graph.getEdges();
        } else {
            rows = graph.getNodes();
        }
        for (Element row : rows) {
            if (isEdgeTable) {
                Edge edge = (Edge) row;
                csvWriter.print(edge.getSource().getId());
                csvWriter.print(edge.getTarget().getId());
                csvWriter.print(edge.isDirected() ? "Directed" : "Undirected");
                if (includeEdgeKindColumn) {
                    csvWriter.print(edge.getTypeLabel().toString());
                }
            }
            for (Column column : columns) {
                Object value = row.getAttribute(column);
                String text;
                if (value != null) {
                    if (value instanceof Number) {
                        text = NUMBER_FORMAT.format(value);
                    } else {
                        text = AttributeUtils.print(value, timeFormat, timeZone);
                    }
                } else {
                    text = "";
                }
                csvWriter.print(text);
            }
            csvWriter.println();
        }
    }
}
Also used : TimeFormat(org.gephi.graph.api.TimeFormat) Table(org.gephi.graph.api.Table) Element(org.gephi.graph.api.Element) ArrayList(java.util.ArrayList) DateTimeZone(org.joda.time.DateTimeZone) CSVPrinter(org.apache.commons.csv.CSVPrinter) Column(org.gephi.graph.api.Column) CSVFormat(org.apache.commons.csv.CSVFormat) Edge(org.gephi.graph.api.Edge)

Example 48 with Edge

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

the class FilterControllerImpl method exportToLabelVisible.

@Override
public void exportToLabelVisible(Query query) {
    Graph result;
    if (model.getCurrentQuery() == query) {
        GraphView view = model.getCurrentResult();
        if (view == null) {
            return;
        }
        result = model.getGraphModel().getGraph(view);
    } else {
        FilterProcessor processor = new FilterProcessor();
        result = (Graph) processor.process((AbstractQueryImpl) query, model.getGraphModel());
    }
    Graph fullGraph = model.getGraphModel().getGraph();
    fullGraph.writeLock();
    try {
        for (Node n : fullGraph.getNodes()) {
            boolean inView = result.contains(n);
            n.getTextProperties().setVisible(inView);
        }
        for (Edge e : fullGraph.getEdges()) {
            boolean inView = result.contains(e);
            e.getTextProperties().setVisible(inView);
        }
    } finally {
        fullGraph.writeUnlock();
        fullGraph.readUnlockAll();
    }
}
Also used : Graph(org.gephi.graph.api.Graph) Node(org.gephi.graph.api.Node) GraphView(org.gephi.graph.api.GraphView) Edge(org.gephi.graph.api.Edge)

Example 49 with Edge

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

the class ExporterCSV method writeEdge.

private void writeEdge(EdgeIterable edges, boolean writeSeparator) throws IOException {
    float weight = 0;
    boolean anyEdge = false;
    for (Edge edge : edges) {
        anyEdge = true;
        weight += edge.getWeight();
    }
    if (anyEdge) {
        if (edgeWeight) {
            writer.append(FORMAT.format(weight));
        } else {
            writer.append(FORMAT.format(1.0));
        }
    } else {
        if (writeZero) {
            writer.append("0");
        }
    }
    if (writeSeparator) {
        writer.append(SEPARATOR);
    }
}
Also used : Edge(org.gephi.graph.api.Edge)

Example 50 with Edge

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

the class ExporterCSV method exportData.

private void exportData(Graph graph) throws Exception {
    int max = graph.getNodeCount();
    Progress.start(progressTicket, max);
    if (!list) {
        if (header) {
            writer.append(SEPARATOR);
            int i = 0;
            NodeIterable itr = graph.getNodes();
            for (Node node : itr) {
                writeMatrixNode(node, i++ < max - 1);
                if (cancel) {
                    itr.doBreak();
                    return;
                }
            }
            writer.append(EOL);
        }
    }
    if (list) {
        NodeIterable itr = graph.getNodes();
        for (Node n : itr) {
            List<Node> neighbours = new ArrayList<>();
            for (Edge e : graph.getEdges(n)) {
                if (!e.isDirected() || (e.isDirected() && n == e.getSource())) {
                    Node m = graph.getOpposite(n, e);
                    neighbours.add(m);
                }
            }
            writeListNode(n, !neighbours.isEmpty());
            for (int j = 0; j < neighbours.size(); j++) {
                writeListNode(neighbours.get(j), j < neighbours.size() - 1);
            }
            writer.append(EOL);
            if (cancel) {
                itr.doBreak();
                return;
            }
        }
    } else {
        Node[] nodes = graph.getNodes().toArray();
        for (Node n : nodes) {
            if (cancel) {
                return;
            }
            writeMatrixNode(n, true);
            for (int j = 0; j < nodes.length; j++) {
                Node m = nodes[j];
                EdgeIterable edges = graph.getEdges(n, m);
                writeEdge(edges, j < nodes.length - 1);
            }
            Progress.progress(progressTicket);
            writer.append(EOL);
        }
    }
    Progress.finish(progressTicket);
}
Also used : NodeIterable(org.gephi.graph.api.NodeIterable) EdgeIterable(org.gephi.graph.api.EdgeIterable) Node(org.gephi.graph.api.Node) ArrayList(java.util.ArrayList) Edge(org.gephi.graph.api.Edge)

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