PowerIO

Parses power system case files into a typed Network, converts between formats, and builds sparse matrices and graph representations for solver and analysis code.
https://github.com/eigenergy/powerio

Category: Energy Systems
Sub Category: Energy Data Accessibility and Integration

Keywords

converter electrical-engineering interoperability parser parsing-library power-systems

Last synced: about 10 hours ago
JSON representation

Repository metadata

Power system compiler infrastructure

README.md

PowerIO

PowerIO 0.10 is the public beta of the 1.0 API. It parses power system data
into typed values, converts supported formats, and builds sparse matrices and
graph data.

A parse returns a PioModule: one typed value plus its sources, diagnostics,
source map, and history. The value can be a network, calculation instance,
solution, time series, or scenario set.

Install

cargo add powerio
pip install powerio
julia -e 'using Pkg; Pkg.add("PowerIO")'

Optional Python dependencies are installed separately:

pip install 'powerio[matrix]'
pip install 'powerio[graph]'
pip install 'powerio[all]'

Install the command line program with cargo install powerio-cli.

Parse and write

Rust:

use powerio::{BalancedNetwork, Destination, PioModule, Source};

let module = powerio::parse(Source::open("case9.m")?)?;
let module: PioModule<BalancedNetwork> = powerio::try_into_typed(module)?;
let module = module.map_value(powerio::PioValue::from);
powerio::write_module_as(&module, "matpower", Destination::path("copy.m"))?;
# Ok::<(), Box<dyn std::error::Error>>(())

Python detects the kind without a type argument:

import powerio

module = powerio.parse("case9.m")
module.kind                         # "balanced_network"
network = module.value
module.diagnostics()               # native diagnostic records
network.write_file("copy.m", "matpower")  # byte exact same format write

Pass value_type=powerio.BalancedNetwork only when the caller wants to assert
the expected kind while parsing.

Julia uses multiple dispatch on the typed value:

using PowerIO

module_ = parse_file("case9.m")     # PioModule{BalancedNetwork}
network = module_.value
n_buses(network)                    # 9
diagnostics(module_)
write_file(module_, "copy.m")

The command line interface uses the same readers and writers:

powerio convert case9.m --to psse -o case9.raw
powerio module case9.m -o case9.pio.json
powerio verify case9.m --kind bdoubleprime
powerio sensitivities case9.m -o out

An unchanged module writes its source format byte for byte. Cross format
conversion keeps what the destination can represent and returns a diagnostic
for each loss. .pio.json version 1 stores a module for exchange between
PowerIO consumers; it does not replace domain formats such as MATPOWER,
PSS/E, or OpenDSS.

Supported values and formats

Balanced network formats:

  • MATPOWER .m
  • PSS/E .raw revisions 33, 34, and 35
  • PowerWorld .aux; .pwb is read only and .pwd uses the display API
  • GE PSLF .epc
  • PowerModels JSON
  • Egret JSON
  • pandapower JSON
  • PyPSA CSV directories
  • Surge JSON

Multiconductor distribution formats:

  • OpenDSS .dss
  • PowerModelsDistribution engineering JSON
  • IEEE BMOPF JSON

Calculation and dataset inputs:

  • DOE GO Challenge 3 JSON produces AcScucInstance
  • BMOPF JSON produces McAcOpfInstance
  • DeepMind OPFData JSON produces AcOpfSolution
  • GridFM Parquet produces ScenarioSet<BalancedNetwork>
  • Supported PyPSA and Egret profiles can produce typed time series

Formats and Fidelity lists
the supported profile and write behavior for every format.

Package structure

powerio-core     Source, PioModule, diagnostics, time series, and output types
powerio-tx       balanced transmission model, parsers, and writers
powerio-dist     multiconductor distribution model and format support
powerio-prob     operating points, calculation instances, and solutions
powerio-matrix   sparse matrices, sensitivities, and graph data
powerio          entry facade, dynamic values, dispatch, and .pio.json
powerio-capi     C ABI for C, C++, Julia, and other bindings
powerio-py       native extension for the Python package
powerio-cli      command line interface and terminal interface

powerio-tx and powerio-dist are independent and share powerio-core.
powerio-prob is matrix free. powerio-matrix depends on the component crates,
and the powerio facade provides the combined entry point without defining a
preferred universal power system format.

Documentation

Migration notes, retired names, ABI history, internal crate rules, performance
evidence, and release checks are under Developer Guides.

License

PowerIO is available under either the Apache License 2.0 or the MIT License.


Owner metadata


GitHub Events

Total
Last Year

Committers metadata

Last synced: 1 day ago

