Input Folder Structure#
All input files must be placed inside the epm/input folder.
Each dataset lives in its own subfolder, which is passed to the model with --folder_input.
A config.csv file maps model parameters to the corresponding .csv files; the path of this file is passed with --config from --folder_input. See Configuration for details on how config.csv works.
Related Documentation:
Configuration Flow - How config.csv, pSettings, and resources work together
Input Overview - Summary of all input files
Input Description - Detailed parameter descriptions
Resources - Shared model constants (technologies, fuels, carbon content)
Input Treatment - Automatic data validation and filling
Below is the current baseline structure for the data_test dataset.
To run the model with Python:
python epm.py --folder_input data_test --config config.csv
data_test/
│
├── config.csv # Main configuration file for baseline run
├── pHours.csv # Time-slice definitions
├── pSettings.csv # Default simulation settings
├── pSettings_NoTransmissionExpansion.csv
├── scenarios.csv # Scenario definitions (e.g., NoTransmissionExpansion, OptimalExpansion)
├── sensitivity.csv # Optional sensitivity inputs referenced by `sensitivity/`
├── y.csv # Year list (full horizon)
├── zcmap.csv # Zone-country mapping
│
├── constraint/ # Policy and emissions constraints
│ ├── pCarbonPrice.csv
│ ├── pEmissionsCountry.csv
│ ├── pEmissionsTotal.csv
│ └── pMaxFuellimit.csv
│
├── h2/ # Hydrogen-specific parameters
│ ├── pAvailabilityH2.csv
│ ├── pCapexTrajectoryH2.csv
│ ├── pExternalH2.csv
│ ├── pFuelDataH2.csv
│ └── pH2DataExcel.csv
│
├── load/ # Load and demand data
│ ├── pDemandData.csv
│ ├── pDemandForecast.csv
│ ├── pDemandProfile.csv
│ ├── pEnergyEfficiencyFactor.csv
│ └── sRelevant.csv
│
├── reserve/ # Reserve requirements
│ ├── pPlanningReserveMargin.csv
│ ├── pSpinningReserveReqCountry.csv
│ └── pSpinningReserveReqSystem.csv
│
├── sensitivity/ # Reduced input files listed in `sensitivity.csv`
│ └── y_reduced.csv
│
├── supply/ # Generation and availability data
│ ├── pAvailabilityCustom.csv
│ ├── pAvailabilityDefault.csv
│ ├── pCSPData.csv
│ ├── pCapexTrajectoriesCustom.csv
│ ├── pCapexTrajectoriesDefault.csv
│ ├── pFuelPrice.csv
│ ├── pGenDataInput.csv
│ ├── pGenDataInputDefault.csv
│ ├── pStorageDataInput.csv
│ ├── pVREProfile.csv
│ ├── pVREgenProfile.csv
│ └── sensitivity/
│ └── pGenDataInput_linear.csv
│
└── trade/ # Cross-border trade and transmission
├── pExtTransferLimit.csv
├── pLossFactorInternal.csv
├── pMaxAnnualExternalTradeShare.csv
├── pMaxPriceImportShare.csv
├── pMinImport.csv
├── pNewTransmission.csv
├── pNewTransmission_optimal.csv
├── pTradePrice.csv
├── pTransferLimit.csv
└── zext.csv
Scenario and Sensitivity Files#
scenarios.csv: Lists the core scenario names and the specific files that each scenario should pull from the dataset.sensitivity.csv: Points to alternative data sources (e.g., reduced year sets) contained in thesensitivity/directories at the dataset root or within specific subfolders such assupply/sensitivity/.
Data Package Schema (datapackage.json)#
The epm/input/datapackage.json file defines the canonical schema for all EPM input datasets following the Frictionless Data Package specification. This file:
Describes the structure and types of each input CSV file
Defines foreign key relationships between resources (e.g., zones reference
zcmap.z)Specifies whether data is stored in “wide” or “long” format
Documents the expected columns, data types, and units for each parameter
This schema is useful for:
Validation: Ensuring input data conforms to expected structure
Documentation: Understanding relationships between input files
Tooling: Building automated data pipelines that read EPM inputs
Example resource definition from datapackage.json:
{
"name": "pDemandForecast",
"path": "load/pDemandForecast.csv",
"format": "csv",
"schema": {
"fields": [
{"name": "z", "type": "string"},
{"name": "type", "type": "string"},
{"name": "year", "type": "integer"},
{"name": "value", "type": "number"}
],
"foreignKeys": [
{"fields": ["z"], "reference": {"resource": "zcmap", "fields": ["z"]}}
]
}
}