Skip to main content

abcd-graph

A python library for generating ABCD graphs.

tests pre-commit Release GitHub License PyPI - Python Version GitHub repo size

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 .

If you're using uv then run the following for lightning-fast installation:

uv pip install -r pyproject.toml .

Optional dependencies

The project comes with a set of optional dependencies that can be installed using the following commands:

pip install abcd-graph[dependency-name]

or

uv add abcd-graph --extra dependency-name

where dependency-name is one of the following:

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

Usage

from abcd_graph import ABCDGraph, ABCDParams

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

Parameters

  • params: An instance of ABCDParams class.
  • logger A boolean to enable or disable logging to the console. Default is False - no logs are shown.
  • callbacks: A list of instances of Callback class. Default is an empty list.

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
vcount int Number of vertices in the graph 1000
gamma float Power-law parameter for degrees, between 2 and 3 2.5
min_degree int Min degree 5
max_degree 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
min_community_size int Min community size 20
max_community_size float Parameter for max community size, between max_degree and 1 0.8
xi float Noise parameter, between 0 and 1 0.25
num_outliers int Number of outlier vertices in the resulting graph 0
degree_sequence Sequence[int] Custom degree sequence to use during graph building None
community_size_sequence Sequence[int] Custom community size sequence to use during graph building None

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

Notes

  • You cannot pass both degree_sequence and any of gamma, min_degree or max_degree.
  • You cannot pass both community_size_sequence and any of beta, min_community_size or max_community_size.

Communities and edges

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

  • communities - A list of ABCDCommunity objects.
  • edges - A list of tuples representing the edges of the graph.

Example:

from abcd_graph import ABCDGraph, ABCDParams

params = ABCDParams(vcount=1000)

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

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

Communities have the following properties:

  • vertices - A list of vertices in the community.
  • average_degree - The average degree of the community.
  • degree_sequence - The degree sequence of the community.
  • empirical_xi - The empirical xi of the community.

Exporting

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

Possible formats are:

Method Description Additional packages Installation command
to_networkx() Export the graph to a networkx.Graph object. networkx pip install abcd-graph[networkx]
to_igraph() Export the graph to an igraph.Graph object. igraph pip install abcd-graph[igraph]
to_adjacency_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-graph[scipy]

Example:

from abcd_graph import ABCDGraph, ABCDParams

params = ABCDParams(vcount=1000)
graph = ABCDGraph(params, 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:

  • StatsCollector - Collects statistics about the graph generation process.
  • PropertyCollector - Collects properties of the graph.
  • Visualizer - Visualizes the graph generation process.

Example:

from abcd_graph import ABCDGraph, ABCDParams

from abcd_graph.callbacks import StatsCollector, Visualizer, PropertyCollector

stats = StatsCollector()
vis = Visualizer()
props = PropertyCollector()
params = ABCDParams(vcount=1000)
g = ABCDGraph(params, 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 and all.

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

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.

Metadata

Release files for abcd-graph 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for abcd-graph 0.4.1
File Size Uploaded Provenance
abcd_graph-0.4.1.tar.gz 341.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for abcd-graph 0.4.1
File Interpreter ABI Platform
abcd_graph-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 375.8 kB

Release files / abcd_graph-0.4.1.tar.gz

Download URL abcd_graph-0.4.1.tar.gz
Size 341.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8ae5bac7c41c47f2a097593a98fa8e0727dabd5e40ee87180aa0fadf66497e28
BLAKE2b-256 checksum
How to use checksums
599633d9c09e37bfea6d90eae4b1e4cec632ee9a2ecb4ff21ebf8453d2a047fa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.15

Release files / abcd_graph-0.4.1-py3-none-any.whl

Download URL abcd_graph-0.4.1-py3-none-any.whl
Size 34.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a94f40f47d73cb141b967721586f6f96ee163322946c2f107842e12d1adde7d9
BLAKE2b-256 checksum
How to use checksums
a59412cd36990c67f748859bafd95455aac80713c8dc99c444ed90f4dbda90aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.15

Security for abcd-graph 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page