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 .
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 ofABCDParamsclass.loggerA boolean to enable or disable logging to the console. Default isFalse- no logs are shown.callbacks: A list of instances ofCallbackclass. 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_sequenceand any ofgamma,min_degreeormax_degree. - You cannot pass both
community_size_sequenceand any ofbeta,min_community_sizeormax_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 ofABCDCommunityobjects.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)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| abcd_graph-0.4.1.tar.gz | 341.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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.