All notable changes to EPM are documented here.
Format follows Keep a Changelog.
Versions follow Semantic Versioning: MAJOR.MINOR.PATCH.
- Post-processing: GAMS special values (
EPS,UNDF,NA,±INF) are now translated to numbers when output CSVs are read, instead of reaching pandas as text. A singleEPSleft in avaluecolumn made pandas inferobjectdtype, andcumsum/sumthen concatenated strings instead of adding them: cumulative cost files grew quadratically (one run produced a 122 MBpCostsMerged.csv) and, more importantly, held wrong numbers.EPSmaps to0(a stored zero, not a missing value). Runs affected before this fix must be regenerated —pDiscountedWeightedCostsCumulatedvalues were incorrect, not merely bulky. - Dashboard: the same translation now applies when the dashboard reads output
CSVs. It previously used
pd.to_numeric(errors='coerce'), which avoided the string concatenation but mappedEPStoNaN— andload_yearly_zonedropsNaNrows, so stored zeros disappeared from the charts instead of showing as zero.
epm/gams_values.py: single definition of GAMS special-value handling (GAMS_SPECIAL_VALUES,coerce_value_column,read_output_csv), shared byepm/output_treatment.pyanddashboard/data_loader.py. Duplicating this logic is how the bug came back the first time, so it lives in one place.tools/test_output_treatment.py: regression tests for the above, including a guard that fails if an unprotectedpd.read_csvis added to any of the guarded modules (post-processing or dashboard).tools/audit_postprocessing_sync.py: reports which branches carry the post-processing fixes, so drift between study branches stays visible.
- H2 (hydrogen) module corrections
- Data preparation documentation rewritten with phase-based methodology
- Improved diagram visuals and layout in documentation
- EPM Dashboard: interactive web interface for results visualization (beta)
- Windows installer (
.exe) for simplified setup - Pan-Arab electricity market example dataset (
data_pan_arab) - Remote server execution guide
- MCP (Model Context Protocol) integration documentation
- Dispatch-only run mode
- Output folder structure reorganized
- Documentation fully overhauled: new structure, improved navigation, expanded guides
- Introduction and case studies pages expanded with regional examples
- Various input data corrections for
data_eapp
- Initial public release on GitHub
- Python orchestration layer (
epm.py) wrapping GAMS model - Full documentation site (MkDocs + GitHub Pages)
- GitHub Actions CI: automated GAMS model test + documentation deployment
- Representative days algorithm documentation and notebook
- Postprocessing pipeline: dispatch graphs, energy mix figures, capacity charts
- East Africa Power Pool (EAPP) example dataset
CONTRIBUTING.md, issue templates,.gitignore- Utility functions (
utils.py) for visualization colors.csvfor standardized technology colors
Note: EPM versions prior to 9.0-beta were internal World Bank tools not tracked on GitHub.
For archived releases, see Zenodo.