This file format is widely used in power systems research, and I hope PowerFlowData.jl will help researchers who need to work with these files.
PowerFlowData.jl currently supports both v30 and v33 of the PSS/E data format. And should be ~100x faster and lower memory than existing open-source parsers, such as the
parse_psse functions included in PowerModels.jl and PowerSystems.jl. For example, on a large file from PowerSystemsTestData:
Timing PowerModels.jl (v0.18.3) on v33 file: PowerSystemsTestData/ACTIVSg70k/ACTIVSg70k.RAW 1st run : 91.756136 seconds (695.83 M allocations: 15.238 GiB, 5.62% gc time, 0.59% compilation time) 2nd run : 89.145086 seconds (692.60 M allocations: 15.049 GiB, 5.78% gc time) Timing PowerSystems.jl (v1.15.1) on v33 file: PowerSystemsTestData/ACTIVSg70k/ACTIVSg70k.RAW 1st run : 88.938766 seconds (683.01 M allocations: 14.586 GiB, 5.63% gc time, 0.15% compilation time) 2nd run : 89.891755 seconds (681.18 M allocations: 14.480 GiB, 5.90% gc time) Timing PowerFlowData.jl (v1.0.0) on v33 file: PowerSystemsTestData/ACTIVSg70k/ACTIVSg70k.RAW 1st run : 0.837682 seconds (639.34 k allocations: 135.744 MiB, 74.52% compilation time) 2nd run : 0.248546 seconds (1.16 k allocations: 96.066 MiB)
(timings in Julia v1.6.3, and with logging output disabled)
I would welcome feedback from users, here or as issues on the GitHub repo.
(p.s. thanks to Jacob Quinn for a lot of advice on how to make a fast parser, as well as for Parsers.jl and Tables.jl which make the package possible.)