как экспортировать таблицу csv с помощью gephi-toolkit

недавно я пытаюсь использовать gephi-toolkit для получения статистики для нескольких сетей, он отлично работает, чтобы импортировать CSV-файл и выполнить некоторые вычисления метрик, но если я хочу экспортировать CSV-таблицу, как я делаю ниже в Gephi, Я не нашел руководств, и в javadoc нет описания. экспортировать таблицу по gephi

поскольку я хочу выполнять одни и те же операции для разных сетей, я хочу использовать gephi-toolkit для реализации той же функции, но я проверил demos и поищите в Google, но мне не удалось получить результат. хотеть.


Чтобы более четко описать мой вопрос, я публикую свой текущий код ниже, теперь я попробовал два метода, один из которых использует методы ExporterCSV, которые вернули мне только матрицу в формате файла csv, в то время как я хочу представляет собой CSV-файл узла и граничный CSV-файл после вычисления нескольких показателей, таких как центральность по промежуточности, центральность по близости и т. д. для каждого узла каждой сети. И другой метод, который я пробовал, - это использование DataTableControllerImpl, но кажется, что файлы не были созданы, я хочу знать, есть ли что-то не так с моим кодом, любая помощь приветствуется.

public class Transfer95 {
    public void script() {
        //Init a project - and therefore a workspace
        ProjectController pc = Lookup.getDefault().lookup(ProjectController.class);
        pc.newProject();
        Workspace workspace = pc.getCurrentWorkspace();

        //Get controllers and models
        ImportController importController = Lookup.getDefault().lookup(ImportController.class);

        //Get models and controllers for this new workspace - will be useful later
        GraphModel graphModel = Lookup.getDefault().lookup(GraphController.class).getGraphModel();

        //Import file
        Container container,container2;
        try {
            File file_node = new File(getClass().getResource("/resource/season2/club_1_1995.csv").toURI());
            container = importController.importFile(file_node);
            container.getLoader().setEdgeDefault(EdgeDirectionDefault.DIRECTED);   //Force DIRECTED
            container.getLoader().setAllowAutoNode(true);  //create missing nodes
            container.getLoader().setEdgesMergeStrategy(EdgeMergeStrategy.SUM);
            container.getLoader().setAutoScale(true);

            File file_edge = new File(getClass().getResource("/resource/season2/transfer_1_1995.csv").toURI());
            container2 = importController.importFile(file_edge);
            container2.getLoader().setEdgeDefault(EdgeDirectionDefault.DIRECTED);   //Force DIRECTED
            container2.getLoader().setAllowAutoNode(true);  //create missing nodes
            container2.getLoader().setEdgesMergeStrategy(EdgeMergeStrategy.SUM);
            container2.getLoader().setAutoScale(true);

        } catch (Exception ex) {
            ex.printStackTrace();
            return;
        }

        //Append imported data to GraphAPI
        importController.process(container, new DefaultProcessor(), workspace);
        importController.process(container2, new AppendProcessor(), workspace); //Use AppendProcessor to append to current workspace


        //See if graph is well imported
        DirectedGraph graph = graphModel.getDirectedGraph();
        System.out.println("Nodes: " + graph.getNodeCount());
        System.out.println("Edges: " + graph.getEdgeCount());

        //count several metrics
        Degree degree=new Degree();
        degree.execute(graph.getModel());      
        System.out.println("Average Degree: "+degree.getAverageDegree());

        WeightedDegree weightedDegree=new WeightedDegree();
        weightedDegree.execute(graph.getModel());      
        System.out.println("Average Weighted Degree: "+weightedDegree.getAverageDegree());

        ClusteringCoefficient clusteringcoefficient=new ClusteringCoefficient();
        clusteringcoefficient.execute(graph.getModel());      
        System.out.println("Average Clustering Coefficient: "+clusteringcoefficient.getAverageClusteringCoefficient());

        GraphDistance graphDistance=new GraphDistance();
        graphDistance.execute(graph.getModel());      
        System.out.println("Average Path Length: "+graphDistance.getPathLength());
        System.out.println("Network Diameter: "+graphDistance.getDiameter());

        Modularity modularity=new Modularity();
        modularity.execute(graph.getModel());      
        System.out.println("Modularity: "+modularity.getModularity());

        GraphDensity graphDensity=new GraphDensity();
        graphDensity.execute(graph.getModel());      
        System.out.println("Graph Density: "+graphDensity.getDensity());


        //Export method 1
//        ExportController ec = Lookup.getDefault().lookup(ExportController.class);
//        ExporterCSV exporterCSV=(ExporterCSV)ec.getExporter("csv");
//        try {
////            ec.exportFile(new File("src/resource/output/test_95.csv"));
//            ec.exportFile(new File("src/resource/output/test_95.csv"), exporterCSV);
//        } catch (IOException ex) {
//            ex.printStackTrace();
//            return;
//        }

        //Export method 2
//        Lookup.getDefault().lookup(DataTablesController.class).setDataTablesEventListener(DataTableTopComponent.this);
        DataTablesControllerImpl csvExp=new DataTablesControllerImpl();        
//        Lookup.getDefault().lookup(DataTablesControllerImpl.class).setDataTablesEventListener(csvExp.getDataTablesEventListener());                
//        DataTablesControllerImpl dataTablesController = Lookup.getDefault().lookup(DataTablesController.class);
        csvExp.exportCurrentTable();

    }

    public static void main(String[] args){
        Transfer95 test=new Transfer95();
        test.script();
    }
}

person LancelotHolmes    schedule 08.12.2017    source источник


Ответы (1)


Это не лучшее решение, но в моем случае сработало.

Импортируйте и используйте в своем проекте класс ExporterSpreadsheet.java из исходного кода Gephi (ссылка на GitHub)

Например, чтобы экспортировать таблицу узлов:

        try {
            ExporterSpreadsheet exporter = new ExporterSpreadsheet();
            exporter.setWorkspace(workspace);
            exporter.setWriter(new FileWriter(new File("nodes.csv")));
            exporter.setTableToExport(ExporterSpreadsheet.ExportTable.NODES);
            exporter.execute();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

Точно так же для таблицы ребер:

        try {
            ExporterSpreadsheet exporter = new ExporterSpreadsheet();
            exporter.setWorkspace(workspace);
            exporter.setWriter(new FileWriter(new File("edges.csv")));
            exporter.setTableToExport(ExporterSpreadsheet.ExportTable.EDGES);
            exporter.execute();
        } catch (Exception ex) {
            ex.printStackTrace();
        }

На выходе вы получаете те же CSV-файлы, которые Gephi экспортирует с помощью кнопки Export table из Лаборатории данных.

person mai_sicuel    schedule 28.02.2021