MATPOWER transmission network data in Julia.


MATPOWER transmission network data

Release status

MatpowerCases MatpowerCases MatpowerCases

Dev status

Build Status Coverage Status

My favorite MATPOWER function is loadcase(name) (where name is a string), so I made it work in Julia.

This package contains all transmission network data included in MATPOWER 5.1, plus data for the RTS-96 and RTS-79 networks. You can return a Dict containing network data using loadcase(name), just as you would with MATPOWER. No MATLAB kernel or MATPOWER installation is required.

Installation and use

To install:


To load data for, say, the IEEE 118-bus power flow test case:

using MatpowerCases
mpc = loadcase("case118")

You should see a one-line description of the network (unless you passed describe=false to loadcase()). Now mpc is a Dict containing network data in MATPOWER caseformat:

 CASE118    Power flow data for IEEE 118 bus test case.

Dict{ASCIIString,Any} with 8 entries:
  "baseMVA"   => 100.0
  "gen"       => [1.0 0.0 0.0 15.0 -5.0 0.955 100.0 1.0 100.0 0.0 0.0 0.0 0.0 0…
  "branch"    => [1.0 2.0 0.0303 0.0999 0.0254 0.0 0.0 0.0 0.0 0.0 1.0 -360.0 3…
  "docstring" => " CASE118    Power flow data for IEEE 118 bus test case.    …
  "bus_name"  => Any["Riversde  V2"…
  "bus"       => [1.0 2.0 51.0 27.0 0.0 0.0 1.0 0.955 10.67 138.0 1.0 1.06 0.94…
  "version"   => "2"
  "gencost"   => [2.0 0.0 0.0 3.0 0.01 40.0 0.0…

You may load data for any network MATPOWER 5.1 supports, plus the RTS-96 (case96) and RTS-79 (case79) networks. You may also provide a path to any .mat file containing MATPOWER-format data to loadcase().

Detailed network information

The one-line description you see when you load a network is the first line of a docstring. Print the whole thing to see detailed network information:


This is the same docstring you would see if you ran help(caseName) in a MATLAB environment with MATPOWER installed.

Conversion to Case type

This package will also convert an mpc Dict to an instance of a type called Case. Case contains all mpc data, but is easier to navigate. Rather than referring to the caseformat documentation to figure out where, say, active power injection data might be, you can type:

c = extract_case("case9")

Then type c.<TAB> to see a list of fields. Active power injections would logically be under bus, so type c.bus.<TAB>. PD is one of the fields that appears. Typing c.bus.PD returns the vector of active power injections for all buses.

Who to credit when publishing

MATPOWER is an awesome tool for power and energy researchers. It is actively developed by Ray Zimmerman, Carlos Murillo-Sánchez and others. If you use this package in your research, please cite them:

R. D. Zimmerman, C. E. Murillo-Sánchez, and R. J. Thomas, "MATPOWER: Steady-State Operations, Planning and Analysis Tools for Power Systems Research and Education," Power Systems, IEEE Transactions on, vol. 26, no. 1, pp. 12-19, Feb. 2011.

Also, if you use any of the four recently-added European grid test networks (caseName ending in "pegase"), please cite this paper as follows:

Fliscounakis, S.; Panciatici, P.; Capitanescu, F.; Wehenkel, L., "Contingency Ranking With Respect to Overloads in Very Large Power Systems Taking Into Account Uncertainty, Preventive, and Corrective Actions," Power Systems, IEEE Transactions on , vol.28, no.4, pp.4909,4917, Nov. 2013 doi: 10.1109/TPWRS.2013.2251015

Note: The popular RTS-79 and RTS-96 networks are not included in MATPOWER, but are available in MatpowerCases thanks to Zhu Wang and Robert Green, who made their .m files freely available.

First Commit


Last Touched

8 months ago


59 commits

Used By: