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 16 hours ago
JSON representation
Repository metadata
Power system compiler infrastructure
- Host: GitHub
- URL: https://github.com/eigenergy/powerio
- Owner: eigenergy
- License: apache-2.0
- Created: 2026-05-01T16:28:11.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-08-30T02:04:16.000Z (5 days ago)
- Last Synced: 2026-08-30T03:12:41.311Z (5 days ago)
- Topics: converter, electrical-engineering, interoperability, parser, parsing-library, power-systems
- Language: Rust
- Homepage: https://powerio.dev
- Size: 58.4 MB
- Stars: 24
- Watchers: 1
- Forks: 1
- Open Issues: 13
- Releases: 29
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE-APACHE
- Security: SECURITY.md
- Agents: AGENTS.md
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
.rawrevisions 33, 34, and 35 - PowerWorld
.aux;.pwbis read only and.pwduses 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
- Guide
- Core concepts
- PowerIO intermediate representations
- Matrices and signs
- Rust, Python, Julia, and C
- Python API
- C ABI
- PowerIO.jl
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
- Name: eigenergy
- Login: eigenergy
- Email: talks@umich.edu
- Kind: organization
- Description:
- Website:
- Location: United States of America
- Twitter:
- Company:
- Icon url: https://avatars.githubusercontent.com/u/289333365?v=4
- Repositories: 1
- Last ynced at: 2026-06-10T04:13:35.843Z
- Profile URL: https://github.com/eigenergy
GitHub Events
Total
- Create event: 49
- Delete event: 38
- Issue comment event: 8
- Issues event: 5
- Pull request event: 10
- Pull request review event: 7
- Push event: 177
Last Year
- Create event: 49
- Delete event: 38
- Issue comment event: 8
- Issues event: 5
- Pull request event: 10
- Pull request review event: 7
- Push event: 177
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 | 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
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
- Total packages: 10
-
Total downloads:
- cargo: 5,995 total
- pypi: 2,240 last-month
- Total dependent packages: 0 (may contain duplicates)
- Total dependent repositories: 0 (may contain duplicates)
- Total versions: 165
- Total maintainers: 2
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
- Swatinem/rust-cache v2 composite
- actions/checkout v6 composite
- actions/github-script v8 composite
- actions/upload-artifact v7 composite
- dtolnay/rust-toolchain stable composite
- Swatinem/rust-cache v2 composite
- actions/checkout v6 composite
- dtolnay/rust-toolchain stable composite
- rust-lang/crates-io-auth-action v1.0.4 composite
- tempfile 3 development
- 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
- 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
- 361 dependencies
- BenchmarkTools *
- ExaPowerIO *
- JSON *
- PowerModels *
- 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
- JSON *
- PowerModelsDistribution *
- actions/checkout v4 composite
- anthropics/claude-code-action v1 composite
- tempfile 3 development
- anyhow 1
- clap 4
- crossterm 0.29
- ratatui 0.30
- tracing 0.1
- tracing-subscriber 0.3
- walkdir 2
- 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
- actions/checkout v4 composite
- anthropics/claude-code-action v1 composite
- 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
- 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
- criterion 0.5 development
- lexical-core 1
- petgraph 0.8
- thiserror 2
- Swatinem/rust-cache v2 composite
- actions/checkout v6 composite
- dtolnay/rust-toolchain stable composite
- jsonschema 0.46 development
- tempfile 3 development
- thiserror 2
- 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
- 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
- tempfile 3 development
- Swatinem/rust-cache v2 composite
- actions/checkout v6 composite
- dtolnay/rust-toolchain nightly composite
Score: 14.013603752705363