Skip to main content

A compact Python library for modeling, analyzing, and visualizing optical network topologies.

Project description

Topolib 🚀

Python Version License Issues Develop coverage Release coverage Documentation Status

Topolib is a compact, modular Python library for modeling, analyzing, and visualizing optical network topologies.
Goal: Provide researchers and engineers with a simple, extensible toolkit for working with nodes, links, metrics, and map-based visualizations.

🌐 Model | 📊 Analyze | 🗺️ Visualize | 🧩 Extend


📂 Examples

Explore ready-to-run usage examples in the examples/ folder!


🧭 Overview

Topolib is organized into four main modules:

  • 🧱 Elements: Node, Link — basic building blocks
  • 🕸️ Topology: Topology, Path — manage nodes, links, paths, and adjacency
  • 📈 Analysis: Metrics, TrafficMatrix — compute node degree, link stats, connection matrices, and traffic demand matrices
  • 🖼️ Visualization: MapView — interactive maps with Folium and PyQt6, clean PNG exports

✨ Features

  • Modular, extensible design
  • Easy-to-use classes for nodes, links, and paths
  • Built-in metrics and analysis helpers
  • Traffic demand matrix generation with three models (gravitational, DC/IXP, distribution probability)
  • Returns NumPy arrays for efficient mathematical operations
  • Interactive map visualization with Folium and PyQt6
  • Clean PNG export without external dependencies (no Selenium required)
  • Resource caching for faster map rendering
  • JSON import/export and interoperability
  • Ready for Sphinx, Read the Docs, and PyPI

⚡ Quickstart

python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install topolib

📚 Documentation

Full documentation: https://topolib.readthedocs.io/


📝 Basic usage

Creating a topology

from topolib.elements.node import Node
from topolib.topology.topology import Topology

n1 = Node(1, 'A', 10.0, 20.0)
n2 = Node(2, 'B', 11.0, 21.0)
topo = Topology(nodes=[n1, n2])
# Add links, compute metrics, visualize, etc.

Generating traffic matrices

from topolib.topology import Topology
from topolib.analysis import TrafficMatrix

# Load a topology
topo = Topology.load_default_topology("DT-14")

# Generate traffic matrix using gravitational model
matrix = TrafficMatrix.gravitational(topo, rate=0.015)
# Returns NumPy array: matrix[i, j] = traffic from node i to j (Gbps)

# Export to CSV
TrafficMatrix.to_csv(matrix, topo, "traffic_matrix.csv")

🛠️ Development

See CONTRIBUTING.md for development guidelines, commit message rules, and pre-commit setup.


📄 License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

topolib-0.8.0.tar.gz (69.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

topolib-0.8.0-py3-none-any.whl (91.0 kB view details)

Uploaded Python 3

File details

Details for the file topolib-0.8.0.tar.gz.

File metadata

  • Download URL: topolib-0.8.0.tar.gz
  • Upload date:
  • Size: 69.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/5.15.154+

File hashes

Hashes for topolib-0.8.0.tar.gz
Algorithm Hash digest
SHA256 b0aeeeb58abef44a6b931d7c0f586c89cc495e23ea1a4518b851502567993065
MD5 ddbfaf5f1261c96e927729d9af6448de
BLAKE2b-256 8f429228d4aeea42fefc3b4c64e0c815e8b111946d1a31ea9328b1670a3ce18c

See more details on using hashes here.

File details

Details for the file topolib-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: topolib-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 91.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.11.14 Linux/5.15.154+

File hashes

Hashes for topolib-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ebf972c244242c59a604cf4395317107e99fe45b8c75cd8e2a81a17800d56063
MD5 a682da573eddb865e16aba7df0014d83
BLAKE2b-256 ec2f06b67712e2881581c29fbc76d1c27417213e683a58fda48231318f762246

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page