GraphIO.jl

Graph IO functionality for various formats.
Popularity
61 Stars
Updated Last
6 Months Ago
Started In
April 2017

GraphIO

Build Status codecov.io Code Style: Blue Aqua QA

GraphIO provides support to Graphs.jl for reading/writing graphs in various formats.

Currently, the following functionality is provided:

Format Read Write Multiple Graphs Format Name Comment
EdgeList EdgeListFormat a simple list of sources and dests separated by whitespace and/or comma, one pair per line.
GML GMLFormat
Graph6 Graph6Format
GraphML GraphMLFormat
Pajek NET NETFormat
GEXF GEXFFormat
DOT DOTFormat
CDF CDFFormat

Graphs are read using either the loadgraph function or, for formats that support multiple graphs in a single file, the loadgraphs functions. loadgraph returns a Graph object, while loadgraphs returns a dictionary of Graph objects.

For example, an edgelist file could be loaded as:

graph = loadgraph("path_to_graph/my_edgelist.txt", "graph_key", EdgeListFormat())

Reading different graph types

All *Format types are readily accessible. However, in order to use some of them with loadgraph, additional packages are required. You may thus need to install and load the following dependencies before using parts of GraphIO.jl:

  • Reading DOT or GML files: do using ParserCombinator
  • Reading GEXF or GraphML files: do using EzXML
  • Reading GML files: do using CodecZlib

The current design avoids populating your environment with unnecessary dependencies.

IMPLEMENTATION NOTE: The current design uses package extensions, introduced in Julia v1.9. At the moment, package extensions cannot conditionally load types, that is one of the main reasons why all *Format types are readily accessible. However, the functionality of loadgraph is extended for the various types only when the appropriate dependencies are available. We are searching for more intuitive ways to design this interface.