Skip to content

v1.1.0

Choose a tag to compare

@LorenzoRinaldi LorenzoRinaldi released this 26 Jul 14:18

MARIO v1.1.0

This release centers on scenario-based composition updates — rewriting the
electricity supply and trade mixes of a table while preserving its column
totals — together with a reworked sector disaggregation workflow, RAS
balancing, and richer shock authoring.

Electricity supply & trade mixes

  • Database.update_supply_mix — rewrite one region's generation mix in
    place, preserving every buyer's total: across z/Y on IOT and u/Yc
    (commodity) or the supply block s (activity market shares) on SUT. The
    "electricity" mode derives the mix from EMBER generation for a chosen
    year (aggregating to the compatible fuel groups and redistributing back).
    Database.get_mix reads a production mix back. update_supply_mix_iot /
    update_mix_iot remain as IOT-only aliases.
  • Database.pool_trade — pool a commodity's trade behind a
    "- supply"/"- need" pass-through layer, so its technology mix and trade
    mix live in two independent market-share columns.
  • Database.update_trade_mix — the dual of the supply mix: redistribute one
    item across its origin regions per destination market. The "electricity"
    mode reads the ENTSO-E import mix.
  • Live data fetch — the "electricity" modes can fetch EMBER / ENTSO-E
    directly with an API key (mario.set_api_keys(...), a <PROVIDER>_API_KEY
    env var, or mario/settings/api_keys.yaml); packaged snapshots keep both
    methods working offline with no key.
  • New "Updating the electricity supply and trade mix" user-guide workflow
    and API reference.

Sector disaggregation & balancing

  • Database.add_sectors — new VA_fix (augment missing factor-of-production
    rows from parent sectors) and accept_non_unitary_sum options;
    read_add_sectors_excel reads grouped inventories from multiple sheets and
    accepts split=; corrected total-output/flow computations after inserting a
    sector.
  • Sector split (split=True) — reworked routine: exclusions and
    factor-of-production clusters, a residue threshold, a faster and better
    disaggregation formulation, and no accidental output-folder overwrite. A
    complete end-to-end example lives in
    MRIO-disaggregation-model.
  • Database.ras — balance the Z block of an IOT scenario to target row
    and column margins with the biproportional RAS algorithm.

Shocks

  • shock_calc(base_scenario=...) — build a shock on top of any existing
    scenario, so shocks can be chained.
  • New Supply mix N and Trade mix N shock types in the shock
    workbook (IOT z/Y; SUT u/s/Yc), with template picklists — the mix
    updates authored without code.

GHG & plotting

  • calc_ghg names the aggregated satellite account after its GWP basis when
    label is omitted (e.g. "GHG AR6 GWP-100").
  • Plot helpers always write the figure HTML to disk and no longer fail when the
    inline Jupyter backend is unavailable.

Settings & dependencies

  • Default compute.compute_method changed from auto to inverse.
  • Adds entsoe-py (live ENTSO-E fetch, raw XML client only — pandas-3 safe) and
    nbformat as dependencies.

Full changelog: v1.0.3...v1.1.0