STAG C++  2.0.0
Spectral Toolkit of Algorithms for Graphs
Loading...
Searching...
No Matches
graphio.h File Reference

Description

Methods for reading and writing graphs to disk.

For an introduction to the file formats supported by STAG, see Graph File Formats.

Functions

stag::Graph stag::load_edgelist (std::string &filename)
 
void stag::save_edgelist (stag::Graph &graph, std::string &filename)
 
stag::Graph stag::load_adjacencylist (std::string &filename)
 
void stag::save_adjacencylist (stag::Graph &graph, std::string &filename)
 
void stag::edgelist_to_adjacencylist (std::string &edgelist_fname, std::string &adjacencylist_fname)
 
void stag::adjacencylist_to_edgelist (std::string &adjacencylist_fname, std::string &edgelist_fname)
 

Function Documentation

◆ load_edgelist()

stag::Graph stag::load_edgelist ( std::string &  filename)

Load a graph from an edgelist file.

We define an edgelist file in the following way.

  • Any lines beginning with '#' or '//' are ignored
  • Any blank lines are ignored
  • All other lines are of one of the formats

    • <u>, <v>, <weight>
    • <u>, <v>
    • <u> <v> <weight>
    • <u> <v>

    where <u> and <v> can be parsed as integers, and <weight> can be parsed as a double. If the weight is omitted, it is taken to be 1.

Here is an example edgelist file.

# This line is ignored
0, 1, 0.5
1, 2, 1
2, 0, 0.5
Parameters
filenamethe name of the edgelist file to be loaded
Returns
stag::Graph object
Exceptions
std::runtime_errorif the file doesn't exist or cannot be parsed as an edgelist

◆ save_edgelist()

void stag::save_edgelist ( stag::Graph graph,
std::string &  filename 
)

Save the given graph as an edgelist file.

Parameters
graphthe graph object to be saved
filenamethe name of the file to save the edgelist data to

◆ load_adjacencylist()

stag::Graph stag::load_adjacencylist ( std::string &  filename)

Load a graph from an adjacencylist file.

The adjacency list file format is defined in the following way.

  • Any lines beginning with # or // are ignored
  • Any blank lines are ignored
  • All other lines have the format <node_id>: <list of neighbours>, where <node_id> is an integer and <list of neighbours> is either a space-separated list of integers or a space-separated list of <id>:<weight> where <id> gives the id of the neighbour and <weight> is the weight of the edge.
  • The <node IDs> of each line must be sorted in increasing order.
  • The graph should have no self-loops.

Here is an example adjacencylist file.

# This line is ignored
0: 1 2
1: 0 2 3
2: 0 1
3: 1

The following example includes weighted edges.

# This line is ignored
0: 1:0.5 2:0.5
1: 0:0.5 2:1
2: 0:0.5 1:1

Note that this method loads the entire graph into memory. For large graphs, the stag::AdjacencyListLocalGraph object can be used to access the graph in a 'local' way without reading the entire graph into memory.

Parameters
filenamethe name of the adjacency list file to be loaded
Returns
stag::Graph object
Exceptions
std::runtime_errorif the file doesn't exist or cannot be parsed as an adjacency list

◆ save_adjacencylist()

void stag::save_adjacencylist ( stag::Graph graph,
std::string &  filename 
)

Save the given graph as an adjacencylist file.

Parameters
graphthe graph object to be saved
filenamethe name of the file to save the adjacencylist data to

◆ edgelist_to_adjacencylist()

void stag::edgelist_to_adjacencylist ( std::string &  edgelist_fname,
std::string &  adjacencylist_fname 
)

Convert an edgelist file to an adjacency list.

Parameters
edgelist_fnamethe name of the file containing the edgelist.
adjacencylist_fnamethe name of the file to write the adjacencylist.

◆ adjacencylist_to_edgelist()

void stag::adjacencylist_to_edgelist ( std::string &  adjacencylist_fname,
std::string &  edgelist_fname 
)

Convert an adjacency list file to an edgelist.

Parameters
adjacencylist_fnamethe name of the file containing the adjacency list.
edgelist_fnamethe name of the file to write the edgelist.