Total Commits: 280
Total Committers: 4
Avg Commits per committer: 70.0
Development Distribution Score (DDS): 0.036

Commits in past year: 280
Committers in past year: 4
Avg Commits per committer in past year: 70.0
Development Distribution Score (DDS) in past year: 0.036

Name Email Commits
Samuel Talkington 1****i 270
Qian Zhang q****g@g****u 5
Cameron Khanpour 9****r 4
dependabot[bot] 4****] 1

Committer domains:


Issue and Pull Request metadata

Last synced: 1 day ago

Total issues: 117
Total pull requests: 141
Average time to close issues: 12 days
Average time to close pull requests: 1 day
Total issue authors: 4
Total pull request authors: 5
Average comments per issue: 0.43
Average comments per pull request: 1.14
Merged pull request: 93
Bot issues: 0
Bot pull requests: 1

Past year issues: 117
Past year pull requests: 141
Past year average time to close issues: 12 days
Past year average time to close pull requests: 1 day
Past year issue authors: 4
Past year pull request authors: 5
Past year average comments per issue: 0.43
Past year average comments per pull request: 1.14
Past year merged pull request: 93
Past year bot issues: 0
Past year bot pull requests: 1

More stats: https://issues.ecosyste.ms/repositories/lookup?url=https://github.com/eigenergy/powerio

Top Issue Authors

  • samtalki (112)
  • cameronkhanpour (2)
  • frederikgeth (2)
  • MohamedNumair (1)

Top Pull Request Authors

  • samtalki (134)
  • cameronkhanpour (4)
  • matheusduartedm (1)
  • dependabot[bot] (1)
  • qian-harvard (1)

Top Issue Labels

  • enhancement (19)
  • interop (14)
  • julia (4)
  • format-fidelity (4)
  • bug (3)
  • rust (2)
  • adapter (2)
  • documentation (1)
  • ir (1)
  • dynamic (1)
  • partner-ravens (1)
  • lowering (1)

Top Pull Request Labels

  • dependencies (1)
  • rust (1)

Package metadata

pypi.org: powerio

Case parsing, conversion, matrices, and language bindings for power system data

  • Homepage:
  • Documentation: https://eigenergy.github.io/powerio/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:34:22.542Z (1 day ago)
  • Versions: 28
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 2,240 Last month
  • Rankings:
    • Dependent packages count: 7.066%
    • Average: 23.518%
    • Dependent repos count: 39.971%
  • Maintainers (1)
crates.io: powerio-prob

Problem instance builders for power system analysis and optimization.

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-prob/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:34:22.191Z (1 day ago)
  • Versions: 10
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 686 Total
  • Rankings:
    • Dependent repos count: 13.173%
    • Dependent packages count: 17.4%
    • Average: 35.564%
    • Downloads: 76.119%
  • Maintainers (1)
crates.io: powerio-tx

