Skip to main content

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.

Author information

Code by Jean-Gabriel Young. Don’t hesitate to get in touch at jean-gabriel.young@uvm.edu, or via the issues!

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)

Source distribution for dyvider 0.3
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

Release history Release notifications | RSS feed

This release

0.3 This release

1 release file

0.2

1 release file

0.1

1 release file

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