Network Datasets Documentation

A curated collection of example infrastructure network datasets to support research on network reliability, risk, resilience, and uncertainty quantification.

The repository serves two purposes (cf Figure 1): (1) to provide a standardised collection of benchmark network datasets, and (2) to offer ready-to-use system performance functions compatible with network data for probabilistic assessments.

Network Datasets overview

Figure 1. Overview of the Network Datasets repository.

The datasets are designed for use with MBNpy but can also be loaded independently.

Overview

The Network Datasets repository contains:

  • Structured datasets: Infrastructure networks with nodes, edges, probabilities, and optional metadata, each accompanied by illustrative examples | JSON Schemas: Validation schemas that ensure data consistency

  • ndtools: Python utilities for loading, graph building, and network analysis

Repository Structure

├─ registry.json              # Index of available datasets
├─ schema/                    # JSON Schemas for validation
├─ <dataset folders>/         # e.g. distribution-substation-liang2022/
├─ ndtools/                   # Utility functions for loading and analysis
├─ tests/                     # Unit tests
└─ LICENSE                    # Licensing (MIT for code, CC-BY-4.0 for data)

Key Features

  • Standardised Format: All datasets follow consistent JSON schemas

  • NetworkX Integration: Easy conversion to NetworkX graphs

  • Validation Tools: Built-in data validation against schemas

  • Visualisation: Graph drawing utilities with multiple layout options

  • Analysis Functions: Connectivity, shortest path, substation capacity, and more

  • Multiple Domains: Power grids, transportation, and other infrastructure

Quick Start

Install the package:

pip install -e .

Load a dataset:

from ndtools.io import dataset_paths, load_json
from ndtools.graphs import build_graph
from pathlib import Path

# Get dataset paths
nodes_path, edges_path, probs_path = dataset_paths(Path('.'), 'toynet-11edges', 'v1')

# Load data
nodes = load_json(nodes_path)
edges = load_json(edges_path)
probs = load_json(probs_path)

# Build NetworkX graph
G = build_graph(nodes, edges, probs)

License

  • Code (scripts, validators): MIT License

  • Data (datasets): CC-BY-4.0 License

Indices and tables