AleksanderWWW / abcd-graph

MIT License
4 stars 0 forks source link

abcd-graph

A python library for generating ABCD graphs.

Installation

Using pip

pip install abcd-graph

Project available at PyPI.

From source

git clone https://github.com/AleksanderWWW/abcd-graph.git

# or - with ssh - git clone git@github.com:AleksanderWWW/abcd-graph.git
cd abcd-graph
pip install .

Usage

from abcd_graph import ABCDGraph, ABCDParams

params = ABCDParams()
graph = ABCDGraph(params, n=1000, logger=True).build()

Parameters

Returns

The ABCDGraph object with the generated graph.

Graph generation parameters - ABCDParams

The ABCDParams class is used to set the parameters for the graph generation.

Arguments:

Name Type Description Default
gamma float Power-law parameter for degrees, between 2 and 3 2.5
delta int Min degree 5
zeta float Parameter for max degree, between 0 and 1 0.5
beta float Power-law parameter for community sizes, between 1 and 2 1.5
s int Min community size 20
tau float Parameter for max community size, between zeta and 1 0.8
xi float Noise parameter, between 0 and 1 0.25

Parameters are validated when the object is created. If any of the parameters are invalid, a ValueError will be raised.

Communities and edges

The ABCDGraph object has two properties that can be used to access the communities and edges of the graph.

Example:


from abcd_graph import ABCDGraph, ABCDParams

params = ABCDParams()

graph = ABCDGraph(params, n=1000, logger=True).build()

print(graph.communities)
print(graph.edges)

Communities have the following properties:

Exporting

Exporting the graph to different formats is done via the exporter property of the Graph object.

Possible formats are:

Method Description Required packages Installation command
to_networkx() Export the graph to a networkx.Graph object. networkx pip install abcd[networkx]
to_igraph() Export the graph to an igraph.Graph object. igraph pip install abcd[igraph]
adj_matrix Export the graph to a numpy.ndarray object representing the adjacency matrix.
to_sparse_adjacency_matrix() Export the graph to a scipy.sparse.csr_matrix object representing the adjacency matrix. scipy pip install abcd[scipy]

Example:

from abcd_graph import ABCDGraph, ABCDParams

params = ABCDParams()
graph = ABCDGraph(params, n=1000, logger=True).build()
graph_networkx = graph.exporter.to_networkx()

Callbacks

Callbacks are used to handle diagnostics and visualization of the graph generation process. They are instances of the ABCDCallback class.

Out of the box, the library provides three callbacks:

Example:


from abcd_graph import ABCDGraph, ABCDParams

from abcd_graph.callbacks import StatsCollector, Visualizer, PropertyCollector

stats = StatsCollector()
vis = Visualizer()
props = PropertyCollector()
params = ABCDParams()
g = ABCDGraph(params, n=1000, logger=True, callbacks=[stats, vis, props]).build()

print(stats.statistics)

print(props.xi_matrix)

vis.draw_community_cdf()

Docker

To build a docker image containing the library, run:

docker build -t abcd-graph .

To run the image, use:

docker run -it abcd-graph /bin/bash

This will give you a terminal inside a container with the library installed.

Available are also installation commands for the additional packages:

docker build -t abcd-test --build-arg INSTALL_TYPE=igraph .

Possible values for INSTALL_TYPE are dev, matplotlib, networkx, igraph, scipy, all and extended.

Value Packages installed
dev pytest, pre-commit, pytest-cov
matplotlib matplotlib
networkx networkx
igraph igraph
scipy scipy
all networkx, igraph, scipy, pytest, pre-commit, pytest-cov, matplotlib
extended scipy, matplotlib

[!NOTE] Combinations of the above values are also possible, e.g. igraph,networkx.

[!WARNING] If you choose and option outside the available ones, the installation will still succeed, but only the base package will be installed.

Examples

The library comes with a set of examples that show how to use the library in different scenarios. You can find them in the examples directory in the format of Jupyter Notebooks.