Compiler infrastructure for power systems: parse, convert, validate, and lower grid models

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-tx/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:33:15.490Z (1 day ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 30 Total
  • Rankings:
    • Dependent repos count: 12.35%
    • Dependent packages count: 16.314%
    • Average: 39.45%
    • Downloads: 89.685%
  • Maintainers (1)
crates.io: powerio-core

Shared source, diagnostic, module, collection, and output types for PowerIO.

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-core/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:33:17.488Z (1 day ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 46 Total
  • Rankings:
    • Dependent repos count: 12.35%
    • Dependent packages count: 16.314%
    • Average: 39.45%
    • Downloads: 89.685%
  • Maintainers (1)
crates.io: powerio-diag

The PowerIO diagnostic vocabulary: dotted codes, severities, the stage family, the coarse error categories, and the text renderer.

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-diag/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.9.0 (published 13 days ago)
  • Last Synced: 2026-09-02T04:33:47.051Z (1 day ago)
  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 376 Total
  • Rankings:
    • Dependent repos count: 12.534%
    • Dependent packages count: 16.557%
    • Average: 39.722%
    • Downloads: 90.076%
  • Maintainers (1)
crates.io: powerio-pkg

The .pio.json document model: one PowerIO model JSON object with explicit model kind, provenance, source maps, structured diagnostics, validation, and lowering history.

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-pkg/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.9.0 (published 13 days ago)
  • Last Synced: 2026-09-02T04:33:47.130Z (1 day ago)
  • Versions: 16
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 896 Total
  • Rankings:
    • Dependent repos count: 13.664%
    • Dependent packages count: 18.049%
    • Average: 40.242%
    • Downloads: 89.012%
  • Maintainers (1)
crates.io: powerio-dist

Multiconductor distribution network model and lossless converters for OpenDSS, PMD JSON, and BMOPF JSON.

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-dist/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:33:17.442Z (1 day ago)
  • Versions: 21
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1,117 Total
  • Rankings:
    • Dependent repos count: 13.915%
    • Dependent packages count: 18.38%
    • Average: 40.48%
    • Downloads: 89.145%
  • Maintainers (1)
crates.io: powerio-matrix

Sparse matrices and graph outputs for power system case files, built on powerio.

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-matrix/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:33:15.625Z (1 day ago)
  • Versions: 29
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 700 Total
  • Rankings:
    • Dependent repos count: 14.148%
    • Dependent packages count: 18.686%
    • Average: 40.719%
    • Downloads: 89.322%
  • Maintainers (1)
crates.io: powerio

Compiler infrastructure for power systems: parse, convert, validate, and lower grid models

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:33:49.546Z (1 day ago)
  • Versions: 29
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1,614 Total
  • Rankings:
    • Dependent repos count: 14.148%
    • Dependent packages count: 18.686%
    • Average: 40.719%
    • Downloads: 89.322%
  • Maintainers (1)
crates.io: powerio-cli

Command line interface and ratatui TUI for powerio: parse and convert power system case files and emit matrices.

  • Homepage: https://eigenergy.github.io/powerio/
  • Documentation: https://docs.rs/powerio-cli/
  • Licenses: MIT OR Apache-2.0
  • Latest release: 0.10.0 (published 5 days ago)
  • Last Synced: 2026-09-02T04:33:49.344Z (1 day ago)
  • Versions: 29
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 530 Total
  • Rankings:
    • Dependent repos count: 14.148%
    • Dependent packages count: 18.686%
    • Average: 40.719%
    • Downloads: 89.322%
  • Maintainers (1)

Dependencies

.github/workflows/conversion-matrix.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • actions/github-script v8 composite
  • actions/upload-artifact v7 composite
  • dtolnay/rust-toolchain stable composite
.github/workflows/crates.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • dtolnay/rust-toolchain stable composite
  • rust-lang/crates-io-auth-action v1.0.4 composite
Cargo.toml cargo
powerio-capi/Cargo.toml cargo
  • tempfile 3 development
powerio-pkg/Cargo.toml cargo
.github/workflows/docs.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • actions/deploy-pages v5 composite
  • actions/setup-python v6 composite
  • actions/upload-pages-artifact v5 composite
  • dtolnay/rust-toolchain stable composite
tests/data/pypsa/example/meta.json cpan
.github/workflows/release-binaries.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • actions/upload-artifact v7 composite
  • dtolnay/rust-toolchain stable composite
  • julia-actions/cache v3 composite
  • julia-actions/setup-julia v3 composite
  • softprops/action-gh-release v3 composite
Cargo.lock cargo
  • 361 dependencies
benchmarks/Project.toml julia
  • BenchmarkTools *
  • ExaPowerIO *
  • JSON *
  • PowerModels *
benchmarks/requirements.txt pypi
  • gridx-egret >=0.6
  • jsonschema >=4.18
  • matpowercaseframes <2
  • opendssdirect.py >=0.9,<0.10
  • pandapower ==3.2.2
  • pillow >=12.2.0
  • pypsa >=1.0
  • pytest >=9.0.3
powerio-py/Cargo.toml cargo
powerio-dist/tools/pmd/Project.toml julia
  • JSON *
  • PowerModelsDistribution *
.github/workflows/claude.yml actions
  • actions/checkout v4 composite
  • anthropics/claude-code-action v1 composite
powerio-cli/Cargo.toml cargo
  • tempfile 3 development
  • anyhow 1
  • clap 4
  • crossterm 0.29
  • ratatui 0.30
  • tracing 0.1
  • tracing-subscriber 0.3
  • walkdir 2
.github/workflows/validation.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/cache v5 composite
  • actions/checkout v6 composite
  • actions/setup-python v6 composite
  • dtolnay/rust-toolchain stable composite
  • julia-actions/cache v3 composite
  • julia-actions/setup-julia v3 composite
fuzz/Cargo.toml cargo
.github/workflows/claude-code-review.yml actions
  • actions/checkout v4 composite
  • anthropics/claude-code-action v1 composite
.github/workflows/julia-binding.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • dtolnay/rust-toolchain stable composite
  • julia-actions/cache v3 composite
  • julia-actions/setup-julia v3 composite
.github/workflows/notify-powerio-jl.yml actions
.github/workflows/python.yml actions
  • PyO3/maturin-action v1 composite
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • actions/download-artifact v8 composite
  • actions/setup-python v6 composite
  • actions/upload-artifact v7 composite
  • dtolnay/rust-toolchain stable composite
  • pypa/gh-action-pypi-publish release/v1 composite
powerio/Cargo.toml cargo
  • criterion 0.5 development
  • lexical-core 1
  • petgraph 0.8
  • thiserror 2
.github/workflows/rust.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • dtolnay/rust-toolchain stable composite
powerio-dist/Cargo.toml cargo
  • jsonschema 0.46 development
  • tempfile 3 development
  • thiserror 2
benchmarks/Manifest.toml julia
  • ADTypes 1.22.0
  • Adapt 4.6.0
  • ArgTools 1.1.2
  • ArrayInterface 7.25.0
  • Artifacts 1.11.0
  • Base64 1.11.0
  • BenchmarkTools 1.8.0
  • Bzip2_jll 1.0.9+0
  • CodecBzip2 0.8.5
  • CodecZlib 0.7.8
  • CommonSubexpressions 0.3.1
  • Compat 4.18.1
  • CompilerSupportLibraries_jll 1.3.0+1
  • ConstructionBase 1.6.0
  • Dates 1.11.0
  • DiffResults 1.1.0
  • DiffRules 1.16.0
  • DifferentiationInterface 0.7.18
  • Distances 0.10.12
  • Distributed 1.11.0
  • DocStringExtensions 0.9.5
  • Downloads 1.7.0
  • ExaPowerIO 0.3.0
  • FileWatching 1.11.0
  • FiniteDiff 2.31.0
  • ForwardDiff 1.3.3
  • Future 1.11.0
  • InfrastructureModels 0.7.9
  • InteractiveUtils 1.11.0
  • IrrationalConstants 0.2.6
  • JLLWrappers 1.8.0
  • JSON 1.6.1
  • JuMP 1.30.1
  • JuliaSyntaxHighlighting 1.12.0
  • LazyArtifacts 1.11.0
  • LibCURL 0.6.4
  • LibCURL_jll 8.15.0+0
  • LibGit2 1.11.0
  • LibGit2_jll 1.9.0+0
  • LibSSH2_jll 1.11.3+1
  • Libdl 1.11.0
  • LineSearches 7.5.1
  • LinearAlgebra 1.12.0
  • LogExpFunctions 0.3.29
  • Logging 1.11.0
  • MacroTools 0.5.16
  • Markdown 1.11.0
  • MathOptInterface 1.51.1
  • MozillaCACerts_jll 2025.11.4
  • MutableArithmetics 1.8.0
  • NLSolversBase 7.10.0
  • NLsolve 4.5.1
  • NaNMath 1.1.3
  • NetworkOptions 1.3.0
  • OpenBLAS_jll 0.3.29+0
  • OpenLibm_jll 0.8.7+0
  • OpenSSL_jll 3.5.4+0
  • OpenSpecFun_jll 0.5.6+0
  • OrderedCollections 1.8.2
  • Parsers 2.8.5
  • Pkg 1.12.1
  • PowerModels 0.21.6
  • PrecompileTools 1.3.4
  • Preferences 1.5.2
  • Printf 1.11.0
  • Profile 1.11.0
  • Random 1.11.0
  • Reexport 1.2.2
  • SHA 0.7.0
  • Serialization 1.11.0
  • Setfield 1.1.2
  • Sockets 1.11.0
  • SparseArrays 1.12.0
  • SpecialFunctions 2.8.0
  • StaticArraysCore 1.4.4
  • Statistics 1.11.1
  • StatsAPI 1.8.0
  • StructUtils 2.8.2
  • StyledStrings 1.11.0
  • SuiteSparse_jll 7.8.3+2
  • TOML 1.0.3
  • Tar 1.10.0
  • Test 1.11.0
  • TranscodingStreams 0.11.3
  • UUIDs 1.11.0
  • Unicode 1.11.0
  • Zlib_jll 1.3.1+2
  • libblastrampoline_jll 5.15.0+0
  • nghttp2_jll 1.64.0+1
  • p7zip_jll 17.7.0+0
powerio-matrix/Cargo.toml cargo
  • approx 0.5 development
  • criterion 0.5 development
  • tempfile 3 development
  • parquet 59
  • rand 0.9
  • rand_chacha 0.9
  • rayon 1
  • rustc-hash 2
  • sha2 0.10
  • walkdir 2
powerio-prob/Cargo.toml cargo
  • tempfile 3 development
pyproject.toml pypi
.github/workflows/fuzz.yml actions
  • Swatinem/rust-cache v2 composite
  • actions/checkout v6 composite
  • dtolnay/rust-toolchain nightly composite
powerio-diag/Cargo.toml cargo

Score: 14.013603752705363