dyvider
dyvider is a small library implementing dynamic programming algorithms for exact linear clustering in networks. Its algorithms process networks whose nodes have positions in one dimension, and return their optimal partition.
The theory and experiments exploring this code can be found in the paper “Exact and rapid linear clustering of networks with dynamic programming”, by Alice Patania, Antoine Allard and Jean-Gabriel Young.
Dependencies
The only necessary dependency are networkx and numpy.
Quick tour
The following minimal example first assigns scores to nodes with a one-dimensional spectral embedding and then retrieves an optimal linear clustering from this embedding using dyvider.
import networkx as nx
import dyvider as dy
import numpy as np
# create a graph
g = nx.stochastic_block_model([10, 10], [[0.5, 0.05], [0.05, 0.5]], seed=42)
# generate a 1-d embedding with the leading eigenvector of the modularity matrix
eigenvals, eigvenvecs = np.linalg.eig(nx.linalg.adjacency_matrix(g).todense())
score = {v: float(eigvenvecs[v, 0]) for v in g.nodes()}
# set the node positions
nx.set_node_attributes(g, score, 'score')
# run dyvider
g = dy.utilities.preprocess(g)
objective_function = dy.objectives.Modularity()
solution, Q = dy.algorithms.run(g, objective_function)
print(solution)
The expected output is:
>>> [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]
Our tutorial goes into more detail and demonstrates all the API calls.
Paper
If you use this code, please consider citing:
“Exact and rapid linear clustering of networks with dynamic programming” Alice Patania, Antoine Allard and Jean-Gabriel Young. arXiv:2301.10403.
Metadata
Release files for dyvider 0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dyvider-0.3.tar.gz | 13.0 kB | Details |
Release files / dyvider-0.3.tar.gz
| Download URL | dyvider-0.3.tar.gz |
|---|---|
| Size | 13.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9b11df48ebb6bac594a5b22eca744c04ddf3f7f8237518f69ba8cb086bcc4236
|
|
BLAKE2b-256 checksum How to use checksums |
f99c973a0d2e32c9783c2dd96e952ee1b2508c774bc224f14d4068033ce03eaf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.10.9
|