File location: scenarios/<my_scenario>/config.toml
Template: sample_config.toml in the repo root


How precedence works

  • General.use_local overrides any CODERS settings. When this flag is true, the runner fills models from a local IAMC database at General.data_path and ignores CODERS even if CODERS.use_coders = true.
  • If use_local = false, the runner looks at CODERS.use_coders:
  • true → download data from CODERS (requires api_key).
  • false → models must already contain the required inputs (or they will fail).
  • Model‑specific paths and env names always take precedence over defaults in the linkage script.

1 · [General]

Key Type Default Allowed / Notes Example
base_env str "linkage" Name of Conda env that contains linkage repo —
use_local bool false If true, read inputs from local IAMC DB and disable CODERS —
data_path str "data" Folder for local DB or CODERS cache "D:\\iamc"
log_path str "logs" Not yet used (future feature) —
solver str "cplex" cplex | glpk "glpk"

2 · [IDEA]

Key Type Default Allowed / Notes Example
launch bool true Auto‑open IDEA after run —
repo_path str "<path_to_idea_repo>" Path to cloned IDEA repo "C:\\code\\idea-dash"
env_name str "idea-dash" Conda env for IDEA —

3 · [CODERS]

Key Type Default Allowed / Notes Example
use_coders bool false Must be true unless use_local is true fileciteturn5file0 —
api_key str "api_key" Get one from CODERS dashboard "abcdef12345"
demand_year int 2021 Year available in CODERS 2023
vre_year int 2021 Only 2021 supported now —
regions[] list[str] full Canada Must be capitalised names ["Ontario", "Quebec"]
create_local bool false Save downloaded data to data_path for future offline runs —
COPPER.input_files str | list "ALL" 'ALL' or subset of input file names ['demand', 'vre']

4 · [Models]

4.1 [Models.CIMS]

Key Type Default Allowed / Notes Example
repo_path str "<path_to_cims_models_repo>" Clone of cims‑models‑fork —
env_name str "cims-env" Conda env for CIMS —
base_scenario str 'Reference' 'Reference' | 'Net Zero' 'Net Zero'

[Models.CIMS.Acceptable_Rate_Difference] (nested) – stop criteria for CIMS ↔ COPPER loop; set any to -1 or comment out to disable. All selected criteria must pass for the iteration to stop fileciteturn5file3.

Sub‑key Type Default Meaning
mean_absolute_error float 10 $\text{MAE} \le \text{value}$
total_difference float 10000 Absolute \$ change
total_relative_difference float 0.05 Fractional change (5 %)
provincial_relative_difference float 0.05 Per‑province relative change

4.2 [Models.COPPER]

Key Type Default Notes
repo_path str — Path to COPPER repo
env_name str "copper" Conda env name

[Models.COPPER.Config.Disaggregation_Settings]

Sub‑key Type Default Notes
provinces_to_disaggregate[] list[str] all lowercase province names fileciteturn5file3
years_to_disaggregate[] list[str] ['2050'] Years as strings
CODERS_URL str 'http://api.sesit.ca' API endpoint
vre_gen_types[] list[str] many COPPER generator tags considered VRE
min_gen_size int 400 MW threshold to ignore outliers

[Models.COPPER.Config.Electricity_Rate_Settings]

Sub‑key Type Default Notes
profit_margin float 0.1 Fractional markup on LCOE

4.3 [Models.SILVER]

Key Type Default Notes
repo_path str — Path to SILVER repo
env_name str "silver_env" Conda env name

[Models.SILVER.Config.Linkage_Options]

Sub‑key Type Default Notes
copperplate_transmission bool true If true, run SILVER with copper‑plate grid assumption

5 · Derived keys and environment variables

The runner also reads the following generated paths during execution; you rarely edit them manually:

Variable Resolved from Purpose
SCENARIO_ROOT scenario folder Base folder for outputs/inputs
MODELS.*.env_name each model Used in conda run -n <env>