From 6474c038192b4a984e0c9edf92ce74e7c67880cc Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 14 Oct 2019 15:02:57 +0200 Subject: [PATCH 001/220] Move files into message_data; new __init__.py --- message_ix_models/report/__init__.py | 51 +++++++++++++++++++++++ message_ix_models/report/data/global.yaml | 5 +++ message_ix_models/report/util.py | 30 +++++++++++++ message_ix_models/tests/test_report.py | 1 + 4 files changed, 87 insertions(+) create mode 100644 message_ix_models/report/__init__.py create mode 100644 message_ix_models/report/data/global.yaml create mode 100644 message_ix_models/report/util.py create mode 100644 message_ix_models/tests/test_report.py diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py new file mode 100644 index 0000000000..1538499095 --- /dev/null +++ b/message_ix_models/report/__init__.py @@ -0,0 +1,51 @@ +"""Reporting for the MESSAGEix-GLOBIOM global model.""" +import logging +from pathlib import Path + +import click + +from ixmp.utils import logger +from .util import prepare_reporter + + +log = logging.getLogger(__name__) + + +@click.command(name='report') +@click.argument('key', default='message:default') +@click.option('-o', '--output', 'output_path', type=Path, + help='Write output to file instead of console.') +@click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') +@click.pass_context +def cli(ctx, key, output_path, verbose): + """Postprocess results. + + KEY defaults to the comprehensive report 'message:default', but may also + be the name of a specific model quantity, e.g. 'output'. + """ + from time import process_time + + times = [process_time()] + + def mark(): + times.append(process_time()) + log.info(' {:.2f} seconds'.format(times[-1] - times[-2])) + + if verbose: + logger().setLevel('DEBUG') + + s = ctx.obj.get_scenario() + mark() + + # Read reporting configuration from a file + config = Path(__file__).parent / 'data' / 'global.yaml' + rep, key = prepare_reporter(s, config, key, output_path) + mark() + + print('Preparing to report:', rep.describe(key), sep='\n') + mark() + + result = rep.get(key) + print(f'Result written to {output_path}' if output_path else + f'Result: {result}', sep='\n') + mark() diff --git a/message_ix_models/report/data/global.yaml b/message_ix_models/report/data/global.yaml new file mode 100644 index 0000000000..3da0aa4bd0 --- /dev/null +++ b/message_ix_models/report/data/global.yaml @@ -0,0 +1,5 @@ +units: + define: | + USD = [value] + replace: + '???': '' diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py new file mode 100644 index 0000000000..bdc227059e --- /dev/null +++ b/message_ix_models/report/util.py @@ -0,0 +1,30 @@ +from functools import partial +import logging + +from message_ix.reporting import Reporter, configure +from message_ix.reporting.computations import write_report + +log = logging.getLogger(__name__) + + +def prepare_reporter(scenario, config, key, output_path): + # Apply global reporting configuration, e.g. unit definitions + configure(config) + + log.info('Preparing reporter') + + # Create a Reporter for *scenario* and apply Reporter-specific config + rep = Reporter.from_scenario(scenario) \ + .configure(config) + + # If needed, get the full key for *quantity* + key = rep.check_keys(key)[0] + + if output_path: + # Add a new computation that writes *key* to the specified file + rep.add('cli-output', (partial(write_report, path=output_path), key)) + key = 'cli-output' + + log.info('…done') + + return rep, key diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py new file mode 100644 index 0000000000..fd352ca0b2 --- /dev/null +++ b/message_ix_models/tests/test_report.py @@ -0,0 +1 @@ +"""Tests for reporting/.""" From 4c6cec23957b6d87e27ddd50cbf53c2478d8a03c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 15 Oct 2019 00:43:14 +0200 Subject: [PATCH 002/220] Merge branch 'master' into reporting3 --- message_ix_models/report/__init__.py | 9 +- message_ix_models/report/computations.py | 56 ++++ message_ix_models/report/core.py | 189 ++++++++++++ message_ix_models/report/data/global.yaml | 350 ++++++++++++++++++++++ message_ix_models/report/util.py | 50 ++-- 5 files changed, 632 insertions(+), 22 deletions(-) create mode 100644 message_ix_models/report/computations.py create mode 100644 message_ix_models/report/core.py diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 1538499095..c204ba1c45 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -5,7 +5,7 @@ import click from ixmp.utils import logger -from .util import prepare_reporter +from .core import prepare_reporter log = logging.getLogger(__name__) @@ -16,8 +16,10 @@ @click.option('-o', '--output', 'output_path', type=Path, help='Write output to file instead of console.') @click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') +@click.option('--dry-run', '-n', is_flag=True, + help='Only show what would be done.') @click.pass_context -def cli(ctx, key, output_path, verbose): +def cli(ctx, key, output_path, verbose, dry_run): """Postprocess results. KEY defaults to the comprehensive report 'message:default', but may also @@ -45,6 +47,9 @@ def mark(): print('Preparing to report:', rep.describe(key), sep='\n') mark() + if dry_run: + return + result = rep.get(key) print(f'Result written to {output_path}' if output_path else f'Result: {result}', sep='\n') diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py new file mode 100644 index 0000000000..b490b71fd4 --- /dev/null +++ b/message_ix_models/report/computations.py @@ -0,0 +1,56 @@ +"""Atomic computations for MESSAGEix-GLOBIOM. + +Some of these may migrate upstream to message_ix or ixmp in the future. +""" +from message_ix.reporting.computations import * # noqa: F401,F403 +from message_ix.reporting.computations import concat + + +def combine(*quantities, select, weights): + """Sum distinct *quantities* by *weights*. + + Parameters + ---------- + *quantities : Quantity + The quantities to be added. + select : list of dict + Elements to be selected from each quantity. Must have the same number + of elements as `quantities`. + weight : list of float + Weight applied to each . Must have the same number + of elements as `quantities`. + + """ + # NB .transpose() is necessary when Quantity is AttrSeries. + result = None + + for qty, s, w in zip(quantities, select, weights): + multi = [dim for dim, values in s.items() if isinstance(values, list)] + + if result is None: + result = w * (qty.sel(s).sum(dim=multi) if len(multi) else + qty.sel(s)) + dims = result.dims + else: + result += w * (qty.sel(s).sum(dim=multi) if len(multi) else + qty.sel(s)).transpose(*dims) + + return result + + +def group_sum(qty, group, sum): + """Group by dimension *group*, then sum across dimension *sum*. + + The result drops the latter dimension. + """ + return concat([values.sum(dim=[sum]) for _, values in qty.groupby(group)], + dim=group) + + +def share_curtailment(curt, *parts): + """Apply a share of *curt* to the first of *parts*. + + If this is being used, it usually will indicate the need to split *curt* + into multiple technologies; one for each of *parts*. + """ + return parts[0] - curt * (parts[0] / sum(parts)) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py new file mode 100644 index 0000000000..8b1f92ae47 --- /dev/null +++ b/message_ix_models/report/core.py @@ -0,0 +1,189 @@ +from copy import copy +from functools import partial +import logging + +from ixmp.reporting.utils import Quantity +from message_ix.reporting import Key, Reporter, configure +from message_ix.reporting.computations import write_report +from message_ix.reporting.computations import concat +import yaml + +from . import computations +from .computations import combine, group_sum +from .util import collapse, infer_keys + + +log = logging.getLogger(__name__) + + +def prepare_reporter(scenario, config, key, output_path): + # Apply global reporting configuration, e.g. unit definitions + configure(config) + + log.info('Preparing reporter') + + # Create a Reporter for *scenario* and apply Reporter-specific config + rep = Reporter.from_scenario(scenario) \ + .configure(config) + + # Load the YAML configuration as a dict + with open(config, 'r') as f: + config = yaml.load(f) + + # ------------------------------------------------------------------------- + # NB Add code between these --- lines to expand the reporting for + # MESSAGEix-GLOBIOM: + # - Modify the reporter directly with add() or apply(). + # - Create a function like add_quantities() below and call it. + # - Add to the file data/global.yaml, and then read its keys from the + # variable *config*. + + # Mapping of file sections to handlers + sections = ( + ('aggregate', add_aggregate), + ('combine', add_combination), + ('iamc', add_iamc_table), + ('report', add_report), + ('general', add_general), + ) + + for section_name, func in sections: + entries = config.get(section_name, []) + + # Handle the entries, if any + if len(entries): + log.info(f'--- {section_name!r} config section') + for entry in entries: + func(rep, entry) + + # ------------------------------------------------------------------------- + + # If needed, get the full key for *quantity* + key = rep.check_keys(key)[0] + + if output_path: + # Add a new computation that writes *key* to the specified file + rep.add('cli-output', (partial(write_report, path=output_path), key)) + key = 'cli-output' + + log.info('…done') + + return rep, key + + +def add_aggregate(rep, info): + """Add items from the 'aggregates' tree in the config file.""" + # Copy for destructive .pop() + info = copy(info) + + quantities = info.pop('_quantities') + tag = info.pop('_tag') + groups = {info.pop('_dim'): info} + + for qty in quantities: + keys = rep.aggregate(qty, tag, groups, sums=True) + + log.info(f'Add {keys[0]!r} + {len(keys)-1} partial sums') + + +def add_combination(rep, info): + """Add items from the 'combine' tree in the config file.""" + # Split inputs into three lists + quantities, select, weights = [], [], [] + + # Key for the new quantity + key = Key.from_str_or_key(info['key']) + + # Loop over inputs to the combination + for i in info['inputs']: + # Required dimensions for this input: output key's dims, plus any + # dims that must be selected on + dims = set(key.dims) | set(i['select'].keys()) + quantities.append(infer_keys(rep, i['quantity'], dims)) + + select.append(i['select']) + weights.append(i['weight']) + + # Check for malformed input + assert len(quantities) == len(select) == len(weights) + + # Computation + c = tuple([partial(combine, select=select, weights=weights)] + quantities) + + added = rep.add(key, c, strict=True, index=True, sums=True) + + log.info(f"Add {key}\n computed from {quantities!r}\n + {len(added)-1} " + "partial sums") + + +def add_iamc_table(rep, info): + """Add IAMC tables from the 'iamc' tree in the config file.""" + # For each quantity, use a chain of computations to prepare it + name = info['variable'] + + # Chain of keys produced: first entry is the key for the base quantity + keys = [Key.from_str_or_key(info['base'])] + + if 'select' in info: + # Select a subset of data from the base quantity + key = Key(name, keys[-1]._dims) + rep.add(key, (Quantity.sel, keys[-1], info['select']), strict=True) + keys.append(key) + + if 'group_sum' in info: + # Aggregate data by groups + args = dict(group=info['group_sum'][0], sum=info['group_sum'][1]) + key = Key.from_str_or_key(keys[-1], tag='agg') + rep.add(key, (partial(group_sum, **args), keys[-1]), strict=True) + keys.append(key) + + # 'format' section: convert the data to a pyam data structure + + # Copy for destructive .pop() operation + args = copy(info['format']) + args['var_name'] = name + + drop = set(args.pop('drop', [])) & set(keys[-1]._dims) + + key = f'{name}:iamc' + rep.as_pyam(keys[-1], 'ya', key, drop=drop, + collapse=partial(collapse, **args)) + keys.append(key) + + # Revise the 'message:default' report to include the last key in + # the chain + rep.add('message:default', + rep.graph['message:default'] + (keys[-1],)) + + log.info(f'Add {name!r} from {keys[0]!r}\n keys {keys[1:]!r}') + + +def add_report(rep, info): + """Add items from the 'report' tree in the config file.""" + log.info(f"Add {info['key']!r}") + + # Concatenate pyam data structures + rep.add(info['key'], tuple([concat] + info['members']), strict=True) + + +def add_general(rep, info): + """Add items from the 'general' tree in the config file. + + This is, as the name implies, the most generalized section of the config + file. Entry *info* must contain: + + - 'comp': this refers to the name of a computation that is available in the + namespace of message_data.reporting.computations. + - 'args': (optional) keyword arguments to the computation. + - 'inputs': a list of keys to which the computation is applied. + - 'key': the key for the computed quantity. + """ + log.info(f"Add {info['key']!r}") + + # Retrieve the function for the computation + f = getattr(computations, info['comp']) + kwargs = info.get('args', {}) + inputs = infer_keys(rep, info['inputs']) + task = tuple([partial(f, **kwargs)] + inputs) + + rep.add(info['key'], task, strict=True) diff --git a/message_ix_models/report/data/global.yaml b/message_ix_models/report/data/global.yaml index 3da0aa4bd0..3719ede260 100644 --- a/message_ix_models/report/data/global.yaml +++ b/message_ix_models/report/data/global.yaml @@ -1,5 +1,355 @@ +# Configuration for reporting of the MESSAGEix-GLOBIOM global model +# +# Some groups in this file ('units', 'files', 'alias') are used by the +# ixmp.reporting and message_ix.reporting built-in configuration code. See: +# +# https://message.iiasa.ac.at/en/latest/reporting.html#ixmp.reporting.configure +# https://message.iiasa.ac.at/en/latest/ +# reporting.html#ixmp.reporting.Reporter.configure +# +# Others are used in reporting.core.prepare_reporter. +# +# +# EDITING +# +# - Wrap lines at 80 characters. + + units: define: | USD = [value] replace: '???': '' + + +# Filters +# +# These limit the data that is retrieved from the backend by ixmp.reporting; +# so ALL quantities in the Reporter are limited to these values. Use these for +# debugging. + +# filters: +# t: [coal_ppl, po_turbine, c_ppl_co2scr] + + +# Aggregate across dimensions of single quantities +# - Corresponds to ixmp.Reporter.aggregate via reporting.core.add_aggregate +aggregate: + # Quantities to aggregate +- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] + # Added to the end of the each key (e.g. '[key]:pe' or '[key]:[tag]+pe') + _tag: pe + # Dimension along which to aggregate + _dim: t + + # Mappings from group names to members along _dim + # Coal + coal: [coal_extr, coal_extr_ch4] + lignite: [lignite_extr] + gas conventional: [gas_extr_1, gas_extr_2, gas_extr_3, gas_extr_4] + gas unconventional: [gas_extr_5, gas_extr_6, gas_extr_7, gas_extr_8] + oil conventional: [oil_extr_1_ch4, oil_extr_2_ch4, oil_extr_3_ch4, + oil_extr_1, oil_extr_2, oil_extr_3] + oil unconventional: [oil_extr_4_ch4, oil_extr_4, oil_extr_5, oil_extr_6, + oil_extr_7, oil_extr_8] + +- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] + _tag: se + _dim: t + + # Biomass + bio elec wo ccs: [bio_ppl, bio_istig] + bio elec w ccs: [bio_isitig_ccs] + bio eth wo ccs: [eth_bio, liq_bio] + bio eth w ccs: [eth_bio_ccs, liq_bio_ccs] + bio hydrogen wo ccs: [h2_bio] + bio hydrogen w ccs: [h2_bio_ccs] + + # Coal + coal elec wo ccs: [coal_ppl, igcc, coal_adv] + coal elec w ccs: [igcc_ccs, coal_adv_ccs] + coal heat: [coal_hpl] + coal hydrogen wo ccs: [h2_coal_ccs] + coal loil wo ccs: [syn_liq] + coal loil w ccs: [syn_liq_ccs] + coal methanol wo ccs: [coal_meth] + coal methanol w ccs: [coal_meth_ccs] + + # Gas + gas elec wo ccs: [gas_ct, gas_cc, gas_ppl, gas_htfc] + gas elec w ccs: [gas_cc_ccs] + gas heat wo ccs: [gas_hpl] + gas hydrogen wo ccs: [h2_smr] + gas hydrogen w ccs: [h2_smr_ccs] + + # Geothermal + geothermal elec: [geo_ppl] + geothermal heat: [geo_hpl] + + # Hydro + hydro: [hydro_hc, hydro_lc] + + # Nuclear + nuclear: [nuc_lc, nuc_hc, nuc_fbr] + + # Oil + oil elec wo ccs: [foil_ppl, loil_ppl, oil_ppl, loil_cc] + oil heat: [foil_hpl] + + # Wind + wind curtailment: [wind_curtailment1, wind_curtailment2, wind_curtailment3] + wind gen onshore: [wind_res1, wind_res2, wind_res3, wind_res4] + wind gen offshore: [wind_ref1, wind_ref2, wind_ref3, wind_ref4, wind_ref5] + + # Solar + solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, + solar_res5, solar_res6, solar_res7, solar_res8] + solar pv gen elec RC: [solar_pv_RC] + solar pv gen elec I: [solar_pv_I] + solar pv curtailment: [solar_curtailment1, solar_curtailment2, + solar_curtailment3] + solar csp gen elec sm1: [csp_sm1_res, csp_sm1_res1, csp_sm1_res2, + csp_sm1_res3, csp_sm1_res4, csp_sm1_res5, + csp_sm1_res6, csp_sm1_res7] + solar csp gen elec sm3: [csp_sm3_res, csp_sm3_res1, csp_sm3_res2, + csp_sm3_res3, csp_sm3_res4, csp_sm3_res5, + csp_sm3_res6, csp_sm3_res7] + solar csp gen heat rc: [solar_rc] + solar csp gen heat i: [solar_i] + +- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] + _tag: t_d + _dim: t + + biomass: [biomass_t_d] + coal: [coal_t_d-rc-06p, coal_t_d-in-06p, coal_t_d-in-SO2, coal_t_d-rc-SO2, + coal_t_d] + elec: [elec_t_d] + gas: [gas_t_d, gas_t_d_ch4] + heat: [heat_t_d] + oil: [loil_t_d, foil_t_d] + +- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] + _tag: bunker + _dim: t + + methanol: [methanol_bunker] + gas: [LNG_bunker] + lh2: [LH2_bunker] + oil: [loil_bunker, foil_bunker] + +- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] + _tag: import + _dim: t + + coal: [coal_imp] + elec: [elec_imp] + ethanol: [eth_imp] + gas: [LNG_imp, gas_imp] + lh2: [lh2_imp] + methanol: [meth_imp] + oil: [oil_imp, loil_imp, foil_imp] + +- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] + _tag: export + _dim: t + + coal: [coal_exp] + elec: [elec_exp] + ethanol: [eth_exp] + lh2: [lh2_exp] + gas: [LNG_exp, gas_exp_nam, gas_exp_weu, gas_exp_eeu, gas_exp_pao, + gas_exp_cpa, gas_exp_afr, gas_exp_sas, gas_exp_pas] + methanol: [meth_exp] + oil: [oil_exp, loil_exp, foil_exp] + + +# Create new quantities by weighted sum across multiple quantities +# - Parsed by reporting.core.add_combination +combine: + # Name and dimensions of quantity to be created +- key: coal:nl-ya + # Inputs to sum + inputs: + # Input quantity. If dimensions are none ('name::tag') then the necessary + # dimensions are inferred: the union of the dimensions of 'key:' above, + # plus any dimensions appearing in 'select:'' + - quantity: in::pe # e.g. 'in:nl-t-ya:pe' is inferred + # Values to select + select: {t: [coal, lignite]} + # Weight for these values in the weighted sum + weight: 1 + - quantity: in::import + select: {t: coal} + weight: 1 + - quantity: in::export + select: {t: coal} + weight: -1 + # commented (PNK 2019-10-07): doesn't exist + # - quantity: in::bunker + # select: {t: coal} + # weight: 1 + +- key: gas:nl-ya + inputs: + - quantity: in::pe + select: {t: ['gas conventional', 'gas unconventional']} + weight: 1 + - quantity: in::import + select: {t: gas} + weight: 1 + - quantity: in::export + select: {t: gas} + weight: -1 + - quantity: in::bunker + select: {t: gas} + weight: 1 + +- key: oil:nl-ya + inputs: + - quantity: in::pe + select: {t: ['oil conventional', 'oil unconventional']} + weight: 1 + - quantity: in::import + select: {t: oil} + weight: 1 + - quantity: in::export + select: {t: oil} + weight: -1 + - quantity: in::bunker + select: {t: oil} + weight: 1 + +- key: solar:nl-ya + inputs: + - quantity: out::se + select: {t: ['solar pv gen elec', 'solar pv gen elec RC', + 'solar pv gen elec I', 'solar csp gen elec sm1', + 'solar csp gen elec sm3', 'solar csp gen heat rc', + 'solar csp gen heat i']} + #, c: [electr]} + weight: 1 + - quantity: in::se + select: {t: solar pv curtailment} #, c: [electr]} + weight: -1 + +- key: se_trade:nl-ya + inputs: + - quantity: out::import + select: {t: [elec, ethanol, lh2, methanol]} + weight: 1 + - quantity: in::export + select: {t: [elec, ethanol, lh2, methanol]} + weight: -1 + +- key: wind:nl-ya + inputs: + - quantity: out::se + select: {t: ['wind gen onshore', 'wind gen offshore']} + weight: 1 + - quantity: in::se + select: {t: wind curtailment} + weight: -1 + + +general: +# - key: wind onshore +# operation: share_curtailment # Refers to a method in computations.py +# inputs: [wind curtailment, wind ref, wind res] +# - key: wind offshore +# operation: share_curtailment # Refers to a method in computations.py +# inputs: [wind curtailment, wind res, wind ref] +- key: pe test 2 + comp: concat + inputs: + - Primary Energy|Nuclear:iamc + - Primary Energy|Solar:iamc + - Primary Energy|Wind:iamc +- key: pe test 3 + comp: concat + inputs: + - wind + - solar + + +# Groups of keys for re-use. These keys are not parsed by +# reporting.prepare_reporter; they only exist to be referenced further in +# the file. +# +# - Ending a line with '&label' defines a YAML anchor. +# - Using the YAML alias '<<: *label' re-uses the referenced keys. +# +pe_iamc: &pe_iamc + format: # Conversion to IAMC format + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - c + - l + - m + - nd + - 'no' # Bare no is a special YAML value for False, so must quote here. + - t + + +# This section is used by reporting.core.add_iamc_table() +iamc: +#- variable: Primary Energy|Biomass +# base: land_out: +# select: {l: [land_use], c: [bioenergy]} + +- variable: Primary Energy|Coal + base: coal:nl-ya + <<: *pe_iamc + +- variable: Primary Energy|Gas + base: gas:nl-ya + <<: *pe_iamc + +- variable: Primary Energy|Geothermal # This is still incomplete + base: out:nl-t-ya-m-c-l + select: {l: [secondary], t: [geothermal elec, geothermal heat]} + <<: *pe_iamc + +- variable: Primary Energy|Hydro + base: out:nl-t-ya-m-c-l:se + select: {l: [secondary], t: [hydro]} + <<: *pe_iamc + +- variable: Primary Energy|Nuclear + base: out:nl-t-ya-m-c-l:se + select: {l: [secondary], t: [nuclear]} + <<: *pe_iamc + +- variable: Primary Energy|Oil + base: oil:nl-ya + <<: *pe_iamc + +- variable: Primary Energy|Other + base: in:nl-t-ya-m-c-l:bunker + select: {t: [lh2]} + <<: *pe_iamc + +- variable: Primary Energy|Secondary Energy Trade + base: se_trade:nl-ya + <<: *pe_iamc + +- variable: Primary Energy|Solar + base: solar:nl-ya + <<: *pe_iamc + +- variable: Primary Energy|Wind + base: wind:nl-ya + <<: *pe_iamc + + + +# This section is used by reporting.core.add_report() +report: +- key: pe test + members: +# - Primary Energy|Biomass:iamc + - Primary Energy|Coal:iamc + - Primary Energy|Gas:iamc + - Primary Energy|Hydro:iamc + - Primary Energy|Nuclear:iamc + - Primary Energy|Solar:iamc + - Primary Energy|Wind:iamc diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index bdc227059e..3c1ad5f5a8 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,30 +1,40 @@ -from functools import partial -import logging +from ixmp.reporting import Key -from message_ix.reporting import Reporter, configure -from message_ix.reporting.computations import write_report -log = logging.getLogger(__name__) +def collapse(df, var_name, var=[], region=[]): + """:meth:`as_pyam` `collapse=...` callback. + Simplified from message_ix.reporting.pyam.collapse_message_cols. + """ + # Extend region column ('n' and 'nl' are automatically added by message_ix) + df['region'] = df['region'].str.cat([df[c] for c in region], sep='|') -def prepare_reporter(scenario, config, key, output_path): - # Apply global reporting configuration, e.g. unit definitions - configure(config) + # Assemble variable column + df['variable'] = var_name + df['variable'] = df['variable'].str.cat([df[c] for c in var], sep='|') - log.info('Preparing reporter') + # Drop same columns + return df.drop(var + region, axis=1) - # Create a Reporter for *scenario* and apply Reporter-specific config - rep = Reporter.from_scenario(scenario) \ - .configure(config) - # If needed, get the full key for *quantity* - key = rep.check_keys(key)[0] +def infer_keys(reporter, key_or_keys, dims=[]): + """Helper to guess complete keys in *reporter*.""" + single = isinstance(key_or_keys, (str, Key)) + keys = [key_or_keys] if single else key_or_keys - if output_path: - # Add a new computation that writes *key* to the specified file - rep.add('cli-output', (partial(write_report, path=output_path), key)) - key = 'cli-output' + result = [] - log.info('…done') + for k in keys: + # Has some dimensions or tag + key = Key.from_str_or_key(k) if ':' in k else k - return rep, key + if '::' in k or key not in reporter: + key = reporter.full_key(key) + + if dims: + # Drop all but *dims* + key = key.drop(*[d for d in key.dims if d not in dims]) + + result.append(key) + + return result[0] if single else result From 009a76d422d4ed5176e14e7cf2dcb10504a74a52 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 15 Oct 2019 01:34:52 +0200 Subject: [PATCH 003/220] Update documentation --- message_ix_models/report/core.py | 24 +++++++++ message_ix_models/report/doc.rst | 88 ++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 message_ix_models/report/doc.rst diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 8b1f92ae47..b26b3c49db 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -17,6 +17,30 @@ def prepare_reporter(scenario, config, key, output_path): + """Prepare to report *key* from *scenario*. + + Parameters + ---------- + scenario : ixmp.Scenario + MESSAGE-GLOBIOM scenario containing a solution, to be reported. + config : dict-like + Reporting configuration. + key : str or ixmp.reporting.Key + Quantity or node to compute. The computation is not triggered (i.e. + :meth:`get ` is not called); but the + corresponding, full-resolution Key is returned. + output_path : os.Pathlike + If given, a computation ``cli-output`` is added to the Reporter which + writes *key* to this path. + + Returns + ------- + ixmp.reporting.Reporter + Reporter prepared with MESSAGE-GLOBIOM calculations. + ixmp.reporting.Key + Same as *key*, in full resolution, if any. + + """ # Apply global reporting configuration, e.g. unit definitions configure(config) diff --git a/message_ix_models/report/doc.rst b/message_ix_models/report/doc.rst new file mode 100644 index 0000000000..fb48da0ddd --- /dev/null +++ b/message_ix_models/report/doc.rst @@ -0,0 +1,88 @@ +Reporting +========= + +.. contents:: + :local: + +Introduction +------------ + +:mod:`message_data.reporting` is developed on the basis of :doc:`message_ix `, and in turn :doc:`ixmp ` features. +Each layer of the stack provides reporting features that match the framework features at the corresponding level: + +.. list-table:: + :header-rows: 0 + + * - Stack level + - Role + - Core feature + - Reporting feature + * - ``ixmp`` + - Optimization models + - N-D parameters + - :class:`Reporter `, + :class:`Key `, + :class:`Quantity `. + * - ``message_ix`` + - Generalized energy model framework + - Specific parameters (``output``) + - Auto derivatives (``tom``) + * - ``message_data`` + - MESSAGE-GLOBIOM model family + - Specific set members (``coal_ppl`` in ``t``) + - Calculations for tec groups + +For instance, ``message_ix`` cannot contain reporting code that references ``coal_ppl`` + +The basic **design pattern** of :mod:`message_data.reporting` is: + +- A ``global.yaml`` file (i.e. in `YAML `_ format) that contains a *concise* yet *explicit* description of the reporting computations needed for a MESSAGE-GLOBIOM model. +- :meth:`prepare_reporter ` reads the file and a Scenario object, and uses it to populate a new Reporter +- …by calling methods like :meth:`add_aggregate ` that process atomic chunks of the file. + +API reference +------------- + +.. currentmodule:: message_data.reporting + + +Core +~~~~ + +.. currentmodule:: message_data.reporting.core + +.. autosummary:: + + prepare_reporter + add_aggregate + add_combination + add_general + add_iamc_table + add_report + +.. automodule:: message_data.reporting.core + :members: + + +Computations +~~~~~~~~~~~~ + +.. automodule:: message_data.reporting.computations + :members: + + +Utilities +~~~~~~~~~ + +.. automodule:: message_data.reporting.util + :members: + + +.. automethod:: message_data.reporting.cli + + +Default configuration +--------------------- + +.. literalinclude:: ../../../message_data/reporting/data/global.yaml + :language: yaml From c8a0f0b2da71965c8e3efea7ff5196257e5d1f4d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 14 Nov 2019 16:19:44 +0100 Subject: [PATCH 004/220] Simplify model.create --- message_ix_models/report/__init__.py | 30 ++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index c204ba1c45..6d5eb0a594 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -10,6 +10,8 @@ log = logging.getLogger(__name__) +CONFIG = Path(__file__).parent / 'data' / 'global.yaml' + @click.command(name='report') @click.argument('key', default='message:default') @@ -40,8 +42,7 @@ def mark(): mark() # Read reporting configuration from a file - config = Path(__file__).parent / 'data' / 'global.yaml' - rep, key = prepare_reporter(s, config, key, output_path) + rep, key = prepare_reporter(s, CONFIG, key, output_path) mark() print('Preparing to report:', rep.describe(key), sep='\n') @@ -54,3 +55,28 @@ def mark(): print(f'Result written to {output_path}' if output_path else f'Result: {result}', sep='\n') mark() + + +def report(scenario, path, legacy=None): + """Run complete reporting on *scenario* with output to *path*. + + If *legacy* is not None, it is used as keyword arguments to the old- + style reporting. + """ + if legacy is None: + rep = prepare_reporter(scenario, CONFIG, 'default', path) + rep.get('default') + else: + from message_data.tools.post_processing import iamc_report_hackathon + + legacy_args = dict(merge_hist=True) + legacy_args.update(**legacy) + + iamc_report_hackathon.report( + mp=scenario.platform, + scen=scenario, + model=scenario.name, + scenario=scenario.name, + out_dir=path, + **legacy_args, + ) From 3e1b888bcfe48f2c8bf21e9c35d0c31c8f6a9e3a Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Nov 2019 10:30:14 +0100 Subject: [PATCH 005/220] Fix reporter.as_pyam call to reporter.convert_pyam (#77) --- message_ix_models/report/core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index b26b3c49db..f4d8565910 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -170,8 +170,8 @@ def add_iamc_table(rep, info): drop = set(args.pop('drop', [])) & set(keys[-1]._dims) key = f'{name}:iamc' - rep.as_pyam(keys[-1], 'ya', key, drop=drop, - collapse=partial(collapse, **args)) + rep.convert_pyam(keys[-1], 'ya', key, drop=drop, + collapse=partial(collapse, **args)) keys.append(key) # Revise the 'message:default' report to include the last key in From 321b0e2f5aea0290e56e73b043193cffec545f0c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Nov 2019 10:38:30 +0100 Subject: [PATCH 006/220] Move reporting config file to repo-wide metadata directory --- .../data/global.yaml => data/report/global-default.yaml} | 0 message_ix_models/report/__init__.py | 9 +++++---- 2 files changed, 5 insertions(+), 4 deletions(-) rename message_ix_models/{report/data/global.yaml => data/report/global-default.yaml} (100%) diff --git a/message_ix_models/report/data/global.yaml b/message_ix_models/data/report/global-default.yaml similarity index 100% rename from message_ix_models/report/data/global.yaml rename to message_ix_models/data/report/global-default.yaml diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 6d5eb0a594..a692f0bc3e 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -14,14 +14,14 @@ @click.command(name='report') +@click.pass_obj @click.argument('key', default='message:default') @click.option('-o', '--output', 'output_path', type=Path, help='Write output to file instead of console.') @click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') @click.option('--dry-run', '-n', is_flag=True, help='Only show what would be done.') -@click.pass_context -def cli(ctx, key, output_path, verbose, dry_run): +def cli(context, key, output_path, verbose, dry_run): """Postprocess results. KEY defaults to the comprehensive report 'message:default', but may also @@ -38,11 +38,12 @@ def mark(): if verbose: logger().setLevel('DEBUG') - s = ctx.obj.get_scenario() + s = context.get_scenario() mark() # Read reporting configuration from a file - rep, key = prepare_reporter(s, CONFIG, key, output_path) + config = context.get_config('report', 'global-default.yaml') + rep, key = prepare_reporter(s, config, key, output_path) mark() print('Preparing to report:', rep.describe(key), sep='\n') From a0bee6c7314b8982cb0c4e3eedcc5883e977e198 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Nov 2019 10:51:04 +0100 Subject: [PATCH 007/220] Add CLI option for selecting reporting config file --- .../{global-default.yaml => global.yaml} | 0 message_ix_models/report/__init__.py | 20 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) rename message_ix_models/data/report/{global-default.yaml => global.yaml} (100%) diff --git a/message_ix_models/data/report/global-default.yaml b/message_ix_models/data/report/global.yaml similarity index 100% rename from message_ix_models/data/report/global-default.yaml rename to message_ix_models/data/report/global.yaml diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index a692f0bc3e..8cfeba1ba9 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -16,16 +16,22 @@ @click.command(name='report') @click.pass_obj @click.argument('key', default='message:default') +@click.option('--config', 'config_file', default='global', show_default=True, + help='Path or stem for reporting config file.') @click.option('-o', '--output', 'output_path', type=Path, help='Write output to file instead of console.') @click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') @click.option('--dry-run', '-n', is_flag=True, help='Only show what would be done.') -def cli(context, key, output_path, verbose, dry_run): +def cli(context, key, config_file, output_path, verbose, dry_run): """Postprocess results. KEY defaults to the comprehensive report 'message:default', but may also be the name of a specific model quantity, e.g. 'output'. + + --config can give either the absolute path to a reporting configuration + file, or the stem (i.e. name without .yaml extension) of a file in + data/report. """ from time import process_time @@ -42,7 +48,17 @@ def mark(): mark() # Read reporting configuration from a file - config = context.get_config('report', 'global-default.yaml') + + # Use the option value as if it were an absolute path + config = Path(config_file) + if not config.exists(): + # Path doesn't exist; treat it as a stem in the metadata dir + config = context.get_config('report', config_file) + + if not config.exists(): + # Can't find the file + raise click.BadOptionUsage(f'--config={config_file} not found') + rep, key = prepare_reporter(s, config, key, output_path) mark() From b160cd04875a527fa0f80e39a339283eb61859d1 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Nov 2019 11:03:29 +0100 Subject: [PATCH 008/220] Adjust docs to reporting config file location --- message_ix_models/report/doc.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/doc.rst b/message_ix_models/report/doc.rst index fb48da0ddd..da87510ffc 100644 --- a/message_ix_models/report/doc.rst +++ b/message_ix_models/report/doc.rst @@ -84,5 +84,5 @@ Utilities Default configuration --------------------- -.. literalinclude:: ../../../message_data/reporting/data/global.yaml +.. literalinclude:: ../../../data/report/global.yaml :language: yaml From 0cb7f50d14b839701fcf4f891cc81fa838250acd Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Nov 2019 18:52:17 +0100 Subject: [PATCH 009/220] Adjust IAMC conversion --- message_ix_models/data/report/global.yaml | 19 ++++--------- message_ix_models/report/core.py | 34 ++++++++++------------- 2 files changed, 20 insertions(+), 33 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 3719ede260..0c7a565331 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -252,24 +252,18 @@ combine: weight: -1 -general: +# general: # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind ref, wind res] # - key: wind offshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind res, wind ref] -- key: pe test 2 - comp: concat - inputs: - - Primary Energy|Nuclear:iamc - - Primary Energy|Solar:iamc - - Primary Energy|Wind:iamc -- key: pe test 3 - comp: concat - inputs: - - wind - - solar +# - key: pe test 2 +# comp: concat +# inputs: +# - wind +# - solar # Groups of keys for re-use. These keys are not parsed by @@ -341,7 +335,6 @@ iamc: <<: *pe_iamc - # This section is used by reporting.core.add_report() report: - key: pe test diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index f4d8565910..ca00ed304c 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -52,23 +52,15 @@ def prepare_reporter(scenario, config, key, output_path): # Load the YAML configuration as a dict with open(config, 'r') as f: - config = yaml.load(f) - - # ------------------------------------------------------------------------- - # NB Add code between these --- lines to expand the reporting for - # MESSAGEix-GLOBIOM: - # - Modify the reporter directly with add() or apply(). - # - Create a function like add_quantities() below and call it. - # - Add to the file data/global.yaml, and then read its keys from the - # variable *config*. + config = yaml.safe_load(f) # Mapping of file sections to handlers sections = ( ('aggregate', add_aggregate), ('combine', add_combination), ('iamc', add_iamc_table), - ('report', add_report), ('general', add_general), + ('report', add_report), ) for section_name, func in sections: @@ -80,8 +72,6 @@ def prepare_reporter(scenario, config, key, output_path): for entry in entries: func(rep, entry) - # ------------------------------------------------------------------------- - # If needed, get the full key for *quantity* key = rep.check_keys(key)[0] @@ -146,18 +136,22 @@ def add_iamc_table(rep, info): name = info['variable'] # Chain of keys produced: first entry is the key for the base quantity - keys = [Key.from_str_or_key(info['base'])] + base = Key.from_str_or_key(info['base']) + keys = [base] + + # Second entry is a simple rename + keys.append(rep.add(Key(name, base.dims, base.tag), base)) if 'select' in info: # Select a subset of data from the base quantity - key = Key(name, keys[-1]._dims) + key = keys[-1].add_tag('sel') rep.add(key, (Quantity.sel, keys[-1], info['select']), strict=True) keys.append(key) if 'group_sum' in info: # Aggregate data by groups args = dict(group=info['group_sum'][0], sum=info['group_sum'][1]) - key = Key.from_str_or_key(keys[-1], tag='agg') + key = keys[-1].add_tag('agg') rep.add(key, (partial(group_sum, **args), keys[-1]), strict=True) keys.append(key) @@ -169,17 +163,17 @@ def add_iamc_table(rep, info): drop = set(args.pop('drop', [])) & set(keys[-1]._dims) - key = f'{name}:iamc' - rep.convert_pyam(keys[-1], 'ya', key, drop=drop, - collapse=partial(collapse, **args)) - keys.append(key) + iamc_keys = rep.convert_pyam(keys[-1], 'ya', drop=drop, + collapse=partial(collapse, **args)) + keys.extend(iamc_keys) # Revise the 'message:default' report to include the last key in # the chain rep.add('message:default', rep.graph['message:default'] + (keys[-1],)) - log.info(f'Add {name!r} from {keys[0]!r}\n keys {keys[1:]!r}') + log.info(f'Add {keys[-1]!r} from {keys[0]!r}') + log.debug(f' {len(keys)} keys total') def add_report(rep, info): From e19044ba210d04de01ab8e98581f890525b84cfd Mon Sep 17 00:00:00 2001 From: FRICKO Oliver Date: Mon, 18 Nov 2019 13:20:58 +0100 Subject: [PATCH 010/220] Corrected context scenario attributes used to retrieve scenario model and scenario name --- message_ix_models/report/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 8cfeba1ba9..28b33a78a3 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -92,8 +92,8 @@ def report(scenario, path, legacy=None): iamc_report_hackathon.report( mp=scenario.platform, scen=scenario, - model=scenario.name, - scenario=scenario.name, + model=scenario.model, + scenario=scenario.scenario, out_dir=path, **legacy_args, ) From e3f613ae40f055f925dfe1d5c48f30a447395b66 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sun, 24 Nov 2019 17:35:29 +0100 Subject: [PATCH 011/220] Reorganize reporting config --- doc/api/report/default-config.rst | 5 +++++ .../report/doc.rst => doc/api/report/index.rst | 12 +++++------- 2 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 doc/api/report/default-config.rst rename message_ix_models/report/doc.rst => doc/api/report/index.rst (94%) diff --git a/doc/api/report/default-config.rst b/doc/api/report/default-config.rst new file mode 100644 index 0000000000..1d39665c16 --- /dev/null +++ b/doc/api/report/default-config.rst @@ -0,0 +1,5 @@ +Default reporting configuration +******************************* + +.. literalinclude:: ../../../../data/report/global.yaml + :language: yaml diff --git a/message_ix_models/report/doc.rst b/doc/api/report/index.rst similarity index 94% rename from message_ix_models/report/doc.rst rename to doc/api/report/index.rst index da87510ffc..21802e0532 100644 --- a/message_ix_models/report/doc.rst +++ b/doc/api/report/index.rst @@ -4,6 +4,11 @@ Reporting .. contents:: :local: +.. toctree:: + + reporting/default-config + + Introduction ------------ @@ -79,10 +84,3 @@ Utilities .. automethod:: message_data.reporting.cli - - -Default configuration ---------------------- - -.. literalinclude:: ../../../data/report/global.yaml - :language: yaml From 14ccd5bab097bf4f39c275e6846272a607d7ce8b Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 26 Nov 2019 11:39:34 +0100 Subject: [PATCH 012/220] Tweak handling of URL CLI argument --- message_ix_models/report/util.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 3c1ad5f5a8..0bb4851121 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -7,7 +7,8 @@ def collapse(df, var_name, var=[], region=[]): Simplified from message_ix.reporting.pyam.collapse_message_cols. """ # Extend region column ('n' and 'nl' are automatically added by message_ix) - df['region'] = df['region'].str.cat([df[c] for c in region], sep='|') + df['region'] = df['region'].astype(str)\ + .str.cat([df[c] for c in region], sep='|') # Assemble variable column df['variable'] = var_name From 02918454aaa4eb41720d570c7228a01416365652 Mon Sep 17 00:00:00 2001 From: Francesco Lovat Date: Tue, 10 Dec 2019 17:51:02 +0100 Subject: [PATCH 013/220] Fixed test for technologies.py --- message_ix_models/report/computations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index b490b71fd4..d0706fd1d6 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -16,7 +16,7 @@ def combine(*quantities, select, weights): select : list of dict Elements to be selected from each quantity. Must have the same number of elements as `quantities`. - weight : list of float + weights : list of float Weight applied to each . Must have the same number of elements as `quantities`. From 620aefd6a06672654184f920ff30e563602e7446 Mon Sep 17 00:00:00 2001 From: Francesco Lovat Date: Wed, 18 Dec 2019 10:34:04 +0100 Subject: [PATCH 014/220] Added technology.yaml to the Default reporting configuration section of docu --- doc/api/report/default-config.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/api/report/default-config.rst b/doc/api/report/default-config.rst index 1d39665c16..75ae472fbd 100644 --- a/doc/api/report/default-config.rst +++ b/doc/api/report/default-config.rst @@ -3,3 +3,6 @@ Default reporting configuration .. literalinclude:: ../../../../data/report/global.yaml :language: yaml + +.. literalinclude:: ../../../../data/technology.yaml + :language: yaml From ae3ca8c89812eb2dc5dd519fc67c936ad932234c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 18 Dec 2019 10:59:55 +0100 Subject: [PATCH 015/220] Adjust inclusion of technology.yaml in tools docs --- doc/api/report/default-config.rst | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/api/report/default-config.rst b/doc/api/report/default-config.rst index 75ae472fbd..1d39665c16 100644 --- a/doc/api/report/default-config.rst +++ b/doc/api/report/default-config.rst @@ -3,6 +3,3 @@ Default reporting configuration .. literalinclude:: ../../../../data/report/global.yaml :language: yaml - -.. literalinclude:: ../../../../data/technology.yaml - :language: yaml From 32c4e4241d1af2de406258b361601990e1de5c0f Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 22 Jan 2020 15:29:57 +0100 Subject: [PATCH 016/220] Allow empty combine/inputs/select in reporting config YAML Cherry-picked from 9b6889b on GamzeUnlu95:reporting_price --- message_ix_models/report/core.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index ca00ed304c..2b232ce121 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -112,10 +112,11 @@ def add_combination(rep, info): for i in info['inputs']: # Required dimensions for this input: output key's dims, plus any # dims that must be selected on - dims = set(key.dims) | set(i['select'].keys()) + selector = i.get('select', {}) + dims = set(key.dims) | set(selector.keys()) quantities.append(infer_keys(rep, i['quantity'], dims)) - select.append(i['select']) + select.append(selector) weights.append(i['weight']) # Check for malformed input From 7c4df12fedf1bb4029e8b91e99d0269dbdf3e60f Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 22 Jan 2020 15:32:20 +0100 Subject: [PATCH 017/220] Specify convert_pyam(year_time_dim=...) in add_iamc_table Cherry-pick 00ec243 from GamzeUnlu95:reporting_price --- message_ix_models/report/core.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 2b232ce121..d5169a4c8e 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -162,9 +162,14 @@ def add_iamc_table(rep, info): args = copy(info['format']) args['var_name'] = name - drop = set(args.pop('drop', [])) & set(keys[-1]._dims) + # Use 'ya' for the IAMC 'Year' column; unless YAML reporting config + # includes a different dim under format/year_time_dim. + year_time_dim = args.pop('year_time_dim', 'ya') - iamc_keys = rep.convert_pyam(keys[-1], 'ya', drop=drop, + drop = set(args.pop('drop', [])) & set(keys[-1].dims) + + # Use the built-in message_ix.Reporter method to add the coversion step + iamc_keys = rep.convert_pyam(keys[-1], year_time_dim, drop=drop, collapse=partial(collapse, **args)) keys.extend(iamc_keys) From 377411f2d07a3456dbe17df90d88534c18732122 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 22 Jan 2020 16:31:24 +0100 Subject: [PATCH 018/220] Handle varying dimensionality in reporting.computations.combine; test --- message_ix_models/report/computations.py | 47 +++++++++++++++--------- message_ix_models/tests/test_report.py | 33 +++++++++++++++++ 2 files changed, 63 insertions(+), 17 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index d0706fd1d6..42327ae7a9 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -6,7 +6,7 @@ from message_ix.reporting.computations import concat -def combine(*quantities, select, weights): +def combine(*quantities, select=None, weights=None): """Sum distinct *quantities* by *weights*. Parameters @@ -17,23 +17,36 @@ def combine(*quantities, select, weights): Elements to be selected from each quantity. Must have the same number of elements as `quantities`. weights : list of float - Weight applied to each . Must have the same number - of elements as `quantities`. - + Weight applied to each quantity. Must have the same number of elements + as `quantities`. """ - # NB .transpose() is necessary when Quantity is AttrSeries. - result = None - - for qty, s, w in zip(quantities, select, weights): - multi = [dim for dim, values in s.items() if isinstance(values, list)] - - if result is None: - result = w * (qty.sel(s).sum(dim=multi) if len(multi) else - qty.sel(s)) - dims = result.dims - else: - result += w * (qty.sel(s).sum(dim=multi) if len(multi) else - qty.sel(s)).transpose(*dims) + # Handle arguments + select = select or len(quantities) * [{}] + weights = weights or len(quantities) * [1.] + + result = 0 + ref_dims = None + + for quantity, selector, weight in zip(quantities, select, weights): + ref_dims = ref_dims or quantity.dims + + # Select data + temp = quantity.sel(selector) + + # Dimensions along which multiple values are selected + multi = [dim for dim, values in selector.items() + if isinstance(values, list)] + + if len(multi): + # Sum along these dimensions + temp = temp.sum(dim=multi) + + # .transpose() is necessary when Quantity is AttrSeries + if len(quantity.dims) > 1: + transpose_dims = tuple(filter(lambda d: d in temp.dims, ref_dims)) + temp = temp.transpose(*transpose_dims) + + result += weight * temp return result diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index fd352ca0b2..d3536c97ca 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -1 +1,34 @@ """Tests for reporting/.""" +from functools import partial + +from ixmp.reporting.utils import Quantity +from message_ix.reporting import Reporter +import pandas as pd + +from message_data.reporting.computations import combine + + +def test_computation_combine(): + rep = Reporter() + + # Add data to the Reporter + foo = ['foo1', 'foo2'] + bar = ['bar1', 'bar2'] + + a = pd.Series( + [1, 2, 3, 4], + index=pd.MultiIndex.from_product([foo, bar], names=['foo', 'bar']), + ) + b = pd.Series( + [10, 20, 30, 40], + index=pd.MultiIndex.from_product([bar, foo], names=['bar', 'foo']), + ) + c = pd.Series([100, 200], index=pd.Index(foo, name='foo')) + + rep.add('a', Quantity(a)) + rep.add('b', Quantity(b)) + rep.add('c', Quantity(c)) + + rep.add('d', (partial(combine, weights=[0.5, 1, 2]), 'a', 'b', 'c')) + + assert rep.get('d').loc[('foo2', 'bar1')] == 3 * 0.5 + 20 * 1 + 200 * 2 From 45024c5f4b46a6e903b901b461bf7d005d068a32 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 22 Jan 2020 19:10:14 +0100 Subject: [PATCH 019/220] Make combine/inputs/weight default to 1; expand docs --- message_ix_models/data/report/global.yaml | 12 ------ message_ix_models/report/core.py | 46 +++++++++++++++++++++-- 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 0c7a565331..f0fe8d912c 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -178,44 +178,35 @@ combine: # Values to select select: {t: [coal, lignite]} # Weight for these values in the weighted sum - weight: 1 - quantity: in::import select: {t: coal} - weight: 1 - quantity: in::export select: {t: coal} weight: -1 # commented (PNK 2019-10-07): doesn't exist # - quantity: in::bunker # select: {t: coal} - # weight: 1 - key: gas:nl-ya inputs: - quantity: in::pe select: {t: ['gas conventional', 'gas unconventional']} - weight: 1 - quantity: in::import select: {t: gas} - weight: 1 - quantity: in::export select: {t: gas} weight: -1 - quantity: in::bunker select: {t: gas} - weight: 1 - key: oil:nl-ya inputs: - quantity: in::pe select: {t: ['oil conventional', 'oil unconventional']} - weight: 1 - quantity: in::import select: {t: oil} - weight: 1 - quantity: in::export select: {t: oil} - weight: -1 - quantity: in::bunker select: {t: oil} weight: 1 @@ -228,7 +219,6 @@ combine: 'solar csp gen elec sm3', 'solar csp gen heat rc', 'solar csp gen heat i']} #, c: [electr]} - weight: 1 - quantity: in::se select: {t: solar pv curtailment} #, c: [electr]} weight: -1 @@ -237,7 +227,6 @@ combine: inputs: - quantity: out::import select: {t: [elec, ethanol, lh2, methanol]} - weight: 1 - quantity: in::export select: {t: [elec, ethanol, lh2, methanol]} weight: -1 @@ -246,7 +235,6 @@ combine: inputs: - quantity: out::se select: {t: ['wind gen onshore', 'wind gen offshore']} - weight: 1 - quantity: in::se select: {t: wind curtailment} weight: -1 diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index d5169a4c8e..fd968e924e 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -101,7 +101,47 @@ def add_aggregate(rep, info): def add_combination(rep, info): - """Add items from the 'combine' tree in the config file.""" + r"""Add one entry from the 'combine:' section of the config file. + + Each entry uses the :func:`~.combine` operation to compute a weighted sum + of different quantities. + + The entry *info* must contain: + + - ``key``: key for the new quantity, including dimensionality. + - ``inputs``: a list of dicts specifying inputs to the weighted sum. Each + dict contains: + + - ``quantity`` (required): key for the input quantity. + :meth:`add_combination` infers the proper dimensionality from the + dimensions of ``key`` plus dimension to ``select`` on. + - ``select`` (:class:`dict`, optional): selectors to be applied to the + input quantity. Keys are dimensions; values are either single labels, + or lists of labels. In the latter case, the sum is taken across these + values, so that the result has the same dimensionality as ``key``. + - ``weight`` (:class:`int`, optional): weight for the input quantity; + default 1. + + **Example.** For the following YAML: + + .. code-block:: yaml + + combine: + - key: foo:a-b-c + inputs: + - quantity: bar + weight: -1 + - quantity: baz::tag + select: {d: [d1, d2, d3]} + + …:meth:`add_combination` infers: + + .. math:: + + \text{foo}_{abc} = -1 \times \text{bar}_{abc} + + 1 \times \sum_{d \in \{ d1, d2, d3 \}}{\text{baz}_{abcd}^\text{(tag)}} + \quad \forall \quad a, b, c + """ # Split inputs into three lists quantities, select, weights = [], [], [] @@ -117,7 +157,7 @@ def add_combination(rep, info): quantities.append(infer_keys(rep, i['quantity'], dims)) select.append(selector) - weights.append(i['weight']) + weights.append(i.get('weight', 1)) # Check for malformed input assert len(quantities) == len(select) == len(weights) @@ -132,7 +172,7 @@ def add_combination(rep, info): def add_iamc_table(rep, info): - """Add IAMC tables from the 'iamc' tree in the config file.""" + """Add IAMC tables from the 'iamc:' section of a config file.""" # For each quantity, use a chain of computations to prepare it name = info['variable'] From e52c501e11defebac8d3f92924e789de43a6e2b4 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 22 Jan 2020 22:58:59 +0100 Subject: [PATCH 020/220] Document more reporting.core methods; use infer_keys in add_aggregate --- message_ix_models/data/report/global.yaml | 12 ++--- message_ix_models/report/core.py | 62 +++++++++++++++++++++-- message_ix_models/report/util.py | 23 +++++++-- 3 files changed, 84 insertions(+), 13 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index f0fe8d912c..ea57863ff1 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -36,7 +36,7 @@ units: # - Corresponds to ixmp.Reporter.aggregate via reporting.core.add_aggregate aggregate: # Quantities to aggregate -- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] +- _quantities: [in, out] # Added to the end of the each key (e.g. '[key]:pe' or '[key]:[tag]+pe') _tag: pe # Dimension along which to aggregate @@ -53,7 +53,7 @@ aggregate: oil unconventional: [oil_extr_4_ch4, oil_extr_4, oil_extr_5, oil_extr_6, oil_extr_7, oil_extr_8] -- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] +- _quantities: [in, out] _tag: se _dim: t @@ -117,7 +117,7 @@ aggregate: solar csp gen heat rc: [solar_rc] solar csp gen heat i: [solar_i] -- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] +- _quantities: [in, out] _tag: t_d _dim: t @@ -129,7 +129,7 @@ aggregate: heat: [heat_t_d] oil: [loil_t_d, foil_t_d] -- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] +- _quantities: [in, out] _tag: bunker _dim: t @@ -138,7 +138,7 @@ aggregate: lh2: [LH2_bunker] oil: [loil_bunker, foil_bunker] -- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] +- _quantities: [in, out] _tag: import _dim: t @@ -150,7 +150,7 @@ aggregate: methanol: [meth_imp] oil: [oil_imp, loil_imp, foil_imp] -- _quantities: ['in:nl-t-ya-m-c-l', 'out:nl-t-ya-m-c-l'] +- _quantities: [in, out] _tag: export _dim: t diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index fd968e924e..c95b05bf79 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -86,11 +86,43 @@ def prepare_reporter(scenario, config, key, output_path): def add_aggregate(rep, info): - """Add items from the 'aggregates' tree in the config file.""" + """Add one entry from the 'aggregates:' section of a config file. + + Each entry uses :meth:`.Reporter.aggregate` to compute + + The entry *info* must contain: + + - ``_quantities``: list of 0 or more keys for quantities to aggregate. The + full dimensionality of the key(s) is inferred. + - ``_tag`` (:class:`str`): new tag to append to the keys for the aggregated + quantities. + - ``_dim`` (:class:`str`): dimensions + + All other keys are treated as group names; the corresponding values are + lists of labels along the dimension to sum. + + **Example:** + + .. code-block:: yaml + + aggregates: + - _quantities: [foo, bar] + _tag: aggregated + _dim: a + + baz123: [baz1, baz2, baz3] + baz12: [baz1, baz2] + + If the full dimensionality of the input quantities are ``foo:a-b`` and + ``bar:a-b-c``, then :meth:`add_aggregate` creates the new quantities + ``foo:a-b:aggregated`` and ``bar:a-b-c:aggregated``. These new quantities + have the new labels ``baz123`` and ``baz12`` along their ``a`` dimension, + with sums of the indicated values. + """ # Copy for destructive .pop() info = copy(info) - quantities = info.pop('_quantities') + quantities = infer_keys(rep, info.pop('_quantities')) tag = info.pop('_tag') groups = {info.pop('_dim'): info} @@ -101,7 +133,7 @@ def add_aggregate(rep, info): def add_combination(rep, info): - r"""Add one entry from the 'combine:' section of the config file. + r"""Add one entry from the 'combine:' section of a config file. Each entry uses the :func:`~.combine` operation to compute a weighted sum of different quantities. @@ -172,7 +204,29 @@ def add_combination(rep, info): def add_iamc_table(rep, info): - """Add IAMC tables from the 'iamc:' section of a config file.""" + """Add one entry from the 'iamc:' section of a config file. + + Each entry uses :meth:`.Reporter.convert_pyam`, plus extra computations, to + format data from the internal :class:`.Quantity` into a + :class:`pyam.IamDataFrame`. + + The entry *info* must contain: + + - ``variable`` (:class:`str`): variable name. This is used two ways: it + is placed in the 'Variable' column of the resulting IamDataFrame; and the + reporting key to :meth:`~.Reporter.get` the data frame is + ``:iamc``. + - ``format``: dict controlling :meth:`.convert_pyam`; see the + documentation of that method. It contains: + + - ``year_time_dim`` (:class:`str`, optional): Dimension to use for the + 'Year' or 'Time' column. Default 'ya'. + - ``drop`` (:class:`list` of :class:`str`, optional): Dimensions to drop. + - Other entries: passed as keyword arguments to :func:`.collapse`, which + is then supplied as the `collapse` callback for :meth:`.convert_pyam`. + :func:`.collapse` formats the 'Variable' column of the IamDataFrame. + + """ # For each quantity, use a chain of computations to prepare it name = info['variable'] diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 0bb4851121..17775c4736 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -2,9 +2,26 @@ def collapse(df, var_name, var=[], region=[]): - """:meth:`as_pyam` `collapse=...` callback. - - Simplified from message_ix.reporting.pyam.collapse_message_cols. + """Callback for the `collapse` argument to :meth:`.convert_pyam`. + + Simplified from :meth:`message_ix.reporting.pyam.collapse_message_cols`. + + The dimensions listed in the `var` and `region` arguments are automatically + dropped from the returned :class:`.IamDataFrame`. + + Parameters + ---------- + var_name : str + Initial value to populate the IAMC 'Variable' column. + var : list of str, optional + Dimensions to concatenate to the 'Variable' column. These are joined + after the `var_name` using the pipe ('|') character. + region : list of str, optional + Dimensions to concatenate to the 'Region' column. + + See also + -------- + .core.add_iamc_table """ # Extend region column ('n' and 'nl' are automatically added by message_ix) df['region'] = df['region'].astype(str)\ From 2aa3f9e29f2ea980504515700216d410e4a176e5 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 29 Jan 2020 13:26:25 +0100 Subject: [PATCH 021/220] Add test_report_bare_res --- message_ix_models/tests/test_report.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index d3536c97ca..76a2399cee 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -5,6 +5,8 @@ from message_ix.reporting import Reporter import pandas as pd +from message_data.model.bare import create_res +from message_data.reporting import prepare_reporter from message_data.reporting.computations import combine @@ -32,3 +34,27 @@ def test_computation_combine(): rep.add('d', (partial(combine, weights=[0.5, 1, 2]), 'a', 'b', 'c')) assert rep.get('d').loc[('foo2', 'bar1')] == 3 * 0.5 + 20 * 1 + 200 * 2 + + +def test_report_bare_res(test_context): + """Prepare and run the standard MESSAGE-GLOBIOM reporting on a bare RES.""" + # Get and solve a Scenario containing the bare RES + test_context.scenario_info.update(dict( + model='Bare RES', + scenario='test_create_res', + )) + scenario = create_res(test_context) + scenario.solve() + + # Prepare the reporter + reporter, key = prepare_reporter( + scenario, + config=test_context.get_config_file('report', 'global'), + key='message:default', + output_path=None, + ) + + # Get the default report + # NB commented because the bare RES currently contains no activity, so the + # reporting steps fail + # reporter.get(key) From f6f20e8ab00972423b52821e1194e51c3d276885 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 4 Feb 2020 12:55:22 +0100 Subject: [PATCH 022/220] Streamline docs configuration per sphinx-quickstart 2.3.1 --- doc/api/report/default-config.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/report/default-config.rst b/doc/api/report/default-config.rst index 1d39665c16..78dcb92439 100644 --- a/doc/api/report/default-config.rst +++ b/doc/api/report/default-config.rst @@ -1,5 +1,5 @@ Default reporting configuration ******************************* -.. literalinclude:: ../../../../data/report/global.yaml +.. literalinclude:: ../../../data/report/global.yaml :language: yaml From 151e353632f0c2ec38c62bd20ade2143a4f21a1c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 28 Feb 2020 17:33:33 +0100 Subject: [PATCH 023/220] Adjust imports from ixmp.reporting --- message_ix_models/report/core.py | 2 +- message_ix_models/tests/test_report.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index c95b05bf79..2484af7fb9 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -2,7 +2,7 @@ from functools import partial import logging -from ixmp.reporting.utils import Quantity +from ixmp.reporting.quantity import Quantity from message_ix.reporting import Key, Reporter, configure from message_ix.reporting.computations import write_report from message_ix.reporting.computations import concat diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 76a2399cee..d17f33aed9 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -1,7 +1,7 @@ """Tests for reporting/.""" from functools import partial -from ixmp.reporting.utils import Quantity +from ixmp.reporting.quantity import Quantity from message_ix.reporting import Reporter import pandas as pd From 8d244ef2ff50ba89f5ccd084da781cfdcfe8b1e2 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 10 Mar 2020 13:31:24 +0100 Subject: [PATCH 024/220] Comment definition of 'USD' unit in data/report/global.yaml --- message_ix_models/data/report/global.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index ea57863ff1..b4f486a29b 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -16,8 +16,10 @@ units: - define: | - USD = [value] + # Unit definitions are loaded from data/units == IAMconsortium/units; only + # add units here which are idiosyncrasies of MESSAGEix-GLOBIOM. + # define: | + # USD = [value] replace: '???': '' From 502cfbbb45ec7dccc2755f456d5b09c2692be4e9 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 20 Mar 2020 14:39:25 +0100 Subject: [PATCH 025/220] Test applying units to reported quantities (#104) - Add test_apply_units. - Add fixtures solved_res, global_config, min_config. - Add minimal reporting config for testing. - Expand test_apply_units. - Expand report docs; describe units handling. - Adjust tests for year-specific currency base units. --- doc/api/report/index.rst | 74 ++++++++++++++++++-------- message_ix_models/tests/test_report.py | 74 +++++++++++++++++++++----- 2 files changed, 115 insertions(+), 33 deletions(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 21802e0532..ed508e0fa5 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -1,58 +1,87 @@ Reporting -========= +********* .. contents:: :local: +See also: + +- `“Reporting” project board `_ on GitHub, tracking ongoing development. +- ``global.yaml``, the :doc:`reporting/default-config`. + .. toctree:: + :hidden: reporting/default-config - Introduction ------------- +============ :mod:`message_data.reporting` is developed on the basis of :doc:`message_ix `, and in turn :doc:`ixmp ` features. Each layer of the stack provides reporting features that match the framework features at the corresponding level: .. list-table:: - :header-rows: 0 + :header-rows: 1 * - Stack level - Role - Core feature - Reporting feature * - ``ixmp`` - - Optimization models - - N-D parameters - - :class:`Reporter `, - :class:`Key `, - :class:`Quantity `. + - Optimization models & data + - N-dimensional parameters + - :class:`~ixmp.reporting.Reporter`, + :class:`~ixmp.reporting.Key`, + :class:`~ixmp.reporting.quantity.Quantity` * - ``message_ix`` - - Generalized energy model framework - - Specific parameters (``output``) - - Auto derivatives (``tom``) + - Generalized energy model + - Specific sets/parameters (``output``) + - Derived quantities (``tom``) * - ``message_data`` - - MESSAGE-GLOBIOM model family + - MESSAGEix-GLOBIOM models - Specific set members (``coal_ppl`` in ``t``) - - Calculations for tec groups + - Calculations for M-G tech groups -For instance, ``message_ix`` cannot contain reporting code that references ``coal_ppl`` +For example: ``message_ix`` cannot contain reporting code that references ``coal_ppl``, because not every model built on the MESSAGE framework will have a technology with this name. +Any reporting specific to ``coal_ppl`` must be in ``message_data``, since all models in the MESSAGEix-GLOBIOM family will have this technology. The basic **design pattern** of :mod:`message_data.reporting` is: - A ``global.yaml`` file (i.e. in `YAML `_ format) that contains a *concise* yet *explicit* description of the reporting computations needed for a MESSAGE-GLOBIOM model. -- :meth:`prepare_reporter ` reads the file and a Scenario object, and uses it to populate a new Reporter -- …by calling methods like :meth:`add_aggregate ` that process atomic chunks of the file. +- :func:`.prepare_reporter` reads the file and a Scenario object, and uses it to populate a new Reporter… +- …by calling methods like :func:`.add_aggregate` that process atomic chunks of the file. + +Features +======== + +By combining these ixmp, message_ix, and message_data features, the following functionality is provided. + +.. note:: If any of this does not appear to work as advertised, file a bug! + +Units +----- + +- read automatically for ixmp parameters. +- pass through calculations/are derived automatically. +- are recognized based on the definitions of non-SI units from `IAMconsortium/units `_. +- are discarded when inconsistent. +- can be overridden for entire parameters: + + .. code-block:: yaml + + units: + apply: + inv_cost: USD + API reference -------------- +============= .. currentmodule:: message_data.reporting Core -~~~~ +---- .. currentmodule:: message_data.reporting.core @@ -65,19 +94,22 @@ Core add_iamc_table add_report +.. autofunction:: message_data.reporting.core.prepare_reporter + .. automodule:: message_data.reporting.core :members: + :exclude-members: prepare_reporter Computations -~~~~~~~~~~~~ +------------ .. automodule:: message_data.reporting.computations :members: Utilities -~~~~~~~~~ +--------- .. automodule:: message_data.reporting.util :members: diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index d17f33aed9..4b05ef5cb1 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -4,12 +4,26 @@ from ixmp.reporting.quantity import Quantity from message_ix.reporting import Reporter import pandas as pd +import pytest +import yaml -from message_data.model.bare import create_res from message_data.reporting import prepare_reporter from message_data.reporting.computations import combine +# Minimal reporting configuration for testing +MIN_CONFIG = { + 'units': { + 'replace': {'???': ''}, + }, +} + + +@pytest.fixture +def global_config(test_context): + yield test_context.get_config_file('report', 'global') + + def test_computation_combine(): rep = Reporter() @@ -36,20 +50,12 @@ def test_computation_combine(): assert rep.get('d').loc[('foo2', 'bar1')] == 3 * 0.5 + 20 * 1 + 200 * 2 -def test_report_bare_res(test_context): +def test_report_bare_res(test_context, solved_res, global_config): """Prepare and run the standard MESSAGE-GLOBIOM reporting on a bare RES.""" - # Get and solve a Scenario containing the bare RES - test_context.scenario_info.update(dict( - model='Bare RES', - scenario='test_create_res', - )) - scenario = create_res(test_context) - scenario.solve() - # Prepare the reporter reporter, key = prepare_reporter( - scenario, - config=test_context.get_config_file('report', 'global'), + solved_res, + config=global_config, key='message:default', output_path=None, ) @@ -58,3 +64,47 @@ def test_report_bare_res(test_context): # NB commented because the bare RES currently contains no activity, so the # reporting steps fail # reporter.get(key) + + +def test_apply_units(solved_res, tmp_path): + qty = 'inv_cost' + + # Create a temporary config file + config_path = tmp_path / 'reporting-config.yaml' + config = MIN_CONFIG.copy() + config_path.write_text(yaml.dump(config)) + + # Prepare the reporter + reporter, key = prepare_reporter(solved_res, config=config_path, key=qty, + output_path=None) + + # Add some data to the scenario + inv_cost = pd.DataFrame([ + ['R11_NAM', 'coal_ppl', '2010', 10.5, 'USD'], + ['R11_LAM', 'coal_ppl', '2010', 9.5, 'USD'], + ], columns='node_loc technology year_vtg value unit'.split()) + + solved_res.remove_solution() + solved_res.check_out() + solved_res.add_par('inv_cost', inv_cost) + + # Units are retrieved + assert reporter.get(key).attrs['_unit'] == 'USD_2005' + + # Add data with units that will be discarded + inv_cost['unit'] = ['USD', 'kg'] + solved_res.add_par('inv_cost', inv_cost) + + # Units are discarded + assert str(reporter.get(key).attrs['_unit']) == 'dimensionless' + + # Update configuration, re-create the reporter + config['units']['apply'] = {'inv_cost': 'USD'} + config_path.write_text(yaml.dump(config)) + solved_res.commit('') + solved_res.solve() + reporter, key = prepare_reporter(solved_res, config=config_path, key=qty, + output_path=None) + + # Units are applied + assert str(reporter.get(key).attrs['_unit']) == 'USD_2005' From b7e745158a635a819a714cd08250682ae1391345 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 24 Mar 2020 17:26:27 +0100 Subject: [PATCH 026/220] Add unit, replace_vars args for reporting IAMC conversion --- message_ix_models/data/report/global.yaml | 19 ++-- message_ix_models/report/core.py | 107 +++++++++++++--------- 2 files changed, 76 insertions(+), 50 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index b4f486a29b..6747e6b2c1 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -264,14 +264,17 @@ combine: # - Using the YAML alias '<<: *label' re-uses the referenced keys. # pe_iamc: &pe_iamc - format: # Conversion to IAMC format - drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' - - c - - l - - m - - nd - - 'no' # Bare no is a special YAML value for False, so must quote here. - - t + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - c + - l + - m + - nd + - 'no' # Bare no is a special YAML value for False, so must quote here. + - t + + +iamc variable names: + Input|variable|name: Final|variable|name # This section is used by reporting.core.add_iamc_table() diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 2484af7fb9..74bb1531da 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -54,6 +54,9 @@ def prepare_reporter(scenario, config, key, output_path): with open(config, 'r') as f: config = yaml.safe_load(f) + # Variable name replacement: dict, not list of entries + rep.add('iamc variable names', config.get('iamc variable names', {})) + # Mapping of file sections to handlers sections = ( ('aggregate', add_aggregate), @@ -206,71 +209,91 @@ def add_combination(rep, info): def add_iamc_table(rep, info): """Add one entry from the 'iamc:' section of a config file. - Each entry uses :meth:`.Reporter.convert_pyam`, plus extra computations, to - format data from the internal :class:`.Quantity` into a + Each entry uses :meth:`.Reporter.convert_pyam` (plus extra computations) to + reformat data from the internal :class:`.Quantity` data structure into a :class:`pyam.IamDataFrame`. The entry *info* must contain: - - ``variable`` (:class:`str`): variable name. This is used two ways: it - is placed in the 'Variable' column of the resulting IamDataFrame; and the + - **variable** (:class:`str`): variable name. This is used two ways: it + is placed in 'Variable' column of the resulting IamDataFrame; and the reporting key to :meth:`~.Reporter.get` the data frame is ``:iamc``. - - ``format``: dict controlling :meth:`.convert_pyam`; see the - documentation of that method. It contains: - - - ``year_time_dim`` (:class:`str`, optional): Dimension to use for the - 'Year' or 'Time' column. Default 'ya'. - - ``drop`` (:class:`list` of :class:`str`, optional): Dimensions to drop. - - Other entries: passed as keyword arguments to :func:`.collapse`, which - is then supplied as the `collapse` callback for :meth:`.convert_pyam`. - :func:`.collapse` formats the 'Variable' column of the IamDataFrame. - + - **base** (:class:`str`): key for the quantity to convert. + - **select** (:class:`dict`, optional): keword arguments to + :meth:`~.Quantity.sel`. + - **group_sum** (2-:class:`tuple`, optional): `group` and `sum` arguments + to :func:`.group_sum`. + - **year_time_dim** (:class:`str`, optional): Dimension to use for the IAMC + 'Year' or 'Time' column. Default 'ya'. (Passed to + :meth:`~message_ix.reporting.Reporter.convert_pyam`.) + - **drop** (:class:`list` of :class:`str`, optional): Dimensions to drop + (→ convert_pyam). + - **unit** (:class:`str`, optional): Force output in these units (→ + convert_pyam). + + Additional entries are passed as keyword arguments to :func:`.collapse`, + which is then given as the `collapse` callback for :meth:`.convert_pyam`. + + :func:`.collapse` formats the 'Variable' column of the IamDataFrame. + The variable name replacements from the 'iamc variable names:' section of + the config file are applied to all variables. """ # For each quantity, use a chain of computations to prepare it - name = info['variable'] + name = info.pop('variable') # Chain of keys produced: first entry is the key for the base quantity - base = Key.from_str_or_key(info['base']) + base = Key.from_str_or_key(info.pop('base')) keys = [base] # Second entry is a simple rename keys.append(rep.add(Key(name, base.dims, base.tag), base)) - if 'select' in info: - # Select a subset of data from the base quantity + # Optionally select a subset of data from the base quantity + try: + sel = info.pop('select') + except KeyError: + pass + else: key = keys[-1].add_tag('sel') - rep.add(key, (Quantity.sel, keys[-1], info['select']), strict=True) + rep.add(key, (Quantity.sel, keys[-1], sel), strict=True) keys.append(key) - if 'group_sum' in info: - # Aggregate data by groups - args = dict(group=info['group_sum'][0], sum=info['group_sum'][1]) + # Optionally aggregate data by groups + try: + gs = info.pop('group_sum') + except KeyError: + pass + else: key = keys[-1].add_tag('agg') - rep.add(key, (partial(group_sum, **args), keys[-1]), strict=True) + task = (partial(group_sum, group=gs[0], sum=gs[1]), keys[-1]) + rep.add(key, task, strict=True) keys.append(key) - # 'format' section: convert the data to a pyam data structure - - # Copy for destructive .pop() operation - args = copy(info['format']) - args['var_name'] = name - - # Use 'ya' for the IAMC 'Year' column; unless YAML reporting config - # includes a different dim under format/year_time_dim. - year_time_dim = args.pop('year_time_dim', 'ya') - - drop = set(args.pop('drop', [])) & set(keys[-1].dims) - - # Use the built-in message_ix.Reporter method to add the coversion step - iamc_keys = rep.convert_pyam(keys[-1], year_time_dim, drop=drop, - collapse=partial(collapse, **args)) + # Arguments for Reporter.convert_pyam() + args = dict( + # Use 'ya' for the IAMC 'Year' column; unless YAML reporting config + # includes a different dim under format/year_time_dim. + year_time_dim=info.pop('year_time_dim', 'ya'), + drop=set(info.pop('drop', [])) & set(keys[-1].dims), + replace_vars='iamc variable names', + ) + + # Optionally convert units + try: + args['unit'] = info.pop('unit') + except KeyError: + pass + + # Remaining arguments are for the collapse() callback + args['collapse'] = partial(collapse, var_name=name, **info) + + # Use the message_ix.Reporter method to add the coversion step + iamc_keys = rep.convert_pyam(keys[-1], **args) keys.extend(iamc_keys) - # Revise the 'message:default' report to include the last key in - # the chain - rep.add('message:default', - rep.graph['message:default'] + (keys[-1],)) + # Revise the 'message:default' report to include the last key in the chain + rep.add('message:default', rep.graph['message:default'] + (keys[-1],)) log.info(f'Add {keys[-1]!r} from {keys[0]!r}') log.debug(f' {len(keys)} keys total') From 89f9ff6574e7aa291960e365d9c2270bdff57dfd Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 24 Mar 2020 17:34:57 +0100 Subject: [PATCH 027/220] Harmonize docstrings in reporting.core --- doc/api/report/index.rst | 10 +++++++++ message_ix_models/report/core.py | 35 ++++++++++++++++---------------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index ed508e0fa5..4edca7d312 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -73,6 +73,16 @@ Units apply: inv_cost: USD +- can be set explicitly when converting data to IAMC format: + + .. code-block:: yaml + + iamc: + # 'value' will be in kJ; 'units' will be the string 'kJ' + - variable: Variable Name + base: example_var:a-b-c + units: kJ + API reference ============= diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 74bb1531da..7ef6ccb972 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -91,15 +91,16 @@ def prepare_reporter(scenario, config, key, output_path): def add_aggregate(rep, info): """Add one entry from the 'aggregates:' section of a config file. - Each entry uses :meth:`.Reporter.aggregate` to compute + Each entry uses :meth:`~.message_ix.reporting.Reporter.aggregate` to + compute sums across labels within one dimension of a quantity. The entry *info* must contain: - - ``_quantities``: list of 0 or more keys for quantities to aggregate. The + - **_quantities**: list of 0 or more keys for quantities to aggregate. The full dimensionality of the key(s) is inferred. - - ``_tag`` (:class:`str`): new tag to append to the keys for the aggregated + - **_tag** (:class:`str`): new tag to append to the keys for the aggregated quantities. - - ``_dim`` (:class:`str`): dimensions + - **_dim** (:class:`str`): dimensions All other keys are treated as group names; the corresponding values are lists of labels along the dimension to sum. @@ -143,18 +144,18 @@ def add_combination(rep, info): The entry *info* must contain: - - ``key``: key for the new quantity, including dimensionality. - - ``inputs``: a list of dicts specifying inputs to the weighted sum. Each + - **key**: key for the new quantity, including dimensionality. + - **inputs**: a list of dicts specifying inputs to the weighted sum. Each dict contains: - - ``quantity`` (required): key for the input quantity. + - **quantity** (required): key for the input quantity. :meth:`add_combination` infers the proper dimensionality from the - dimensions of ``key`` plus dimension to ``select`` on. - - ``select`` (:class:`dict`, optional): selectors to be applied to the + dimensions of `key` plus dimension to `select` on. + - **select** (:class:`dict`, optional): selectors to be applied to the input quantity. Keys are dimensions; values are either single labels, or lists of labels. In the latter case, the sum is taken across these - values, so that the result has the same dimensionality as ``key``. - - ``weight`` (:class:`int`, optional): weight for the input quantity; + values, so that the result has the same dimensionality as `key`. + - **weight** (:class:`int`, optional): weight for the input quantity; default 1. **Example.** For the following YAML: @@ -308,16 +309,16 @@ def add_report(rep, info): def add_general(rep, info): - """Add items from the 'general' tree in the config file. + """Add one entry from the 'general:' tree in the config file. This is, as the name implies, the most generalized section of the config file. Entry *info* must contain: - - 'comp': this refers to the name of a computation that is available in the - namespace of message_data.reporting.computations. - - 'args': (optional) keyword arguments to the computation. - - 'inputs': a list of keys to which the computation is applied. - - 'key': the key for the computed quantity. + - **comp**: this refers to the name of a computation that is available in + the namespace of :mod:`message_data.reporting.computations`. + - **args** (:class:`dict`, optional): keyword arguments to the computation. + - **inputs**: a list of keys to which the computation is applied. + - **key**: the key for the computed quantity. """ log.info(f"Add {info['key']!r}") From 86456c2ba66f980668a323f61e4da0fc2e016952 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 24 Mar 2020 18:30:45 +0100 Subject: [PATCH 028/220] Test IAMC units conversion --- message_ix_models/report/core.py | 23 +++++++++++++------- message_ix_models/tests/test_report.py | 30 +++++++++++++++++++------- 2 files changed, 37 insertions(+), 16 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 7ef6ccb972..c84485e0ae 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -1,6 +1,7 @@ from copy import copy from functools import partial import logging +from pathlib import Path from ixmp.reporting.quantity import Quantity from message_ix.reporting import Key, Reporter, configure @@ -23,8 +24,8 @@ def prepare_reporter(scenario, config, key, output_path): ---------- scenario : ixmp.Scenario MESSAGE-GLOBIOM scenario containing a solution, to be reported. - config : dict-like - Reporting configuration. + config : os.Pathlike or dict-like + Reporting configuration path or dictionary. key : str or ixmp.reporting.Key Quantity or node to compute. The computation is not triggered (i.e. :meth:`get ` is not called); but the @@ -41,18 +42,24 @@ def prepare_reporter(scenario, config, key, output_path): Same as *key*, in full resolution, if any. """ + if isinstance(config, Path): + # Load configuration from a YAML file + with open(config, 'r') as f: + config = yaml.safe_load(f) + + # TODO do this in ixmp.reporting.configure + def cfg_sections(*sections): + return {s: config[s] for s in sections if s in config} + # Apply global reporting configuration, e.g. unit definitions - configure(config) + configure(**cfg_sections('units', 'rename_dims')) log.info('Preparing reporter') # Create a Reporter for *scenario* and apply Reporter-specific config rep = Reporter.from_scenario(scenario) \ - .configure(config) - - # Load the YAML configuration as a dict - with open(config, 'r') as f: - config = yaml.safe_load(f) + .configure(**cfg_sections('default', 'filters', 'file', + 'alias', 'units')) # Variable name replacement: dict, not list of entries rep.add('iamc variable names', config.get('iamc variable names', {})) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 4b05ef5cb1..b5bacf45d2 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -69,14 +69,15 @@ def test_report_bare_res(test_context, solved_res, global_config): def test_apply_units(solved_res, tmp_path): qty = 'inv_cost' - # Create a temporary config file - config_path = tmp_path / 'reporting-config.yaml' + # Create a temporary config dict config = MIN_CONFIG.copy() - config_path.write_text(yaml.dump(config)) + + def _prepare_reporter(): + return prepare_reporter(solved_res, config=config, key=qty, + output_path=None) # Prepare the reporter - reporter, key = prepare_reporter(solved_res, config=config_path, key=qty, - output_path=None) + reporter, key = _prepare_reporter() # Add some data to the scenario inv_cost = pd.DataFrame([ @@ -100,11 +101,24 @@ def test_apply_units(solved_res, tmp_path): # Update configuration, re-create the reporter config['units']['apply'] = {'inv_cost': 'USD'} - config_path.write_text(yaml.dump(config)) solved_res.commit('') solved_res.solve() - reporter, key = prepare_reporter(solved_res, config=config_path, key=qty, - output_path=None) + reporter, key = _prepare_reporter() # Units are applied assert str(reporter.get(key).attrs['_unit']) == 'USD_2005' + + # Update configuration, re-create the reporter + config['iamc'] = [ + dict( + variable='Investment Cost', + base='inv_cost:nl-t-yv', + year_time_dim='yv', + var=['t'], + unit='EUR_2005'), + ] + reporter, key = _prepare_reporter() + + # Units are converted + df = reporter.get('Investment Cost:iamc').as_pandas() + assert set(df['unit']) == {'EUR_2005'} From 546e368dd37553fbb4bae7bb6b689ecd62059807 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 24 Mar 2020 18:50:28 +0100 Subject: [PATCH 029/220] Test IAMC variable name replacement --- message_ix_models/report/core.py | 7 ++- message_ix_models/tests/test_report.py | 79 +++++++++++++++++--------- 2 files changed, 56 insertions(+), 30 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index c84485e0ae..47e0799ab9 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -1,4 +1,4 @@ -from copy import copy +from copy import copy, deepcopy from functools import partial import logging from pathlib import Path @@ -17,7 +17,7 @@ log = logging.getLogger(__name__) -def prepare_reporter(scenario, config, key, output_path): +def prepare_reporter(scenario, config, key, output_path=None): """Prepare to report *key* from *scenario*. Parameters @@ -46,6 +46,9 @@ def prepare_reporter(scenario, config, key, output_path): # Load configuration from a YAML file with open(config, 'r') as f: config = yaml.safe_load(f) + else: + # Make a copy, in case operations below are destructive + config = deepcopy(config) # TODO do this in ixmp.reporting.configure def cfg_sections(*sections): diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index b5bacf45d2..3ed2ee53d6 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -57,7 +57,6 @@ def test_report_bare_res(test_context, solved_res, global_config): solved_res, config=global_config, key='message:default', - output_path=None, ) # Get the default report @@ -66,59 +65,83 @@ def test_report_bare_res(test_context, solved_res, global_config): # reporter.get(key) -def test_apply_units(solved_res, tmp_path): +# Common data for tests +DATA_INV_COST = pd.DataFrame([ + ['R11_NAM', 'coal_ppl', '2010', 10.5, 'USD'], + ['R11_LAM', 'coal_ppl', '2010', 9.5, 'USD'], + ], columns='node_loc technology year_vtg value unit'.split()) + +IAMC_INV_COST = dict( + variable='Investment Cost', + base='inv_cost:nl-t-yv', + year_time_dim='yv', + var=['t'], + unit='EUR_2005', +) + + +def test_apply_units(bare_res): qty = 'inv_cost' # Create a temporary config dict config = MIN_CONFIG.copy() - def _prepare_reporter(): - return prepare_reporter(solved_res, config=config, key=qty, - output_path=None) - # Prepare the reporter - reporter, key = _prepare_reporter() + bare_res.solve() + reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Add some data to the scenario - inv_cost = pd.DataFrame([ - ['R11_NAM', 'coal_ppl', '2010', 10.5, 'USD'], - ['R11_LAM', 'coal_ppl', '2010', 9.5, 'USD'], - ], columns='node_loc technology year_vtg value unit'.split()) - - solved_res.remove_solution() - solved_res.check_out() - solved_res.add_par('inv_cost', inv_cost) + inv_cost = DATA_INV_COST.copy() + bare_res.remove_solution() + bare_res.check_out() + bare_res.add_par('inv_cost', inv_cost) + bare_res.commit('') + bare_res.solve() # Units are retrieved assert reporter.get(key).attrs['_unit'] == 'USD_2005' # Add data with units that will be discarded inv_cost['unit'] = ['USD', 'kg'] - solved_res.add_par('inv_cost', inv_cost) + bare_res.remove_solution() + bare_res.check_out() + bare_res.add_par('inv_cost', inv_cost) # Units are discarded assert str(reporter.get(key).attrs['_unit']) == 'dimensionless' # Update configuration, re-create the reporter config['units']['apply'] = {'inv_cost': 'USD'} - solved_res.commit('') - solved_res.solve() - reporter, key = _prepare_reporter() + bare_res.commit('') + bare_res.solve() + reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Units are applied assert str(reporter.get(key).attrs['_unit']) == 'USD_2005' # Update configuration, re-create the reporter - config['iamc'] = [ - dict( - variable='Investment Cost', - base='inv_cost:nl-t-yv', - year_time_dim='yv', - var=['t'], - unit='EUR_2005'), - ] - reporter, key = _prepare_reporter() + config['iamc'] = [IAMC_INV_COST] + reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Units are converted df = reporter.get('Investment Cost:iamc').as_pandas() assert set(df['unit']) == {'EUR_2005'} + + +def test_iamc_replace_vars(bare_res): + """Test the 'iamc variable names' reporting configuration.""" + qty = 'inv_cost' + config = { + 'iamc': [IAMC_INV_COST], + 'iamc variable names': { + 'Investment Cost|coal_ppl': 'Investment Cost|Coal', + } + } + bare_res.check_out() + bare_res.add_par('inv_cost', DATA_INV_COST) + bare_res.commit('') + bare_res.solve() + + reporter, key = prepare_reporter(bare_res, config=config, key=qty) + df = reporter.get('Investment Cost:iamc').as_pandas() + assert set(df['variable']) == {'Investment Cost|Coal'} From d17705f5b624041a237faad5528f8fcd58b0d600 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 1 Apr 2020 20:54:40 +0200 Subject: [PATCH 030/220] Pass units through reporting.computations.combine --- message_ix_models/report/computations.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 42327ae7a9..3eb5a2ea44 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -2,6 +2,7 @@ Some of these may migrate upstream to message_ix or ixmp in the future. """ +from ixmp.reporting.utils import collect_units from message_ix.reporting.computations import * # noqa: F401,F403 from message_ix.reporting.computations import concat @@ -19,11 +20,25 @@ def combine(*quantities, select=None, weights=None): weights : list of float Weight applied to each quantity. Must have the same number of elements as `quantities`. + + Raises + ------ + ValueError + If the *quantities* have mismatched units. """ # Handle arguments select = select or len(quantities) * [{}] weights = weights or len(quantities) * [1.] + # Check units + units = collect_units(*quantities) + for u in units: + # TODO relax this condition: modify the weights with conversion factors + # if the units are compatible, but not the same + if u != units[0]: + raise ValueError(f'Cannot combine() units {units[0]} and {u}') + units = units[0] + result = 0 ref_dims = None @@ -48,6 +63,8 @@ def combine(*quantities, select=None, weights=None): result += weight * temp + result.attrs['_unit'] = units + return result From 0e98e9350c316075b089c67c937597d4b7714119 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 1 Apr 2020 22:01:52 +0200 Subject: [PATCH 031/220] Add common replacements to reporting.util.collapse() --- message_ix_models/report/util.py | 49 +++++++++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 17775c4736..a888c7293d 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,7 +1,29 @@ from ixmp.reporting import Key -def collapse(df, var_name, var=[], region=[]): +#: Replacements used in :meth:`collapse`. +REPLACE = { + # Applied to whole values along each dimension + 'c': { + 'Crudeoil': 'Oil', + 'Electr': 'Electricity', + 'Ethanol': 'Liquids|Biomass', + 'Lightoil': 'Liquids|Oil', + }, + 'l': { + 'Final Energy': 'Final Energy|Residential', + }, + + # Applied after the variable column is assembled. Partial string + # replacement; handled as regular expressions. + 'variable': { + r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', + r'Residential\|Gas': 'Residential|Gases|Natural Gas', + } +} + + +def collapse(df, var_name, var=[], region=[], replace_common=True): """Callback for the `collapse` argument to :meth:`.convert_pyam`. Simplified from :meth:`message_ix.reporting.pyam.collapse_message_cols`. @@ -18,11 +40,30 @@ def collapse(df, var_name, var=[], region=[]): after the `var_name` using the pipe ('|') character. region : list of str, optional Dimensions to concatenate to the 'Region' column. + replace_common : bool, optional + If :obj:`True` (the default), use :data`REPLACE` to perform standard + replacements on columns before and after assembling the 'Variable' + column. See also -------- .core.add_iamc_table """ + if replace_common: + try: + # Level: to title case, add the word 'energy' + df['l'] = df['l'].str.title() + ' Energy' + except KeyError: + pass + try: + # Commodity: to title case + df['c'] = df['c'].str.title() + except KeyError: + pass + + # Apply replacements + df = df.replace(REPLACE) + # Extend region column ('n' and 'nl' are automatically added by message_ix) df['region'] = df['region'].astype(str)\ .str.cat([df[c] for c in region], sep='|') @@ -31,6 +72,12 @@ def collapse(df, var_name, var=[], region=[]): df['variable'] = var_name df['variable'] = df['variable'].str.cat([df[c] for c in var], sep='|') + # TODO roll this into the rename_vars argument of message_ix...as_pyam() + if replace_common: + # Apply variable name partial replacements + for pat, repl in REPLACE['variable'].items(): + df['variable'] = df['variable'].str.replace(pat, repl) + # Drop same columns return df.drop(var + region, axis=1) From 94812e6fc0c5bf5b9965d9dc618ce0dbfb2c30cc Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 3 Apr 2020 13:55:41 +0200 Subject: [PATCH 032/220] Simplify config handling & passing config to ixmp --- message_ix_models/report/core.py | 34 ++++++++++++-------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 47e0799ab9..660a946c3e 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -42,30 +42,21 @@ def prepare_reporter(scenario, config, key, output_path=None): Same as *key*, in full resolution, if any. """ - if isinstance(config, Path): - # Load configuration from a YAML file - with open(config, 'r') as f: - config = yaml.safe_load(f) - else: - # Make a copy, in case operations below are destructive - config = deepcopy(config) - - # TODO do this in ixmp.reporting.configure - def cfg_sections(*sections): - return {s: config[s] for s in sections if s in config} - - # Apply global reporting configuration, e.g. unit definitions - configure(**cfg_sections('units', 'rename_dims')) - log.info('Preparing reporter') - # Create a Reporter for *scenario* and apply Reporter-specific config - rep = Reporter.from_scenario(scenario) \ - .configure(**cfg_sections('default', 'filters', 'file', - 'alias', 'units')) + # Create a Reporter for *scenario* + rep = Reporter.from_scenario(scenario) + + # Load and apply configuration + if not isinstance(config, dict): + # A non-dict *config* argument must be a Path + config = dict(path=Path(config)) + rep.configure(**config) + # Reference to the configuration as stored in the reporter + config = rep.graph['config'] # Variable name replacement: dict, not list of entries - rep.add('iamc variable names', config.get('iamc variable names', {})) + rep.add('iamc variable names', config.pop('iamc variable names', {})) # Mapping of file sections to handlers sections = ( @@ -77,11 +68,12 @@ def cfg_sections(*sections): ) for section_name, func in sections: - entries = config.get(section_name, []) + entries = config.pop(section_name, []) # Handle the entries, if any if len(entries): log.info(f'--- {section_name!r} config section') + for entry in entries: func(rep, entry) From f8fbe583046b0279d7ef48299dfa165f37dc48e1 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 6 Apr 2020 13:36:24 +0200 Subject: [PATCH 033/220] Tidy reporting.core imports; re-add deepcopy for testing --- message_ix_models/report/core.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 660a946c3e..360cdbf25b 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -4,10 +4,9 @@ from pathlib import Path from ixmp.reporting.quantity import Quantity -from message_ix.reporting import Key, Reporter, configure +from message_ix.reporting import Key, Reporter from message_ix.reporting.computations import write_report from message_ix.reporting.computations import concat -import yaml from . import computations from .computations import combine, group_sum @@ -47,10 +46,14 @@ def prepare_reporter(scenario, config, key, output_path=None): # Create a Reporter for *scenario* rep = Reporter.from_scenario(scenario) - # Load and apply configuration - if not isinstance(config, dict): + if isinstance(config, dict): + # Deepcopy to avoid destructive operations below + config = deepcopy(config) + else: + # Load and apply configuration # A non-dict *config* argument must be a Path config = dict(path=Path(config)) + rep.configure(**config) # Reference to the configuration as stored in the reporter config = rep.graph['config'] From be6bc0b13895935894bc0689f8b1cc9395f9b9de Mon Sep 17 00:00:00 2001 From: francescolovat <56022262+francescolovat@users.noreply.github.com> Date: Thu, 9 Apr 2020 11:56:57 +0200 Subject: [PATCH 034/220] Report GDP variables (#110) * Attempt to call add_product() from Reporter and use it to obtain quantity GDP|PPP from GDP|MER * Add missing * operator in add_product * Simplify of redundant YAML anchors * Fix warning on redefinition of pint variables and typos when using iamc: for GDP variables * Fix typo in comment in core.py * Fix error in dims of gdp_calibrate * Fix entries in combine assuming default values * Editing of add_product function in core.py * Definitive commit containig fixes. Now GDP vars can be included in .xlsx * Fix failure of test_gea due to int64 * Init parameter MERtoPPP to address test failures * Small edit to make pass **test_ldv** * Init MERtoPPP param in bare.py to avoid failure of test_report_bare_res * Remove format from iamc_variable_names * Shift of *product* computation to obtain GDP-PPP to *general* section * Separate 'billion' units * Delete YAML anchor for GDP and deleted report of var GDP_for_calibration * Removed units applied to gdp_calibrate Co-authored-by: Paul Natsuo Kishimoto --- message_ix_models/data/report/global.yaml | 27 +++++++++++++++++++++-- message_ix_models/report/core.py | 19 ++++++++++------ 2 files changed, 37 insertions(+), 9 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 6747e6b2c1..46a0f4f3cb 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -22,6 +22,10 @@ units: # USD = [value] replace: '???': '' + '-': '' + apply: + GDP: billion USD_2005 / year + # Filters @@ -242,7 +246,12 @@ combine: weight: -1 -# general: +general: +- key: gdp_ppp + comp: product + inputs: + - GDP + - MERtoPPP # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind ref, wind res] @@ -276,13 +285,22 @@ pe_iamc: &pe_iamc iamc variable names: Input|variable|name: Final|variable|name - # This section is used by reporting.core.add_iamc_table() iamc: #- variable: Primary Energy|Biomass # base: land_out: # select: {l: [land_use], c: [bioenergy]} +- variable: GDP|MER + base: GDP:n-y + unit: billion USD_2010 / year + year_time_dim: y + +- variable: GDP|PPP + base: gdp_ppp:n-y + unit: billion USD_2010 / year + year_time_dim: y + - variable: Primary Energy|Coal base: coal:nl-ya <<: *pe_iamc @@ -339,3 +357,8 @@ report: - Primary Energy|Nuclear:iamc - Primary Energy|Solar:iamc - Primary Energy|Wind:iamc + +- key: gdp test + members: + - GDP|MER:iamc + - GDP|PPP:iamc diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 360cdbf25b..37b6f99c0d 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -325,12 +325,17 @@ def add_general(rep, info): - **inputs**: a list of keys to which the computation is applied. - **key**: the key for the computed quantity. """ - log.info(f"Add {info['key']!r}") + if info['comp'] == 'product': + log.info(f"Add {info['key']!r} using " + f"ixmp.reporting.Reporter.add_product()") + rep.add_product(info['key'], *info['inputs']) + else: + log.info(f"Add {info['key']!r}") - # Retrieve the function for the computation - f = getattr(computations, info['comp']) - kwargs = info.get('args', {}) - inputs = infer_keys(rep, info['inputs']) - task = tuple([partial(f, **kwargs)] + inputs) + # Retrieve the function for the computation + f = getattr(computations, info['comp']) + kwargs = info.get('args', {}) + inputs = infer_keys(rep, info['inputs']) + task = tuple([partial(f, **kwargs)] + inputs) - rep.add(info['key'], task, strict=True) + rep.add(info['key'], task, strict=True) From b33724455e302de73eccf9bda5e48da42734a87a Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 13 Apr 2020 18:18:17 +0200 Subject: [PATCH 035/220] Use improvements from iiasa/ixmp#312 --- message_ix_models/report/core.py | 33 ++++++++++++++++---------- message_ix_models/tests/test_report.py | 6 ++--- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 37b6f99c0d..ea79d0d2db 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -3,10 +3,12 @@ import logging from pathlib import Path +from iam_units import registry from ixmp.reporting.quantity import Quantity from message_ix.reporting import Key, Reporter from message_ix.reporting.computations import write_report from message_ix.reporting.computations import concat +import pint from . import computations from .computations import combine, group_sum @@ -41,6 +43,9 @@ def prepare_reporter(scenario, config, key, output_path=None): Same as *key*, in full resolution, if any. """ + # Use the IAM-units registry as the application registry for all reporting + pint.set_application_registry(registry) + log.info('Preparing reporter') # Create a Reporter for *scenario* @@ -70,18 +75,22 @@ def prepare_reporter(scenario, config, key, output_path=None): ('report', add_report), ) + # Assemble a queue of (args, kwargs) to Reporter.add() + to_add = [] for section_name, func in sections: - entries = config.pop(section_name, []) + for entry in config.pop(section_name, []): + # Append to queue + to_add.append((('apply', func), dict(info=entry))) - # Handle the entries, if any - if len(entries): - log.info(f'--- {section_name!r} config section') + # Use ixmp.Reporter.add_queue() to process the entries. Retry at most + # once; raise an exception if adding fails after that. + rep.add_queue(to_add, max_tries=1, fail='raise') - for entry in entries: - func(rep, entry) + # Tidy the config dict by removing any YAML sections starting with '_' + [config.pop(k) for k in list(config.keys()) if k.startswith('_')] # If needed, get the full key for *quantity* - key = rep.check_keys(key)[0] + key = infer_keys(rep, key)[0] if output_path: # Add a new computation that writes *key* to the specified file @@ -93,7 +102,7 @@ def prepare_reporter(scenario, config, key, output_path=None): return rep, key -def add_aggregate(rep, info): +def add_aggregate(rep: Reporter, info): """Add one entry from the 'aggregates:' section of a config file. Each entry uses :meth:`~.message_ix.reporting.Reporter.aggregate` to @@ -141,7 +150,7 @@ def add_aggregate(rep, info): log.info(f'Add {keys[0]!r} + {len(keys)-1} partial sums') -def add_combination(rep, info): +def add_combination(rep: Reporter, info): r"""Add one entry from the 'combine:' section of a config file. Each entry uses the :func:`~.combine` operation to compute a weighted sum @@ -212,7 +221,7 @@ def add_combination(rep, info): "partial sums") -def add_iamc_table(rep, info): +def add_iamc_table(rep: Reporter, info): """Add one entry from the 'iamc:' section of a config file. Each entry uses :meth:`.Reporter.convert_pyam` (plus extra computations) to @@ -305,7 +314,7 @@ def add_iamc_table(rep, info): log.debug(f' {len(keys)} keys total') -def add_report(rep, info): +def add_report(rep: Reporter, info): """Add items from the 'report' tree in the config file.""" log.info(f"Add {info['key']!r}") @@ -313,7 +322,7 @@ def add_report(rep, info): rep.add(info['key'], tuple([concat] + info['members']), strict=True) -def add_general(rep, info): +def add_general(rep: Reporter, info): """Add one entry from the 'general:' tree in the config file. This is, as the name implies, the most generalized section of the config diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 3ed2ee53d6..e65c9933e1 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -5,7 +5,6 @@ from message_ix.reporting import Reporter import pandas as pd import pytest -import yaml from message_data.reporting import prepare_reporter from message_data.reporting.computations import combine @@ -99,7 +98,8 @@ def test_apply_units(bare_res): bare_res.solve() # Units are retrieved - assert reporter.get(key).attrs['_unit'] == 'USD_2005' + + assert reporter.get(key).attrs['_unit'] == 'USD' # Add data with units that will be discarded inv_cost['unit'] = ['USD', 'kg'] @@ -117,7 +117,7 @@ def test_apply_units(bare_res): reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Units are applied - assert str(reporter.get(key).attrs['_unit']) == 'USD_2005' + assert str(reporter.get(key).attrs['_unit']) == 'USD' # Update configuration, re-create the reporter config['iamc'] = [IAMC_INV_COST] From baf95c47f4735f31e93bc7005b32a822036f549e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 13 Apr 2020 18:21:55 +0200 Subject: [PATCH 036/220] Copy cleanups from iiasa/message_data#116 --- message_ix_models/report/__init__.py | 2 +- message_ix_models/report/core.py | 43 +++++++++++++++++----------- 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 28b33a78a3..dd1d891b4a 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -62,7 +62,7 @@ def mark(): rep, key = prepare_reporter(s, config, key, output_path) mark() - print('Preparing to report:', rep.describe(key), sep='\n') + print('', 'Preparing to report:', rep.describe(key), '', sep='\n\n') mark() if dry_run: diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index ea79d0d2db..83f8968b4e 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -90,7 +90,7 @@ def prepare_reporter(scenario, config, key, output_path=None): [config.pop(k) for k in list(config.keys()) if k.startswith('_')] # If needed, get the full key for *quantity* - key = infer_keys(rep, key)[0] + key = infer_keys(rep, key) if output_path: # Add a new computation that writes *key* to the specified file @@ -147,7 +147,7 @@ def add_aggregate(rep: Reporter, info): for qty in quantities: keys = rep.aggregate(qty, tag, groups, sums=True) - log.info(f'Add {keys[0]!r} + {len(keys)-1} partial sums') + log.info(f'Add {repr(keys[0])} + {len(keys)-1} partial sums') def add_combination(rep: Reporter, info): @@ -217,8 +217,9 @@ def add_combination(rep: Reporter, info): added = rep.add(key, c, strict=True, index=True, sums=True) - log.info(f"Add {key}\n computed from {quantities!r}\n + {len(added)-1} " - "partial sums") + log.info(f'Add {repr(key)} + {len(added)-1} partial sums') + log.debug(f' as combination of') + log.debug(f' {repr(quantities)}') def add_iamc_table(rep: Reporter, info): @@ -310,13 +311,13 @@ def add_iamc_table(rep: Reporter, info): # Revise the 'message:default' report to include the last key in the chain rep.add('message:default', rep.graph['message:default'] + (keys[-1],)) - log.info(f'Add {keys[-1]!r} from {keys[0]!r}') - log.debug(f' {len(keys)} keys total') + log.info(f'Add {repr(keys[-1])} from {repr(keys[0])}') + log.debug(f' {len(keys)} keys total') def add_report(rep: Reporter, info): """Add items from the 'report' tree in the config file.""" - log.info(f"Add {info['key']!r}") + log.info(f"Add report {info['key']} with {len(info['members'])} table(s)") # Concatenate pyam data structures rep.add(info['key'], tuple([concat] + info['members']), strict=True) @@ -329,22 +330,32 @@ def add_general(rep: Reporter, info): file. Entry *info* must contain: - **comp**: this refers to the name of a computation that is available in - the namespace of :mod:`message_data.reporting.computations`. - - **args** (:class:`dict`, optional): keyword arguments to the computation. - - **inputs**: a list of keys to which the computation is applied. + the namespace of :mod:`message_data.reporting.computations`. If + 'product', then :meth:`ixmp.Reporter.add_product` is called instead. - **key**: the key for the computed quantity. + - **inputs**: a list of keys to which the computation is applied. + - **args** (:class:`dict`, optional): keyword arguments to the computation. + - **add args** (:class:`dict`, optional): keyword arguments to + :meth:`ixmp.Reporter.add` itself. """ + inputs = infer_keys(rep, info.get('inputs', [])) + if info['comp'] == 'product': - log.info(f"Add {info['key']!r} using " - f"ixmp.reporting.Reporter.add_product()") - rep.add_product(info['key'], *info['inputs']) + key = rep.add_product(info['key'], *inputs) + log.info(f"Add {repr(key)} using .add_product()") else: - log.info(f"Add {info['key']!r}") + key = Key.from_str_or_key(info['key']) # Retrieve the function for the computation f = getattr(computations, info['comp']) + + log.info(f"Add {repr(key)} using {f.__name__}(...)") + kwargs = info.get('args', {}) - inputs = infer_keys(rep, info['inputs']) task = tuple([partial(f, **kwargs)] + inputs) - rep.add(info['key'], task, strict=True) + added = rep.add(key, task, strict=True, index=True, + sums=info.get('sums', False)) + + if isinstance(added, list): + log.info(f' + {len(added)-1} partial sums') From bf97f24194cfc10d73300af1880c2a3fdbe3f45c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 13 Apr 2020 19:43:14 +0200 Subject: [PATCH 037/220] Bump Reporter.add_queue(..., max_tries=2) from 1 --- message_ix_models/report/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 83f8968b4e..c2880795ae 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -84,7 +84,7 @@ def prepare_reporter(scenario, config, key, output_path=None): # Use ixmp.Reporter.add_queue() to process the entries. Retry at most # once; raise an exception if adding fails after that. - rep.add_queue(to_add, max_tries=1, fail='raise') + rep.add_queue(to_add, max_tries=2, fail='raise') # Tidy the config dict by removing any YAML sections starting with '_' [config.pop(k) for k in list(config.keys()) if k.startswith('_')] From 428322251d230b9265f5cb1614d811127adff303 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 11:36:08 +0200 Subject: [PATCH 038/220] Don't re-set pint application registry --- message_ix_models/report/core.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index c2880795ae..d21a69f56b 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -3,7 +3,6 @@ import logging from pathlib import Path -from iam_units import registry from ixmp.reporting.quantity import Quantity from message_ix.reporting import Key, Reporter from message_ix.reporting.computations import write_report @@ -43,9 +42,6 @@ def prepare_reporter(scenario, config, key, output_path=None): Same as *key*, in full resolution, if any. """ - # Use the IAM-units registry as the application registry for all reporting - pint.set_application_registry(registry) - log.info('Preparing reporter') # Create a Reporter for *scenario* From c2cf559be3447017161cde661144b84806f49ce5 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 11:36:24 +0200 Subject: [PATCH 039/220] Update tests for iam-units registry --- message_ix_models/tests/test_report.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index e65c9933e1..ba8f879a25 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -98,8 +98,8 @@ def test_apply_units(bare_res): bare_res.solve() # Units are retrieved - - assert reporter.get(key).attrs['_unit'] == 'USD' + USD_2005 = reporter.unit_registry.Unit('USD_2005') + assert reporter.get(key).attrs['_unit'] == USD_2005 # Add data with units that will be discarded inv_cost['unit'] = ['USD', 'kg'] @@ -117,7 +117,7 @@ def test_apply_units(bare_res): reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Units are applied - assert str(reporter.get(key).attrs['_unit']) == 'USD' + assert str(reporter.get(key).attrs['_unit']) == USD_2005 # Update configuration, re-create the reporter config['iamc'] = [IAMC_INV_COST] From 1e84fbb556cbb5a2150b842a78d243eb935efa8e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 20 Apr 2020 21:48:06 +0200 Subject: [PATCH 040/220] Add reporting.computations.update_scenario --- message_ix_models/report/computations.py | 41 +++++++++++ .../tests/report/test_computations.py | 68 +++++++++++++++++++ 2 files changed, 109 insertions(+) create mode 100644 message_ix_models/tests/report/test_computations.py diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 3eb5a2ea44..4a5bb56aa4 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -2,11 +2,18 @@ Some of these may migrate upstream to message_ix or ixmp in the future. """ +from itertools import zip_longest +import logging + +from ixmp.reporting import Quantity from ixmp.reporting.utils import collect_units from message_ix.reporting.computations import * # noqa: F401,F403 from message_ix.reporting.computations import concat +log = logging.getLogger(__name__) + + def combine(*quantities, select=None, weights=None): """Sum distinct *quantities* by *weights*. @@ -84,3 +91,37 @@ def share_curtailment(curt, *parts): into multiple technologies; one for each of *parts*. """ return parts[0] - curt * (parts[0] / sum(parts)) + + +def update_scenario(scenario, *quantities, params=[]): + """Update *scenario* with computed data from reporting *quantities*. + + Parameters + ---------- + scenario : .Scenario + quantities : .Quantity or pd.DataFrame + If DataFrame, must be valid input to :meth:`.Scenario.add_par`. + params : list of str, optional + For every element of `quantities` that is a pd.DataFrame, the element + of `params` at the same index gives the name of the parameter to + update. + """ + log.info("Update '{0.model}/{0.scenario}#{0.version}'".format(scenario)) + scenario.check_out() + + for order, (qty, par_name) in enumerate(zip_longest(quantities, params)): + if isinstance(qty, Quantity): + # Convert a Quantity to a DataFrame + par_name = qty.name + new = qty.to_series() \ + .reset_index() \ + .rename(columns={par_name: 'value'}) + new['unit'] = '{:~}'.format(qty.attrs['_unit']) + qty = new + + # Add the data + log.info(f' {repr(par_name)} ← {len(qty)} rows') + scenario.add_par(par_name, qty) + + scenario.commit('Data added using ' + 'message_data.reporting.computations.update_scenario') diff --git a/message_ix_models/tests/report/test_computations.py b/message_ix_models/tests/report/test_computations.py new file mode 100644 index 0000000000..b10afd44a7 --- /dev/null +++ b/message_ix_models/tests/report/test_computations.py @@ -0,0 +1,68 @@ +from functools import partial + +from ixmp.reporting import as_quantity +from ixmp.testing import assert_logs +from message_ix.reporting import Reporter +from message_data.reporting.computations import update_scenario +from message_data.tools import ScenarioInfo, make_df + + +def test_update_scenario(bare_res, caplog): + scen = bare_res + # Number of rows in the 'demand' parameter + N_before = len(scen.par('demand')) + + # A Reporter used as calculation engine + calc = Reporter() + + # Target Scenario for updating data + calc.add('target', scen) + + # Create a pd.DataFrame suitable for Scenario.add_par() + units = 'GWa' + demand = make_df( + 'demand', + node='World', + commodity='electr', + level='secondary', + year=ScenarioInfo(bare_res).Y[:10], + time='year', + value=1.0, + unit=units) + + # Add to the Reporter + calc.add('input', demand) + + # Task to update the scenario with the data + calc.add('test 1', (partial(update_scenario, params=['demand']), 'target', + 'input')) + + # Trigger the computation that results in data being added + with assert_logs(caplog, "'demand' ← 10 rows"): + # Returns nothing + assert calc.get('test 1') is None + + # Rows were added to the parameter + assert len(scen.par('demand')) == N_before + len(demand) + + # Modify the data + demand['value'] = 2.0 + demand = demand.iloc[:5] + # Convert to a Quantity object + input = as_quantity( + demand.set_index('node commodity level year time'.split())['value'], + name='demand', + units=units, + ) + # Re-add + calc.add('input', input) + + # Revise the task; the parameter name ('demand') + calc.add('test 2', (update_scenario, 'target', 'input')) + + # Trigger the computation + with assert_logs(caplog, "'demand' ← 5 rows"): + calc.get('test 2') + + # Only half the rows have been updated + assert scen.par('demand')['value'].mean() == 1.5 From 74c4ef7cad40b8fccec9ec4708b26f9cdec384bf Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 28 Apr 2020 15:29:46 +0200 Subject: [PATCH 041/220] Report multiple scenarios with 'mix-data report --from-file=...' --- message_ix_models/report/__init__.py | 89 +++++++++++++++++++++------- 1 file changed, 68 insertions(+), 21 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index dd1d891b4a..cc25001ab3 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,29 +1,42 @@ """Reporting for the MESSAGEix-GLOBIOM global model.""" +from copy import copy import logging from pathlib import Path +from time import process_time import click -from ixmp.utils import logger from .core import prepare_reporter +import yaml + log = logging.getLogger(__name__) CONFIG = Path(__file__).parent / 'data' / 'global.yaml' +_TIMES = [] + + +def mark(): + _TIMES.append(process_time()) + log.info(' {:.2f} seconds'.format(_TIMES[-1] - _TIMES[-2])) + + @click.command(name='report') @click.pass_obj -@click.argument('key', default='message:default') @click.option('--config', 'config_file', default='global', show_default=True, help='Path or stem for reporting config file.') @click.option('-o', '--output', 'output_path', type=Path, help='Write output to file instead of console.') +@click.option('--from-file', type=click.Path(exists=True, dir_okay=False), + help='Report multiple Scenarios listed in FILE.') @click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') @click.option('--dry-run', '-n', is_flag=True, help='Only show what would be done.') -def cli(context, key, config_file, output_path, verbose, dry_run): +@click.argument('key', default='message:default') +def cli(context, config_file, output_path, from_file, verbose, dry_run, key): """Postprocess results. KEY defaults to the comprehensive report 'message:default', but may also @@ -32,24 +45,13 @@ def cli(context, key, config_file, output_path, verbose, dry_run): --config can give either the absolute path to a reporting configuration file, or the stem (i.e. name without .yaml extension) of a file in data/report. - """ - from time import process_time - - times = [process_time()] - def mark(): - times.append(process_time()) - log.info(' {:.2f} seconds'.format(times[-1] - times[-2])) - - if verbose: - logger().setLevel('DEBUG') - - s = context.get_scenario() - mark() - - # Read reporting configuration from a file + With --from-file, read multiple Scenario identifiers from FILE, and report + each one. In this usage, --output-path may only be a directory. + """ + _TIMES.append(process_time()) - # Use the option value as if it were an absolute path + # --config: use the option value as if it were an absolute path config = Path(config_file) if not config.exists(): # Path doesn't exist; treat it as a stem in the metadata dir @@ -59,7 +61,52 @@ def mark(): # Can't find the file raise click.BadOptionUsage(f'--config={config_file} not found') - rep, key = prepare_reporter(s, config, key, output_path) + if verbose: + log.setLevel('DEBUG') + logging.getLogger('ixmp').setLevel('DEBUG') + + # Prepare a list of Context objects, each referring to one Scenario + contexts = [] + + if from_file: + # Multiple URLs + if not output_path: + output_path = Path.cwd() + if not output_path.is_dir(): + msg = '--output-path must be directory with --from-file' + raise click.BadOptionUsage(msg) + + for item in yaml.safe_load(open(from_file)): + # Copy the existing Context to a new object + ctx = copy(context) + + # Update with Scenario info from file + ctx.handle_cli_args(**item) + + # Construct an output path from the parsed info/URL + ctx.output_path = Path( + output_path, + '_'.join([ctx.platform_info['name'], + ctx.scenario_info['model'], + ctx.scenario_info['scenario']]), + ).with_suffix('.xlsx') + + contexts.append(ctx) + else: + # Single Scenario; identifiers were supplied to the top-level CLI + context.output_path = output_path + contexts.append(context) + + for ctx in contexts: + # Load the Platform and Scenario + scenario = context.get_scenario() + mark() + + report(scenario, key, config, ctx.output_path, dry_run) + + +def report(scenario, key, config, output_path, dry_run): + rep, key = prepare_reporter(scenario, config, key, output_path) mark() print('', 'Preparing to report:', rep.describe(key), '', sep='\n\n') @@ -74,7 +121,7 @@ def mark(): mark() -def report(scenario, path, legacy=None): +def _report(scenario, path, legacy=None): """Run complete reporting on *scenario* with output to *path*. If *legacy* is not None, it is used as keyword arguments to the old- From 5d27d209ef0ced03f553b1062e8c96306ea99878 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 28 Apr 2020 16:49:32 +0200 Subject: [PATCH 042/220] Document continuous reporting --- doc/api/report/index.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 4edca7d312..78ad923df8 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -84,6 +84,22 @@ Units units: kJ +Continous reporting +=================== + +The IIASA TeamCity build server is configured to automatically run the full (:file:`global.yaml`) reporting on the following scenarios: + +.. literalinclude:: ../../../ci/report.yaml + :language: yaml + +This takes place: + +- every morning at 07:00 IIASA time, and +- for every commit on every pull request branch, *if* the branch name includes ``report`` anywhere, e.g. ``feature/improve-reporting``. + +The results are output to Excel files that are preserved and made available as 'build artifacts' via the TeamCity web interface. + + API reference ============= From a07cde946092ef69843498cf7fad0049e93d331b Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 28 Apr 2020 17:02:22 +0200 Subject: [PATCH 043/220] Cast columns to 'str' in reporting.util.collapse --- message_ix_models/report/util.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index a888c7293d..1ab90bebce 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -52,12 +52,12 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): if replace_common: try: # Level: to title case, add the word 'energy' - df['l'] = df['l'].str.title() + ' Energy' + df['l'] = df['l'].astype(str).str.title() + ' Energy' except KeyError: pass try: # Commodity: to title case - df['c'] = df['c'].str.title() + df['c'] = df['c'].astype(str).str.title() except KeyError: pass @@ -65,7 +65,7 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): df = df.replace(REPLACE) # Extend region column ('n' and 'nl' are automatically added by message_ix) - df['region'] = df['region'].astype(str)\ + df['region'] = df['region'].astype(str) \ .str.cat([df[c] for c in region], sep='|') # Assemble variable column From 2e09349da1aa72374f5ea7bdee2d57d31cb824fe Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 20 Apr 2020 15:48:14 +0200 Subject: [PATCH 044/220] Add model.transport.check --- message_ix_models/report/computations.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 4a5bb56aa4..0fcd37ebec 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -10,6 +10,9 @@ from message_ix.reporting.computations import * # noqa: F401,F403 from message_ix.reporting.computations import concat +# Computations for specific models and projects +from message_data.model.transport.check import transport_check # noqa: F401 + log = logging.getLogger(__name__) From d7bcf29643cdb1b84c430ce0ac9f8a6b54f517c6 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 7 May 2020 22:29:35 +0200 Subject: [PATCH 045/220] Add reporting.register() for callbacks; expand transport.report --- message_ix_models/report/__init__.py | 8 +++++- message_ix_models/report/computations.py | 4 ++- message_ix_models/report/core.py | 32 +++++++++++++++++++++++- 3 files changed, 41 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index cc25001ab3..63a966ceff 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -6,11 +6,17 @@ import click -from .core import prepare_reporter +from .core import prepare_reporter, register import yaml +__all__ = [ + 'prepare_reporter', + 'register', +] + + log = logging.getLogger(__name__) CONFIG = Path(__file__).parent / 'data' / 'global.yaml' diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 0fcd37ebec..8c23efb986 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -11,7 +11,9 @@ from message_ix.reporting.computations import concat # Computations for specific models and projects -from message_data.model.transport.check import transport_check # noqa: F401 +from message_data.model.transport.report import ( # noqa: F401 + check_computation as transport_check +) log = logging.getLogger(__name__) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index d21a69f56b..7109b50320 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -7,7 +7,6 @@ from message_ix.reporting import Key, Reporter from message_ix.reporting.computations import write_report from message_ix.reporting.computations import concat -import pint from . import computations from .computations import combine, group_sum @@ -17,6 +16,34 @@ log = logging.getLogger(__name__) +CALLBACKS = [] + + +def register(callback) -> None: + """Register a callback function for :meth:`prepare_reporter`. + + Each registered function is called by :meth:`prepare_reporter`, in order to + add or modify reporting keys. Specific model variants and projects can + register a callback to extend the reporting graph. + + Callback functions must take one argument, with a type annotation:: + + from message_ix.reporting import Reporter + from message_data.reporting import register + + def cb(rep: Reporter): + # Modify `rep` by calling its methods ... + pass + + register(cb) + """ + if callback in CALLBACKS: + log.info(f'Already registered: {callback}') + return + + CALLBACKS.append(callback) + + def prepare_reporter(scenario, config, key, output_path=None): """Prepare to report *key* from *scenario*. @@ -78,6 +105,9 @@ def prepare_reporter(scenario, config, key, output_path=None): # Append to queue to_add.append((('apply', func), dict(info=entry))) + # Also add the callbacks to the queue + to_add.extend((('apply', cb), {}) for cb in CALLBACKS) + # Use ixmp.Reporter.add_queue() to process the entries. Retry at most # once; raise an exception if adding fails after that. rep.add_queue(to_add, max_tries=2, fail='raise') From 6b7ab89453d37a9215bc8e16d90c9d3601b71c87 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 7 May 2020 22:40:24 +0200 Subject: [PATCH 046/220] Adjust tests to use session_context where possible --- message_ix_models/tests/test_report.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index ba8f879a25..699a0c0f1f 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -130,6 +130,8 @@ def test_apply_units(bare_res): def test_iamc_replace_vars(bare_res): """Test the 'iamc variable names' reporting configuration.""" + scen = bare_res.clone() + qty = 'inv_cost' config = { 'iamc': [IAMC_INV_COST], @@ -137,11 +139,11 @@ def test_iamc_replace_vars(bare_res): 'Investment Cost|coal_ppl': 'Investment Cost|Coal', } } - bare_res.check_out() - bare_res.add_par('inv_cost', DATA_INV_COST) - bare_res.commit('') - bare_res.solve() + scen.check_out() + scen.add_par('inv_cost', DATA_INV_COST) + scen.commit('') + scen.solve() - reporter, key = prepare_reporter(bare_res, config=config, key=qty) + reporter, key = prepare_reporter(scen, config=config, key=qty) df = reporter.get('Investment Cost:iamc').as_pandas() assert set(df['variable']) == {'Investment Cost|Coal'} From 257a009aaeeab10ecf2cc2b72e5a5dd856cc9624 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sun, 10 May 2020 20:02:31 +0200 Subject: [PATCH 047/220] Adjust model.bare.create_res and other code to use set_info() --- message_ix_models/tests/report/test_computations.py | 3 ++- message_ix_models/tests/test_report.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/message_ix_models/tests/report/test_computations.py b/message_ix_models/tests/report/test_computations.py index b10afd44a7..29ab0561da 100644 --- a/message_ix_models/tests/report/test_computations.py +++ b/message_ix_models/tests/report/test_computations.py @@ -1,4 +1,5 @@ from functools import partial +import logging from ixmp.reporting import as_quantity from ixmp.testing import assert_logs @@ -38,7 +39,7 @@ def test_update_scenario(bare_res, caplog): 'input')) # Trigger the computation that results in data being added - with assert_logs(caplog, "'demand' ← 10 rows"): + with assert_logs(caplog, "'demand' ← 10 rows", at_level=logging.DEBUG): # Returns nothing assert calc.get('test 1') is None diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 699a0c0f1f..73462d13c0 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -130,7 +130,7 @@ def test_apply_units(bare_res): def test_iamc_replace_vars(bare_res): """Test the 'iamc variable names' reporting configuration.""" - scen = bare_res.clone() + scen = bare_res qty = 'inv_cost' config = { From fc4a76b4692a7d2fe88c4a9afd74bbe14994e0fc Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 26 May 2020 19:00:53 +0200 Subject: [PATCH 048/220] Update docs for model.transport, model.disutility; expand docs ToC --- doc/api/report/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 78ad923df8..6acbbc4e2e 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -89,7 +89,7 @@ Continous reporting The IIASA TeamCity build server is configured to automatically run the full (:file:`global.yaml`) reporting on the following scenarios: -.. literalinclude:: ../../../ci/report.yaml +.. literalinclude:: ../../ci/report.yaml :language: yaml This takes place: From bfbc41f9939cf3a039febb96a0828fb000cfcdd5 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sat, 20 Jun 2020 18:12:34 +0200 Subject: [PATCH 049/220] Adjust imports from ixmp.reporting --- message_ix_models/tests/report/test_computations.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/tests/report/test_computations.py b/message_ix_models/tests/report/test_computations.py index 29ab0561da..393e556626 100644 --- a/message_ix_models/tests/report/test_computations.py +++ b/message_ix_models/tests/report/test_computations.py @@ -1,7 +1,7 @@ from functools import partial import logging -from ixmp.reporting import as_quantity +from ixmp.reporting import Quantity from ixmp.testing import assert_logs from message_ix.reporting import Reporter from message_data.reporting.computations import update_scenario @@ -50,7 +50,7 @@ def test_update_scenario(bare_res, caplog): demand['value'] = 2.0 demand = demand.iloc[:5] # Convert to a Quantity object - input = as_quantity( + input = Quantity( demand.set_index('node commodity level year time'.split())['value'], name='demand', units=units, From d425a9a58697589e627265c43783818096b2c659 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sat, 20 Jun 2020 21:36:01 +0200 Subject: [PATCH 050/220] Adjust reporting imports --- message_ix_models/report/computations.py | 8 +++++--- message_ix_models/report/core.py | 15 +++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 8c23efb986..915dec0aa2 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -5,10 +5,12 @@ from itertools import zip_longest import logging -from ixmp.reporting import Quantity +# TODO shouldn't be necessary to have so many imports; tidy up +from ixmp.reporting.computations import select # noqa: F401 from ixmp.reporting.utils import collect_units from message_ix.reporting.computations import * # noqa: F401,F403 from message_ix.reporting.computations import concat +import pandas as pd # Computations for specific models and projects from message_data.model.transport.report import ( # noqa: F401 @@ -19,7 +21,7 @@ log = logging.getLogger(__name__) -def combine(*quantities, select=None, weights=None): +def combine(*quantities, select=None, weights=None): # noqa: F811 """Sum distinct *quantities* by *weights*. Parameters @@ -115,7 +117,7 @@ def update_scenario(scenario, *quantities, params=[]): scenario.check_out() for order, (qty, par_name) in enumerate(zip_longest(quantities, params)): - if isinstance(qty, Quantity): + if not isinstance(qty, pd.DataFrame): # Convert a Quantity to a DataFrame par_name = qty.name new = qty.to_series() \ diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 7109b50320..57cdc85a43 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -3,13 +3,16 @@ import logging from pathlib import Path -from ixmp.reporting.quantity import Quantity from message_ix.reporting import Key, Reporter -from message_ix.reporting.computations import write_report -from message_ix.reporting.computations import concat from . import computations -from .computations import combine, group_sum +from .computations import ( + concat, + combine, + group_sum, + select, + write_report, +) from .util import collapse, infer_keys @@ -244,7 +247,7 @@ def add_combination(rep: Reporter, info): added = rep.add(key, c, strict=True, index=True, sums=True) log.info(f'Add {repr(key)} + {len(added)-1} partial sums') - log.debug(f' as combination of') + log.debug(' as combination of') log.debug(f' {repr(quantities)}') @@ -298,7 +301,7 @@ def add_iamc_table(rep: Reporter, info): pass else: key = keys[-1].add_tag('sel') - rep.add(key, (Quantity.sel, keys[-1], sel), strict=True) + rep.add(key, (select, keys[-1], sel), strict=True) keys.append(key) # Optionally aggregate data by groups From 6e8a774807bc9dff2b4ec35e7585126875e62c12 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sun, 21 Jun 2020 11:18:52 +0200 Subject: [PATCH 051/220] Separate CLIs into consistent .cli submodules - Reduces mixing of CLI and core code --- doc/api/report/index.rst | 6 +- message_ix_models/report/__init__.py | 149 +-------------------------- message_ix_models/report/cli.py | 143 +++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 148 deletions(-) create mode 100644 message_ix_models/report/cli.py diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 6acbbc4e2e..3831134fa1 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -130,6 +130,7 @@ Core Computations ------------ +.. currentmodule:: message_data.reporting.computations .. automodule:: message_data.reporting.computations :members: @@ -137,8 +138,11 @@ Computations Utilities --------- +.. currentmodule:: message_data.reporting.util .. automodule:: message_data.reporting.util :members: -.. automethod:: message_data.reporting.cli +.. currentmodule:: message_data.reporting.cli +.. automodule:: message_data.reporting.cli + :members: diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 63a966ceff..a43396e604 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,152 +1,7 @@ """Reporting for the MESSAGEix-GLOBIOM global model.""" -from copy import copy -import logging -from pathlib import Path -from time import process_time - -import click - from .core import prepare_reporter, register -import yaml - - __all__ = [ - 'prepare_reporter', - 'register', + "prepare_reporter", + "register", ] - - -log = logging.getLogger(__name__) - -CONFIG = Path(__file__).parent / 'data' / 'global.yaml' - - -_TIMES = [] - - -def mark(): - _TIMES.append(process_time()) - log.info(' {:.2f} seconds'.format(_TIMES[-1] - _TIMES[-2])) - - -@click.command(name='report') -@click.pass_obj -@click.option('--config', 'config_file', default='global', show_default=True, - help='Path or stem for reporting config file.') -@click.option('-o', '--output', 'output_path', type=Path, - help='Write output to file instead of console.') -@click.option('--from-file', type=click.Path(exists=True, dir_okay=False), - help='Report multiple Scenarios listed in FILE.') -@click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') -@click.option('--dry-run', '-n', is_flag=True, - help='Only show what would be done.') -@click.argument('key', default='message:default') -def cli(context, config_file, output_path, from_file, verbose, dry_run, key): - """Postprocess results. - - KEY defaults to the comprehensive report 'message:default', but may also - be the name of a specific model quantity, e.g. 'output'. - - --config can give either the absolute path to a reporting configuration - file, or the stem (i.e. name without .yaml extension) of a file in - data/report. - - With --from-file, read multiple Scenario identifiers from FILE, and report - each one. In this usage, --output-path may only be a directory. - """ - _TIMES.append(process_time()) - - # --config: use the option value as if it were an absolute path - config = Path(config_file) - if not config.exists(): - # Path doesn't exist; treat it as a stem in the metadata dir - config = context.get_config('report', config_file) - - if not config.exists(): - # Can't find the file - raise click.BadOptionUsage(f'--config={config_file} not found') - - if verbose: - log.setLevel('DEBUG') - logging.getLogger('ixmp').setLevel('DEBUG') - - # Prepare a list of Context objects, each referring to one Scenario - contexts = [] - - if from_file: - # Multiple URLs - if not output_path: - output_path = Path.cwd() - if not output_path.is_dir(): - msg = '--output-path must be directory with --from-file' - raise click.BadOptionUsage(msg) - - for item in yaml.safe_load(open(from_file)): - # Copy the existing Context to a new object - ctx = copy(context) - - # Update with Scenario info from file - ctx.handle_cli_args(**item) - - # Construct an output path from the parsed info/URL - ctx.output_path = Path( - output_path, - '_'.join([ctx.platform_info['name'], - ctx.scenario_info['model'], - ctx.scenario_info['scenario']]), - ).with_suffix('.xlsx') - - contexts.append(ctx) - else: - # Single Scenario; identifiers were supplied to the top-level CLI - context.output_path = output_path - contexts.append(context) - - for ctx in contexts: - # Load the Platform and Scenario - scenario = context.get_scenario() - mark() - - report(scenario, key, config, ctx.output_path, dry_run) - - -def report(scenario, key, config, output_path, dry_run): - rep, key = prepare_reporter(scenario, config, key, output_path) - mark() - - print('', 'Preparing to report:', rep.describe(key), '', sep='\n\n') - mark() - - if dry_run: - return - - result = rep.get(key) - print(f'Result written to {output_path}' if output_path else - f'Result: {result}', sep='\n') - mark() - - -def _report(scenario, path, legacy=None): - """Run complete reporting on *scenario* with output to *path*. - - If *legacy* is not None, it is used as keyword arguments to the old- - style reporting. - """ - if legacy is None: - rep = prepare_reporter(scenario, CONFIG, 'default', path) - rep.get('default') - else: - from message_data.tools.post_processing import iamc_report_hackathon - - legacy_args = dict(merge_hist=True) - legacy_args.update(**legacy) - - iamc_report_hackathon.report( - mp=scenario.platform, - scen=scenario, - model=scenario.model, - scenario=scenario.scenario, - out_dir=path, - **legacy_args, - ) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py new file mode 100644 index 0000000000..f6a453d823 --- /dev/null +++ b/message_ix_models/report/cli.py @@ -0,0 +1,143 @@ +import logging +from copy import copy +from pathlib import Path +from time import process_time + +import click +import yaml + +from . import prepare_reporter + + +log = logging.getLogger(__name__) + + +_TIMES = [] + + +def mark(): + _TIMES.append(process_time()) + log.info(' {:.2f} seconds'.format(_TIMES[-1] - _TIMES[-2])) + + +@click.command(name='report') +@click.pass_obj +@click.option('--config', 'config_file', default='global', show_default=True, + help='Path or stem for reporting config file.') +@click.option('-o', '--output', 'output_path', type=Path, + help='Write output to file instead of console.') +@click.option('--from-file', type=click.Path(exists=True, dir_okay=False), + help='Report multiple Scenarios listed in FILE.') +@click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') +@click.option('--dry-run', '-n', is_flag=True, + help='Only show what would be done.') +@click.argument('key', default='message:default') +def cli(context, config_file, output_path, from_file, verbose, dry_run, key): + """Postprocess results. + + KEY defaults to the comprehensive report 'message:default', but may also + be the name of a specific model quantity, e.g. 'output'. + + --config can give either the absolute path to a reporting configuration + file, or the stem (i.e. name without .yaml extension) of a file in + data/report. + + With --from-file, read multiple Scenario identifiers from FILE, and report + each one. In this usage, --output-path may only be a directory. + """ + _TIMES.append(process_time()) + + # --config: use the option value as if it were an absolute path + config = Path(config_file) + if not config.exists(): + # Path doesn't exist; treat it as a stem in the metadata dir + config = context.get_config_file('report', config_file) + + if not config.exists(): + # Can't find the file + raise click.BadOptionUsage(f'--config={config_file} not found') + + if verbose: + log.setLevel('DEBUG') + logging.getLogger('ixmp').setLevel('DEBUG') + + # Prepare a list of Context objects, each referring to one Scenario + contexts = [] + + if from_file: + # Multiple URLs + if not output_path: + output_path = Path.cwd() + if not output_path.is_dir(): + msg = '--output-path must be directory with --from-file' + raise click.BadOptionUsage(msg) + + for item in yaml.safe_load(open(from_file)): + # Copy the existing Context to a new object + ctx = copy(context) + + # Update with Scenario info from file + ctx.handle_cli_args(**item) + + # Construct an output path from the parsed info/URL + ctx.output_path = Path( + output_path, + '_'.join([ctx.platform_info['name'], + ctx.scenario_info['model'], + ctx.scenario_info['scenario']]), + ).with_suffix('.xlsx') + + contexts.append(ctx) + else: + # Single Scenario; identifiers were supplied to the top-level CLI + context.output_path = output_path + contexts.append(context) + + for ctx in contexts: + # Load the Platform and Scenario + scenario = context.get_scenario() + mark() + + report(scenario, key, config, ctx.output_path, dry_run) + + +def report(scenario, key, config, output_path, dry_run): + rep, key = prepare_reporter(scenario, config, key, output_path) + mark() + + print('', 'Preparing to report:', rep.describe(key), '', sep='\n\n') + mark() + + if dry_run: + return + + result = rep.get(key) + print(f'Result written to {output_path}' if output_path else + f'Result: {result}', sep='\n') + mark() + + +def _report(scenario, path, legacy=None): + """Run complete reporting on *scenario* with output to *path*. + + If *legacy* is not None, it is used as keyword arguments to the old- + style reporting. + """ + if legacy is None: + config = Path(__file__).parents[2] / 'data' / 'report' / 'global.yaml' + rep = prepare_reporter(scenario, config, 'default', path) + rep.get('default') + else: + from message_data.tools.post_processing import iamc_report_hackathon + + legacy_args = dict(merge_hist=True) + legacy_args.update(**legacy) + + iamc_report_hackathon.report( + mp=scenario.platform, + scen=scenario, + model=scenario.model, + scenario=scenario.scenario, + out_dir=path, + **legacy_args, + ) From f8ff4e7fe9776d7d50ef778eb0a4666b1047d96e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sun, 21 Jun 2020 16:05:49 +0200 Subject: [PATCH 052/220] Add --modules/-m for 'mix-data report' --- message_ix_models/report/cli.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index f6a453d823..2d91016750 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -1,4 +1,5 @@ import logging +import sys from copy import copy from pathlib import Path from time import process_time @@ -6,7 +7,7 @@ import click import yaml -from . import prepare_reporter +from . import prepare_reporter, register log = logging.getLogger(__name__) @@ -24,6 +25,8 @@ def mark(): @click.pass_obj @click.option('--config', 'config_file', default='global', show_default=True, help='Path or stem for reporting config file.') +@click.option("--module", "-m", metavar="MODULES", + help="Add reporting for MODULES") @click.option('-o', '--output', 'output_path', type=Path, help='Write output to file instead of console.') @click.option('--from-file', type=click.Path(exists=True, dir_okay=False), @@ -32,7 +35,16 @@ def mark(): @click.option('--dry-run', '-n', is_flag=True, help='Only show what would be done.') @click.argument('key', default='message:default') -def cli(context, config_file, output_path, from_file, verbose, dry_run, key): +def cli( + context, + config_file, + module, + output_path, + from_file, + verbose, + dry_run, + key +): """Postprocess results. KEY defaults to the comprehensive report 'message:default', but may also @@ -61,6 +73,13 @@ def cli(context, config_file, output_path, from_file, verbose, dry_run, key): log.setLevel('DEBUG') logging.getLogger('ixmp').setLevel('DEBUG') + # Load modules + module = module or "" + for name in module.split(","): + name = f"message_data.{name}.report" + __import__(name) + register(sys.modules[name].callback) + # Prepare a list of Context objects, each referring to one Scenario contexts = [] From 476e3771b0e500ef6ca66e965699254ae7c86b83 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sun, 21 Jun 2020 16:07:17 +0200 Subject: [PATCH 053/220] Add transport plots --- message_ix_models/report/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 2d91016750..a0459fb339 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -26,7 +26,7 @@ def mark(): @click.option('--config', 'config_file', default='global', show_default=True, help='Path or stem for reporting config file.') @click.option("--module", "-m", metavar="MODULES", - help="Add reporting for MODULES") + help="Add extra reporting for MODULES.") @click.option('-o', '--output', 'output_path', type=Path, help='Write output to file instead of console.') @click.option('--from-file', type=click.Path(exists=True, dir_okay=False), From 6c68fb0f754d05a4d0bc27179efe3cc0075a7984 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 25 Jun 2020 22:02:00 +0200 Subject: [PATCH 054/220] Filter 0-length items from "mix-data report --module ..." --- message_ix_models/report/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index a0459fb339..ae6907b5ac 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -75,7 +75,7 @@ def cli( # Load modules module = module or "" - for name in module.split(","): + for name in filter(lambda n: len(n), module.split(",")): name = f"message_data.{name}.report" __import__(name) register(sys.modules[name].callback) From e63e7cbd3ed075bd5fc1acfebf2106ac155ae434 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 25 Jun 2020 22:04:11 +0200 Subject: [PATCH 055/220] Add reporting.CONFIG for use in code that does not load global.yaml --- message_ix_models/report/__init__.py | 3 ++- message_ix_models/report/core.py | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index a43396e604..9e6a0638b9 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,7 +1,8 @@ """Reporting for the MESSAGEix-GLOBIOM global model.""" -from .core import prepare_reporter, register +from .core import CONFIG, prepare_reporter, register __all__ = [ + "CONFIG", "prepare_reporter", "register", ] diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 57cdc85a43..cf6fb64dfc 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -22,6 +22,10 @@ CALLBACKS = [] +# Equivalent of some content in global.yaml +CONFIG = dict(units=dict(replace={"-": ""})) + + def register(callback) -> None: """Register a callback function for :meth:`prepare_reporter`. From 2246ff5c41e89278a9e006e2e7c5294f2692c857 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 15 Jul 2020 17:55:23 +0200 Subject: [PATCH 056/220] Make report() a top-level method of the .reporting module --- doc/api/report/index.rst | 6 +- message_ix_models/report/__init__.py | 87 ++++++++++++++++++++++++++++ message_ix_models/report/cli.py | 58 ++----------------- 3 files changed, 94 insertions(+), 57 deletions(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 3831134fa1..f4b6d21d5a 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -105,6 +105,9 @@ API reference .. currentmodule:: message_data.reporting +.. automodule:: message_data.reporting + :members: + Core ---- @@ -113,15 +116,12 @@ Core .. autosummary:: - prepare_reporter add_aggregate add_combination add_general add_iamc_table add_report -.. autofunction:: message_data.reporting.core.prepare_reporter - .. automodule:: message_data.reporting.core :members: :exclude-members: prepare_reporter diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 9e6a0638b9..f4ba8b359f 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,8 +1,95 @@ """Reporting for the MESSAGEix-GLOBIOM global model.""" +from pathlib import Path +import logging + from .core import CONFIG, prepare_reporter, register __all__ = [ "CONFIG", "prepare_reporter", "register", + "report", ] + + +log = logging.getLogger(__name__) + + +def report( + scenario, + key=None, + config=None, + output_path=None, + dry_run=False, + **kwargs +): + """Run complete reporting on *scenario* with output to *output_path*. + + This function provides a common interface to call both the 'new' + (:mod:`.reporting`) and 'legacy' (:mod:`.tools.post_processing`) reporting + codes. + + Parameters + ---------- + scenario : Scenario + Solved Scenario to be reported. + key : str or Key + Key of the report or quantity to be computed. Default: ``'default'``. + config : Path-like, optional + Path to reporting configuration file. Default: :file:`global.yaml`. + output_path : Path-like + Path to reporting + dry_run : bool, optional + Only show what would be done. + + Other parameters + ---------------- + path : Path-like + Deprecated alias for `output_path`. + legacy : dict + If given, the old-style reporting in + :mod:`.tools.post_processing.iamc_report_hackathon` is used, and + `legacy` is used as keyword arguments. + """ + + if "path" in kwargs: + log.warning("Deprecated: path= kwarg to report(); use output_path=") + if output_path: + raise RuntimeError( + f"Ambiguous: output_path={output_path}, path={kwargs['path']}" + ) + output_path = kwargs.pop("path") + + if "legacy" in kwargs: + log.info("Using legacy tools.post_processing.iamc_report_hackathon") + from message_data.tools.post_processing import iamc_report_hackathon + + legacy_args = dict(merge_hist=True) + legacy_args.update(**kwargs["legacy"]) + + return iamc_report_hackathon.report( + mp=scenario.platform, + scen=scenario, + model=scenario.model, + scenario=scenario.scenario, + out_dir=output_path, + **legacy_args, + ) + + # Default arguments + key = key or "default" + config = config or ( + Path(__file__).parents[2] / "data" / "report" / "global.yaml" + ) + + rep, key = prepare_reporter(scenario, config, key, output_path) + + log.info(f"Prepare to report:\n\n{rep.describe(key)}") + + if dry_run: + return + + result = rep.get(key) + + msg = f" written to {output_path}" if output_path else f":\n{result}" + log.info(f"Result{msg}") diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index ae6907b5ac..f64b962d17 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -2,25 +2,17 @@ import sys from copy import copy from pathlib import Path -from time import process_time import click import yaml -from . import prepare_reporter, register +from message_data.reporting import register, report +from message_data.tools.cli import mark_time log = logging.getLogger(__name__) -_TIMES = [] - - -def mark(): - _TIMES.append(process_time()) - log.info(' {:.2f} seconds'.format(_TIMES[-1] - _TIMES[-2])) - - @click.command(name='report') @click.pass_obj @click.option('--config', 'config_file', default='global', show_default=True, @@ -57,7 +49,7 @@ def cli( With --from-file, read multiple Scenario identifiers from FILE, and report each one. In this usage, --output-path may only be a directory. """ - _TIMES.append(process_time()) + mark_time(quiet=True) # --config: use the option value as if it were an absolute path config = Path(config_file) @@ -115,48 +107,6 @@ def cli( for ctx in contexts: # Load the Platform and Scenario scenario = context.get_scenario() - mark() + mark_time() report(scenario, key, config, ctx.output_path, dry_run) - - -def report(scenario, key, config, output_path, dry_run): - rep, key = prepare_reporter(scenario, config, key, output_path) - mark() - - print('', 'Preparing to report:', rep.describe(key), '', sep='\n\n') - mark() - - if dry_run: - return - - result = rep.get(key) - print(f'Result written to {output_path}' if output_path else - f'Result: {result}', sep='\n') - mark() - - -def _report(scenario, path, legacy=None): - """Run complete reporting on *scenario* with output to *path*. - - If *legacy* is not None, it is used as keyword arguments to the old- - style reporting. - """ - if legacy is None: - config = Path(__file__).parents[2] / 'data' / 'report' / 'global.yaml' - rep = prepare_reporter(scenario, config, 'default', path) - rep.get('default') - else: - from message_data.tools.post_processing import iamc_report_hackathon - - legacy_args = dict(merge_hist=True) - legacy_args.update(**legacy) - - iamc_report_hackathon.report( - mp=scenario.platform, - scen=scenario, - model=scenario.model, - scenario=scenario.scenario, - out_dir=path, - **legacy_args, - ) From be4498dcadd877fd21359c84f1907f17733aa3a3 Mon Sep 17 00:00:00 2001 From: GamzeUnlu95 Date: Fri, 31 Jul 2020 16:33:57 +0200 Subject: [PATCH 057/220] Report PRICE_COMMODITY and derived quantities (#87) * Update global.yaml file to include Price variables * Add primary energy-coal outputs with and without carbon price * Add price, oil and gas * Add price secondary energy outputs * Price final energy outputs * Revise to make code shorter * Add units * Add carbon price * Add land use price variables * Add price_agriculture * Use unit conversion YAML syntax for reporting of PRICE_COMMODITY * Clean rebase of GamzeUnlu95:reporting_price on iiasa:hackathon-reporting * Re-enable full-resolution reporting of PRICE_COMMODITY * Sketch combination of commodity price minus emission price * Fix astype(str) * Arrangement of variable names - Remove unneccesary parts - Change naming convention for variables with/without carbon price - Add variable names for global regions to reporting.util * Add carbon price units * Add tax_emission to carbon price calculation * Reorder, sort, and comment price reporting config in global.yaml Co-authored-by: Paul Natsuo Kishimoto --- message_ix_models/data/report/global.yaml | 206 +++++++++++++++++++++- message_ix_models/report/computations.py | 1 + message_ix_models/report/util.py | 9 + 3 files changed, 211 insertions(+), 5 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 46a0f4f3cb..4d3973b44d 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -25,7 +25,10 @@ units: '-': '' apply: GDP: billion USD_2005 / year - + PRICE_COMMODITY: USD_2010 / kWa + # FIXME 'carbon' is not a unit; these should be t, kt, Mt or similar + PRICE_EMISSION: USD_2005 / carbon + tax_emission: USD_2005 / carbon # Filters @@ -169,7 +172,6 @@ aggregate: methanol: [meth_exp] oil: [oil_exp, loil_exp, foil_exp] - # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination combine: @@ -245,6 +247,107 @@ combine: select: {t: wind curtailment} weight: -1 +# Prices + +- key: price_carbon:n-y + # TODO PRICE_EMISSION has dimension "y", tax_emission has dimension + # "type_year". Implement a dimension rename so that the two can be + # combined in this way. + inputs: + - quantity: PRICE_EMISSION + select: {type_emission: [TCE], type_tec: [all]} + # - quantity: tax_emission + # select: {type_emission: [TCE], type_tec: [all]} + +# Commodity price minus emission price +# NB This is only for illustration. +# TODO use emission factor must be used to convert the following to compatible +# units: +# - PRICE_COMMODITY with (c, l) dimensions and units [currency] / [energy] +# - 'price emission' with (e, t) dimensions and units [currency] / [mass] +- key: price ex carbon:n-t-y-c-l-e + inputs: + - quantity: PRICE_COMMODITY:n-c-l-y + - quantity: price emission:n-e-t-y + weight: -1 + +# TODO remove these entries once the one-step conversion is checked. +# - The following entries subset the components of PRICE_COMMODITY used in the +# legacy reporting. The preferred method is to convert the entire variable to +# IAMC format in one step; see below in the "iamc:" section. +# - l: [import] is sometimes included to pick up prices at the global node(s). +# - In general, PRICE_COMMODITY has data for n=GLB and level=import OR for +# other nodes and l=primary or secondary—but not otherwise. +- key: price_c:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [coal], l: [primary, import]} +- key: price_g_w:n-y-h + # Only includes 11 regions; no data for c="gas" for global regions, instead + # c="LNG" is used. The name "LNG" is replaced later. + inputs: + - quantity: PRICE_COMMODITY + select: {c: [gas], l: [primary]} +- key: price_o_w:n-y-h + # l="import" is used for the global region. + inputs: + - quantity: PRICE_COMMODITY + select: {c: [crudeoil], l: [primary, import]} +- key: price_b_w:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [biomass], l: [primary]} +- key: price_e_w:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [electr], l: [secondary]} +- key: price_h_w:n-y-h + # For the global region: l="import", c="l2h". + inputs: + - quantity: PRICE_COMMODITY + select: {c: [hydrogen], l: [secondary]} +- key: price_liq_o_w:n-y-h + # l="import" is used for the global region. + inputs: + - quantity: PRICE_COMMODITY + select: {c: [lightoil], l: [secondary, import]} +- key: price_liq_b_w:n-y-h + # l="import" is used for the global region. + inputs: + - quantity: PRICE_COMMODITY + select: {c: [ethanol], l: [secondary, import]} +- key: price_final_e:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [electr], l: [final]} +- key: price_final_sol_c:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [coal], l: [final]} +- key: price_final_sol_b:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [biomass], l: [final]} +- key: price_final_liq_o:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [lightoil], l: [final]} +- key: price_final_liq_b:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [ethanol], l: [final]} +- key: price_final_gas:n-y-h + inputs: + - quantity: PRICE_COMMODITY + select: {c: [gas], l: [final]} +# TODO complete or replace this +# - key: land_out:n-s-y-h +# inputs: +# - quantity: land_output +# select: +# l: [land_use_reporting] +# c: ["Price|Agriculture|Non-Energy Crops and Livestock|Index"] + general: - key: gdp_ppp @@ -281,15 +384,17 @@ pe_iamc: &pe_iamc - 'no' # Bare no is a special YAML value for False, so must quote here. - t +price_iamc: &price_iamc + unit: USD_2010 / GJ + year_time_dim: y + iamc variable names: Input|variable|name: Final|variable|name + # This section is used by reporting.core.add_iamc_table() iamc: -#- variable: Primary Energy|Biomass -# base: land_out: -# select: {l: [land_use], c: [bioenergy]} - variable: GDP|MER base: GDP:n-y @@ -345,6 +450,71 @@ iamc: base: wind:nl-ya <<: *pe_iamc +# Prices +# Preferred method: convert all the contents of the variable at once. +- variable: Price + base: PRICE_COMMODITY:n-c-l-y + var: [l, c] + <<: *price_iamc +- variable: Price|Carbon + base: price_carbon:n-y + # FIXME "carbon_dioxide" is not a unit; this should be t, kt, Mt or similar + unit: USD_2010 / carbon_dioxide + year_time_dim: y +# commented: see above +# - variable: Price w/o carbon +# base: price ex carbon:n-t-y-c-e +# var: [t, c, l, e] +# year_time_dim: y + +# TODO ensure these are covered by the preferred method, above, and then +# remove these separate conversions. +- variable: Price (legacy)|Primary Energy wo carbon price|Biomass + base: price_b_w:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Primary Energy wo carbon price|Coal + base: price_c:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Primary Energy wo carbon price|Gas + base: price_g_w:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Primary Energy wo carbon price|Oil + base: price_o_w:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Secondary Energy wo carbon price|Electricity + base: price_e_w:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Secondary Energy wo carbon price|Hydrogen + base: price_h_w:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Secondary Energy wo carbon price|Liquids|Biomass + base: price_liq_b_w:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Secondary Energy wo carbon price|Liquids|Oil + base: price_liq_o_w:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Final Energy wo carbon price|Residential|Electricity + base: price_final_e:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Final Energy wo carbon price|Residential|Gases|Natural Gas + base: price_final_gas:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Biomass + base: price_final_liq_b:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Oil + base: price_final_liq_o:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Final Energy wo carbon price|Residential|Solids|Biomass + base: price_final_sol_b:n-y-h + <<: *price_iamc +- variable: Price (legacy)|Final Energy wo carbon price|Residential|Solids|Coal + base: price_final_sol_c:n-y-h + <<: *price_iamc +#- variable: Price (legacy)|Agriculture|Non-Energy Crops and Livestock|Index +# base: price_agriculture:n-y-h +# year_time_dim: y + # This section is used by reporting.core.add_report() report: @@ -362,3 +532,29 @@ report: members: - GDP|MER:iamc - GDP|PPP:iamc + +- key: price test + members: + - Price:iamc + - Price|Carbon:iamc + # commented: see above + # - Price w/o carbon:iamc + + # TODO ensure these are covered by the preferred method, above, then remove + # these + - Price (legacy)|Primary Energy wo carbon price|Biomass:iamc + - Price (legacy)|Primary Energy wo carbon price|Coal:iamc + - Price (legacy)|Primary Energy wo carbon price|Gas:iamc + - Price (legacy)|Primary Energy wo carbon price|Oil:iamc + - Price (legacy)|Secondary Energy wo carbon price|Electricity:iamc + - Price (legacy)|Secondary Energy wo carbon price|Hydrogen:iamc + - Price (legacy)|Secondary Energy wo carbon price|Liquids|Biomass:iamc + - Price (legacy)|Secondary Energy wo carbon price|Liquids|Oil:iamc + # NB for "Price|Secondary Energy|Liquids|Oil", the legacy reporting inserts a + # zero matrix. + - Price (legacy)|Final Energy wo carbon price|Residential|Electricity:iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Gases|Natural Gas:iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Biomass:iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Oil:iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Solids|Biomass:iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Solids|Coal:iamc diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 915dec0aa2..223fffe6a4 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -73,6 +73,7 @@ def combine(*quantities, select=None, weights=None): # noqa: F811 # .transpose() is necessary when Quantity is AttrSeries if len(quantity.dims) > 1: transpose_dims = tuple(filter(lambda d: d in temp.dims, ref_dims)) + print(transpose_dims) temp = temp.transpose(*transpose_dims) result += weight * temp diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 1ab90bebce..bfd2aac067 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -19,6 +19,13 @@ 'variable': { r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', r'Residential\|Gas': 'Residential|Gases|Natural Gas', + r"Import Energy\|Lng": "Primary Energy|Gas", + r"Import Energy\|Coal": "Primary Energy|Coal", + r"Import Energy\|Oil": "Primary Energy|Oil", + r"Import Energy\|(Liquids|Oil)": r"Secondary Energy|\1", + r"Import Energy\|(Liquids|Biomass)": r"Secondary Energy|\1", + r"Import Energy\|Lh2": "Secondary Energy|Hydrogen", + } } @@ -52,11 +59,13 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): if replace_common: try: # Level: to title case, add the word 'energy' + # FIXME astype() here should not be necessary; debug df['l'] = df['l'].astype(str).str.title() + ' Energy' except KeyError: pass try: # Commodity: to title case + # FIXME astype() here should not be necessary; debug df['c'] = df['c'].astype(str).str.title() except KeyError: pass From b2b7712e8659447a18195b5d88c78860ce7e7de7 Mon Sep 17 00:00:00 2001 From: Jihoon Date: Wed, 12 Feb 2020 17:23:49 +0100 Subject: [PATCH 058/220] CH4 initial reporting - Many quantities already validated. --- message_ix_models/data/report/global.yaml | 333 +++++++++++++++++++--- 1 file changed, 296 insertions(+), 37 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 4d3973b44d..1b1e1d8957 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -44,6 +44,7 @@ units: # Aggregate across dimensions of single quantities # - Corresponds to ixmp.Reporter.aggregate via reporting.core.add_aggregate aggregate: +# Doesn't remove any dimensions. Basically regrouping over one dimension # Quantities to aggregate - _quantities: [in, out] # Added to the end of the each key (e.g. '[key]:pe' or '[key]:[tag]+pe') @@ -106,25 +107,97 @@ aggregate: oil heat: [foil_hpl] # Wind - wind curtailment: [wind_curtailment1, wind_curtailment2, wind_curtailment3] - wind gen onshore: [wind_res1, wind_res2, wind_res3, wind_res4] - wind gen offshore: [wind_ref1, wind_ref2, wind_ref3, wind_ref4, wind_ref5] - - # Solar - solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, - solar_res5, solar_res6, solar_res7, solar_res8] - solar pv gen elec RC: [solar_pv_RC] - solar pv gen elec I: [solar_pv_I] - solar pv curtailment: [solar_curtailment1, solar_curtailment2, - solar_curtailment3] - solar csp gen elec sm1: [csp_sm1_res, csp_sm1_res1, csp_sm1_res2, - csp_sm1_res3, csp_sm1_res4, csp_sm1_res5, - csp_sm1_res6, csp_sm1_res7] - solar csp gen elec sm3: [csp_sm3_res, csp_sm3_res1, csp_sm3_res2, - csp_sm3_res3, csp_sm3_res4, csp_sm3_res5, - csp_sm3_res6, csp_sm3_res7] - solar csp gen heat rc: [solar_rc] - solar csp gen heat i: [solar_i] + # wind curtailment: [wind_curtailment1, wind_curtailment2, wind_curtailment3] + # wind gen onshore: [wind_res1, wind_res2, wind_res3, wind_res4] + # wind gen offshore: [wind_ref1, wind_ref2, wind_ref3, wind_ref4, wind_ref5] + + # # SolarSolar + # solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, + # solar_res5, solar_res6, solar_res7, solar_res8] + # solar pv gen elec RC: [solar_pv_RC] + # solar pv gen elec I: [solar_pv_I] + # solar pv curtailment: [solar_curtailment1, solar_curtailment2, + # solar_curtailment3] + # solar csp gen elec sm1: [csp_sm1_res, csp_sm1_res1, csp_sm1_res2, + # csp_sm1_res3, csp_sm1_res4, csp_sm1_res5, + # csp_sm1_res6, csp_sm1_res7] + # solar csp gen elec sm3: [csp_sm3_res, csp_sm3_res1, csp_sm3_res2, + # csp_sm3_res3, csp_sm3_res4, csp_sm3_res5, + # csp_sm3_res6, csp_sm3_res7] + # solar csp gen heat rc: [solar_rc] + # solar csp gen heat i: [solar_i] + + # Emission CH4 + # Is there any way to group over multiple dimensions? +- _quantities: [emi] + _tag: t_CH4 + _dim: t + + waste: [CH4_WasteBurnEM, CH4_DomWasteWa, CH4_IndWasteWa, CH4n_landfills, + landfill_digester1, landfill_compost1, landfill_mechbio, landfill_heatprdn, + landfill_direct1, landfill_ele, landfill_flaring] + industry: [CH4_IndNonEnergyEM] + agri waste: [CH4_AgWasteEM] + heat: [bio_hpl, coal_hpl, foil_hpl, gas_hpl] + elec: [bio_istig, bio_ppl, coal_adv, coal_ppl_u, igcc, coal_ppl, foil_ppl, + gas_cc, gas_ppl, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl, + coal_adv_ccs, igcc_ccs, gas_cc_ccs, gas_ct, gas_htfc, bio_istig_ccs] + + # Fugitive - gas + gases_extr: [gas_extr_1, gas_extr_2, gas_extr_3, gas_extr_4, gas_extr_5, + gas_extr_6, gas_extr_7, gas_extr_8] + gases_extr_fug: [flaring_CO2] + gases_transportation: [gas_t_d_ch4, gas_t_d] + gases_coal: [coal_gas] + gases_hydrogen: [h2_smr, h2_smr_ccs, h2_coal, h2_coal_ccs, h2_bio, h2_bio_ccs] + + # Fugitive - liquid + liquids_extraction: [oil_extr_1_ch4, oil_extr_1, oil_extr_2_ch4, oil_extr_2, + oil_extr_3_ch4, oil_extr_3, oil_extr_4_ch4, oil_extr_4, oil_extr_5, + oil_extr_6, oil_extr_7, oil_extr_8] + liquids_transportation: [loil_t_d, foil_t_d, meth_t_d, eth_t_d] + liquids_oil: [ref_lol, ref_hil, SO2_scrub_ref] + liquids_gas: [meth_ng, meth_ng_ccs] + liquids_coal: [meth_coal, meth_coal_ccs, syn_liq, syn_liq_ccs] + liquids_biomass: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] + + # Fugitive - solid + solid_extraction: [coal_extr_ch4, coal_extr, lignite_extr] + solid_transportation: [coal_t_d, biomass_t_d] + + # Demand + rescomm: [sp_el_RC, solar_pv_RC, h2_fc_RC, coal_rc, foil_rc, loil_rc, gas_rc, + elec_rc, biomass_rc, heat_rc, meth_rc, eth_rc, h2_rc, hp_el_rc, hp_gas_rc, + solar_rc, biomass_nc, other_sc] + transport: [coal_trp, foil_trp, loil_trp, gas_trp, elec_trp, meth_ic_trp, eth_ic_trp, meth_fc_trp, eth_fc_trp, h2_fc_trp] + +- _quantities: [emi::t_CH4] + _tag: t_e_CH4 + _dim: e + + CH4: [CH4_Emission, CH4_nonenergy, CH4_new_Emission, CH4_Emission_bunkers] + +# Agricultural CH4 emissions +- _quantities: [land_out] + _tag: c_CH4 + _dim: c + + agri: [Agri_CH4] + enteric: [Emissions|CH4|Land Use|Agriculture|Enteric Fermentation] + manure: [Emissions|CH4|Land Use|Agriculture|AWM] + rice: [Emissions|CH4|Land Use|Agriculture|Rice] + + # sf6: [elec_t_d, eth_fc_trp, eth_ic_trp, foil_trp, h2_fc_trp, + # leak_repairsf6, loil_trp, meth_fc_trp, meth_ic_trp, + # recycling_gas1, replacement_so2] + # hfc: [ammonia_secloop, biomass_rc, coal_rc, elec_trp, eth_fc_trp. + # eth_ic_trp, eth_rc, foil_rc , foil_trp, gas_rc, gas_trp, + # h2_fc_RC, h2_fc_trp, h2_rc, heat_rc, hp_el_rc, hp_gas_rc, + # leak_repair, loil_rc, loil_trp, meth_fc_trp, meth_ic_trp, + # refrigerant_recovery,repl_hc, solar_rc, sp_el_RC] + # cf4: [CF4_Semico, eth_fc_trp. eth_ic_trp, foil_trp, + # h2_fc_trp, loil_trp, meth_fc_trp, meth_ic_trp, + # vertical_stud] - _quantities: [in, out] _tag: t_d @@ -175,6 +248,25 @@ aggregate: # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination combine: + +- key: CH4:nl-t-ya + inputs: + - quantity: emi::t_CH4 + select: {e: [CH4_Emission, CH4_nonenergy, CH4_new_Emission, + CH4_Emission_bunkers]} + weight: 1 + +- key: agri_CH4:n-y-c + inputs: + - quantity: land_out::c_CH4 + select: {l:[land_use_reporting]} + weight: 0.025 #Seems that this is used?? + +# - key: CH4tot:nl-ya-t-m +# inputs: +# - quantity: emi +# weight: 1 + # Name and dimensions of quantity to be created - key: coal:nl-ya # Inputs to sum @@ -195,6 +287,8 @@ combine: # - quantity: in::bunker # select: {t: coal} + # weight: 1 + - key: gas:nl-ya inputs: - quantity: in::pe @@ -219,17 +313,17 @@ combine: select: {t: oil} weight: 1 -- key: solar:nl-ya - inputs: - - quantity: out::se - select: {t: ['solar pv gen elec', 'solar pv gen elec RC', - 'solar pv gen elec I', 'solar csp gen elec sm1', - 'solar csp gen elec sm3', 'solar csp gen heat rc', - 'solar csp gen heat i']} - #, c: [electr]} - - quantity: in::se - select: {t: solar pv curtailment} #, c: [electr]} - weight: -1 +# - key: solar:nl-ya + # inputs: + # - quantity: out::se + # select: {t: ['solar pv gen elec', 'solar pv gen elec RC', + # 'solar pv gen elec I', 'solar csp gen elec sm1', + # 'solar csp gen elec sm3', 'solar csp gen heat rc', + # 'solar csp gen heat i']} + # #, c: [electr]} + # - quantity: in::se + # select: {t: solar pv curtailment} #, c: [electr]} + # weight: -1 - key: se_trade:nl-ya inputs: @@ -239,13 +333,13 @@ combine: select: {t: [elec, ethanol, lh2, methanol]} weight: -1 -- key: wind:nl-ya - inputs: - - quantity: out::se - select: {t: ['wind gen onshore', 'wind gen offshore']} - - quantity: in::se - select: {t: wind curtailment} - weight: -1 +# - key: wind:nl-ya + # inputs: + # - quantity: out::se + # select: {t: ['wind gen onshore', 'wind gen offshore']} + # - quantity: in::se + # select: {t: wind curtailment} + # weight: -1 # Prices @@ -393,6 +487,19 @@ iamc variable names: Input|variable|name: Final|variable|name +emis_iamc: &emis_iamc + format: + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - m + - t + +landemis_iamc: &landemis_iamc + format: + year_time_dim: y + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - c + + # This section is used by reporting.core.add_iamc_table() iamc: @@ -450,6 +557,127 @@ iamc: base: wind:nl-ya <<: *pe_iamc +# Emissions + +# I don't have to worry about specifc namings +# Do automatic names and later we rename correctly commonly. +# - variable: Emissions|CH4|Fossil Fuels and Industry +# base: CH4tot:nl-t-ya +# select: {e: [CH4_Emission, CH4_nonenergy]} +# format: +# var: +# - t + +- variable: Emissions|CH4|Industrial Processes # Verified + base: CH4:nl-t-ya + select: {t: [industry]} + <<: *emis_iamc + +- variable: Emissions|CH4|Waste # Verified + base: CH4:nl-t-ya + select: {t: [waste]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Demand|Residential and Commercial + base: CH4:nl-t-ya + select: {t: [rescomm]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping + base: CH4:nl-t-ya + select: {t: [transport]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Heat + base: CH4:nl-t-ya + select: {t: [heat]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Electricity + base: CH4:nl-t-ya + select: {t: [elec]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive + base: CH4:nl-t-ya + select: {t: [gases_extr, gases_extr_fug]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive + base: CH4:nl-t-ya + select: {t: [gases_transportation]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive + base: CH4:nl-t-ya + select: {t: [gases_coal]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive + base: CH4:nl-t-ya + select: {t: [gases_hydrogen]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive + base: CH4:nl-t-ya + select: {t: [liquids_extraction]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive + base: CH4:nl-t-ya + select: {t: [liquids_transportation]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Liquids|Oil|Fugitive + base: CH4:nl-t-ya + select: {t: [liquids_oil]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Fugitive + base: CH4:nl-t-ya + select: {t: [liquids_gas]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive + base: CH4:nl-t-ya + select: {t: [liquids_coal]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive + base: CH4:nl-t-ya + select: {t: [liquids_biomass]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive + base: CH4:nl-t-ya + select: {t: [solid_extraction]} + <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive + base: CH4:nl-t-ya + select: {t: [solid_transportation]} + <<: *emis_iamc + +- variable: Emissions|CH4|AFOLU|Biomass Burning # Verified + base: CH4:nl-t-ya + select: {t: [agri waste]} + <<: *emis_iamc + +- variable: GLOBIOM|Emissions|CH4 Emissions Total # Verified + base: agri_CH4:n-y-c + select: {c: [agri]} + <<: *landemis_iamc + +- variable: Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation + base: agri_CH4:n-y-c + select: {c: [enteric]} + <<: *landemis_iamc + +- variable: Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management + base: agri_CH4:n-y-c + select: {c: [manure]} + <<: *landemis_iamc + # Prices # Preferred method: convert all the contents of the variable at once. - variable: Price @@ -517,6 +745,7 @@ iamc: # This section is used by reporting.core.add_report() + report: - key: pe test members: @@ -533,6 +762,36 @@ report: - GDP|MER:iamc - GDP|PPP:iamc +- key: CH4_emissions + members: + # - Emissions|CH4|Fossil Fuels and Industry:iamc + - Emissions|CH4|Energy|Demand|Residential and Commercial:iamc + - Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping:iamc + - Emissions|CH4|Energy|Supply|Heat:iamc + - Emissions|CH4|Energy|Supply|Electricity:iamc + - Emissions|CH4|Industrial Processes:iamc + - Emissions|CH4|Waste:iamc + - Emissions|CH4|AFOLU|Biomass Burning:iamc + - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc + - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc + # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Liquids|Oil|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive:iamc + - GLOBIOM|Emissions|CH4 Emissions Total:iamc + - key: price test members: - Price:iamc From b4a465cdfb48c769c8be7bb9ea08171c6605ee0d Mon Sep 17 00:00:00 2001 From: Jihoon Date: Mon, 30 Mar 2020 18:05:13 +0200 Subject: [PATCH 059/220] Resolve conflict for rebase --- message_ix_models/data/report/global.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 1b1e1d8957..744b37bbcc 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -487,6 +487,12 @@ iamc variable names: Input|variable|name: Final|variable|name +emis_iamc: &emis_iamc + format: + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - m + - t + emis_iamc: &emis_iamc format: drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' From a710090aff992d9b5ba96cd078500b5021d97a98 Mon Sep 17 00:00:00 2001 From: Jihoon Date: Mon, 30 Mar 2020 17:17:45 +0200 Subject: [PATCH 060/220] Add minor comments and bring back examples --- message_ix_models/data/report/global.yaml | 110 +++++++++------------- 1 file changed, 44 insertions(+), 66 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 744b37bbcc..3405e69c46 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -107,25 +107,25 @@ aggregate: oil heat: [foil_hpl] # Wind - # wind curtailment: [wind_curtailment1, wind_curtailment2, wind_curtailment3] - # wind gen onshore: [wind_res1, wind_res2, wind_res3, wind_res4] - # wind gen offshore: [wind_ref1, wind_ref2, wind_ref3, wind_ref4, wind_ref5] - - # # SolarSolar - # solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, - # solar_res5, solar_res6, solar_res7, solar_res8] - # solar pv gen elec RC: [solar_pv_RC] - # solar pv gen elec I: [solar_pv_I] - # solar pv curtailment: [solar_curtailment1, solar_curtailment2, - # solar_curtailment3] - # solar csp gen elec sm1: [csp_sm1_res, csp_sm1_res1, csp_sm1_res2, - # csp_sm1_res3, csp_sm1_res4, csp_sm1_res5, - # csp_sm1_res6, csp_sm1_res7] - # solar csp gen elec sm3: [csp_sm3_res, csp_sm3_res1, csp_sm3_res2, - # csp_sm3_res3, csp_sm3_res4, csp_sm3_res5, - # csp_sm3_res6, csp_sm3_res7] - # solar csp gen heat rc: [solar_rc] - # solar csp gen heat i: [solar_i] + wind curtailment: [wind_curtailment1, wind_curtailment2, wind_curtailment3] + wind gen onshore: [wind_res1, wind_res2, wind_res3, wind_res4] + wind gen offshore: [wind_ref1, wind_ref2, wind_ref3, wind_ref4, wind_ref5] + + # SolarSolar + solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, + solar_res5, solar_res6, solar_res7, solar_res8] + solar pv gen elec RC: [solar_pv_RC] + solar pv gen elec I: [solar_pv_I] + solar pv curtailment: [solar_curtailment1, solar_curtailment2, + solar_curtailment3] + solar csp gen elec sm1: [csp_sm1_res, csp_sm1_res1, csp_sm1_res2, + csp_sm1_res3, csp_sm1_res4, csp_sm1_res5, + csp_sm1_res6, csp_sm1_res7] + solar csp gen elec sm3: [csp_sm3_res, csp_sm3_res1, csp_sm3_res2, + csp_sm3_res3, csp_sm3_res4, csp_sm3_res5, + csp_sm3_res6, csp_sm3_res7] + solar csp gen heat rc: [solar_rc] + solar csp gen heat i: [solar_i] # Emission CH4 # Is there any way to group over multiple dimensions? @@ -187,17 +187,6 @@ aggregate: manure: [Emissions|CH4|Land Use|Agriculture|AWM] rice: [Emissions|CH4|Land Use|Agriculture|Rice] - # sf6: [elec_t_d, eth_fc_trp, eth_ic_trp, foil_trp, h2_fc_trp, - # leak_repairsf6, loil_trp, meth_fc_trp, meth_ic_trp, - # recycling_gas1, replacement_so2] - # hfc: [ammonia_secloop, biomass_rc, coal_rc, elec_trp, eth_fc_trp. - # eth_ic_trp, eth_rc, foil_rc , foil_trp, gas_rc, gas_trp, - # h2_fc_RC, h2_fc_trp, h2_rc, heat_rc, hp_el_rc, hp_gas_rc, - # leak_repair, loil_rc, loil_trp, meth_fc_trp, meth_ic_trp, - # refrigerant_recovery,repl_hc, solar_rc, sp_el_RC] - # cf4: [CF4_Semico, eth_fc_trp. eth_ic_trp, foil_trp, - # h2_fc_trp, loil_trp, meth_fc_trp, meth_ic_trp, - # vertical_stud] - _quantities: [in, out] _tag: t_d @@ -249,6 +238,7 @@ aggregate: # - Parsed by reporting.core.add_combination combine: +# CH4 from emi - key: CH4:nl-t-ya inputs: - quantity: emi::t_CH4 @@ -256,17 +246,13 @@ combine: CH4_Emission_bunkers]} weight: 1 +# Agricultural CH4 from land_out - key: agri_CH4:n-y-c inputs: - quantity: land_out::c_CH4 select: {l:[land_use_reporting]} weight: 0.025 #Seems that this is used?? -# - key: CH4tot:nl-ya-t-m -# inputs: -# - quantity: emi -# weight: 1 - # Name and dimensions of quantity to be created - key: coal:nl-ya # Inputs to sum @@ -313,17 +299,17 @@ combine: select: {t: oil} weight: 1 -# - key: solar:nl-ya - # inputs: - # - quantity: out::se - # select: {t: ['solar pv gen elec', 'solar pv gen elec RC', - # 'solar pv gen elec I', 'solar csp gen elec sm1', - # 'solar csp gen elec sm3', 'solar csp gen heat rc', - # 'solar csp gen heat i']} - # #, c: [electr]} - # - quantity: in::se - # select: {t: solar pv curtailment} #, c: [electr]} - # weight: -1 +- key: solar:nl-ya + inputs: + - quantity: out::se + select: {t: ['solar pv gen elec', 'solar pv gen elec RC', + 'solar pv gen elec I', 'solar csp gen elec sm1', + 'solar csp gen elec sm3', 'solar csp gen heat rc', + 'solar csp gen heat i']} + #, c: [electr]} + - quantity: in::se + select: {t: solar pv curtailment} #, c: [electr]} + weight: -1 - key: se_trade:nl-ya inputs: @@ -333,13 +319,13 @@ combine: select: {t: [elec, ethanol, lh2, methanol]} weight: -1 -# - key: wind:nl-ya - # inputs: - # - quantity: out::se - # select: {t: ['wind gen onshore', 'wind gen offshore']} - # - quantity: in::se - # select: {t: wind curtailment} - # weight: -1 +- key: wind:nl-ya + inputs: + - quantity: out::se + select: {t: ['wind gen onshore', 'wind gen offshore']} + - quantity: in::se + select: {t: wind curtailment} + weight: -1 # Prices @@ -565,21 +551,13 @@ iamc: # Emissions -# I don't have to worry about specifc namings -# Do automatic names and later we rename correctly commonly. -# - variable: Emissions|CH4|Fossil Fuels and Industry -# base: CH4tot:nl-t-ya -# select: {e: [CH4_Emission, CH4_nonenergy]} -# format: -# var: -# - t - -- variable: Emissions|CH4|Industrial Processes # Verified +# CH4-related IAMC variables +- variable: Emissions|CH4|Industrial Processes base: CH4:nl-t-ya select: {t: [industry]} <<: *emis_iamc -- variable: Emissions|CH4|Waste # Verified +- variable: Emissions|CH4|Waste base: CH4:nl-t-ya select: {t: [waste]} <<: *emis_iamc @@ -664,12 +642,12 @@ iamc: select: {t: [solid_transportation]} <<: *emis_iamc -- variable: Emissions|CH4|AFOLU|Biomass Burning # Verified +- variable: Emissions|CH4|AFOLU|Biomass Burning base: CH4:nl-t-ya select: {t: [agri waste]} <<: *emis_iamc -- variable: GLOBIOM|Emissions|CH4 Emissions Total # Verified +- variable: GLOBIOM|Emissions|CH4 Emissions Total base: agri_CH4:n-y-c select: {c: [agri]} <<: *landemis_iamc From 35c082d8aa60364277c6a79760eb7bafa1a2e1a2 Mon Sep 17 00:00:00 2001 From: Jihoon Date: Thu, 2 Apr 2020 11:40:01 +0200 Subject: [PATCH 061/220] Adjust to yaml format changes --- message_ix_models/data/report/global.yaml | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 3405e69c46..c696a74204 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -187,7 +187,6 @@ aggregate: manure: [Emissions|CH4|Land Use|Agriculture|AWM] rice: [Emissions|CH4|Land Use|Agriculture|Rice] - - _quantities: [in, out] _tag: t_d _dim: t @@ -474,22 +473,14 @@ iamc variable names: emis_iamc: &emis_iamc - format: - drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' - - m - - t - -emis_iamc: &emis_iamc - format: - drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' - - m - - t + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - m + - t landemis_iamc: &landemis_iamc - format: - year_time_dim: y - drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' - - c + year_time_dim: y + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - c # This section is used by reporting.core.add_iamc_table() @@ -746,6 +737,8 @@ report: - GDP|MER:iamc - GDP|PPP:iamc + + - key: CH4_emissions members: # - Emissions|CH4|Fossil Fuels and Industry:iamc From b9db904752b24e364ff8fc1aeba3f33976860986 Mon Sep 17 00:00:00 2001 From: Jihoon Date: Fri, 3 Apr 2020 12:16:10 +0200 Subject: [PATCH 062/220] Add successfully an aggregate variable --- message_ix_models/data/report/global.yaml | 33 +++++++++++++++++++---- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index c696a74204..d09ce18237 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -171,8 +171,17 @@ aggregate: solar_rc, biomass_nc, other_sc] transport: [coal_trp, foil_trp, loil_trp, gas_trp, elec_trp, meth_ic_trp, eth_ic_trp, meth_fc_trp, eth_fc_trp, h2_fc_trp] + # aggregates # This doesn't give outputs. + # fugitive: [gases_extr, gases_extr_fug, gases_transportation, gases_coal, gases_hydrogen, liquids_extraction, liquids_transportation ,liquids_oil, liquids_gas, liquids_coal, liquids_biomass, solid_extraction, solid_transportation] + - _quantities: [emi::t_CH4] - _tag: t_e_CH4 + _tag: agg + _dim: t + + fugitive: [gases_extr, gases_extr_fug, gases_transportation, gases_coal, gases_hydrogen, liquids_extraction, liquids_transportation ,liquids_oil, liquids_gas, liquids_coal, liquids_biomass, solid_extraction, solid_transportation] + +- _quantities: [emi::t_CH4+agg] + _tag: e_CH4 _dim: e CH4: [CH4_Emission, CH4_nonenergy, CH4_new_Emission, CH4_Emission_bunkers] @@ -250,7 +259,7 @@ combine: inputs: - quantity: land_out::c_CH4 select: {l:[land_use_reporting]} - weight: 0.025 #Seems that this is used?? + weight: 0.025 #CHECK: Seems that this is used?? # Name and dimensions of quantity to be created - key: coal:nl-ya @@ -473,13 +482,16 @@ iamc variable names: emis_iamc: &emis_iamc - drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' - - m + drop: # Drop 'technology' <- already aggregated above + #- m - t + - e + # unit: # CHECK: Cause AttributeError: 'NoneType' object has no attribute 'items' from pint + # - Mt CH4/yr landemis_iamc: &landemis_iamc year_time_dim: y - drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + drop: # Drop 'commodity' - c @@ -633,6 +645,16 @@ iamc: select: {t: [solid_transportation]} <<: *emis_iamc +# - variable: Emissions|CH4|Energy|Supply|Fugitive1 +# base: CH4:nl-t-ya +# select: {t: [fugitive]} +# <<: *emis_iamc + +- variable: Emissions|CH4|Energy|Supply|Fugitive + base: emi:nl-t-ya-e:t_CH4+agg+e_CH4 + select: {t: [fugitive], e: [CH4]} + <<: *emis_iamc + - variable: Emissions|CH4|AFOLU|Biomass Burning base: CH4:nl-t-ya select: {t: [agri waste]} @@ -752,6 +774,7 @@ report: - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Fugitive:iamc - Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive:iamc - Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive:iamc - Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive:iamc From 326b027a4b34fd4d4dbaa363740196b1ab37d802 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 15:45:58 +0200 Subject: [PATCH 063/220] Add reporting.utils.REPLACE rule for CH4 fugitive emissions --- message_ix_models/report/util.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index bfd2aac067..870d22e224 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -17,6 +17,8 @@ # Applied after the variable column is assembled. Partial string # replacement; handled as regular expressions. 'variable': { + r'(Emissions\|CH4[^\|]*)\|(Liquids.*)$': + r'\1|Energy|Supply|\2|Fugitive', r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', r'Residential\|Gas': 'Residential|Gases|Natural Gas', r"Import Energy\|Lng": "Primary Energy|Gas", From 4672568176a910a30c9570fda73ead10a543376d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 15:47:32 +0200 Subject: [PATCH 064/220] Use CH4 output labels directly in aggregation - This avoids introducing internal names that aren't needed --- message_ix_models/data/report/global.yaml | 31 ++++++++++------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index d09ce18237..256e85e94f 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -152,14 +152,14 @@ aggregate: gases_hydrogen: [h2_smr, h2_smr_ccs, h2_coal, h2_coal_ccs, h2_bio, h2_bio_ccs] # Fugitive - liquid - liquids_extraction: [oil_extr_1_ch4, oil_extr_1, oil_extr_2_ch4, oil_extr_2, + Liquids|Extraction: [oil_extr_1_ch4, oil_extr_1, oil_extr_2_ch4, oil_extr_2, oil_extr_3_ch4, oil_extr_3, oil_extr_4_ch4, oil_extr_4, oil_extr_5, oil_extr_6, oil_extr_7, oil_extr_8] - liquids_transportation: [loil_t_d, foil_t_d, meth_t_d, eth_t_d] - liquids_oil: [ref_lol, ref_hil, SO2_scrub_ref] - liquids_gas: [meth_ng, meth_ng_ccs] - liquids_coal: [meth_coal, meth_coal_ccs, syn_liq, syn_liq_ccs] - liquids_biomass: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] + Liquids|Transportation: [loil_t_d, foil_t_d, meth_t_d, eth_t_d] + Liquids|Oil: [ref_lol, ref_hil, SO2_scrub_ref] + Liquids|Gas: [meth_ng, meth_ng_ccs] + Liquids|Coal: [meth_coal, meth_coal_ccs, syn_liq, syn_liq_ccs] + Liquids|Biomass: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] # Fugitive - solid solid_extraction: [coal_extr_ch4, coal_extr, lignite_extr] @@ -178,7 +178,7 @@ aggregate: _tag: agg _dim: t - fugitive: [gases_extr, gases_extr_fug, gases_transportation, gases_coal, gases_hydrogen, liquids_extraction, liquids_transportation ,liquids_oil, liquids_gas, liquids_coal, liquids_biomass, solid_extraction, solid_transportation] + fugitive: [gases_extr, gases_extr_fug, gases_transportation, gases_coal, gases_hydrogen, Liquids|Extraction, Liquids|Transportation, Liquids|Oil, Liquids|Gas, Liquids|Coal, Liquids|Biomass, solid_extraction, solid_transportation] - _quantities: [emi::t_CH4+agg] _tag: e_CH4 @@ -245,13 +245,10 @@ aggregate: # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination combine: - # CH4 from emi - key: CH4:nl-t-ya inputs: - - quantity: emi::t_CH4 - select: {e: [CH4_Emission, CH4_nonenergy, CH4_new_Emission, - CH4_Emission_bunkers]} + - quantity: emi::t_CH4+agg+e_CH4 weight: 1 # Agricultural CH4 from land_out @@ -607,32 +604,32 @@ iamc: - variable: Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive base: CH4:nl-t-ya - select: {t: [liquids_extraction]} + select: {t: [Liquids|Extraction]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive base: CH4:nl-t-ya - select: {t: [liquids_transportation]} + select: {t: [Liquids|Transportation]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Liquids|Oil|Fugitive base: CH4:nl-t-ya - select: {t: [liquids_oil]} + select: {t: [Liquids|Oil]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Fugitive base: CH4:nl-t-ya - select: {t: [liquids_gas]} + select: {t: [Liquids|Gas]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive base: CH4:nl-t-ya - select: {t: [liquids_coal]} + select: {t: [Liquids|Coal]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive base: CH4:nl-t-ya - select: {t: [liquids_biomass]} + select: {t: [Liquids|Biomass]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive From bab017b490e17ecf41763d4c350c72a5acf69f48 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 15:48:04 +0200 Subject: [PATCH 065/220] Compare auto-renamed CH4 liquids results with verbose method --- message_ix_models/data/report/global.yaml | 45 +++++++++++++---------- 1 file changed, 26 insertions(+), 19 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 256e85e94f..d2d8d00864 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -29,6 +29,8 @@ units: # FIXME 'carbon' is not a unit; these should be t, kt, Mt or similar PRICE_EMISSION: USD_2005 / carbon tax_emission: USD_2005 / carbon + # Temporary: requires changes in iiasa/message_data#115 + emission_factor: 'Mt / year' # Filters @@ -552,6 +554,12 @@ iamc: # Emissions # CH4-related IAMC variables +- variable: Emissions|CH4 (new) + # Auto-sum over dimensions yv, m, h + base: CH4:nl-t-ya + var: [t] + unit: 'Mt / year' # CH4; the species is indicated by 'variable' + - variable: Emissions|CH4|Industrial Processes base: CH4:nl-t-ya select: {t: [industry]} @@ -756,27 +764,26 @@ report: - GDP|MER:iamc - GDP|PPP:iamc - - - key: CH4_emissions members: + - Emissions|CH4 (new):iamc # - Emissions|CH4|Fossil Fuels and Industry:iamc - - Emissions|CH4|Energy|Demand|Residential and Commercial:iamc - - Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping:iamc - - Emissions|CH4|Energy|Supply|Heat:iamc - - Emissions|CH4|Energy|Supply|Electricity:iamc - - Emissions|CH4|Industrial Processes:iamc - - Emissions|CH4|Waste:iamc - - Emissions|CH4|AFOLU|Biomass Burning:iamc - - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc - - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc + # - Emissions|CH4|Energy|Demand|Residential and Commercial:iamc + # - Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping:iamc + # - Emissions|CH4|Energy|Supply|Heat:iamc + # - Emissions|CH4|Energy|Supply|Electricity:iamc + # - Emissions|CH4|Industrial Processes:iamc + # - Emissions|CH4|Waste:iamc + # - Emissions|CH4|AFOLU|Biomass Burning:iamc + # - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc + # - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive:iamc - Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive:iamc - Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive:iamc - Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive:iamc @@ -785,9 +792,9 @@ report: - Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive:iamc - - GLOBIOM|Emissions|CH4 Emissions Total:iamc + # - Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive:iamc + # - Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive:iamc + # - GLOBIOM|Emissions|CH4 Emissions Total:iamc - key: price test members: From f58aa685c3ee60d79c882e799c5cdb4a008e9d7b Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 16:37:34 +0200 Subject: [PATCH 066/220] Further use CH4 output labels directly in aggregation --- message_ix_models/data/report/global.yaml | 84 +++++++++++------------ 1 file changed, 42 insertions(+), 42 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index d2d8d00864..b3bee485cb 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -135,23 +135,22 @@ aggregate: _tag: t_CH4 _dim: t - waste: [CH4_WasteBurnEM, CH4_DomWasteWa, CH4_IndWasteWa, CH4n_landfills, + Waste: [CH4_WasteBurnEM, CH4_DomWasteWa, CH4_IndWasteWa, CH4n_landfills, landfill_digester1, landfill_compost1, landfill_mechbio, landfill_heatprdn, landfill_direct1, landfill_ele, landfill_flaring] - industry: [CH4_IndNonEnergyEM] + Industrial Processes: [CH4_IndNonEnergyEM] agri waste: [CH4_AgWasteEM] - heat: [bio_hpl, coal_hpl, foil_hpl, gas_hpl] - elec: [bio_istig, bio_ppl, coal_adv, coal_ppl_u, igcc, coal_ppl, foil_ppl, - gas_cc, gas_ppl, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl, + Heat: [bio_hpl, coal_hpl, foil_hpl, gas_hpl] + Electricity: [bio_istig, bio_ppl, coal_adv, coal_ppl_u, igcc, coal_ppl, + foil_ppl, gas_cc, gas_ppl, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl, coal_adv_ccs, igcc_ccs, gas_cc_ccs, gas_ct, gas_htfc, bio_istig_ccs] # Fugitive - gas - gases_extr: [gas_extr_1, gas_extr_2, gas_extr_3, gas_extr_4, gas_extr_5, - gas_extr_6, gas_extr_7, gas_extr_8] - gases_extr_fug: [flaring_CO2] - gases_transportation: [gas_t_d_ch4, gas_t_d] - gases_coal: [coal_gas] - gases_hydrogen: [h2_smr, h2_smr_ccs, h2_coal, h2_coal_ccs, h2_bio, h2_bio_ccs] + Gases|Extraction: [gas_extr_1, gas_extr_2, gas_extr_3, gas_extr_4, gas_extr_5, + gas_extr_6, gas_extr_7, gas_extr_8, flaring_CO2] + Gases|Transportation: [gas_t_d_ch4, gas_t_d] + Gases|Coal: [coal_gas] + Gases|Hydrogen: [h2_smr, h2_smr_ccs, h2_coal, h2_coal_ccs, h2_bio, h2_bio_ccs] # Fugitive - liquid Liquids|Extraction: [oil_extr_1_ch4, oil_extr_1, oil_extr_2_ch4, oil_extr_2, @@ -164,14 +163,15 @@ aggregate: Liquids|Biomass: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] # Fugitive - solid - solid_extraction: [coal_extr_ch4, coal_extr, lignite_extr] - solid_transportation: [coal_t_d, biomass_t_d] + Solids|Extraction: [coal_extr_ch4, coal_extr, lignite_extr] + Solids|Transportation: [coal_t_d, biomass_t_d] # Demand - rescomm: [sp_el_RC, solar_pv_RC, h2_fc_RC, coal_rc, foil_rc, loil_rc, gas_rc, - elec_rc, biomass_rc, heat_rc, meth_rc, eth_rc, h2_rc, hp_el_rc, hp_gas_rc, - solar_rc, biomass_nc, other_sc] - transport: [coal_trp, foil_trp, loil_trp, gas_trp, elec_trp, meth_ic_trp, eth_ic_trp, meth_fc_trp, eth_fc_trp, h2_fc_trp] + CH4 rescomm: [sp_el_RC, solar_pv_RC, h2_fc_RC, coal_rc, foil_rc, loil_rc, + gas_rc, elec_rc, biomass_rc, heat_rc, meth_rc, eth_rc, h2_rc, hp_el_rc, + hp_gas_rc, solar_rc, biomass_nc, other_sc] + CH4 transport: [coal_trp, foil_trp, loil_trp, gas_trp, elec_trp, meth_ic_trp, + eth_ic_trp, meth_fc_trp, eth_fc_trp, h2_fc_trp] # aggregates # This doesn't give outputs. # fugitive: [gases_extr, gases_extr_fug, gases_transportation, gases_coal, gases_hydrogen, liquids_extraction, liquids_transportation ,liquids_oil, liquids_gas, liquids_coal, liquids_biomass, solid_extraction, solid_transportation] @@ -180,7 +180,7 @@ aggregate: _tag: agg _dim: t - fugitive: [gases_extr, gases_extr_fug, gases_transportation, gases_coal, gases_hydrogen, Liquids|Extraction, Liquids|Transportation, Liquids|Oil, Liquids|Gas, Liquids|Coal, Liquids|Biomass, solid_extraction, solid_transportation] + fugitive: [Gases|Extraction, Gases|Transportation, Gases|Coal, Gases|Hydrogen, Liquids|Extraction, Liquids|Transportation, Liquids|Oil, Liquids|Gas, Liquids|Coal, Liquids|Biomass, Solids|Extraction, Solids|Transportation] - _quantities: [emi::t_CH4+agg] _tag: e_CH4 @@ -562,52 +562,52 @@ iamc: - variable: Emissions|CH4|Industrial Processes base: CH4:nl-t-ya - select: {t: [industry]} + select: {t: [Industrial Processes]} <<: *emis_iamc - variable: Emissions|CH4|Waste base: CH4:nl-t-ya - select: {t: [waste]} + select: {t: [Waste]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Demand|Residential and Commercial base: CH4:nl-t-ya - select: {t: [rescomm]} + select: {t: [CH4 rescomm]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping base: CH4:nl-t-ya - select: {t: [transport]} + select: {t: [CH4 transport]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Heat base: CH4:nl-t-ya - select: {t: [heat]} + select: {t: [Heat]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Electricity base: CH4:nl-t-ya - select: {t: [elec]} + select: {t: [Electricity]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive base: CH4:nl-t-ya - select: {t: [gases_extr, gases_extr_fug]} + select: {t: [Gases|Extraction]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive base: CH4:nl-t-ya - select: {t: [gases_transportation]} + select: {t: [Gases|Transportation]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive base: CH4:nl-t-ya - select: {t: [gases_coal]} + select: {t: [Gases|Coal]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive base: CH4:nl-t-ya - select: {t: [gases_hydrogen]} + select: {t: [Gases|Hydrogen]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive @@ -642,12 +642,12 @@ iamc: - variable: Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive base: CH4:nl-t-ya - select: {t: [solid_extraction]} + select: {t: [Solids|Extraction]} <<: *emis_iamc - variable: Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive base: CH4:nl-t-ya - select: {t: [solid_transportation]} + select: {t: [Solids|Transportation]} <<: *emis_iamc # - variable: Emissions|CH4|Energy|Supply|Fugitive1 @@ -768,22 +768,22 @@ report: members: - Emissions|CH4 (new):iamc # - Emissions|CH4|Fossil Fuels and Industry:iamc - # - Emissions|CH4|Energy|Demand|Residential and Commercial:iamc - # - Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping:iamc - # - Emissions|CH4|Energy|Supply|Heat:iamc - # - Emissions|CH4|Energy|Supply|Electricity:iamc - # - Emissions|CH4|Industrial Processes:iamc - # - Emissions|CH4|Waste:iamc + - Emissions|CH4|Energy|Demand|Residential and Commercial:iamc + - Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping:iamc + - Emissions|CH4|Energy|Supply|Heat:iamc + - Emissions|CH4|Energy|Supply|Electricity:iamc + - Emissions|CH4|Industrial Processes:iamc + - Emissions|CH4|Waste:iamc # - Emissions|CH4|AFOLU|Biomass Burning:iamc # - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc # - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive:iamc - Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive:iamc - Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive:iamc - Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive:iamc @@ -792,8 +792,8 @@ report: - Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive:iamc + - Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive:iamc # - GLOBIOM|Emissions|CH4 Emissions Total:iamc - key: price test From 9245360c37b33763d50a3b6b63642eeb43336e27 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 16:38:16 +0200 Subject: [PATCH 067/220] Add reporting.computations.select --- message_ix_models/report/computations.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 223fffe6a4..2327664c80 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -92,6 +92,28 @@ def group_sum(qty, group, sum): dim=group) +# Temporary: will be added to ixmp +def select(qty, indexers, inverse=False): + """Select from *qty* based on *indexers*. + Parameters + ---------- + qty : .Quantity + select : list of dict + Elements to be selected from each quantity. Must have the same number + of elements as `quantities`. + inverse : bool, optional + If :obj:`True`, *remove* the items in indexers instead of keeping them. + """ + if inverse: + new_indexers = {} + for dim, labels in indexers.items(): + new_indexers[dim] = list(filter(lambda l: l not in labels, + qty.coords[dim])) + indexers = new_indexers + + return qty.sel(indexers) + + def share_curtailment(curt, *parts): """Apply a share of *curt* to the first of *parts*. From 139d08c05ece034c89fa4eac044c200232e98478 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 16:38:50 +0200 Subject: [PATCH 068/220] Update reporting.util.collapse and .REPLACE for CH4 --- message_ix_models/report/util.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 870d22e224..69ebc6f44b 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -13,12 +13,18 @@ 'l': { 'Final Energy': 'Final Energy|Residential', }, + 't': { + 'Ch4 rescomm': 'Energy|Demand|Residential and Commercial', + 'Ch4 transport': + 'Energy|Demand|Transportation|Road Rail and Domestic Shipping', + }, # Applied after the variable column is assembled. Partial string # replacement; handled as regular expressions. 'variable': { - r'(Emissions\|CH4[^\|]*)\|(Liquids.*)$': + r'(Emissions\|CH4[^\|]*)\|((Gases|Liquids|Solids|Elec|Heat).*)$': r'\1|Energy|Supply|\2|Fugitive', + r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', r'Residential\|Gas': 'Residential|Gases|Natural Gas', r"Import Energy\|Lng": "Primary Energy|Gas", @@ -59,6 +65,10 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): .core.add_iamc_table """ if replace_common: + for dim in 'clt': + if dim in df.columns: + df[dim] = df[dim].astype(str).str.title() + try: # Level: to title case, add the word 'energy' # FIXME astype() here should not be necessary; debug From a4f5179eed717327edefd1e0939b72018effcc53 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 16:39:20 +0200 Subject: [PATCH 069/220] Select technologies for CH4 IAMC reporting --- message_ix_models/data/report/global.yaml | 28 ++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index b3bee485cb..080262fd98 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -442,6 +442,32 @@ general: inputs: - GDP - MERtoPPP + +- key: CH4 new:nl-t-ya + comp: select + inputs: [emi:nl-t-ya:t_CH4+agg+e_CH4] + args: + indexers: + t: + - CH4 rescomm + - CH4 transport + - Electricity + - Gases|Coal + - Gases|Extraction + - Gases|Hydrogen + - Gases|Transportation + - Heat + - Industrial Processes + - Liquids|Biomass + - Liquids|Coal + - Liquids|Extraction + - Liquids|Gas + - Liquids|Oil + - Liquids|Transportation + - Solids|Extraction + - Solids|Transportation + - Waste + # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind ref, wind res] @@ -556,7 +582,7 @@ iamc: # CH4-related IAMC variables - variable: Emissions|CH4 (new) # Auto-sum over dimensions yv, m, h - base: CH4:nl-t-ya + base: CH4 new:nl-t-ya var: [t] unit: 'Mt / year' # CH4; the species is indicated by 'variable' From 87dbde2c8063abcfe21463d35a35d3dcb94b4e5c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 16:42:03 +0200 Subject: [PATCH 070/220] Correct reporting.util.REPLACE for CH4 technologies --- message_ix_models/report/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 69ebc6f44b..0a9e86d2a0 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -14,8 +14,8 @@ 'Final Energy': 'Final Energy|Residential', }, 't': { - 'Ch4 rescomm': 'Energy|Demand|Residential and Commercial', - 'Ch4 transport': + 'Ch4 Rescomm': 'Energy|Demand|Residential and Commercial', + 'Ch4 Transport': 'Energy|Demand|Transportation|Road Rail and Domestic Shipping', }, From 11a7e7742819dd64832d0d89ccb8845e20a5f8b8 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 16:46:37 +0200 Subject: [PATCH 071/220] Remove verbose CH4 reporting to IAMC --- message_ix_models/data/report/global.yaml | 116 +--------------------- 1 file changed, 4 insertions(+), 112 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 080262fd98..7c9fdf727f 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -158,7 +158,7 @@ aggregate: oil_extr_6, oil_extr_7, oil_extr_8] Liquids|Transportation: [loil_t_d, foil_t_d, meth_t_d, eth_t_d] Liquids|Oil: [ref_lol, ref_hil, SO2_scrub_ref] - Liquids|Gas: [meth_ng, meth_ng_ccs] + Liquids|Natural Gas: [meth_ng, meth_ng_ccs] Liquids|Coal: [meth_coal, meth_coal_ccs, syn_liq, syn_liq_ccs] Liquids|Biomass: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] @@ -461,7 +461,7 @@ general: - Liquids|Biomass - Liquids|Coal - Liquids|Extraction - - Liquids|Gas + - Liquids|Natural Gas - Liquids|Oil - Liquids|Transportation - Solids|Extraction @@ -580,102 +580,12 @@ iamc: # Emissions # CH4-related IAMC variables -- variable: Emissions|CH4 (new) +- variable: Emissions|CH4 # Auto-sum over dimensions yv, m, h base: CH4 new:nl-t-ya var: [t] unit: 'Mt / year' # CH4; the species is indicated by 'variable' -- variable: Emissions|CH4|Industrial Processes - base: CH4:nl-t-ya - select: {t: [Industrial Processes]} - <<: *emis_iamc - -- variable: Emissions|CH4|Waste - base: CH4:nl-t-ya - select: {t: [Waste]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Demand|Residential and Commercial - base: CH4:nl-t-ya - select: {t: [CH4 rescomm]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping - base: CH4:nl-t-ya - select: {t: [CH4 transport]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Heat - base: CH4:nl-t-ya - select: {t: [Heat]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Electricity - base: CH4:nl-t-ya - select: {t: [Electricity]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive - base: CH4:nl-t-ya - select: {t: [Gases|Extraction]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive - base: CH4:nl-t-ya - select: {t: [Gases|Transportation]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive - base: CH4:nl-t-ya - select: {t: [Gases|Coal]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive - base: CH4:nl-t-ya - select: {t: [Gases|Hydrogen]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive - base: CH4:nl-t-ya - select: {t: [Liquids|Extraction]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive - base: CH4:nl-t-ya - select: {t: [Liquids|Transportation]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Liquids|Oil|Fugitive - base: CH4:nl-t-ya - select: {t: [Liquids|Oil]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Fugitive - base: CH4:nl-t-ya - select: {t: [Liquids|Gas]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive - base: CH4:nl-t-ya - select: {t: [Liquids|Coal]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive - base: CH4:nl-t-ya - select: {t: [Liquids|Biomass]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive - base: CH4:nl-t-ya - select: {t: [Solids|Extraction]} - <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive - base: CH4:nl-t-ya - select: {t: [Solids|Transportation]} - <<: *emis_iamc - # - variable: Emissions|CH4|Energy|Supply|Fugitive1 # base: CH4:nl-t-ya # select: {t: [fugitive]} @@ -792,34 +702,16 @@ report: - key: CH4_emissions members: - - Emissions|CH4 (new):iamc + - Emissions|CH4:iamc # - Emissions|CH4|Fossil Fuels and Industry:iamc - - Emissions|CH4|Energy|Demand|Residential and Commercial:iamc - - Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping:iamc - - Emissions|CH4|Energy|Supply|Heat:iamc - - Emissions|CH4|Energy|Supply|Electricity:iamc - - Emissions|CH4|Industrial Processes:iamc - - Emissions|CH4|Waste:iamc # - Emissions|CH4|AFOLU|Biomass Burning:iamc # - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc # - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Liquids|Oil|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive:iamc - - Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive:iamc # - GLOBIOM|Emissions|CH4 Emissions Total:iamc - key: price test From a1ec4f43f00d47011c3fd4285828d9d89120ca4f Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 16:52:51 +0200 Subject: [PATCH 072/220] Including fugitive and biomass burning in CH4 IAMC reporting --- message_ix_models/data/report/global.yaml | 29 ++++------------------- message_ix_models/report/util.py | 3 ++- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 7c9fdf727f..7856f197d4 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -139,7 +139,7 @@ aggregate: landfill_digester1, landfill_compost1, landfill_mechbio, landfill_heatprdn, landfill_direct1, landfill_ele, landfill_flaring] Industrial Processes: [CH4_IndNonEnergyEM] - agri waste: [CH4_AgWasteEM] + AFOLU|Biomass Burning: [CH4_AgWasteEM] Heat: [bio_hpl, coal_hpl, foil_hpl, gas_hpl] Electricity: [bio_istig, bio_ppl, coal_adv, coal_ppl_u, igcc, coal_ppl, foil_ppl, gas_cc, gas_ppl, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl, @@ -180,7 +180,7 @@ aggregate: _tag: agg _dim: t - fugitive: [Gases|Extraction, Gases|Transportation, Gases|Coal, Gases|Hydrogen, Liquids|Extraction, Liquids|Transportation, Liquids|Oil, Liquids|Gas, Liquids|Coal, Liquids|Biomass, Solids|Extraction, Solids|Transportation] + Fugitive: [Gases|Extraction, Gases|Transportation, Gases|Coal, Gases|Hydrogen, Liquids|Extraction, Liquids|Transportation, Liquids|Oil, Liquids|Gas, Liquids|Coal, Liquids|Biomass, Solids|Extraction, Solids|Transportation] - _quantities: [emi::t_CH4+agg] _tag: e_CH4 @@ -247,12 +247,6 @@ aggregate: # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination combine: -# CH4 from emi -- key: CH4:nl-t-ya - inputs: - - quantity: emi::t_CH4+agg+e_CH4 - weight: 1 - # Agricultural CH4 from land_out - key: agri_CH4:n-y-c inputs: @@ -449,9 +443,11 @@ general: args: indexers: t: + - AFOLU|Biomass Burning - CH4 rescomm - CH4 transport - Electricity + - Fugitive - Gases|Coal - Gases|Extraction - Gases|Hydrogen @@ -586,21 +582,6 @@ iamc: var: [t] unit: 'Mt / year' # CH4; the species is indicated by 'variable' -# - variable: Emissions|CH4|Energy|Supply|Fugitive1 -# base: CH4:nl-t-ya -# select: {t: [fugitive]} -# <<: *emis_iamc - -- variable: Emissions|CH4|Energy|Supply|Fugitive - base: emi:nl-t-ya-e:t_CH4+agg+e_CH4 - select: {t: [fugitive], e: [CH4]} - <<: *emis_iamc - -- variable: Emissions|CH4|AFOLU|Biomass Burning - base: CH4:nl-t-ya - select: {t: [agri waste]} - <<: *emis_iamc - - variable: GLOBIOM|Emissions|CH4 Emissions Total base: agri_CH4:n-y-c select: {c: [agri]} @@ -704,11 +685,9 @@ report: members: - Emissions|CH4:iamc # - Emissions|CH4|Fossil Fuels and Industry:iamc - # - Emissions|CH4|AFOLU|Biomass Burning:iamc # - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc # - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive:iamc diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 0a9e86d2a0..cbe00d12b5 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -22,7 +22,8 @@ # Applied after the variable column is assembled. Partial string # replacement; handled as regular expressions. 'variable': { - r'(Emissions\|CH4[^\|]*)\|((Gases|Liquids|Solids|Elec|Heat).*)$': + r'(Emissions\|CH4)\|Fugitive': r'\1|Energy|Supply|Fugitive', + r'(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)$': r'\1|Energy|Supply|\2|Fugitive', r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', From 42a18ea569e625d64d237bdd4f7e52ce521b2f93 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 17:17:54 +0200 Subject: [PATCH 073/220] Simplify reporting of CH4 land use emissions --- message_ix_models/data/report/global.yaml | 127 ++++++++++------------ message_ix_models/report/computations.py | 22 ---- 2 files changed, 55 insertions(+), 94 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 7856f197d4..17f464211b 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -132,7 +132,7 @@ aggregate: # Emission CH4 # Is there any way to group over multiple dimensions? - _quantities: [emi] - _tag: t_CH4 + _tag: CH4_0 _dim: t Waste: [CH4_WasteBurnEM, CH4_DomWasteWa, CH4_IndWasteWa, CH4n_landfills, @@ -173,31 +173,20 @@ aggregate: CH4 transport: [coal_trp, foil_trp, loil_trp, gas_trp, elec_trp, meth_ic_trp, eth_ic_trp, meth_fc_trp, eth_fc_trp, h2_fc_trp] - # aggregates # This doesn't give outputs. - # fugitive: [gases_extr, gases_extr_fug, gases_transportation, gases_coal, gases_hydrogen, liquids_extraction, liquids_transportation ,liquids_oil, liquids_gas, liquids_coal, liquids_biomass, solid_extraction, solid_transportation] - -- _quantities: [emi::t_CH4] - _tag: agg +# Second stage of CH4 aggregation +- _quantities: [emi::CH4_0] + _tag: '1' _dim: t Fugitive: [Gases|Extraction, Gases|Transportation, Gases|Coal, Gases|Hydrogen, Liquids|Extraction, Liquids|Transportation, Liquids|Oil, Liquids|Gas, Liquids|Coal, Liquids|Biomass, Solids|Extraction, Solids|Transportation] -- _quantities: [emi::t_CH4+agg] - _tag: e_CH4 +# Third stage of CH4 aggregation +- _quantities: [emi::CH4_0+1] + _tag: '2' _dim: e CH4: [CH4_Emission, CH4_nonenergy, CH4_new_Emission, CH4_Emission_bunkers] -# Agricultural CH4 emissions -- _quantities: [land_out] - _tag: c_CH4 - _dim: c - - agri: [Agri_CH4] - enteric: [Emissions|CH4|Land Use|Agriculture|Enteric Fermentation] - manure: [Emissions|CH4|Land Use|Agriculture|AWM] - rice: [Emissions|CH4|Land Use|Agriculture|Rice] - - _quantities: [in, out] _tag: t_d _dim: t @@ -247,14 +236,7 @@ aggregate: # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination combine: -# Agricultural CH4 from land_out -- key: agri_CH4:n-y-c - inputs: - - quantity: land_out::c_CH4 - select: {l:[land_use_reporting]} - weight: 0.025 #CHECK: Seems that this is used?? - - # Name and dimensions of quantity to be created +# Name and dimensions of quantity to be created - key: coal:nl-ya # Inputs to sum inputs: @@ -437,33 +419,6 @@ general: - GDP - MERtoPPP -- key: CH4 new:nl-t-ya - comp: select - inputs: [emi:nl-t-ya:t_CH4+agg+e_CH4] - args: - indexers: - t: - - AFOLU|Biomass Burning - - CH4 rescomm - - CH4 transport - - Electricity - - Fugitive - - Gases|Coal - - Gases|Extraction - - Gases|Hydrogen - - Gases|Transportation - - Heat - - Industrial Processes - - Liquids|Biomass - - Liquids|Coal - - Liquids|Extraction - - Liquids|Natural Gas - - Liquids|Oil - - Liquids|Transportation - - Solids|Extraction - - Solids|Transportation - - Waste - # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind ref, wind res] @@ -498,8 +453,16 @@ price_iamc: &price_iamc year_time_dim: y +# Replacements for entire variable name strings iamc variable names: - Input|variable|name: Final|variable|name + # TODO move these to regular expressions in util.REPLACE. The full-name + # replacement doesn't work, because the land-use scenario ('s') is + # appended + land_out_|Agri_CH4: GLOBIOM|Emissions|CH4 Emissions Total + land_out_|Emissions|CH4|Land Use|Agriculture|Enteric Fermentation: | + Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation + land_out_|Emissions|CH4|Land Use|Agriculture|AWM: | + Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management emis_iamc: &emis_iamc @@ -578,23 +541,45 @@ iamc: # CH4-related IAMC variables - variable: Emissions|CH4 # Auto-sum over dimensions yv, m, h - base: CH4 new:nl-t-ya + base: emi:nl-t-ya:CH4_0+1+2 var: [t] unit: 'Mt / year' # CH4; the species is indicated by 'variable' - -- variable: GLOBIOM|Emissions|CH4 Emissions Total - base: agri_CH4:n-y-c - select: {c: [agri]} - <<: *landemis_iamc - -- variable: Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation - base: agri_CH4:n-y-c - select: {c: [enteric]} - <<: *landemis_iamc - -- variable: Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management - base: agri_CH4:n-y-c - select: {c: [manure]} + select: + t: + - AFOLU|Biomass Burning + - CH4 rescomm + - CH4 transport + - Electricity + - Fugitive + - Gases|Coal + - Gases|Extraction + - Gases|Hydrogen + - Gases|Transportation + - Heat + - Industrial Processes + - Liquids|Biomass + - Liquids|Coal + - Liquids|Extraction + - Liquids|Natural Gas + - Liquids|Oil + - Liquids|Transportation + - Solids|Extraction + - Solids|Transportation + - Waste + +# FIXME this needs to have a have a factor of 0.025 applied to it, for some +# reason +- variable: land_out_ + base: land_out:n-s-y-c-l + var: [c, s] + drop: [l] + select: + c: + - Agri_CH4 + - Emissions|CH4|Land Use|Agriculture|Enteric Fermentation + - Emissions|CH4|Land Use|Agriculture|AWM + l: + - land_use_reporting <<: *landemis_iamc # Prices @@ -684,14 +669,12 @@ report: - key: CH4_emissions members: - Emissions|CH4:iamc + - land_out_:iamc # - Emissions|CH4|Fossil Fuels and Industry:iamc - # - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management:iamc - # - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation:iamc # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive:iamc - # - GLOBIOM|Emissions|CH4 Emissions Total:iamc - key: price test members: diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 2327664c80..223fffe6a4 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -92,28 +92,6 @@ def group_sum(qty, group, sum): dim=group) -# Temporary: will be added to ixmp -def select(qty, indexers, inverse=False): - """Select from *qty* based on *indexers*. - Parameters - ---------- - qty : .Quantity - select : list of dict - Elements to be selected from each quantity. Must have the same number - of elements as `quantities`. - inverse : bool, optional - If :obj:`True`, *remove* the items in indexers instead of keeping them. - """ - if inverse: - new_indexers = {} - for dim, labels in indexers.items(): - new_indexers[dim] = list(filter(lambda l: l not in labels, - qty.coords[dim])) - indexers = new_indexers - - return qty.sel(indexers) - - def share_curtailment(curt, *parts): """Apply a share of *curt* to the first of *parts*. From 79f155de9cc3f129c31bfce81db375f5c7da4dea Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 12:44:13 +0200 Subject: [PATCH 074/220] Tidy small/inadvertent changes in global.yaml --- message_ix_models/data/report/global.yaml | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 17f464211b..39af137e5c 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -44,9 +44,11 @@ units: # Aggregate across dimensions of single quantities +# # - Corresponds to ixmp.Reporter.aggregate via reporting.core.add_aggregate +# - The dimension `_dim` is not removed; it gains new labels that are the sum +# of the listed members. Basically regrouping over one dimension. aggregate: -# Doesn't remove any dimensions. Basically regrouping over one dimension # Quantities to aggregate - _quantities: [in, out] # Added to the end of the each key (e.g. '[key]:pe' or '[key]:[tag]+pe') @@ -113,7 +115,7 @@ aggregate: wind gen onshore: [wind_res1, wind_res2, wind_res3, wind_res4] wind gen offshore: [wind_ref1, wind_ref2, wind_ref3, wind_ref4, wind_ref5] - # SolarSolar + # Solar solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, solar_res5, solar_res6, solar_res7, solar_res8] solar pv gen elec RC: [solar_pv_RC] @@ -129,8 +131,7 @@ aggregate: solar csp gen heat rc: [solar_rc] solar csp gen heat i: [solar_i] - # Emission CH4 - # Is there any way to group over multiple dimensions? +# Emissions of CH4 - _quantities: [emi] _tag: CH4_0 _dim: t @@ -233,10 +234,11 @@ aggregate: methanol: [meth_exp] oil: [oil_exp, loil_exp, foil_exp] + # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination combine: -# Name and dimensions of quantity to be created + # Name and dimensions of quantity to be created - key: coal:nl-ya # Inputs to sum inputs: @@ -256,8 +258,6 @@ combine: # - quantity: in::bunker # select: {t: coal} - # weight: 1 - - key: gas:nl-ya inputs: - quantity: in::pe @@ -418,7 +418,6 @@ general: inputs: - GDP - MERtoPPP - # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind ref, wind res] @@ -649,7 +648,6 @@ iamc: # This section is used by reporting.core.add_report() - report: - key: pe test members: From 8236b307b882ad5210b97b6669d8470613848b68 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 14:02:05 +0200 Subject: [PATCH 075/220] Configure reporting of CH4 emissions from GLOBIOM --- message_ix_models/data/report/global.yaml | 79 ++++++++++++----------- message_ix_models/report/util.py | 14 +++- 2 files changed, 54 insertions(+), 39 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 39af137e5c..d4200884ef 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -310,6 +310,15 @@ combine: select: {t: wind curtailment} weight: -1 +# Emissions + +# CH4 emissions from GLOBIOM: apply a factor of 0.025 to land_out +# TODO document why this is needed +- key: land_out:n-s-y-c:CH4_0+1+2 + inputs: + - quantity: land_out::CH4_0+1 + weight: 0.025 + # Prices - key: price_carbon:n-y @@ -418,6 +427,28 @@ general: inputs: - GDP - MERtoPPP + +# CH4 emissions from GLOBIOM: select only the subset +- key: land_out:n-s-y-c-l-h:CH4_0 + comp: select + inputs: [land_out] + args: + indexers: + c: + - Agri_CH4 + - Emissions|CH4|Land Use|Agriculture|Enteric Fermentation + - Emissions|CH4|Land Use|Agriculture|AWM + l: + - land_use_reporting + sums: true +# Auto-sum over [l, h], apply units +- key: land_out:n-s-y-c:CH4_0+1 + comp: apply_units + inputs: [land_out:n-s-y-c:CH4_0] + args: + units: 'Mt / year' + sums: true + # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind ref, wind res] @@ -454,28 +485,7 @@ price_iamc: &price_iamc # Replacements for entire variable name strings iamc variable names: - # TODO move these to regular expressions in util.REPLACE. The full-name - # replacement doesn't work, because the land-use scenario ('s') is - # appended - land_out_|Agri_CH4: GLOBIOM|Emissions|CH4 Emissions Total - land_out_|Emissions|CH4|Land Use|Agriculture|Enteric Fermentation: | - Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation - land_out_|Emissions|CH4|Land Use|Agriculture|AWM: | - Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management - - -emis_iamc: &emis_iamc - drop: # Drop 'technology' <- already aggregated above - #- m - - t - - e - # unit: # CHECK: Cause AttributeError: 'NoneType' object has no attribute 'items' from pint - # - Mt CH4/yr - -landemis_iamc: &landemis_iamc - year_time_dim: y - drop: # Drop 'commodity' - - c + Input|variable|name: Final|variable|name # This section is used by reporting.core.add_iamc_table() @@ -537,7 +547,7 @@ iamc: # Emissions -# CH4-related IAMC variables +# CH4 emissions from MESSAGE technologies - variable: Emissions|CH4 # Auto-sum over dimensions yv, m, h base: emi:nl-t-ya:CH4_0+1+2 @@ -566,20 +576,13 @@ iamc: - Solids|Transportation - Waste -# FIXME this needs to have a have a factor of 0.025 applied to it, for some -# reason -- variable: land_out_ - base: land_out:n-s-y-c-l +# CH4 emissions from GLOBIOM +# - The variable name signals utils.collapse to make some replacement, then is +# removed. +- variable: land_out CH4 + base: land_out:n-s-y-c:CH4_0+1+2 + year_time_dim: y var: [c, s] - drop: [l] - select: - c: - - Agri_CH4 - - Emissions|CH4|Land Use|Agriculture|Enteric Fermentation - - Emissions|CH4|Land Use|Agriculture|AWM - l: - - land_use_reporting - <<: *landemis_iamc # Prices # Preferred method: convert all the contents of the variable at once. @@ -664,10 +667,10 @@ report: - GDP|MER:iamc - GDP|PPP:iamc -- key: CH4_emissions +- key: CH4 emissions members: - Emissions|CH4:iamc - - land_out_:iamc + - land_out CH4:iamc # - Emissions|CH4|Fossil Fuels and Industry:iamc # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index cbe00d12b5..d02bbbe7dc 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -3,12 +3,16 @@ #: Replacements used in :meth:`collapse`. REPLACE = { - # Applied to whole values along each dimension + # Applied to whole values along each dimension. These columns have + # str.title() applied before these replacements. 'c': { 'Crudeoil': 'Oil', 'Electr': 'Electricity', 'Ethanol': 'Liquids|Biomass', 'Lightoil': 'Liquids|Oil', + + # in land_out, for CH4 emissions from GLOBIOM + 'Agri_Ch4': 'GLOBIOM|Emissions|CH4 Emissions Total', }, 'l': { 'Final Energy': 'Final Energy|Residential', @@ -22,10 +26,18 @@ # Applied after the variable column is assembled. Partial string # replacement; handled as regular expressions. 'variable': { + # CH4 emissions from MESSAGE technologies r'(Emissions\|CH4)\|Fugitive': r'\1|Energy|Supply|Fugitive', r'(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)$': r'\1|Energy|Supply|\2|Fugitive', + # CH4 emissions from GLOBIOM + r'^land_out CH4\|Emissions\|Ch4\|Land Use\|Agriculture\|': + 'Emissions|CH4|AFOLU|Agriculture|Livestock|', + r'^(land_out CH4.*\|)Awm': r'\1Manure Management', + r'^land_out CH4\|': '', # Strip internal prefix + + # Prices r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', r'Residential\|Gas': 'Residential|Gases|Natural Gas', r"Import Energy\|Lng": "Primary Energy|Gas", From 874a24679680a6fc821cd73aa286cbb7a173c258 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 14:02:16 +0200 Subject: [PATCH 076/220] Adjust test_iamc_replace_vars --- message_ix_models/tests/test_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 73462d13c0..ad25555d7e 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -136,7 +136,7 @@ def test_iamc_replace_vars(bare_res): config = { 'iamc': [IAMC_INV_COST], 'iamc variable names': { - 'Investment Cost|coal_ppl': 'Investment Cost|Coal', + 'Investment Cost|Coal_Ppl': 'Investment Cost|Coal', } } scen.check_out() From bef3adf873efb7149fef5d5520ca93a2368d395c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 14:02:40 +0200 Subject: [PATCH 077/220] Update replacements for reporting CH4 emissions from GLOBIOM --- message_ix_models/report/util.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index d02bbbe7dc..a48b446cad 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -23,8 +23,11 @@ 'Energy|Demand|Transportation|Road Rail and Domestic Shipping', }, - # Applied after the variable column is assembled. Partial string - # replacement; handled as regular expressions. + # Applied after the variable column is assembled. + # - Applied in sequence. + # - Partial string replacement. + # - Handled as regular expressions; see https://regex101.com and + # https://docs.python.org/3/library/re.html. 'variable': { # CH4 emissions from MESSAGE technologies r'(Emissions\|CH4)\|Fugitive': r'\1|Energy|Supply|Fugitive', @@ -32,9 +35,9 @@ r'\1|Energy|Supply|\2|Fugitive', # CH4 emissions from GLOBIOM + r'^(land_out CH4.*\|)Awm': r'\1Manure Management', r'^land_out CH4\|Emissions\|Ch4\|Land Use\|Agriculture\|': 'Emissions|CH4|AFOLU|Agriculture|Livestock|', - r'^(land_out CH4.*\|)Awm': r'\1Manure Management', r'^land_out CH4\|': '', # Strip internal prefix # Prices From 22cf0753188ce0e13dae2106cb10916e56ec7523 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 14:02:58 +0200 Subject: [PATCH 078/220] Sort technology names involved in CH4 emissions reporting --- message_ix_models/data/report/global.yaml | 41 +++++++++-------------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index d4200884ef..0f2f28b191 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -45,9 +45,10 @@ units: # Aggregate across dimensions of single quantities # -# - Corresponds to ixmp.Reporter.aggregate via reporting.core.add_aggregate +# - Corresponds to ixmp.Reporter.aggregate via reporting.core.add_aggregate. # - The dimension `_dim` is not removed; it gains new labels that are the sum # of the listed members. Basically regrouping over one dimension. +# - Keep members in alphabetical order. aggregate: # Quantities to aggregate - _quantities: [in, out] @@ -136,57 +137,47 @@ aggregate: _tag: CH4_0 _dim: t - Waste: [CH4_WasteBurnEM, CH4_DomWasteWa, CH4_IndWasteWa, CH4n_landfills, - landfill_digester1, landfill_compost1, landfill_mechbio, landfill_heatprdn, - landfill_direct1, landfill_ele, landfill_flaring] + Waste: [CH4_WasteBurnEM, CH4_DomWasteWa, CH4_IndWasteWa, CH4n_landfills, landfill_compost1, landfill_digester1, landfill_direct1, landfill_ele, landfill_flaring, landfill_heatprdn, landfill_mechbio] Industrial Processes: [CH4_IndNonEnergyEM] AFOLU|Biomass Burning: [CH4_AgWasteEM] Heat: [bio_hpl, coal_hpl, foil_hpl, gas_hpl] - Electricity: [bio_istig, bio_ppl, coal_adv, coal_ppl_u, igcc, coal_ppl, - foil_ppl, gas_cc, gas_ppl, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl, - coal_adv_ccs, igcc_ccs, gas_cc_ccs, gas_ct, gas_htfc, bio_istig_ccs] + Electricity: [bio_istig_ccs, bio_istig, bio_ppl, coal_adv_ccs, coal_adv, coal_ppl_u, coal_ppl, foil_ppl, gas_cc_ccs, gas_cc, gas_ct, gas_htfc, gas_ppl, igcc_ccs, igcc, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl] # Fugitive - gas - Gases|Extraction: [gas_extr_1, gas_extr_2, gas_extr_3, gas_extr_4, gas_extr_5, - gas_extr_6, gas_extr_7, gas_extr_8, flaring_CO2] - Gases|Transportation: [gas_t_d_ch4, gas_t_d] + Gases|Extraction: [flaring_CO2, gas_extr_1, gas_extr_2, gas_extr_3, gas_extr_4, gas_extr_5, gas_extr_6, gas_extr_7, gas_extr_8] + Gases|Transportation: [gas_t_d, gas_t_d_ch4] Gases|Coal: [coal_gas] - Gases|Hydrogen: [h2_smr, h2_smr_ccs, h2_coal, h2_coal_ccs, h2_bio, h2_bio_ccs] + Gases|Hydrogen: [h2_bio_ccs, h2_bio, h2_coal_ccs, h2_coal, h2_smr_ccs, h2_smr] # Fugitive - liquid - Liquids|Extraction: [oil_extr_1_ch4, oil_extr_1, oil_extr_2_ch4, oil_extr_2, - oil_extr_3_ch4, oil_extr_3, oil_extr_4_ch4, oil_extr_4, oil_extr_5, - oil_extr_6, oil_extr_7, oil_extr_8] - Liquids|Transportation: [loil_t_d, foil_t_d, meth_t_d, eth_t_d] - Liquids|Oil: [ref_lol, ref_hil, SO2_scrub_ref] + Liquids|Extraction: [oil_extr_1, oil_extr_1_ch4, oil_extr_2, oil_extr_2_ch4, oil_extr_3, oil_extr_3_ch4, oil_extr_4, oil_extr_4_ch4, oil_extr_5, oil_extr_6, oil_extr_7, oil_extr_8] + Liquids|Transportation: [eth_t_d, foil_t_d, loil_t_d, meth_t_d] + Liquids|Oil: [ref_hil, ref_lol, SO2_scrub_ref] Liquids|Natural Gas: [meth_ng, meth_ng_ccs] Liquids|Coal: [meth_coal, meth_coal_ccs, syn_liq, syn_liq_ccs] Liquids|Biomass: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] # Fugitive - solid - Solids|Extraction: [coal_extr_ch4, coal_extr, lignite_extr] - Solids|Transportation: [coal_t_d, biomass_t_d] + Solids|Extraction: [coal_extr, coal_extr_ch4, lignite_extr] + Solids|Transportation: [biomass_t_d, coal_t_d] # Demand - CH4 rescomm: [sp_el_RC, solar_pv_RC, h2_fc_RC, coal_rc, foil_rc, loil_rc, - gas_rc, elec_rc, biomass_rc, heat_rc, meth_rc, eth_rc, h2_rc, hp_el_rc, - hp_gas_rc, solar_rc, biomass_nc, other_sc] - CH4 transport: [coal_trp, foil_trp, loil_trp, gas_trp, elec_trp, meth_ic_trp, - eth_ic_trp, meth_fc_trp, eth_fc_trp, h2_fc_trp] + CH4 rescomm: [biomass_nc, biomass_rc, coal_rc, elec_rc, eth_rc, foil_rc, gas_rc, h2_fc_RC, h2_rc, heat_rc, hp_el_rc, hp_gas_rc, loil_rc, meth_rc, other_sc, solar_pv_RC, solar_rc, sp_el_RC] + CH4 transport: [coal_trp, elec_trp, eth_fc_trp, eth_ic_trp, foil_trp, gas_trp, h2_fc_trp, loil_trp, meth_fc_trp, meth_ic_trp] # Second stage of CH4 aggregation - _quantities: [emi::CH4_0] _tag: '1' _dim: t - Fugitive: [Gases|Extraction, Gases|Transportation, Gases|Coal, Gases|Hydrogen, Liquids|Extraction, Liquids|Transportation, Liquids|Oil, Liquids|Gas, Liquids|Coal, Liquids|Biomass, Solids|Extraction, Solids|Transportation] + Fugitive: [Gases|Coal, Gases|Extraction, Gases|Hydrogen, Gases|Transportation, Liquids|Biomass, Liquids|Coal, Liquids|Extraction, Liquids|Gas, Liquids|Oil, Liquids|Transportation, Solids|Extraction, Solids|Transportation] # Third stage of CH4 aggregation - _quantities: [emi::CH4_0+1] _tag: '2' _dim: e - CH4: [CH4_Emission, CH4_nonenergy, CH4_new_Emission, CH4_Emission_bunkers] + CH4: [CH4_Emission, CH4_Emission_bunkers, CH4_new_Emission, CH4_nonenergy] - _quantities: [in, out] _tag: t_d From 730fa85b541742778d34d22c024eb2dbb59ae661 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 14:17:46 +0200 Subject: [PATCH 079/220] Use output names directly for CH4 emissions from final energy use --- message_ix_models/data/report/global.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 0f2f28b191..2e47a2ac30 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -12,7 +12,8 @@ # # EDITING # -# - Wrap lines at 80 characters. +# - Keep lists of labels—technologies, etc.—in alphabetical. +# - Long lists can be on a single line. units: @@ -162,8 +163,8 @@ aggregate: Solids|Transportation: [biomass_t_d, coal_t_d] # Demand - CH4 rescomm: [biomass_nc, biomass_rc, coal_rc, elec_rc, eth_rc, foil_rc, gas_rc, h2_fc_RC, h2_rc, heat_rc, hp_el_rc, hp_gas_rc, loil_rc, meth_rc, other_sc, solar_pv_RC, solar_rc, sp_el_RC] - CH4 transport: [coal_trp, elec_trp, eth_fc_trp, eth_ic_trp, foil_trp, gas_trp, h2_fc_trp, loil_trp, meth_fc_trp, meth_ic_trp] + Energy|Demand|Residential and Commercial: [biomass_nc, biomass_rc, coal_rc, elec_rc, eth_rc, foil_rc, gas_rc, h2_fc_RC, h2_rc, heat_rc, hp_el_rc, hp_gas_rc, loil_rc, meth_rc, other_sc, solar_pv_RC, solar_rc, sp_el_RC] + Energy|Demand|Transportation|Road Rail and Domestic Shipping: [coal_trp, elec_trp, eth_fc_trp, eth_ic_trp, foil_trp, gas_trp, h2_fc_trp, loil_trp, meth_fc_trp, meth_ic_trp] # Second stage of CH4 aggregation - _quantities: [emi::CH4_0] @@ -547,9 +548,9 @@ iamc: select: t: - AFOLU|Biomass Burning - - CH4 rescomm - - CH4 transport - Electricity + - Energy|Demand|Residential and Commercial + - Energy|Demand|Transportation|Road Rail and Domestic Shipping - Fugitive - Gases|Coal - Gases|Extraction @@ -568,7 +569,7 @@ iamc: - Waste # CH4 emissions from GLOBIOM -# - The variable name signals utils.collapse to make some replacement, then is +# - The variable name signals utils.collapse to make some replacements, then is # removed. - variable: land_out CH4 base: land_out:n-s-y-c:CH4_0+1+2 From 96818bc7d8e10c77c873a78d43b4cfef60137c82 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 14:18:08 +0200 Subject: [PATCH 080/220] Expand docs of reporting.util.collapse --- message_ix_models/report/util.py | 91 ++++++++++++++++---------------- 1 file changed, 45 insertions(+), 46 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index a48b446cad..d2bb19a941 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -2,9 +2,10 @@ #: Replacements used in :meth:`collapse`. -REPLACE = { - # Applied to whole values along each dimension. These columns have - # str.title() applied before these replacements. +#: +#: - Applied to whole strings along each dimension. +#: - These columns have str.title() applied before these replacements +REPLACE_DIMS = { 'c': { 'Crudeoil': 'Oil', 'Electr': 'Electricity', @@ -17,51 +18,49 @@ 'l': { 'Final Energy': 'Final Energy|Residential', }, - 't': { - 'Ch4 Rescomm': 'Energy|Demand|Residential and Commercial', - 'Ch4 Transport': - 'Energy|Demand|Transportation|Road Rail and Domestic Shipping', - }, + 't': {}, +} + +#: Replacements used in :meth:`collapse` after the 'variable' column is +#: assembled. +#: +#: - Applied in sequence, from first to last. +#: - Partial string matches. +#: - Handled as regular expressions; see https://regex101.com and +#: https://docs.python.org/3/library/re.html. +REPLACE_VARS = { + # CH4 emissions from MESSAGE technologies + r'(Emissions\|CH4)\|Fugitive': r'\1|Energy|Supply|Fugitive', + r'(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)': + r'\1|Energy|Supply|\2|Fugitive', + + # CH4 emissions from GLOBIOM + r'^(land_out CH4.*\|)Awm': r'\1Manure Management', + r'^land_out CH4\|Emissions\|Ch4\|Land Use\|Agriculture\|': + 'Emissions|CH4|AFOLU|Agriculture|Livestock|', + r'^land_out CH4\|': '', # Strip internal prefix + + # Prices + r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', + r'Residential\|Gas': 'Residential|Gases|Natural Gas', + r"Import Energy\|Lng": "Primary Energy|Gas", + r"Import Energy\|Coal": "Primary Energy|Coal", + r"Import Energy\|Oil": "Primary Energy|Oil", + r"Import Energy\|(Liquids|Oil)": r"Secondary Energy|\1", + r"Import Energy\|(Liquids|Biomass)": r"Secondary Energy|\1", + r"Import Energy\|Lh2": "Secondary Energy|Hydrogen", - # Applied after the variable column is assembled. - # - Applied in sequence. - # - Partial string replacement. - # - Handled as regular expressions; see https://regex101.com and - # https://docs.python.org/3/library/re.html. - 'variable': { - # CH4 emissions from MESSAGE technologies - r'(Emissions\|CH4)\|Fugitive': r'\1|Energy|Supply|Fugitive', - r'(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)$': - r'\1|Energy|Supply|\2|Fugitive', - - # CH4 emissions from GLOBIOM - r'^(land_out CH4.*\|)Awm': r'\1Manure Management', - r'^land_out CH4\|Emissions\|Ch4\|Land Use\|Agriculture\|': - 'Emissions|CH4|AFOLU|Agriculture|Livestock|', - r'^land_out CH4\|': '', # Strip internal prefix - - # Prices - r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', - r'Residential\|Gas': 'Residential|Gases|Natural Gas', - r"Import Energy\|Lng": "Primary Energy|Gas", - r"Import Energy\|Coal": "Primary Energy|Coal", - r"Import Energy\|Oil": "Primary Energy|Oil", - r"Import Energy\|(Liquids|Oil)": r"Secondary Energy|\1", - r"Import Energy\|(Liquids|Biomass)": r"Secondary Energy|\1", - r"Import Energy\|Lh2": "Secondary Energy|Hydrogen", - - } } def collapse(df, var_name, var=[], region=[], replace_common=True): """Callback for the `collapse` argument to :meth:`.convert_pyam`. - Simplified from :meth:`message_ix.reporting.pyam.collapse_message_cols`. - The dimensions listed in the `var` and `region` arguments are automatically dropped from the returned :class:`.IamDataFrame`. + Adapted from :meth:`message_ix.reporting.pyam.collapse_message_cols`. + Parameters ---------- var_name : str @@ -72,18 +71,18 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): region : list of str, optional Dimensions to concatenate to the 'Region' column. replace_common : bool, optional - If :obj:`True` (the default), use :data`REPLACE` to perform standard - replacements on columns before and after assembling the 'Variable' - column. + If :obj:`True` (the default), use :data:`REPLACE_DIMS` and + :data:`REPLACE_VARS` to perform standard replacements on columns before + and after assembling the 'Variable' column. See also -------- .core.add_iamc_table """ if replace_common: - for dim in 'clt': - if dim in df.columns: - df[dim] = df[dim].astype(str).str.title() + # Convert dimension labels to title-case strings + for dim in filter(lambda d: d in df.columns, REPLACE_DIMS.keys()): + df[dim] = df[dim].astype(str).str.title() try: # Level: to title case, add the word 'energy' @@ -99,7 +98,7 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): pass # Apply replacements - df = df.replace(REPLACE) + df = df.replace(REPLACE_DIMS) # Extend region column ('n' and 'nl' are automatically added by message_ix) df['region'] = df['region'].astype(str) \ @@ -112,7 +111,7 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): # TODO roll this into the rename_vars argument of message_ix...as_pyam() if replace_common: # Apply variable name partial replacements - for pat, repl in REPLACE['variable'].items(): + for pat, repl in REPLACE_VARS.items(): df['variable'] = df['variable'].str.replace(pat, repl) # Drop same columns From 23da9ce3649d508cc61c0309d32431a562ccfd06 Mon Sep 17 00:00:00 2001 From: Francesco Lovat Date: Thu, 16 Apr 2020 14:41:58 +0200 Subject: [PATCH 081/220] Correct intersphinx cross-references in reporting docs --- message_ix_models/report/core.py | 23 +++++++++++++---------- message_ix_models/report/util.py | 9 +++++---- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index cf6fb64dfc..bf826ea571 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -136,9 +136,9 @@ def prepare_reporter(scenario, config, key, output_path=None): def add_aggregate(rep: Reporter, info): - """Add one entry from the 'aggregates:' section of a config file. + """Add one entry from the 'aggregate:' section of a config file. - Each entry uses :meth:`~.message_ix.reporting.Reporter.aggregate` to + Each entry uses :meth:`~.ixmp.reporting.Reporter.aggregate` to compute sums across labels within one dimension of a quantity. The entry *info* must contain: @@ -258,19 +258,20 @@ def add_combination(rep: Reporter, info): def add_iamc_table(rep: Reporter, info): """Add one entry from the 'iamc:' section of a config file. - Each entry uses :meth:`.Reporter.convert_pyam` (plus extra computations) to - reformat data from the internal :class:`.Quantity` data structure into a + Each entry uses :meth:`message_ix.reporting.Reporter.convert_pyam` + (plus extra computations) to reformat data from the internal + :class:`ixmp.reporting.Quantity` data structure into a :class:`pyam.IamDataFrame`. The entry *info* must contain: - **variable** (:class:`str`): variable name. This is used two ways: it is placed in 'Variable' column of the resulting IamDataFrame; and the - reporting key to :meth:`~.Reporter.get` the data frame is + reporting key to :meth:`~ixmp.reporting.Reporter.get` the data frame is ``:iamc``. - **base** (:class:`str`): key for the quantity to convert. - - **select** (:class:`dict`, optional): keword arguments to - :meth:`~.Quantity.sel`. + - **select** (:class:`dict`, optional): keyword arguments to + :meth:`ixmp.reporting.Quantity.sel`. - **group_sum** (2-:class:`tuple`, optional): `group` and `sum` arguments to :func:`.group_sum`. - **year_time_dim** (:class:`str`, optional): Dimension to use for the IAMC @@ -282,7 +283,8 @@ def add_iamc_table(rep: Reporter, info): convert_pyam). Additional entries are passed as keyword arguments to :func:`.collapse`, - which is then given as the `collapse` callback for :meth:`.convert_pyam`. + which is then given as the `collapse` callback for + :meth:`~message_ix.reporting.Reporter.convert_pyam`. :func:`.collapse` formats the 'Variable' column of the IamDataFrame. The variable name replacements from the 'iamc variable names:' section of @@ -364,12 +366,13 @@ def add_general(rep: Reporter, info): - **comp**: this refers to the name of a computation that is available in the namespace of :mod:`message_data.reporting.computations`. If - 'product', then :meth:`ixmp.Reporter.add_product` is called instead. + 'product', then :meth:`ixmp.reporting.Reporter.add_product` is called + instead. - **key**: the key for the computed quantity. - **inputs**: a list of keys to which the computation is applied. - **args** (:class:`dict`, optional): keyword arguments to the computation. - **add args** (:class:`dict`, optional): keyword arguments to - :meth:`ixmp.Reporter.add` itself. + :meth:`ixmp.reporting.Reporter.add` itself. """ inputs = infer_keys(rep, info.get('inputs', [])) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index d2bb19a941..8a0e174376 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -4,7 +4,7 @@ #: Replacements used in :meth:`collapse`. #: #: - Applied to whole strings along each dimension. -#: - These columns have str.title() applied before these replacements +#: - These columns have :meth:`str.title` applied before these replacements REPLACE_DIMS = { 'c': { 'Crudeoil': 'Oil', @@ -54,12 +54,13 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): - """Callback for the `collapse` argument to :meth:`.convert_pyam`. + """Callback for the `collapse` argument to + :meth:`message_ix.reporting.Reporter.convert_pyam`. The dimensions listed in the `var` and `region` arguments are automatically - dropped from the returned :class:`.IamDataFrame`. + dropped from the returned :class:`pyam.IamDataFrame`. - Adapted from :meth:`message_ix.reporting.pyam.collapse_message_cols`. + Adapted from :func:`message_ix.reporting.pyam.collapse_message_cols`. Parameters ---------- From de0dac2bc8107d1605c99e08580d48c538fc131d Mon Sep 17 00:00:00 2001 From: Francesco Lovat Date: Fri, 17 Apr 2020 18:04:03 +0200 Subject: [PATCH 082/220] Correct code example typo in docstring of reporting.core.add_aggregate() --- message_ix_models/report/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index bf826ea571..d103e79a0b 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -156,7 +156,7 @@ def add_aggregate(rep: Reporter, info): .. code-block:: yaml - aggregates: + aggregate: - _quantities: [foo, bar] _tag: aggregated _dim: a From 755144f47bde8257eeb3cfa6fe7e0b7eb19fa30b Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 31 Jul 2020 17:31:20 +0200 Subject: [PATCH 083/220] Import apply_units reporting comp from ixmp --- message_ix_models/report/computations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 223fffe6a4..e51a8e0128 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -6,7 +6,7 @@ import logging # TODO shouldn't be necessary to have so many imports; tidy up -from ixmp.reporting.computations import select # noqa: F401 +from ixmp.reporting.computations import apply_units, select # noqa: F401 from ixmp.reporting.utils import collect_units from message_ix.reporting.computations import * # noqa: F401,F403 from message_ix.reporting.computations import concat From a5da3ac268453cf3d6fc3c50d0ca9623b6497db7 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Apr 2020 12:29:15 +0200 Subject: [PATCH 084/220] Report emissions of F-gases - Changes as of head of branch for #90. --- message_ix_models/data/report/global.yaml | 56 +++++++++++++++++++++++ message_ix_models/data/report/gwp.csv | 16 +++++++ 2 files changed, 72 insertions(+) create mode 100644 message_ix_models/data/report/gwp.csv diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 2e47a2ac30..816718bdaf 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -33,6 +33,13 @@ units: # Temporary: requires changes in iiasa/message_data#115 emission_factor: 'Mt / year' +files: +- path: ./gwp.csv + key: gwp:e-gwp_source + dims: + message_act_name: e + gwp: gwp_source + # Filters # @@ -226,6 +233,11 @@ aggregate: methanol: [meth_exp] oil: [oil_exp, loil_exp, foil_exp] +# Emission _SF6 & retr_fgases +- _quantities: [emi] + _tag: emissions + _dim: t-e + # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination @@ -311,6 +323,29 @@ combine: - quantity: land_out::CH4_0+1 weight: 0.025 +# SF6 emissions +# Unit: kt SF6/yr +- key: SF6:nl-ya + inputs: + - quantity: emi::emissions + select: {e: ['SF6_Emission']} + weight: 1000 + +# retr_fgases emissions +- key: retr_fgases:nl-ya + inputs: + - quantity: emi::emissions + select: {e:['SF6'] } + weight: gwp_e # conversion factor to Mt-CO2 equivalent(from old reporting) + - quantity: emi::emissions + select: {e:['CF4'] } + weight: gwp_e # conversion factor to Mt-CO2 equivalent(from IPCC ) + # from old reporting + - quantity: emi::emissions + select: {e:['HFC'] } + weight: gwp_e + + # Prices - key: price_carbon:n-y @@ -441,6 +476,12 @@ general: units: 'Mt / year' sums: true +- key: emi gwp + comp: product + inputs: + - emi + - gwp + # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py # inputs: [wind curtailment, wind ref, wind res] @@ -474,6 +515,8 @@ price_iamc: &price_iamc unit: USD_2010 / GJ year_time_dim: y +emis_iamc: &emis_iamc + # Replacements for entire variable name strings iamc variable names: @@ -576,6 +619,14 @@ iamc: year_time_dim: y var: [c, s] +# SF6 emissions +- variable: emis|SF6_Emission + base: SF6:nl-ya + # <<: *emis_iamc + +- variable: emis|retr_fgases + base: retr_fgases:nl-ya + # Prices # Preferred method: convert all the contents of the variable at once. - variable: Price @@ -659,6 +710,11 @@ report: - GDP|MER:iamc - GDP|PPP:iamc +- key: emissions + members: + - emis|SF6_Emission:iamc + - emis|retr_fgases:iamc + - key: CH4 emissions members: - Emissions|CH4:iamc diff --git a/message_ix_models/data/report/gwp.csv b/message_ix_models/data/report/gwp.csv new file mode 100644 index 0000000000..4dcf884d9a --- /dev/null +++ b/message_ix_models/data/report/gwp.csv @@ -0,0 +1,16 @@ +common_name,chemical_formula,message_act_name,category,gwp,value +HFC-134a,CH2FCF3,HFC,hfc,SAR,1300 +Sulfurhexafluoride,SF6,SF6,perfluorinated_compounds,SAR,23900 +PFC-14,CF4,CF4,perfluorinated_compounds,SAR,6500 +Carbondioxide,CO2,CO2,main,AR4,1 +Methane,CH4,CH4,main,AR4,25 +Nitrousoxide,N2O,N2O,main,AR4,298 +HFC-134a,CH2FCF3,HFC,hfc,AR4,1430 +Sulfurhexafluoride,SF6,SF6,perfluorinated_compounds,AR4,22800 +PFC-14,CF4,CF4,perfluorinated_compounds,AR4,7390 +Carbondioxide,CO2,CO2,main,AR5,1 +Methane,CH4,CH4,main,AR5,28 +Nitrousoxide,N2O,N2O,main,AR5,265 +HFC-134a,CH2FCF3,HFC,hfc,AR5,1300 +Sulfurhexafluoride,SF6,SF6,perfluorinated_compounds,AR5,23500 +PFC-14,CF4,CF4,perfluorinated_compounds,AR5,6630 From 60d1f01d6a176ee311cc7fba1ffd659dd628f581 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Apr 2020 13:56:58 +0200 Subject: [PATCH 085/220] Add computations.gwp_factors --- message_ix_models/report/computations.py | 45 ++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index e51a8e0128..7146ac85e3 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -2,10 +2,13 @@ Some of these may migrate upstream to message_ix or ixmp in the future. """ -from itertools import zip_longest +import itertools import logging # TODO shouldn't be necessary to have so many imports; tidy up +from iam_units import convert_gwp +from iam_units.emissions import SPECIES +from ixmp.reporting import Quantity from ixmp.reporting.computations import apply_units, select # noqa: F401 from ixmp.reporting.utils import collect_units from message_ix.reporting.computations import * # noqa: F401,F403 @@ -83,6 +86,42 @@ def combine(*quantities, select=None, weights=None): # noqa: F811 return result +def gwp_factors(): + """Use :mod:`iam_units` to generate a Quantity of GWP factors. + + The quantity is dimensionless, e.g. for converting [mass] to [mass], and + has dimensions: + + - 'gwp metric': the name of a GWP metric, e.g. 'SAR', 'AR4', 'AR5'. All + metrics are on a 100-year basis. + - 'e': emissions species, as in MESSAGE. The entry 'HFC' is added as an + alias for the species 'HFC134a' from iam_units. + - 'e equivalent': GWP-equivalent species, always 'CO2e'. + """ + dims = ['gwp metric', 'e', 'e equivalent'] + metric = ['SARGWP100', 'AR4GWP100', 'AR5GWP100'] + species_to = ['CO2e'] # Add to this list to perform additional conversions + + data = [] + for m, s_from, s_to in itertools.product(metric, SPECIES, species_to): + # Get the conversion factor from iam_units + factor = convert_gwp(m, (1, 'kg'), s_from, s_to).magnitude + + # MESSAGEix-GLOBIOM uses e='HFC' to refer to this species + if s_from == 'HFC134a': + s_from = 'HFC' + + # Store entry + data.append((m[:3], s_from, s_to, factor)) + + # Convert to Quantity object and return + return Quantity( + pd.DataFrame(data, columns=dims + ['value']) + .set_index(dims)['value'] + .dropna() + ) + + def group_sum(qty, group, sum): """Group by dimension *group*, then sum across dimension *sum*. @@ -117,7 +156,9 @@ def update_scenario(scenario, *quantities, params=[]): log.info("Update '{0.model}/{0.scenario}#{0.version}'".format(scenario)) scenario.check_out() - for order, (qty, par_name) in enumerate(zip_longest(quantities, params)): + for order, (qty, par_name) in enumerate( + itertools.zip_longest(quantities, params) + ): if not isinstance(qty, pd.DataFrame): # Convert a Quantity to a DataFrame par_name = qty.name From f61b145c8ec73c8611add4a0e9f17e1c741bfdfd Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Apr 2020 14:27:59 +0200 Subject: [PATCH 086/220] Simplify YAML configuration for emissions reporting --- message_ix_models/data/report/global.yaml | 97 ++++++++++------------- 1 file changed, 42 insertions(+), 55 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 816718bdaf..749c453552 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -33,12 +33,16 @@ units: # Temporary: requires changes in iiasa/message_data#115 emission_factor: 'Mt / year' -files: -- path: ./gwp.csv - key: gwp:e-gwp_source - dims: - message_act_name: e - gwp: gwp_source +# Files with external data +# +# Entries are keyword arguments to ixmp.Reporter.add_file() + +# files: +# - path: ./foo.csv +# key: gwp:e-gwp_source +# dims: +# message_act_name: e +# gwp: gwp_source # Filters @@ -234,9 +238,11 @@ aggregate: oil: [oil_exp, loil_exp, foil_exp] # Emission _SF6 & retr_fgases -- _quantities: [emi] - _tag: emissions - _dim: t-e +- _quantities: [emi CO2e] + _tag: agg + _dim: e + + F gases: [SF6, CF4, HFC] # Create new quantities by weighted sum across multiple quantities @@ -323,28 +329,6 @@ combine: - quantity: land_out::CH4_0+1 weight: 0.025 -# SF6 emissions -# Unit: kt SF6/yr -- key: SF6:nl-ya - inputs: - - quantity: emi::emissions - select: {e: ['SF6_Emission']} - weight: 1000 - -# retr_fgases emissions -- key: retr_fgases:nl-ya - inputs: - - quantity: emi::emissions - select: {e:['SF6'] } - weight: gwp_e # conversion factor to Mt-CO2 equivalent(from old reporting) - - quantity: emi::emissions - select: {e:['CF4'] } - weight: gwp_e # conversion factor to Mt-CO2 equivalent(from IPCC ) - # from old reporting - - quantity: emi::emissions - select: {e:['HFC'] } - weight: gwp_e - # Prices @@ -476,11 +460,16 @@ general: units: 'Mt / year' sums: true -- key: emi gwp +- key: gwp factors:gwp metric-e-e equivalent + comp: gwp_factors + add args: + sums: true + index: true +- key: emi CO2e comp: product inputs: - emi - - gwp + - gwp factors # - key: wind onshore # operation: share_curtailment # Refers to a method in computations.py @@ -501,21 +490,19 @@ general: # # - Ending a line with '&label' defines a YAML anchor. # - Using the YAML alias '<<: *label' re-uses the referenced keys. -# -pe_iamc: &pe_iamc - drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' - - c - - l - - m - - nd - - 'no' # Bare no is a special YAML value for False, so must quote here. - - t - -price_iamc: &price_iamc - unit: USD_2010 / GJ - year_time_dim: y +iamc formats: + primary energy: &pe_iamc + drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' + - c + - l + - m + - nd + - 'no' # Bare no is a special YAML value for False, so must quote here. + - t -emis_iamc: &emis_iamc + price_iamc: &price_iamc + unit: USD_2010 / GJ + year_time_dim: y # Replacements for entire variable name strings @@ -620,12 +607,13 @@ iamc: var: [c, s] # SF6 emissions -- variable: emis|SF6_Emission - base: SF6:nl-ya - # <<: *emis_iamc - -- variable: emis|retr_fgases - base: retr_fgases:nl-ya +- variable: Emissions + # Auto sum over t, yv, m, h + base: emi CO2e:nl-ya-e-gwp metric-e equivalent:agg + var: # Add these to 'variable' column + - e + - e equivalent + - gwp metric # Prices # Preferred method: convert all the contents of the variable at once. @@ -712,8 +700,7 @@ report: - key: emissions members: - - emis|SF6_Emission:iamc - - emis|retr_fgases:iamc + - Emissions:iamc - key: CH4 emissions members: From e8d441caadfd6b755438cdab8ebbf17546b1d287 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Apr 2020 14:28:07 +0200 Subject: [PATCH 087/220] Add reporting.util.collapse_gwp_info --- message_ix_models/report/computations.py | 4 ++-- message_ix_models/report/util.py | 29 ++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 7146ac85e3..7a8581a54f 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -96,11 +96,11 @@ def gwp_factors(): metrics are on a 100-year basis. - 'e': emissions species, as in MESSAGE. The entry 'HFC' is added as an alias for the species 'HFC134a' from iam_units. - - 'e equivalent': GWP-equivalent species, always 'CO2e'. + - 'e equivalent': GWP-equivalent species, always 'CO2'. """ dims = ['gwp metric', 'e', 'e equivalent'] metric = ['SARGWP100', 'AR4GWP100', 'AR5GWP100'] - species_to = ['CO2e'] # Add to this list to perform additional conversions + species_to = ['CO2'] # Add to this list to perform additional conversions data = [] for m, s_from, s_to in itertools.product(metric, SPECIES, species_to): diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 8a0e174376..79a37eef70 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,3 +1,4 @@ +from iam_units import format_mass from ixmp.reporting import Key @@ -98,6 +99,9 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): except KeyError: pass + if 'emissions' in var_name.lower(): + df, var = collapse_gwp_info(df, var) + # Apply replacements df = df.replace(REPLACE_DIMS) @@ -119,6 +123,31 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): return df.drop(var + region, axis=1) +def collapse_gwp_info(df, var): + """:meth:`collapse` helper for emissions data with GWP dimensions. + + The dimensions 'e equivalent', and 'gwp metric' dimensions are combined + with the 'e' dimension, using a format like:: + + '{e} ({e equivalent}-equivalent, {GWP metric} metric)' + + For example:: + + 'SF6 (CO2-equivalent, AR5 metric)' + """ + # Check that *df* contains the necessary columns + cols = ['e equivalent', 'gwp metric'] + assert all(c in df.columns for c in ['e'] + cols) + + # Format the column with original emissions species + df['e'] = df['e'] + ' (' + df['e equivalent'] + '-equivalent, ' \ + + df['gwp metric'] + ' metric)' + + # Remove columns from further processing + [var.remove(c) for c in cols] + return df.drop(cols, axis=1), var + + def infer_keys(reporter, key_or_keys, dims=[]): """Helper to guess complete keys in *reporter*.""" single = isinstance(key_or_keys, (str, Key)) From b70da1c980dd16935e436062e88a792002a1f9d6 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Apr 2020 14:50:29 +0200 Subject: [PATCH 088/220] Remove gwp.csv --- message_ix_models/data/report/gwp.csv | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 message_ix_models/data/report/gwp.csv diff --git a/message_ix_models/data/report/gwp.csv b/message_ix_models/data/report/gwp.csv deleted file mode 100644 index 4dcf884d9a..0000000000 --- a/message_ix_models/data/report/gwp.csv +++ /dev/null @@ -1,16 +0,0 @@ -common_name,chemical_formula,message_act_name,category,gwp,value -HFC-134a,CH2FCF3,HFC,hfc,SAR,1300 -Sulfurhexafluoride,SF6,SF6,perfluorinated_compounds,SAR,23900 -PFC-14,CF4,CF4,perfluorinated_compounds,SAR,6500 -Carbondioxide,CO2,CO2,main,AR4,1 -Methane,CH4,CH4,main,AR4,25 -Nitrousoxide,N2O,N2O,main,AR4,298 -HFC-134a,CH2FCF3,HFC,hfc,AR4,1430 -Sulfurhexafluoride,SF6,SF6,perfluorinated_compounds,AR4,22800 -PFC-14,CF4,CF4,perfluorinated_compounds,AR4,7390 -Carbondioxide,CO2,CO2,main,AR5,1 -Methane,CH4,CH4,main,AR5,28 -Nitrousoxide,N2O,N2O,main,AR5,265 -HFC-134a,CH2FCF3,HFC,hfc,AR5,1300 -Sulfurhexafluoride,SF6,SF6,perfluorinated_compounds,AR5,23500 -PFC-14,CF4,CF4,perfluorinated_compounds,AR5,6630 From 6cb3bfd46f493d60382cd677649c839f5676ee55 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Apr 2020 14:52:24 +0200 Subject: [PATCH 089/220] Expand comments for F-gas emissions reporting --- message_ix_models/data/report/global.yaml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 749c453552..6144d26166 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -237,12 +237,12 @@ aggregate: methanol: [meth_exp] oil: [oil_exp, loil_exp, foil_exp] -# Emission _SF6 & retr_fgases -- _quantities: [emi CO2e] +# Aggregate emissions species +- _quantities: [emi GWPe] _tag: agg _dim: e - F gases: [SF6, CF4, HFC] + F gases: [CF4, HFC, SF6] # Create new quantities by weighted sum across multiple quantities @@ -460,12 +460,14 @@ general: units: 'Mt / year' sums: true +# GWP factors retrieved from the iam_units package - key: gwp factors:gwp metric-e-e equivalent comp: gwp_factors add args: - sums: true index: true -- key: emi CO2e + +# Emissions converted to GWP-equivalent species +- key: emi GWPe comp: product inputs: - emi @@ -609,8 +611,8 @@ iamc: # SF6 emissions - variable: Emissions # Auto sum over t, yv, m, h - base: emi CO2e:nl-ya-e-gwp metric-e equivalent:agg - var: # Add these to 'variable' column + base: emi GWPe:nl-ya-e-gwp metric-e equivalent:agg + var: # Add these to 'variable' column; collapse_gwp_info() is applied - e - e equivalent - gwp metric From b2dd927d07bc803f45ba8155fbab8d5fa89abc90 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Apr 2020 14:58:08 +0200 Subject: [PATCH 090/220] Hide IAMC format YAML keys from Reporter.describe() --- message_ix_models/data/report/global.yaml | 2 +- message_ix_models/report/core.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 6144d26166..955048444b 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -492,7 +492,7 @@ general: # # - Ending a line with '&label' defines a YAML anchor. # - Using the YAML alias '<<: *label' re-uses the referenced keys. -iamc formats: +_iamc formats: primary energy: &pe_iamc drop: # Drop 'commodity', 'level', 'mode', 'node_dest', 'node_origin' - c diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index d103e79a0b..5263ea264d 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -122,6 +122,9 @@ def prepare_reporter(scenario, config, key, output_path=None): # Tidy the config dict by removing any YAML sections starting with '_' [config.pop(k) for k in list(config.keys()) if k.startswith('_')] + # Tidy the config dict by removing any YAML sections starting with '_' + [config.pop(k) for k in list(config.keys()) if k.startswith('_')] + # If needed, get the full key for *quantity* key = infer_keys(rep, key) From dc12836277b89a12d7f3dd1f8f17219a56a683ee Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 12:34:36 +0200 Subject: [PATCH 091/220] Add reporting.computations.select --- message_ix_models/report/computations.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 7a8581a54f..af918c1cfa 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -131,6 +131,28 @@ def group_sum(qty, group, sum): dim=group) +def select(qty, indexers, inverse=True): + """Select from *qty* based on *indexers*. + + Parameters + ---------- + qty : .Quantity + select : list of dict + Elements to be selected from each quantity. Must have the same number + of elements as `quantities`. + inverse : bool, optional + If :obj:`True`, *remove* the items in indexers instead of keeping them. + """ + if inverse: + new_indexers = {} + for dim, labels in indexers.items(): + new_indexers[dim] = list(filter(lambda l: l not in labels, + qty.coords[dim])) + indexers = new_indexers + + return qty.sel(indexers) + + def share_curtailment(curt, *parts): """Apply a share of *curt* to the first of *parts*. From ba0bfc35b1c4bb10fc9756a8fc003b5e296b9f77 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 14:22:45 +0200 Subject: [PATCH 092/220] Add reporting.computations.apply_units --- message_ix_models/report/computations.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index af918c1cfa..3ed2edd137 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -6,7 +6,7 @@ import logging # TODO shouldn't be necessary to have so many imports; tidy up -from iam_units import convert_gwp +from iam_units import convert_gwp, registry from iam_units.emissions import SPECIES from ixmp.reporting import Quantity from ixmp.reporting.computations import apply_units, select # noqa: F401 @@ -20,10 +20,22 @@ check_computation as transport_check ) - log = logging.getLogger(__name__) +def apply_units(qty, units): + """Simply apply *units* to *qty*.""" + existing = getattr(qty.attrs.get('_unit', {}), 'dimensionality', {}) + new_units = registry(units) + + if len(existing) and existing != new_units: + log.info(f'Overwriting {existing} with {new_units}') + + qty.attrs['_unit'] = new_units + + return qty + + def combine(*quantities, select=None, weights=None): # noqa: F811 """Sum distinct *quantities* by *weights*. From 5ccc48511cefec8fe2e99f38711a6eb8dbf1f4bf Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 14:54:15 +0200 Subject: [PATCH 093/220] Update F-gas emissions reporting in global.yaml --- message_ix_models/data/report/global.yaml | 51 +++++++++++++++++++---- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 955048444b..ed375a9d73 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -30,8 +30,11 @@ units: # FIXME 'carbon' is not a unit; these should be t, kt, Mt or similar PRICE_EMISSION: USD_2005 / carbon tax_emission: USD_2005 / carbon - # Temporary: requires changes in iiasa/message_data#115 - emission_factor: 'Mt / year' + # Inconsistent units. These quantities (and others computed from them) + # must be split apart into separate quantities with consistent units. + # Also applies to "emi". This value preserved because it works for the + # reporting of CH4 emissions. + emission_factor: "Mt / year" # Files with external data # @@ -238,7 +241,7 @@ aggregate: oil: [oil_exp, loil_exp, foil_exp] # Aggregate emissions species -- _quantities: [emi GWPe] +- _quantities: [emi::gwpe] _tag: agg _dim: e @@ -460,17 +463,46 @@ general: units: 'Mt / year' sums: true -# GWP factors retrieved from the iam_units package +# Remove elements from 'emi' so that the remainder have consistent units. +# 1. 'TCE' emissions. These appear to be used for some internal model purpose +# (maybe relations?) and have units 'tC'. +# 2. Water-related emissions. These have units '-'. +# +# TODO check if this is correct. If the actual units for different 'e' values +# are not the same, then add another 'comp: select' so that emi is split +# into two (or more) separate quantities, each with consistent units +- key: emi::_0 + comp: select + inputs: [emi] + args: + # Remove the elements below + inverse: true + indexers: + e: [TCE, + fresh_consumption, fresh_thermal_pollution, fresh_wastewater, + instream_consumption, + saline_consumption, saline_thermal_polution, saline_wastewater] + +# filters out elements with units other than 'kg / kWa'. The units +# of emission_factor are stored as 'kg / kWa', and 'ACT' is in GWa / year, so +# assigning kt / year gives correct results. +# +- key: emi:nl-t-yv-ya-m-e-h:ghg + inputs: [emi::_0] + comp: apply_units + args: + units: 'kt / year' # TODO check if this is correct + sums: true + +# GWP factors retrieved from the iam_units package. Dimensionless - key: gwp factors:gwp metric-e-e equivalent comp: gwp_factors - add args: - index: true # Emissions converted to GWP-equivalent species -- key: emi GWPe +- key: emi::gwpe comp: product inputs: - - emi + - emi::ghg - gwp factors # - key: wind onshore @@ -611,11 +643,12 @@ iamc: # SF6 emissions - variable: Emissions # Auto sum over t, yv, m, h - base: emi GWPe:nl-ya-e-gwp metric-e equivalent:agg + base: emi:nl-ya-e-gwp metric-e equivalent:gwpe+agg var: # Add these to 'variable' column; collapse_gwp_info() is applied - e - e equivalent - gwp metric + unit: Mt / year # Species captured in 'e equivalent' # Prices # Preferred method: convert all the contents of the variable at once. From 9224dbd5acad5088582288b923a01d7ab7d25b37 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Apr 2020 14:54:56 +0200 Subject: [PATCH 094/220] Tidy logging in reporting.core --- message_ix_models/report/core.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 5263ea264d..d103e79a0b 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -122,9 +122,6 @@ def prepare_reporter(scenario, config, key, output_path=None): # Tidy the config dict by removing any YAML sections starting with '_' [config.pop(k) for k in list(config.keys()) if k.startswith('_')] - # Tidy the config dict by removing any YAML sections starting with '_' - [config.pop(k) for k in list(config.keys()) if k.startswith('_')] - # If needed, get the full key for *quantity* key = infer_keys(rep, key) From f861310beb7e460d66ef5af5a44a1fb46b2d7621 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 14 Apr 2020 11:45:39 +0200 Subject: [PATCH 095/220] Remove computations.apply_units, .select - Moved upstream in iiasa/ixmp#312 --- message_ix_models/report/computations.py | 37 +----------------------- 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 3ed2edd137..2ff69d16e1 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -6,7 +6,7 @@ import logging # TODO shouldn't be necessary to have so many imports; tidy up -from iam_units import convert_gwp, registry +from iam_units import convert_gwp from iam_units.emissions import SPECIES from ixmp.reporting import Quantity from ixmp.reporting.computations import apply_units, select # noqa: F401 @@ -23,19 +23,6 @@ log = logging.getLogger(__name__) -def apply_units(qty, units): - """Simply apply *units* to *qty*.""" - existing = getattr(qty.attrs.get('_unit', {}), 'dimensionality', {}) - new_units = registry(units) - - if len(existing) and existing != new_units: - log.info(f'Overwriting {existing} with {new_units}') - - qty.attrs['_unit'] = new_units - - return qty - - def combine(*quantities, select=None, weights=None): # noqa: F811 """Sum distinct *quantities* by *weights*. @@ -143,28 +130,6 @@ def group_sum(qty, group, sum): dim=group) -def select(qty, indexers, inverse=True): - """Select from *qty* based on *indexers*. - - Parameters - ---------- - qty : .Quantity - select : list of dict - Elements to be selected from each quantity. Must have the same number - of elements as `quantities`. - inverse : bool, optional - If :obj:`True`, *remove* the items in indexers instead of keeping them. - """ - if inverse: - new_indexers = {} - for dim, labels in indexers.items(): - new_indexers[dim] = list(filter(lambda l: l not in labels, - qty.coords[dim])) - indexers = new_indexers - - return qty.sel(indexers) - - def share_curtailment(curt, *parts): """Apply a share of *curt* to the first of *parts*. From fc0b48c674a2f2a3986f837f3a1da614ea1df970 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 31 Jul 2020 19:14:12 +0200 Subject: [PATCH 096/220] Rewrite computations.combine using ixmp built-in computations --- message_ix_models/report/computations.py | 25 +++++++++--------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 2ff69d16e1..44b4027c26 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -11,6 +11,7 @@ from ixmp.reporting import Quantity from ixmp.reporting.computations import apply_units, select # noqa: F401 from ixmp.reporting.utils import collect_units +from message_ix.reporting import computations from message_ix.reporting.computations import * # noqa: F401,F403 from message_ix.reporting.computations import concat import pandas as pd @@ -55,31 +56,23 @@ def combine(*quantities, select=None, weights=None): # noqa: F811 raise ValueError(f'Cannot combine() units {units[0]} and {u}') units = units[0] - result = 0 - ref_dims = None - - for quantity, selector, weight in zip(quantities, select, weights): - ref_dims = ref_dims or quantity.dims + args = [] + for quantity, indexers, weight in zip(quantities, select, weights): # Select data - temp = quantity.sel(selector) + temp = computations.select(quantity, indexers) # Dimensions along which multiple values are selected - multi = [dim for dim, values in selector.items() - if isinstance(values, list)] - + multi = [ + dim for dim, values in indexers.items() if isinstance(values, list) + ] if len(multi): # Sum along these dimensions temp = temp.sum(dim=multi) - # .transpose() is necessary when Quantity is AttrSeries - if len(quantity.dims) > 1: - transpose_dims = tuple(filter(lambda d: d in temp.dims, ref_dims)) - print(transpose_dims) - temp = temp.transpose(*transpose_dims) - - result += weight * temp + args.append(weight * temp) + result = computations.add(*args) result.attrs['_unit'] = units return result From 68eca2b56b3dadedd8bc92300032a89c9b93635e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 31 Jul 2020 20:33:01 +0200 Subject: [PATCH 097/220] Log a warning and continue on missing columns in util.collapse_gwp_info --- message_ix_models/report/util.py | 37 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 79a37eef70..ca54e25b37 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,7 +1,11 @@ -from iam_units import format_mass +import logging + from ixmp.reporting import Key +log = logging.getLogger(__name__) + + #: Replacements used in :meth:`collapse`. #: #: - Applied to whole strings along each dimension. @@ -42,7 +46,7 @@ r'^land_out CH4\|': '', # Strip internal prefix # Prices - r'Residential\|(Biomass|Coal)': r'Residential|Solids|\1', + r'Residential\|(Biomass|Coal)': r"Residential|Solids|\1", r'Residential\|Gas': 'Residential|Gases|Natural Gas', r"Import Energy\|Lng": "Primary Energy|Gas", r"Import Energy\|Coal": "Primary Energy|Coal", @@ -50,18 +54,16 @@ r"Import Energy\|(Liquids|Oil)": r"Secondary Energy|\1", r"Import Energy\|(Liquids|Biomass)": r"Secondary Energy|\1", r"Import Energy\|Lh2": "Secondary Energy|Hydrogen", - } def collapse(df, var_name, var=[], region=[], replace_common=True): - """Callback for the `collapse` argument to - :meth:`message_ix.reporting.Reporter.convert_pyam`. + """Callback for the `collapse argument to :meth:`~.Reporter.convert_pyam. The dimensions listed in the `var` and `region` arguments are automatically dropped from the returned :class:`pyam.IamDataFrame`. - Adapted from :func:`message_ix.reporting.pyam.collapse_message_cols`. + Adapted from :func:`.pyam.collapse_message_cols`. Parameters ---------- @@ -73,13 +75,15 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): region : list of str, optional Dimensions to concatenate to the 'Region' column. replace_common : bool, optional - If :obj:`True` (the default), use :data:`REPLACE_DIMS` and - :data:`REPLACE_VARS` to perform standard replacements on columns before - and after assembling the 'Variable' column. + If :obj:`True` (the default), perform standard replacements on columns + before and after assembling the 'Variable' column, according to + ``REPLACE_DIMS`` and ``REPLACE_VARS``. See also -------- .core.add_iamc_table + REPLACE_DIMS + REPLACE_VARS """ if replace_common: # Convert dimension labels to title-case strings @@ -100,14 +104,18 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): pass if 'emissions' in var_name.lower(): + log.info(f"Collapse GWP info for {var_name}") df, var = collapse_gwp_info(df, var) # Apply replacements df = df.replace(REPLACE_DIMS) # Extend region column ('n' and 'nl' are automatically added by message_ix) - df['region'] = df['region'].astype(str) \ - .str.cat([df[c] for c in region], sep='|') + df['region'] = ( + df['region'] + .astype(str) + .str.cat([df[c] for c in region], sep='|') + ) # Assemble variable column df['variable'] = var_name @@ -136,8 +144,11 @@ def collapse_gwp_info(df, var): 'SF6 (CO2-equivalent, AR5 metric)' """ # Check that *df* contains the necessary columns - cols = ['e equivalent', 'gwp metric'] - assert all(c in df.columns for c in ['e'] + cols) + cols = ["e equivalent", "gwp metric"] + missing = set(["e"] + cols) - set(df.columns) + if len(missing): + log.warning(f"…skip; {missing} not in columns {list(df.columns)}") + return df, var # Format the column with original emissions species df['e'] = df['e'] + ' (' + df['e equivalent'] + '-equivalent, ' \ From 73a6d4da8116f3f1d64576950f75170f3696f491 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 31 Jul 2020 21:20:08 +0200 Subject: [PATCH 098/220] Replace non-units for price quantities --- message_ix_models/data/report/global.yaml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index ed375a9d73..1fb75fee1c 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -27,9 +27,10 @@ units: apply: GDP: billion USD_2005 / year PRICE_COMMODITY: USD_2010 / kWa - # FIXME 'carbon' is not a unit; these should be t, kt, Mt or similar - PRICE_EMISSION: USD_2005 / carbon - tax_emission: USD_2005 / carbon + # These were initially "carbon", which is not a unit. + # TODO check that Mt (rather than t or kt) is correct for all values. + PRICE_EMISSION: USD_2005 / Mt + tax_emission: USD_2005 / Mt # Inconsistent units. These quantities (and others computed from them) # must be split apart into separate quantities with consistent units. # Also applies to "emi". This value preserved because it works for the @@ -658,8 +659,10 @@ iamc: <<: *price_iamc - variable: Price|Carbon base: price_carbon:n-y - # FIXME "carbon_dioxide" is not a unit; this should be t, kt, Mt or similar - unit: USD_2010 / carbon_dioxide + # This was initially "carbon_dioxide", which is not a unit. + # TODO check that Mt (rather than t or kt) is correct. + # TODO check whether there is a species / GWP conversion here. + unit: USD_2010 / Mt year_time_dim: y # commented: see above # - variable: Price w/o carbon From facf4521763314379370586ed28f80eb1ae3cf65 Mon Sep 17 00:00:00 2001 From: francescolovat <56022262+francescolovat@users.noreply.github.com> Date: Fri, 21 Aug 2020 16:09:30 +0200 Subject: [PATCH 099/220] Report secondary energy (#120) * Add IAMC variable names in sections "iamc:" and "report:" * Create quantity for total electricity generation in "combine:" * Add biomass quantities and IAMC variable names * Rename variables in SE aggregation; simplify "iamc:" and "report:" sections * Move secondary_energy key to "general:" section to apply units over it * Add secondary energy solids to reporting * Add missing entries for secondary energy gases to reporting * Include @behnam-zakeri electricity reporting from #105 First of multiple steps. * Improve docstring of reporting.core.add_general() * Improve global.yaml to include secondary inputs & outputs The re-combine of the main outputs of some groups of technologies needs to be adressed e.g. ethanol, methanol, lightoil, etc. * Correct typo in gases:nl-ya and added the correct tag to qty 'out::' * Update docstring of reporting.core.add_general() * Correct typo in previous. * Reflow lines and comments in global.yaml * Comment unused share_cogeneration * Simplify regex replacement in reporting.util Co-authored-by: Paul Natsuo Kishimoto --- message_ix_models/data/report/global.yaml | 520 ++++++++++++++++++---- message_ix_models/report/computations.py | 6 + message_ix_models/report/core.py | 9 +- message_ix_models/report/util.py | 3 + 4 files changed, 451 insertions(+), 87 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 1fb75fee1c..13562a67df 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -1,29 +1,26 @@ # Configuration for reporting of the MESSAGEix-GLOBIOM global model # # Some groups in this file ('units', 'files', 'alias') are used by the -# ixmp.reporting and message_ix.reporting built-in configuration code. See: -# -# https://message.iiasa.ac.at/en/latest/reporting.html#ixmp.reporting.configure -# https://message.iiasa.ac.at/en/latest/ -# reporting.html#ixmp.reporting.Reporter.configure -# -# Others are used in reporting.core.prepare_reporter. +# ixmp.reporting and message_ix.reporting built-in configuration code. +# Others are used in message_data.reporting.core.prepare_reporter. # # # EDITING # -# - Keep lists of labels—technologies, etc.—in alphabetical. +# - Keep lists of labels—technologies, etc.—in alphabetical order. # - Long lists can be on a single line. units: - # Unit definitions are loaded from data/units == IAMconsortium/units; only - # add units here which are idiosyncrasies of MESSAGEix-GLOBIOM. + # Unit definitions are loaded from iam-units; only add units here which are + # idiosyncrasies of MESSAGEix-GLOBIOM. # define: | # USD = [value] + replace: '???': '' '-': '' + apply: GDP: billion USD_2005 / year PRICE_COMMODITY: USD_2010 / kWa @@ -84,48 +81,95 @@ aggregate: oil unconventional: [oil_extr_4_ch4, oil_extr_4, oil_extr_5, oil_extr_6, oil_extr_7, oil_extr_8] -- _quantities: [in, out] +- _quantities: + - in + # This quantity (defined below in 'general:') has the non-main outputs of + # dual-output technologies removed; e.g. for t=h2_coal, only c=hydrogen and + # not c=electr is included. + - out::se_1 + # Produces 'in::se' and 'out::se_1+se' _tag: se _dim: t - # Biomass - bio elec wo ccs: [bio_ppl, bio_istig] - bio elec w ccs: [bio_isitig_ccs] - bio eth wo ccs: [eth_bio, liq_bio] - bio eth w ccs: [eth_bio_ccs, liq_bio_ccs] - bio hydrogen wo ccs: [h2_bio] - bio hydrogen w ccs: [h2_bio_ccs] + # Electricity + # Electricity missing. + Electricity|Biomass: [bio_istig, bio_istig_ccs ,bio_ppl] + Electricity|Biomass|w/o CCS: [bio_istig, bio_ppl] + Electricity|Biomass|w/ CCS: [bio_istig_ccs] + Electricity|Coal: [coal_adv, coal_adv_ccs, coal_ppl, coal_ppl_u, igcc, igcc_ccs] + Electricity|Coal|w/o CCS: [coal_adv, coal_ppl, coal_ppl_u, igcc] + Electricity|Coal|w/ CCS: [coal_adv_ccs, igcc_ccs] + # Electricity|Fossil will be in 'combine:' section + Electricity|Gas: [gas_cc, gas_cc_ccs, gas_ct, gas_htfc, gas_ppl] + Electricity|Gas|w/o CCS: [gas_cc, gas_ct, gas_htfc, gas_ppl] + Electricity|Gas|w/ CCS: [gas_cc_ccs] + Electricity|Geothermal: [geo_ppl] + Electricity|Hydro: [hydro_hc, hydro_lc] + # Non-biomass in 'combine:' section + Electricity|Nuclear: [nuc_fbr, nuc_hc, nuc_lc] + Electricity|Oil: [foil_ppl, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl] + Electricity|Oil|w/o CCS: [foil_ppl, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl] + # Electricity|Other: + # TODO include missing and these 3 below in 'combine:' section, as an + # operation: + # Electricity|Fossil: [coal_adv, coal_adv_ccs, coal_ppl, coal_ppl_u, foil_ppl, gas_cc, gas_cc_ccs, gas_ct, gas_htfc, gas_ppl, igcc, igcc_ccs, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl] + # Electricity|Fossil|w/o CCS: [coal_ppl, coal_ppl_u, foil_ppl, gas_cc, gas_ct, gas_htfc, gas_ppl, igcc, loil_cc, loil_ppl, oil_ppl, SO2_scrub_ppl] + # Electricity|Fossil|w/ CCS: [coal_adv_ccs, gas_cc_ccs, igcc_ccs] + + # Gases + # Gases: in 'combine:' section + Gases|Biomass: [gas_bio] + Gases|Coal: [coal_gas] + # Notice NG imports are included here. + Gases|Natural Gas: [LNG_regas, gas_imp, gas_bal] + # TODO use an input-based calculation here. + Gases|Other: [h2_mix] + + # Heat + Heat: [bio_hpl, coal_hpl, gas_hpl, geo_hpl, foil_hpl, po_turbine] + Heat|Biomass: [bio_hpl] + Heat|Coal: [coal_hpl] + Heat|Gas: [gas_hpl] + Heat|Geothermal: [geo_hpl] + Heat|Oil: [foil_hpl] + Heat|Other: [po_turbine] + + # Hydrogen + Hydrogen: [h2_bio, h2_bio_ccs, h2_coal, h2_coal_ccs, h2_elec, h2_smr, h2_smr_ccs] + Hydrogen|Biomass: [h2_bio, h2_bio_ccs] # Skip electr + Hydrogen|Biomass|w/o CCS: [h2_bio] + Hydrogen|Biomass|w/ CCS: [h2_bio_ccs] + Hydrogen|Coal: [h2_coal, h2_coal_ccs] # Skip electr + Hydrogen|Coal|w/o CCS: [h2_coal] + Hydrogen|Coal|w/ CCS: [h2_coal_ccs] + Hydrogen|Electricity: [h2_elec] + Hydrogen|Fossil: [h2_coal, h2_coal_ccs, h2_smr, h2_smr_ccs] + Hydrogen|Fossil|w/o CCS: [h2_coal, h2_smr] + Hydrogen|Fossil|w/ CCS: [h2_coal_ccs, h2_smr_ccs] + Hydrogen|Gas: [h2_smr, h2_smr_ccs] + Hydrogen|Gas|w/o CCS: [h2_smr] + Hydrogen|Gas|w/ CCS: [h2_smr_ccs] + + # Liquids + # Liquids missing. Do the calculation in 'combine:' section + Liquids|Biomass: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] + Liquids|Biomass|w/o CCS: [eth_bio, liq_bio] + Liquids|Biomass|w/ CCS: [eth_bio_ccs, liq_bio_ccs] + Liquids|Coal: [meth_coal, meth_coal_ccs, syn_liq, syn_liq_ccs] + Liquids|Coal|w/o CCS: [syn_liq, meth_coal] + Liquids|Coal|w/ CCS: [syn_liq_ccs, meth_coal_ccs] + Liquids|Fossil: [meth_coal, meth_coal_ccs, meth_ng, meth_ng_ccs, ref_hil, ref_lol, syn_liq, syn_liq_ccs, SO2_scrub_ref] + Liquids|Fossil|w/o CCS: [syn_liq, meth_coal, meth_ng, meth_ng_ccs, ref_hil, ref_lol, SO2_scrub_ref] + Liquids|Fossil|w/ CCS: [syn_liq_ccs, meth_coal_ccs, meth_ng_ccs] + Liquids|Gas: [meth_ng, meth_ng_ccs] + Liquids|Gas|w/o CCS: [meth_ng] + Liquids|Gas|w/ CCS: [meth_ng_ccs] + Liquids|Oil: [ref_hil, ref_lol, SO2_scrub_ref] - # Coal - coal elec wo ccs: [coal_ppl, igcc, coal_adv] - coal elec w ccs: [igcc_ccs, coal_adv_ccs] - coal heat: [coal_hpl] - coal hydrogen wo ccs: [h2_coal_ccs] - coal loil wo ccs: [syn_liq] - coal loil w ccs: [syn_liq_ccs] - coal methanol wo ccs: [coal_meth] - coal methanol w ccs: [coal_meth_ccs] - - # Gas - gas elec wo ccs: [gas_ct, gas_cc, gas_ppl, gas_htfc] - gas elec w ccs: [gas_cc_ccs] - gas heat wo ccs: [gas_hpl] - gas hydrogen wo ccs: [h2_smr] - gas hydrogen w ccs: [h2_smr_ccs] - - # Geothermal - geothermal elec: [geo_ppl] - geothermal heat: [geo_hpl] - - # Hydro - hydro: [hydro_hc, hydro_lc] - - # Nuclear - nuclear: [nuc_lc, nuc_hc, nuc_fbr] - - # Oil - oil elec wo ccs: [foil_ppl, loil_ppl, oil_ppl, loil_cc] - oil heat: [foil_hpl] + # Solids + Solids: [biomass_i, biomass_nc, biomass_rc, coal_i, coal_fs, coal_rc, coal_trp] + Solids|Biomass: [biomass_i, biomass_nc, biomass_rc] + Solids|Coal: [coal_i, coal_fs, coal_rc, coal_trp] # Wind wind curtailment: [wind_curtailment1, wind_curtailment2, wind_curtailment3] @@ -133,21 +177,27 @@ aggregate: wind gen offshore: [wind_ref1, wind_ref2, wind_ref3, wind_ref4, wind_ref5] # Solar - solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, - solar_res5, solar_res6, solar_res7, solar_res8] + solar pv gen elec: [solar_res1, solar_res2, solar_res3, solar_res4, solar_res5, solar_res6, solar_res7, solar_res8] solar pv gen elec RC: [solar_pv_RC] solar pv gen elec I: [solar_pv_I] - solar pv curtailment: [solar_curtailment1, solar_curtailment2, - solar_curtailment3] - solar csp gen elec sm1: [csp_sm1_res, csp_sm1_res1, csp_sm1_res2, - csp_sm1_res3, csp_sm1_res4, csp_sm1_res5, - csp_sm1_res6, csp_sm1_res7] - solar csp gen elec sm3: [csp_sm3_res, csp_sm3_res1, csp_sm3_res2, - csp_sm3_res3, csp_sm3_res4, csp_sm3_res5, - csp_sm3_res6, csp_sm3_res7] + solar pv curtailment: [solar_curtailment1, solar_curtailment2, solar_curtailment3] + solar csp gen elec sm1: [csp_sm1_res, csp_sm1_res1, csp_sm1_res2, csp_sm1_res3, csp_sm1_res4, csp_sm1_res5, csp_sm1_res6, csp_sm1_res7] + solar csp gen elec sm3: [csp_sm3_res, csp_sm3_res1, csp_sm3_res2, csp_sm3_res3, csp_sm3_res4, csp_sm3_res5, csp_sm3_res6, csp_sm3_res7] solar csp gen heat rc: [solar_rc] solar csp gen heat i: [solar_i] + # Storage + storage elec: [stor_ppl] + + # Cogeneration + cogeneration plants: [bio_istig, bio_istig_ccs, bio_ppl, coal_adv, coal_adv_ccs, coal_ppl, coal_ppl_u, foil_ppl, gas_cc, gas_cc_ccs, gas_ct, gas_htfc, gas_ppl, geo_ppl, igcc_ccs, igcc, loil_cc, loil_ppl, nuc_hc, nuc_lc] + passout turbine: [po_turbine] + + # CO2 Scrubber + coal scrubber: [c_ppl_co2scr] + gas scrubber: [g_ppl_co2scr] + + # Emissions of CH4 - _quantities: [emi] _tag: CH4_0 @@ -195,18 +245,19 @@ aggregate: CH4: [CH4_Emission, CH4_Emission_bunkers, CH4_new_Emission, CH4_nonenergy] +# Transmission & distribution - _quantities: [in, out] _tag: t_d _dim: t biomass: [biomass_t_d] - coal: [coal_t_d-rc-06p, coal_t_d-in-06p, coal_t_d-in-SO2, coal_t_d-rc-SO2, - coal_t_d] + coal: [coal_t_d-rc-06p, coal_t_d-in-06p, coal_t_d-in-SO2, coal_t_d-rc-SO2, coal_t_d] elec: [elec_t_d] gas: [gas_t_d, gas_t_d_ch4] heat: [heat_t_d] oil: [loil_t_d, foil_t_d] +# Bunkers - _quantities: [in, out] _tag: bunker _dim: t @@ -216,6 +267,7 @@ aggregate: lh2: [LH2_bunker] oil: [loil_bunker, foil_bunker] +# Imports - _quantities: [in, out] _tag: import _dim: t @@ -223,11 +275,13 @@ aggregate: coal: [coal_imp] elec: [elec_imp] ethanol: [eth_imp] + # TODO check if LNG_imp should be included here. In old reporting it was not. gas: [LNG_imp, gas_imp] lh2: [lh2_imp] methanol: [meth_imp] oil: [oil_imp, loil_imp, foil_imp] +# Exports - _quantities: [in, out] _tag: export _dim: t @@ -248,6 +302,14 @@ aggregate: F gases: [CF4, HFC, SF6] +# Parent technologies that have addon +# - _quantities: ['addon pot'] +# _tag: addon_tecs +# _dim: type_addon +# +# cogeneration: [cogeneration_heat] +# scrubber: [scrubber_CO2_coal, scrubber_CO2_gas, scrubber_CO2_bio, scrubber_CO2_cement] + # Create new quantities by weighted sum across multiple quantities # - Parsed by reporting.core.add_combination @@ -298,14 +360,19 @@ combine: - key: solar:nl-ya inputs: - - quantity: out::se - select: {t: ['solar pv gen elec', 'solar pv gen elec RC', - 'solar pv gen elec I', 'solar csp gen elec sm1', - 'solar csp gen elec sm3', 'solar csp gen heat rc', - 'solar csp gen heat i']} - #, c: [electr]} + - quantity: out::se_1+se + select: + t: + - solar pv gen elec + - solar pv gen elec RC + - solar pv gen elec I + - solar csp gen elec sm1 + - solar csp gen elec sm3 + - solar csp gen heat rc + - solar csp gen heat i + # c: [electr] - quantity: in::se - select: {t: solar pv curtailment} #, c: [electr]} + select: {t: solar pv curtailment} #, c: [electr]} weight: -1 - key: se_trade:nl-ya @@ -318,12 +385,75 @@ combine: - key: wind:nl-ya inputs: - - quantity: out::se + - quantity: out::se_1+se select: {t: ['wind gen onshore', 'wind gen offshore']} - quantity: in::se select: {t: wind curtailment} weight: -1 +# TODO check if the sum of Electricity in aggregate:se should give the same +# values as the operation below +# - key: elec:nl-ya +# inputs: +# # Electricity going into the grid: [prod + exp - imp] +# - quantity: in::t_d +# select: {t: elec} +# # Minus electricity from imports, to obtain the net electricity production +# by conversion technologies +# - quantity: out::import +# select: {t: elec} +# weight: -1 +# # Plus electricity from exports +# - quantity: in::export +# select: {t: elec} + +- key: electr_fossil:nl-ya + inputs: + - quantity: out::se_1+se + # TOO check if this should include electr from h2_coal. + select: {t: Electricity|Coal} + - quantity: out::se_1+se + select: {t: Electricity|Gas} + - quantity: out::se_1+se + select: {t: Electricity|Oil} + +- key: electr_fossil_w/_ccs:nl-ya + inputs: + - quantity: out::se_1+se + select: {t: Electricity|Coal|w/ CCS} + - quantity: out::se_1+se + select: {t: Electricity|Gas|w/ CCS} + # - quantity: out::se_1+se + # select: {t: Electricity|Oil|w/ CCS} + +- key: electr_fossil_w/o_ccs:nl-ya + inputs: + - quantity: out::se_1+se + select: {t: Electricity|Coal|w/o CCS} + - quantity: out::se_1+se + select: {t: Electricity|Gas|w/o CCS} + - quantity: out::se_1+se + select: {t: Electricity|Oil|w/o CCS} + +- key: gases:nl-ya + inputs: + - quantity: out::se_1+se + select: {t: Gases|Biomass} + - quantity: out::se_1+se + select: {t: Gases|Coal} + - quantity: out::se_1+se + select: {t: Gases|Natural Gas} + - quantity: in::se + select: {t: Gases|Other} + +- key: liquids:nl-ya + inputs: + - quantity: out::se_1+se + select: {t: Liquids|Biomass} + - quantity: out::se_1+se + select: {t: Liquids|Fossil} + + # Emissions # CH4 emissions from GLOBIOM: apply a factor of 0.025 to land_out @@ -436,7 +566,197 @@ combine: # c: ["Price|Agriculture|Non-Energy Crops and Livestock|Index"] +# - Parsed by reporting.core.add_general general: +- key: Liquids:nl-ya + comp: apply_units + inputs: [liquids:nl-ya] + args: + units: 'GWa / year' + +- key: Gases:nl-ya + comp: apply_units + inputs: [gases:nl-ya] + args: + units: 'GWa / year' + +- key: Electricity|Fossil|w/o CCS:nl-ya + comp: apply_units + inputs: [electr_fossil_w/o_ccs:nl-ya] + args: + units: 'GWa / year' + +- key: Electricity|Fossil|w/ CCS:nl-ya + comp: apply_units + inputs: [electr_fossil_w/_ccs:nl-ya] + args: + units: 'GWa / year' + +- key: Electricity|Fossil:nl-ya + comp: apply_units + inputs: [electr_fossil:nl-ya] + args: + units: 'GWa / year' + +- key: secondary_energy:nl-t-ya + comp: select + inputs: [out:nl-t-ya:se_1+se] + args: + indexers: + t: + # - Electricity + - Electricity|Biomass + - Electricity|Biomass|w/ CCS + - Electricity|Biomass|w/o CCS + - Electricity|Coal + - Electricity|Coal|w/ CCS + - Electricity|Coal|w/o CCS + # - Electricity|Fossil + # - Electricity|Fossil|w/ CCS + # - Electricity|Fossil|w/o CCS + - Electricity|Gas + - Electricity|Gas|w/ CCS + - Electricity|Gas|w/o CCS + - Electricity|Geothermal + - Electricity|Hydro + # - Electricity|Non-Biomass Renewables + - Electricity|Nuclear + - Electricity|Oil + - Electricity|Oil|w/o CCS + # - Electricity|Other + # - Electricity|Solar + # - Electricity|Solar|CSP + # - Electricity|Solar|PV + # - Electricity|Storage Losses + # - Electricity|Transmission Losses + # - Electricity|Wind + # - Electricity|Wind|Offshore + # - Electricity|Wind|Onshore + # - Gases + - Gases|Biomass + - Gases|Coal + - Gases|Natural Gas + - Gases|Other + - Heat + - Heat|Biomass + - Heat|Coal + - Heat|Gas + - Heat|Geothermal + - Heat|Oil + - Heat|Other + - Hydrogen + - Hydrogen|Biomass + - Hydrogen|Biomass|w/ CCS + - Hydrogen|Biomass|w/o CCS + - Hydrogen|Coal + - Hydrogen|Coal|w/ CCS + - Hydrogen|Coal|w/o CCS + - Hydrogen|Electricity + - Hydrogen|Fossil + - Hydrogen|Fossil|w/ CCS + - Hydrogen|Fossil|w/o CCS + - Hydrogen|Gas + - Hydrogen|Gas|w/ CCS + - Hydrogen|Gas|w/o CCS + # - Liquids + - Liquids|Biomass + - Liquids|Biomass|w/ CCS + - Liquids|Biomass|w/o CCS + - Liquids|Coal + - Liquids|Coal|w/ CCS + - Liquids|Coal|w/o CCS + - Liquids|Fossil + - Liquids|Fossil|w/ CCS + - Liquids|Fossil|w/o CCS + - Liquids|Gas + - Liquids|Gas|w/ CCS + - Liquids|Gas|w/o CCS + - Liquids|Oil + # - Solids + # - Solids|Biomass + # - Solids|Coal + +- key: secondary_energy2:nl-t-ya + comp: apply_units + inputs: [secondary_energy:nl-t-ya] + args: + units: 'GWa / year' + +# For secondary energy, only the 'main' output of technologies that produce +# hydrogen +- key: out::h2 + comp: select + inputs: [out] + args: + indexers: + t: [h2_coal, h2_coal_ccs, h2_smr, h2_smr_ccs, h2_bio, h2_bio_ccs] + c: [hydrogen] + +# All other technologies not in out::h2 +- key: out::se_0 + comp: select + inputs: [out] + args: + indexers: + t: [h2_coal, h2_coal_ccs, h2_smr, h2_smr_ccs, h2_bio, h2_bio_ccs] + inverse: true + +# For secondary energy, only the 'main' output of technologies that produce +# ethanol +- key: out::eth + comp: select + inputs: [out] + args: + indexers: + t: [eth_bio, eth_bio_ccs, liq_bio, liq_bio_ccs] + c: [ethanol] + +# For secondary energy, only the 'main' output of technologies that produce +# methanol +- key: out::meth + comp: select + inputs: [out] + args: + indexers: + t: [meth_coal, meth_coal_ccs] + c: [methanol] + +# For secondary energy, only the 'main' output of technologies that produce +# lightoil +- key: out::liq + comp: select + inputs: [out] + args: + indexers: + t: [syn_liq, syn_liq_ccs] + c: [lightoil] + +# TODO re-combine out::liq (and others?), similar to how out::h2 is handled +# below. + +# Re-combine only the 'main' outputs of technologies for SE computations +- key: out::se_1 + comp: concat + inputs: + - out::h2 + - out::se_0 + +- key: solids_sum:nl-t-ya + comp: select + inputs: [in:nl-t-ya:se] + args: + indexers: + t: + - Solids + - Solids|Biomass + - Solids|Coal + +- key: solids:nl-t-ya + comp: apply_units + inputs: [solids_sum:nl-t-ya] + args: + units: 'GWa / year' + - key: gdp_ppp comp: product inputs: @@ -456,6 +776,7 @@ general: l: - land_use_reporting sums: true + # Auto-sum over [l, h], apply units - key: land_out:n-s-y-c:CH4_0+1 comp: apply_units @@ -506,18 +827,6 @@ general: - emi::ghg - gwp factors -# - key: wind onshore -# operation: share_curtailment # Refers to a method in computations.py -# inputs: [wind curtailment, wind ref, wind res] -# - key: wind offshore -# operation: share_curtailment # Refers to a method in computations.py -# inputs: [wind curtailment, wind res, wind ref] -# - key: pe test 2 -# comp: concat -# inputs: -# - wind -# - solar - # Groups of keys for re-use. These keys are not parsed by # reporting.prepare_reporter; they only exist to be referenced further in @@ -566,10 +875,11 @@ iamc: base: gas:nl-ya <<: *pe_iamc -- variable: Primary Energy|Geothermal # This is still incomplete - base: out:nl-t-ya-m-c-l - select: {l: [secondary], t: [geothermal elec, geothermal heat]} - <<: *pe_iamc +# NB still incomplete +# - variable: Primary Energy|Geothermal +# base: out:nl-t-ya-m-c-l +# select: {l: [secondary], t: [geothermal elec, geothermal heat]} +# <<: *pe_iamc - variable: Primary Energy|Hydro base: out:nl-t-ya-m-c-l:se @@ -602,6 +912,38 @@ iamc: base: wind:nl-ya <<: *pe_iamc +# Secondary Energy +- variable: Secondary Energy + base: secondary_energy2:nl-t-ya + unit: 'EJ/yr' + var: [t] + +- variable: Secondary Energy|Electricity|Fossil + base: Electricity|Fossil:nl-ya + unit: 'EJ/yr' + +- variable: Secondary Energy|Electricity|Fossil|w/ CCS + base: Electricity|Fossil|w/ CCS:nl-ya + unit: 'EJ/yr' + +- variable: Secondary Energy|Electricity|Fossil|w/o CCS + base: Electricity|Fossil|w/o CCS:nl-ya + unit: 'EJ/yr' + +- variable: Secondary Energy|Gases + base: Gases:nl-ya + unit: 'EJ/yr' + +- variable: Secondary Energy|Liquids + base: Liquids:nl-ya + unit: 'EJ/yr' + +- variable: Secondary Energy|Solids + base: solids:nl-t-ya + unit: 'EJ/yr' + var: [t] + + # Emissions # CH4 emissions from MESSAGE technologies @@ -736,6 +1078,16 @@ report: - GDP|MER:iamc - GDP|PPP:iamc +- key: se test + members: + - Secondary Energy:iamc + - Secondary Energy|Electricity|Fossil:iamc + - Secondary Energy|Electricity|Fossil|w/ CCS:iamc + - Secondary Energy|Electricity|Fossil|w/o CCS:iamc + - Secondary Energy|Gases:iamc + - Secondary Energy|Liquids:iamc + - Secondary Energy|Solids:iamc + - key: emissions members: - Emissions:iamc diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 44b4027c26..7aed541004 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -123,6 +123,12 @@ def group_sum(qty, group, sum): dim=group) +# commented: currently unused +# def share_cogeneration(fraction, *parts): +# """Deducts a *fraction* from the first of *parts*.""" +# return parts[0] - (fraction * sum(parts[1:])) + + def share_curtailment(curt, *parts): """Apply a share of *curt* to the first of *parts*. diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index d103e79a0b..3a7d03bb1a 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -365,9 +365,12 @@ def add_general(rep: Reporter, info): file. Entry *info* must contain: - **comp**: this refers to the name of a computation that is available in - the namespace of :mod:`message_data.reporting.computations`. If - 'product', then :meth:`ixmp.reporting.Reporter.add_product` is called - instead. + the namespace of :mod:`message_data.reporting.computations` (be aware + that it also imports all the computations from :doc:`ixmp + ` and :doc:`message_ix `). E.g. + if 'product', then :meth:`ixmp.reporting.Reporter.add_product` is + called, which also automatically infers the correct dimensions for + each input. - **key**: the key for the computed quantity. - **inputs**: a list of keys to which the computation is applied. - **args** (:class:`dict`, optional): keyword arguments to the computation. diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index ca54e25b37..3015c64ce2 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -34,6 +34,9 @@ #: - Handled as regular expressions; see https://regex101.com and #: https://docs.python.org/3/library/re.html. REPLACE_VARS = { + # Secondary energy: remove duplicate "Solids" + r'(Secondary Energy\|Solids)\|Solids': r'\1', + # CH4 emissions from MESSAGE technologies r'(Emissions\|CH4)\|Fugitive': r'\1|Energy|Supply|Fugitive', r'(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)': From 8721299614fbe72a0e3812a34db61153491d3749 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 28 Aug 2020 01:10:56 +0200 Subject: [PATCH 100/220] Set "output dir" reporting config key --- message_ix_models/report/core.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 3a7d03bb1a..b439ec2437 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -5,6 +5,8 @@ from message_ix.reporting import Key, Reporter +from message_data.tools import get_context + from . import computations from .computations import ( concat, @@ -89,6 +91,11 @@ def prepare_reporter(scenario, config, key, output_path=None): # A non-dict *config* argument must be a Path config = dict(path=Path(config)) + # Store path for output + config.setdefault( + "output dir", get_context().get("output dir", Path.cwd()) + ) + rep.configure(**config) # Reference to the configuration as stored in the reporter config = rep.graph['config'] From 24701577500ba94f7acaad3ac6bdf66192b1623b Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 22 Sep 2020 03:35:26 +0200 Subject: [PATCH 101/220] Move general Plot class to .reporting from .transport.report --- message_ix_models/report/plot.py | 61 ++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 message_ix_models/report/plot.py diff --git a/message_ix_models/report/plot.py b/message_ix_models/report/plot.py new file mode 100644 index 0000000000..fdd2a6d4a3 --- /dev/null +++ b/message_ix_models/report/plot.py @@ -0,0 +1,61 @@ +import logging + +import matplotlib +import plotnine as p9 + +log = logging.getLogger(__name__) + + +try: + matplotlib.use("cairo") +except ImportError: + log.info( + f"'cairo' not available; using {matplotlib.get_backend()} matplotlib " + "backend" + ) + + +class Plot: + """Class for reporting plots. + + To use this class: + + 1. Create a subclass that overrides :attr:`name`, :attr:`inputs`, and + :meth:`generate`. + + 2. Call :meth:`computation` to get a tuple (callable, followed by key + names) suitable for adding to a Reporter:: + + rep.add("foo", P.computation()) + """ + #: Filename base for saving the plot. + name = "" + #: Keys for reporting quantities needed by :meth:`generate`. + inputs = [] + #: Keyword arguments for :meth:`plotnine.ggplot.save`. + save_args = dict(verbose=False) + + # TODO add static geoms automatically in generate() + __static = [] + + def __call__(self, config, *args): + path = config["output dir"] / f"{self.name}.pdf" + plot_or_plots = self.generate(*args) + + try: + # Single plot + plot_or_plots.save(path, **self.save_args) + except AttributeError: + # Iterator containing multiple plots + p9.save_as_pdf_pages(plot_or_plots, path, **self.save_args) + + return path + + @classmethod + def computation(cls): + """Return a computation :class:`tuple` to add to a Reporter.""" + return tuple([cls(), "config"] + cls.inputs) + + def generate(*args): + """Generate and return the plot.""" + return p9.ggplot(*args) From e8d2278a1a1492b187d4e3235017d01733402373 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 22 Sep 2020 03:45:38 +0200 Subject: [PATCH 102/220] Fix test_report_bare_res Was creating both 'test_context' and 'session_context' fixtures unnecessarily. --- message_ix_models/report/core.py | 1 + message_ix_models/tests/test_report.py | 15 ++++++++------- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index b439ec2437..65d013e234 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -97,6 +97,7 @@ def prepare_reporter(scenario, config, key, output_path=None): ) rep.configure(**config) + # Reference to the configuration as stored in the reporter config = rep.graph['config'] diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index ad25555d7e..21ccc749ff 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -4,7 +4,6 @@ from ixmp.reporting.quantity import Quantity from message_ix.reporting import Reporter import pandas as pd -import pytest from message_data.reporting import prepare_reporter from message_data.reporting.computations import combine @@ -18,9 +17,11 @@ } -@pytest.fixture -def global_config(test_context): - yield test_context.get_config_file('report', 'global') +# commented: was only used in test_report_bare_res(); uncomment if 1+ more +# use(s) are added. +# @pytest.fixture +# def global_config(test_context): +# yield test_context.get_config_file('report', 'global') def test_computation_combine(): @@ -49,13 +50,13 @@ def test_computation_combine(): assert rep.get('d').loc[('foo2', 'bar1')] == 3 * 0.5 + 20 * 1 + 200 * 2 -def test_report_bare_res(test_context, solved_res, global_config): +def test_report_bare_res(solved_res, session_context): """Prepare and run the standard MESSAGE-GLOBIOM reporting on a bare RES.""" # Prepare the reporter reporter, key = prepare_reporter( solved_res, - config=global_config, - key='message:default', + config=session_context.get_config_file("report", "global"), + key="message:default", ) # Get the default report From 2818d4e77682164844627379cc757d1ee9d7ad3f Mon Sep 17 00:00:00 2001 From: francescolovat <56022262+francescolovat@users.noreply.github.com> Date: Fri, 6 Nov 2020 05:02:54 +0100 Subject: [PATCH 103/220] Update MESSAGEix-Transport usage docs; use Windows-friendly file names in tests (#158) - Correct name format of xlsx file in test_report_bare Remove colon (:) from the name of the reporting file that was leading the test to fail in Windows in test_report_bare - Correct typo in shell usage example - Improve documentation for building a MESSAGEix-Transport model - Expand transport usage docs - Squash warnings in docs build Co-authored-by: Paul Natsuo Kishimoto --- message_ix_models/report/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 3015c64ce2..c702e317e2 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -61,7 +61,7 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): - """Callback for the `collapse argument to :meth:`~.Reporter.convert_pyam. + """Callback for the `collapse` argument to :meth:`~.Reporter.convert_pyam`. The dimensions listed in the `var` and `region` arguments are automatically dropped from the returned :class:`pyam.IamDataFrame`. From 105d454ac3ab72c5edbd0a645b3b3667aecafd99 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Jan 2021 00:06:09 +0100 Subject: [PATCH 104/220] Silence a warning with Series.str.replace(regex=True) in .reporting.util - Also blacken. --- message_ix_models/report/util.py | 77 ++++++++++++++++---------------- 1 file changed, 39 insertions(+), 38 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index c702e317e2..96ccb132c5 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -11,19 +11,18 @@ #: - Applied to whole strings along each dimension. #: - These columns have :meth:`str.title` applied before these replacements REPLACE_DIMS = { - 'c': { - 'Crudeoil': 'Oil', - 'Electr': 'Electricity', - 'Ethanol': 'Liquids|Biomass', - 'Lightoil': 'Liquids|Oil', - + "c": { + "Crudeoil": "Oil", + "Electr": "Electricity", + "Ethanol": "Liquids|Biomass", + "Lightoil": "Liquids|Oil", # in land_out, for CH4 emissions from GLOBIOM - 'Agri_Ch4': 'GLOBIOM|Emissions|CH4 Emissions Total', + "Agri_Ch4": "GLOBIOM|Emissions|CH4 Emissions Total", }, - 'l': { - 'Final Energy': 'Final Energy|Residential', + "l": { + "Final Energy": "Final Energy|Residential", }, - 't': {}, + "t": {}, } #: Replacements used in :meth:`collapse` after the 'variable' column is @@ -35,22 +34,22 @@ #: https://docs.python.org/3/library/re.html. REPLACE_VARS = { # Secondary energy: remove duplicate "Solids" - r'(Secondary Energy\|Solids)\|Solids': r'\1', - + r"(Secondary Energy\|Solids)\|Solids": r"\1", # CH4 emissions from MESSAGE technologies - r'(Emissions\|CH4)\|Fugitive': r'\1|Energy|Supply|Fugitive', - r'(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)': - r'\1|Energy|Supply|\2|Fugitive', - + r"(Emissions\|CH4)\|Fugitive": r"\1|Energy|Supply|Fugitive", # CH4 emissions from GLOBIOM - r'^(land_out CH4.*\|)Awm': r'\1Manure Management', - r'^land_out CH4\|Emissions\|Ch4\|Land Use\|Agriculture\|': - 'Emissions|CH4|AFOLU|Agriculture|Livestock|', - r'^land_out CH4\|': '', # Strip internal prefix - + r"(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)": ( + r"\1|Energy|Supply|\2|Fugitive" + ), + r"^(land_out CH4.*\|)Awm": r"\1Manure Management", + r"^land_out CH4\|Emissions\|Ch4\|Land Use\|Agriculture\|": ( + "Emissions|CH4|AFOLU|Agriculture|Livestock|" + ), + # Strip internal prefix + r"^land_out CH4\|": "", # Prices - r'Residential\|(Biomass|Coal)': r"Residential|Solids|\1", - r'Residential\|Gas': 'Residential|Gases|Natural Gas', + r"Residential\|(Biomass|Coal)": r"Residential|Solids|\1", + r"Residential\|Gas": "Residential|Gases|Natural Gas", r"Import Energy\|Lng": "Primary Energy|Gas", r"Import Energy\|Coal": "Primary Energy|Coal", r"Import Energy\|Oil": "Primary Energy|Oil", @@ -96,17 +95,17 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): try: # Level: to title case, add the word 'energy' # FIXME astype() here should not be necessary; debug - df['l'] = df['l'].astype(str).str.title() + ' Energy' + df["l"] = df["l"].astype(str).str.title() + " Energy" except KeyError: pass try: # Commodity: to title case # FIXME astype() here should not be necessary; debug - df['c'] = df['c'].astype(str).str.title() + df["c"] = df["c"].astype(str).str.title() except KeyError: pass - if 'emissions' in var_name.lower(): + if "emissions" in var_name.lower(): log.info(f"Collapse GWP info for {var_name}") df, var = collapse_gwp_info(df, var) @@ -114,21 +113,17 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): df = df.replace(REPLACE_DIMS) # Extend region column ('n' and 'nl' are automatically added by message_ix) - df['region'] = ( - df['region'] - .astype(str) - .str.cat([df[c] for c in region], sep='|') - ) + df["region"] = df["region"].astype(str).str.cat([df[c] for c in region], sep="|") # Assemble variable column - df['variable'] = var_name - df['variable'] = df['variable'].str.cat([df[c] for c in var], sep='|') + df["variable"] = var_name + df["variable"] = df["variable"].str.cat([df[c] for c in var], sep="|") # TODO roll this into the rename_vars argument of message_ix...as_pyam() if replace_common: # Apply variable name partial replacements for pat, repl in REPLACE_VARS.items(): - df['variable'] = df['variable'].str.replace(pat, repl) + df["variable"] = df["variable"].str.replace(pat, repl, regex=True) # Drop same columns return df.drop(var + region, axis=1) @@ -154,8 +149,14 @@ def collapse_gwp_info(df, var): return df, var # Format the column with original emissions species - df['e'] = df['e'] + ' (' + df['e equivalent'] + '-equivalent, ' \ - + df['gwp metric'] + ' metric)' + df["e"] = ( + df["e"] + + " (" + + df["e equivalent"] + + "-equivalent, " + + df["gwp metric"] + + " metric)" + ) # Remove columns from further processing [var.remove(c) for c in cols] @@ -171,9 +172,9 @@ def infer_keys(reporter, key_or_keys, dims=[]): for k in keys: # Has some dimensions or tag - key = Key.from_str_or_key(k) if ':' in k else k + key = Key.from_str_or_key(k) if ":" in k else k - if '::' in k or key not in reporter: + if "::" in k or key not in reporter: key = reporter.full_key(key) if dims: From 230e8704a4a80799b3a5d5869b9b6beff66bfed8 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Jan 2021 00:38:40 +0100 Subject: [PATCH 105/220] Add doc/repro.rst; config for sphinx.ext.{autosummary,viewcode} --- message_ix_models/tests/report/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 message_ix_models/tests/report/__init__.py diff --git a/message_ix_models/tests/report/__init__.py b/message_ix_models/tests/report/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 7539db61888b95d888ee3905abf69e5a672b75f9 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 15 Jan 2021 00:41:13 +0100 Subject: [PATCH 106/220] Use message_data.testing in transport tests; blacken --- .../tests/report/test_computations.py | 51 ++++---- message_ix_models/tests/test_report.py | 114 ++++++++++-------- 2 files changed, 91 insertions(+), 74 deletions(-) diff --git a/message_ix_models/tests/report/test_computations.py b/message_ix_models/tests/report/test_computations.py index 393e556626..dfcd30c040 100644 --- a/message_ix_models/tests/report/test_computations.py +++ b/message_ix_models/tests/report/test_computations.py @@ -4,66 +4,69 @@ from ixmp.reporting import Quantity from ixmp.testing import assert_logs from message_ix.reporting import Reporter + +from message_data import testing from message_data.reporting.computations import update_scenario from message_data.tools import ScenarioInfo, make_df -def test_update_scenario(bare_res, caplog): - scen = bare_res +def test_update_scenario(request, caplog, session_context): + scen = testing.bare_res(request, session_context) + # Number of rows in the 'demand' parameter - N_before = len(scen.par('demand')) + N_before = len(scen.par("demand")) # A Reporter used as calculation engine calc = Reporter() # Target Scenario for updating data - calc.add('target', scen) + calc.add("target", scen) # Create a pd.DataFrame suitable for Scenario.add_par() - units = 'GWa' + units = "GWa" demand = make_df( - 'demand', - node='World', - commodity='electr', - level='secondary', - year=ScenarioInfo(bare_res).Y[:10], - time='year', + "demand", + node="World", + commodity="electr", + level="secondary", + year=ScenarioInfo(scen).Y[:10], + time="year", value=1.0, - unit=units) + unit=units, + ) # Add to the Reporter - calc.add('input', demand) + calc.add("input", demand) # Task to update the scenario with the data - calc.add('test 1', (partial(update_scenario, params=['demand']), 'target', - 'input')) + calc.add("test 1", (partial(update_scenario, params=["demand"]), "target", "input")) # Trigger the computation that results in data being added with assert_logs(caplog, "'demand' ← 10 rows", at_level=logging.DEBUG): # Returns nothing - assert calc.get('test 1') is None + assert calc.get("test 1") is None # Rows were added to the parameter - assert len(scen.par('demand')) == N_before + len(demand) + assert len(scen.par("demand")) == N_before + len(demand) # Modify the data - demand['value'] = 2.0 + demand["value"] = 2.0 demand = demand.iloc[:5] # Convert to a Quantity object input = Quantity( - demand.set_index('node commodity level year time'.split())['value'], - name='demand', + demand.set_index("node commodity level year time".split())["value"], + name="demand", units=units, ) # Re-add - calc.add('input', input) + calc.add("input", input) # Revise the task; the parameter name ('demand') - calc.add('test 2', (update_scenario, 'target', 'input')) + calc.add("test 2", (update_scenario, "target", "input")) # Trigger the computation with assert_logs(caplog, "'demand' ← 5 rows"): - calc.get('test 2') + calc.get("test 2") # Only half the rows have been updated - assert scen.par('demand')['value'].mean() == 1.5 + assert scen.par("demand")["value"].mean() == 1.5 diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 21ccc749ff..b0f87837fc 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -4,15 +4,17 @@ from ixmp.reporting.quantity import Quantity from message_ix.reporting import Reporter import pandas as pd +import pytest +from message_data import testing from message_data.reporting import prepare_reporter from message_data.reporting.computations import combine # Minimal reporting configuration for testing MIN_CONFIG = { - 'units': { - 'replace': {'???': ''}, + "units": { + "replace": {"???": ""}, }, } @@ -28,33 +30,37 @@ def test_computation_combine(): rep = Reporter() # Add data to the Reporter - foo = ['foo1', 'foo2'] - bar = ['bar1', 'bar2'] + foo = ["foo1", "foo2"] + bar = ["bar1", "bar2"] a = pd.Series( [1, 2, 3, 4], - index=pd.MultiIndex.from_product([foo, bar], names=['foo', 'bar']), + index=pd.MultiIndex.from_product([foo, bar], names=["foo", "bar"]), ) b = pd.Series( [10, 20, 30, 40], - index=pd.MultiIndex.from_product([bar, foo], names=['bar', 'foo']), + index=pd.MultiIndex.from_product([bar, foo], names=["bar", "foo"]), ) - c = pd.Series([100, 200], index=pd.Index(foo, name='foo')) + c = pd.Series([100, 200], index=pd.Index(foo, name="foo")) - rep.add('a', Quantity(a)) - rep.add('b', Quantity(b)) - rep.add('c', Quantity(c)) + rep.add("a", Quantity(a)) + rep.add("b", Quantity(b)) + rep.add("c", Quantity(c)) - rep.add('d', (partial(combine, weights=[0.5, 1, 2]), 'a', 'b', 'c')) + rep.add("d", (partial(combine, weights=[0.5, 1, 2]), "a", "b", "c")) - assert rep.get('d').loc[('foo2', 'bar1')] == 3 * 0.5 + 20 * 1 + 200 * 2 + assert rep.get("d").loc[("foo2", "bar1")] == 3 * 0.5 + 20 * 1 + 200 * 2 -def test_report_bare_res(solved_res, session_context): +def test_report_bare_res(request, session_context): """Prepare and run the standard MESSAGE-GLOBIOM reporting on a bare RES.""" + ctx = session_context + + scenario = testing.bare_res(request, ctx, solved=True) + # Prepare the reporter reporter, key = prepare_reporter( - solved_res, + scenario, config=session_context.get_config_file("report", "global"), key="message:default", ) @@ -66,85 +72,93 @@ def test_report_bare_res(solved_res, session_context): # Common data for tests -DATA_INV_COST = pd.DataFrame([ - ['R11_NAM', 'coal_ppl', '2010', 10.5, 'USD'], - ['R11_LAM', 'coal_ppl', '2010', 9.5, 'USD'], - ], columns='node_loc technology year_vtg value unit'.split()) +DATA_INV_COST = pd.DataFrame( + [ + ["R11_NAM", "coal_ppl", "2010", 10.5, "USD"], + ["R11_LAM", "coal_ppl", "2010", 9.5, "USD"], + ], + columns="node_loc technology year_vtg value unit".split(), +) IAMC_INV_COST = dict( - variable='Investment Cost', - base='inv_cost:nl-t-yv', - year_time_dim='yv', - var=['t'], - unit='EUR_2005', + variable="Investment Cost", + base="inv_cost:nl-t-yv", + year_time_dim="yv", + var=["t"], + unit="EUR_2005", ) -def test_apply_units(bare_res): - qty = 'inv_cost' +@pytest.mark.parametrize("regions", ["R11"]) +def test_apply_units(request, test_context, regions): + test_context.regions = regions + bare_res = testing.bare_res(request, test_context, solved=True) + + qty = "inv_cost" # Create a temporary config dict config = MIN_CONFIG.copy() # Prepare the reporter - bare_res.solve() reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Add some data to the scenario inv_cost = DATA_INV_COST.copy() bare_res.remove_solution() bare_res.check_out() - bare_res.add_par('inv_cost', inv_cost) - bare_res.commit('') + bare_res.add_par("inv_cost", inv_cost) + bare_res.commit("") bare_res.solve() # Units are retrieved - USD_2005 = reporter.unit_registry.Unit('USD_2005') - assert reporter.get(key).attrs['_unit'] == USD_2005 + USD_2005 = reporter.unit_registry.Unit("USD_2005") + assert reporter.get(key).attrs["_unit"] == USD_2005 # Add data with units that will be discarded - inv_cost['unit'] = ['USD', 'kg'] + inv_cost["unit"] = ["USD", "kg"] bare_res.remove_solution() bare_res.check_out() - bare_res.add_par('inv_cost', inv_cost) + bare_res.add_par("inv_cost", inv_cost) # Units are discarded - assert str(reporter.get(key).attrs['_unit']) == 'dimensionless' + assert str(reporter.get(key).attrs["_unit"]) == "dimensionless" # Update configuration, re-create the reporter - config['units']['apply'] = {'inv_cost': 'USD'} - bare_res.commit('') + config["units"]["apply"] = {"inv_cost": "USD"} + bare_res.commit("") bare_res.solve() reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Units are applied - assert str(reporter.get(key).attrs['_unit']) == USD_2005 + assert str(reporter.get(key).attrs["_unit"]) == USD_2005 # Update configuration, re-create the reporter - config['iamc'] = [IAMC_INV_COST] + config["iamc"] = [IAMC_INV_COST] reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Units are converted - df = reporter.get('Investment Cost:iamc').as_pandas() - assert set(df['unit']) == {'EUR_2005'} + df = reporter.get("Investment Cost:iamc").as_pandas() + assert set(df["unit"]) == {"EUR_2005"} -def test_iamc_replace_vars(bare_res): +@pytest.mark.parametrize("regions", ["R11"]) +def test_iamc_replace_vars(request, test_context, regions): """Test the 'iamc variable names' reporting configuration.""" - scen = bare_res + test_context.regions = regions + scen = testing.bare_res(request, test_context) - qty = 'inv_cost' + qty = "inv_cost" config = { - 'iamc': [IAMC_INV_COST], - 'iamc variable names': { - 'Investment Cost|Coal_Ppl': 'Investment Cost|Coal', - } + "iamc": [IAMC_INV_COST], + "iamc variable names": { + "Investment Cost|Coal_Ppl": "Investment Cost|Coal", + }, } scen.check_out() - scen.add_par('inv_cost', DATA_INV_COST) - scen.commit('') + scen.add_par("inv_cost", DATA_INV_COST) + scen.commit("") scen.solve() reporter, key = prepare_reporter(scen, config=config, key=qty) - df = reporter.get('Investment Cost:iamc').as_pandas() - assert set(df['variable']) == {'Investment Cost|Coal'} + df = reporter.get("Investment Cost:iamc").as_pandas() + assert set(df["variable"]) == {"Investment Cost|Coal"} From f0fae863628214d278dd3b17100b364e9576bd5e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 8 Feb 2021 14:10:58 +0100 Subject: [PATCH 107/220] Tidy .transport.report and related code --- message_ix_models/report/plot.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/plot.py b/message_ix_models/report/plot.py index fdd2a6d4a3..a8a066f055 100644 --- a/message_ix_models/report/plot.py +++ b/message_ix_models/report/plot.py @@ -10,8 +10,7 @@ matplotlib.use("cairo") except ImportError: log.info( - f"'cairo' not available; using {matplotlib.get_backend()} matplotlib " - "backend" + f"'cairo' not available; using {matplotlib.get_backend()} matplotlib backend" ) @@ -28,6 +27,9 @@ class Plot: rep.add("foo", P.computation()) """ + + #: Path fragments for output. + path = [] #: Filename base for saving the plot. name = "" #: Keys for reporting quantities needed by :meth:`generate`. @@ -39,7 +41,10 @@ class Plot: __static = [] def __call__(self, config, *args): - path = config["output dir"] / f"{self.name}.pdf" + path = config["report_path"].joinpath(*self.path, f"{self.name}.pdf") + log.info(f"Generate {path}") + path.parent.mkdir(parents=True, exist_ok=True) + plot_or_plots = self.generate(*args) try: From fd623be7df09995f527ea3c1a2ddcff27d2c7f32 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 8 Feb 2021 14:11:16 +0100 Subject: [PATCH 108/220] Blacken .reporting.{cli,core} --- message_ix_models/report/cli.py | 86 ++++++++++++----------- message_ix_models/report/core.py | 114 +++++++++++++++---------------- 2 files changed, 104 insertions(+), 96 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index f64b962d17..9d4e32106a 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -13,41 +13,44 @@ log = logging.getLogger(__name__) -@click.command(name='report') +@click.command(name="report") @click.pass_obj -@click.option('--config', 'config_file', default='global', show_default=True, - help='Path or stem for reporting config file.') -@click.option("--module", "-m", metavar="MODULES", - help="Add extra reporting for MODULES.") -@click.option('-o', '--output', 'output_path', type=Path, - help='Write output to file instead of console.') -@click.option('--from-file', type=click.Path(exists=True, dir_okay=False), - help='Report multiple Scenarios listed in FILE.') -@click.option('--verbose', is_flag=True, help='Set log level to DEBUG.') -@click.option('--dry-run', '-n', is_flag=True, - help='Only show what would be done.') -@click.argument('key', default='message:default') -def cli( - context, - config_file, - module, - output_path, - from_file, - verbose, - dry_run, - key -): +@click.option( + "--config", + "config_file", + default="global", + show_default=True, + help="Path or stem for reporting config file.", +) +@click.option( + "--module", "-m", metavar="MODULES", help="Add extra reporting for MODULES." +) +@click.option( + "-o", + "--output", + "output_path", + type=Path, + help="Write output to file instead of console.", +) +@click.option( + "--from-file", + type=click.Path(exists=True, dir_okay=False), + help="Report multiple Scenarios listed in FILE.", +) +@click.option("--verbose", is_flag=True, help="Set log level to DEBUG.") +@click.option("--dry-run", "-n", is_flag=True, help="Only show what would be done.") +@click.argument("key", default="message:default") +def cli(context, config_file, module, output_path, from_file, verbose, dry_run, key): """Postprocess results. - KEY defaults to the comprehensive report 'message:default', but may also - be the name of a specific model quantity, e.g. 'output'. + KEY defaults to the comprehensive report 'message:default', but may alsobe the name + of a specific model quantity, e.g. 'output'. - --config can give either the absolute path to a reporting configuration - file, or the stem (i.e. name without .yaml extension) of a file in - data/report. + --config can give either the absolute path to a reporting configuration file, or + the stem (i.e. name without .yaml extension) of a file in data/report. - With --from-file, read multiple Scenario identifiers from FILE, and report - each one. In this usage, --output-path may only be a directory. + With --from-file, read multiple Scenario identifiers from FILE, and report each one. + In this usage, --output-path may only be a directory. """ mark_time(quiet=True) @@ -55,15 +58,15 @@ def cli( config = Path(config_file) if not config.exists(): # Path doesn't exist; treat it as a stem in the metadata dir - config = context.get_config_file('report', config_file) + config = context.get_config_file("report", config_file) if not config.exists(): # Can't find the file - raise click.BadOptionUsage(f'--config={config_file} not found') + raise click.BadOptionUsage(f"--config={config_file} not found") if verbose: - log.setLevel('DEBUG') - logging.getLogger('ixmp').setLevel('DEBUG') + log.setLevel("DEBUG") + logging.getLogger("ixmp").setLevel("DEBUG") # Load modules module = module or "" @@ -71,6 +74,7 @@ def cli( name = f"message_data.{name}.report" __import__(name) register(sys.modules[name].callback) + print(f"Registered reporting config from {name}") # Prepare a list of Context objects, each referring to one Scenario contexts = [] @@ -80,7 +84,7 @@ def cli( if not output_path: output_path = Path.cwd() if not output_path.is_dir(): - msg = '--output-path must be directory with --from-file' + msg = "--output-path must be directory with --from-file" raise click.BadOptionUsage(msg) for item in yaml.safe_load(open(from_file)): @@ -93,10 +97,14 @@ def cli( # Construct an output path from the parsed info/URL ctx.output_path = Path( output_path, - '_'.join([ctx.platform_info['name'], - ctx.scenario_info['model'], - ctx.scenario_info['scenario']]), - ).with_suffix('.xlsx') + "_".join( + [ + ctx.platform_info["name"], + ctx.scenario_info["model"], + ctx.scenario_info["scenario"], + ] + ), + ).with_suffix(".xlsx") contexts.append(ctx) else: diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 65d013e234..68409730d0 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -47,7 +47,7 @@ def cb(rep: Reporter): register(cb) """ if callback in CALLBACKS: - log.info(f'Already registered: {callback}') + log.info(f"Already registered: {callback}") return CALLBACKS.append(callback) @@ -78,7 +78,7 @@ def prepare_reporter(scenario, config, key, output_path=None): Same as *key*, in full resolution, if any. """ - log.info('Preparing reporter') + log.info("Preparing reporter") # Create a Reporter for *scenario* rep = Reporter.from_scenario(scenario) @@ -91,54 +91,53 @@ def prepare_reporter(scenario, config, key, output_path=None): # A non-dict *config* argument must be a Path config = dict(path=Path(config)) - # Store path for output - config.setdefault( - "output dir", get_context().get("output dir", Path.cwd()) - ) + # Directory for reporting output + context = get_context() + config.setdefault("report_path", context.get("report_path", Path.cwd())) rep.configure(**config) # Reference to the configuration as stored in the reporter - config = rep.graph['config'] + config = rep.graph["config"] # Variable name replacement: dict, not list of entries - rep.add('iamc variable names', config.pop('iamc variable names', {})) + rep.add("iamc variable names", config.pop("iamc variable names", {})) # Mapping of file sections to handlers sections = ( - ('aggregate', add_aggregate), - ('combine', add_combination), - ('iamc', add_iamc_table), - ('general', add_general), - ('report', add_report), - ) + ("aggregate", add_aggregate), + ("combine", add_combination), + ("iamc", add_iamc_table), + ("general", add_general), + ("report", add_report), + ) # Assemble a queue of (args, kwargs) to Reporter.add() to_add = [] for section_name, func in sections: for entry in config.pop(section_name, []): # Append to queue - to_add.append((('apply', func), dict(info=entry))) + to_add.append((("apply", func), dict(info=entry))) # Also add the callbacks to the queue - to_add.extend((('apply', cb), {}) for cb in CALLBACKS) + to_add.extend((("apply", cb), {}) for cb in CALLBACKS) # Use ixmp.Reporter.add_queue() to process the entries. Retry at most # once; raise an exception if adding fails after that. - rep.add_queue(to_add, max_tries=2, fail='raise') + rep.add_queue(to_add, max_tries=2, fail="raise") # Tidy the config dict by removing any YAML sections starting with '_' - [config.pop(k) for k in list(config.keys()) if k.startswith('_')] + [config.pop(k) for k in list(config.keys()) if k.startswith("_")] # If needed, get the full key for *quantity* key = infer_keys(rep, key) if output_path: # Add a new computation that writes *key* to the specified file - rep.add('cli-output', (partial(write_report, path=output_path), key)) - key = 'cli-output' + rep.add("cli-output", (partial(write_report, path=output_path), key)) + key = "cli-output" - log.info('…done') + log.info("…done") return rep, key @@ -181,14 +180,14 @@ def add_aggregate(rep: Reporter, info): # Copy for destructive .pop() info = copy(info) - quantities = infer_keys(rep, info.pop('_quantities')) - tag = info.pop('_tag') - groups = {info.pop('_dim'): info} + quantities = infer_keys(rep, info.pop("_quantities")) + tag = info.pop("_tag") + groups = {info.pop("_dim"): info} for qty in quantities: keys = rep.aggregate(qty, tag, groups, sums=True) - log.info(f'Add {repr(keys[0])} + {len(keys)-1} partial sums') + log.info(f"Add {repr(keys[0])} + {len(keys)-1} partial sums") def add_combination(rep: Reporter, info): @@ -237,18 +236,18 @@ def add_combination(rep: Reporter, info): quantities, select, weights = [], [], [] # Key for the new quantity - key = Key.from_str_or_key(info['key']) + key = Key.from_str_or_key(info["key"]) # Loop over inputs to the combination - for i in info['inputs']: + for i in info["inputs"]: # Required dimensions for this input: output key's dims, plus any # dims that must be selected on - selector = i.get('select', {}) + selector = i.get("select", {}) dims = set(key.dims) | set(selector.keys()) - quantities.append(infer_keys(rep, i['quantity'], dims)) + quantities.append(infer_keys(rep, i["quantity"], dims)) select.append(selector) - weights.append(i.get('weight', 1)) + weights.append(i.get("weight", 1)) # Check for malformed input assert len(quantities) == len(select) == len(weights) @@ -258,9 +257,9 @@ def add_combination(rep: Reporter, info): added = rep.add(key, c, strict=True, index=True, sums=True) - log.info(f'Add {repr(key)} + {len(added)-1} partial sums') - log.debug(' as combination of') - log.debug(f' {repr(quantities)}') + log.info(f"Add {repr(key)} + {len(added)-1} partial sums") + log.debug(" as combination of") + log.debug(f" {repr(quantities)}") def add_iamc_table(rep: Reporter, info): @@ -299,10 +298,10 @@ def add_iamc_table(rep: Reporter, info): the config file are applied to all variables. """ # For each quantity, use a chain of computations to prepare it - name = info.pop('variable') + name = info.pop("variable") # Chain of keys produced: first entry is the key for the base quantity - base = Key.from_str_or_key(info.pop('base')) + base = Key.from_str_or_key(info.pop("base")) keys = [base] # Second entry is a simple rename @@ -310,21 +309,21 @@ def add_iamc_table(rep: Reporter, info): # Optionally select a subset of data from the base quantity try: - sel = info.pop('select') + sel = info.pop("select") except KeyError: pass else: - key = keys[-1].add_tag('sel') + key = keys[-1].add_tag("sel") rep.add(key, (select, keys[-1], sel), strict=True) keys.append(key) # Optionally aggregate data by groups try: - gs = info.pop('group_sum') + gs = info.pop("group_sum") except KeyError: pass else: - key = keys[-1].add_tag('agg') + key = keys[-1].add_tag("agg") task = (partial(group_sum, group=gs[0], sum=gs[1]), keys[-1]) rep.add(key, task, strict=True) keys.append(key) @@ -333,29 +332,29 @@ def add_iamc_table(rep: Reporter, info): args = dict( # Use 'ya' for the IAMC 'Year' column; unless YAML reporting config # includes a different dim under format/year_time_dim. - year_time_dim=info.pop('year_time_dim', 'ya'), - drop=set(info.pop('drop', [])) & set(keys[-1].dims), - replace_vars='iamc variable names', + year_time_dim=info.pop("year_time_dim", "ya"), + drop=set(info.pop("drop", [])) & set(keys[-1].dims), + replace_vars="iamc variable names", ) # Optionally convert units try: - args['unit'] = info.pop('unit') + args["unit"] = info.pop("unit") except KeyError: pass # Remaining arguments are for the collapse() callback - args['collapse'] = partial(collapse, var_name=name, **info) + args["collapse"] = partial(collapse, var_name=name, **info) # Use the message_ix.Reporter method to add the coversion step iamc_keys = rep.convert_pyam(keys[-1], **args) keys.extend(iamc_keys) # Revise the 'message:default' report to include the last key in the chain - rep.add('message:default', rep.graph['message:default'] + (keys[-1],)) + rep.add("message:default", rep.graph["message:default"] + (keys[-1],)) - log.info(f'Add {repr(keys[-1])} from {repr(keys[0])}') - log.debug(f' {len(keys)} keys total') + log.info(f"Add {repr(keys[-1])} from {repr(keys[0])}") + log.debug(f" {len(keys)} keys total") def add_report(rep: Reporter, info): @@ -363,7 +362,7 @@ def add_report(rep: Reporter, info): log.info(f"Add report {info['key']} with {len(info['members'])} table(s)") # Concatenate pyam data structures - rep.add(info['key'], tuple([concat] + info['members']), strict=True) + rep.add(info["key"], tuple([concat] + info["members"]), strict=True) def add_general(rep: Reporter, info): @@ -385,24 +384,25 @@ def add_general(rep: Reporter, info): - **add args** (:class:`dict`, optional): keyword arguments to :meth:`ixmp.reporting.Reporter.add` itself. """ - inputs = infer_keys(rep, info.get('inputs', [])) + inputs = infer_keys(rep, info.get("inputs", [])) - if info['comp'] == 'product': - key = rep.add_product(info['key'], *inputs) + if info["comp"] == "product": + key = rep.add_product(info["key"], *inputs) log.info(f"Add {repr(key)} using .add_product()") else: - key = Key.from_str_or_key(info['key']) + key = Key.from_str_or_key(info["key"]) # Retrieve the function for the computation - f = getattr(computations, info['comp']) + f = getattr(computations, info["comp"]) log.info(f"Add {repr(key)} using {f.__name__}(...)") - kwargs = info.get('args', {}) + kwargs = info.get("args", {}) task = tuple([partial(f, **kwargs)] + inputs) - added = rep.add(key, task, strict=True, index=True, - sums=info.get('sums', False)) + added = rep.add( + key, task, strict=True, index=True, sums=info.get("sums", False) + ) if isinstance(added, list): - log.info(f' + {len(added)-1} partial sums') + log.info(f" + {len(added)-1} partial sums") From 56483da99eb21d85d087332299aabbb640b3f80a Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 8 Feb 2021 19:04:58 +0100 Subject: [PATCH 109/220] Use directory from "report --output=" option for plots --- message_ix_models/report/cli.py | 11 +++++++---- message_ix_models/report/core.py | 5 ++--- message_ix_models/report/plot.py | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 9d4e32106a..95337bf44a 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -31,6 +31,7 @@ "output_path", type=Path, help="Write output to file instead of console.", + default=Path.cwd(), ) @click.option( "--from-file", @@ -64,6 +65,9 @@ def cli(context, config_file, module, output_path, from_file, verbose, dry_run, # Can't find the file raise click.BadOptionUsage(f"--config={config_file} not found") + # --output/-o: handle "~" + output_path = output_path.expanduser() + if verbose: log.setLevel("DEBUG") logging.getLogger("ixmp").setLevel("DEBUG") @@ -81,11 +85,10 @@ def cli(context, config_file, module, output_path, from_file, verbose, dry_run, if from_file: # Multiple URLs - if not output_path: - output_path = Path.cwd() if not output_path.is_dir(): - msg = "--output-path must be directory with --from-file" - raise click.BadOptionUsage(msg) + raise click.BadOptionUsage( + "--output-path must be directory with --from-file" + ) for item in yaml.safe_load(open(from_file)): # Copy the existing Context to a new object diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 68409730d0..3152260986 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -92,8 +92,7 @@ def prepare_reporter(scenario, config, key, output_path=None): config = dict(path=Path(config)) # Directory for reporting output - context = get_context() - config.setdefault("report_path", context.get("report_path", Path.cwd())) + config.setdefault("output_path", output_path) rep.configure(**config) @@ -132,7 +131,7 @@ def prepare_reporter(scenario, config, key, output_path=None): # If needed, get the full key for *quantity* key = infer_keys(rep, key) - if output_path: + if output_path and not output_path.is_dir(): # Add a new computation that writes *key* to the specified file rep.add("cli-output", (partial(write_report, path=output_path), key)) key = "cli-output" diff --git a/message_ix_models/report/plot.py b/message_ix_models/report/plot.py index a8a066f055..2bc646108d 100644 --- a/message_ix_models/report/plot.py +++ b/message_ix_models/report/plot.py @@ -41,7 +41,7 @@ class Plot: __static = [] def __call__(self, config, *args): - path = config["report_path"].joinpath(*self.path, f"{self.name}.pdf") + path = config["output_path"].joinpath(*self.path, f"{self.name}.pdf") log.info(f"Generate {path}") path.parent.mkdir(parents=True, exist_ok=True) From 3d586ae799409b4c3be0ee578164bb24727e314c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 9 Feb 2021 16:35:29 +0100 Subject: [PATCH 110/220] Remove upstreamed reporting code --- message_ix_models/report/__init__.py | 11 +- message_ix_models/report/computations.py | 147 ++--------- message_ix_models/report/core.py | 320 +---------------------- message_ix_models/report/plot.py | 66 ----- message_ix_models/report/util.py | 26 -- 5 files changed, 27 insertions(+), 543 deletions(-) delete mode 100644 message_ix_models/report/plot.py diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index f4ba8b359f..dced1dc70f 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -15,14 +15,7 @@ log = logging.getLogger(__name__) -def report( - scenario, - key=None, - config=None, - output_path=None, - dry_run=False, - **kwargs -): +def report(scenario, key=None, config=None, output_path=None, dry_run=False, **kwargs): """Run complete reporting on *scenario* with output to *output_path*. This function provides a common interface to call both the 'new' @@ -79,7 +72,7 @@ def report( # Default arguments key = key or "default" config = config or ( - Path(__file__).parents[2] / "data" / "report" / "global.yaml" + Path(__file__).parents[2].joinpath("data", "report", "global.yaml") ) rep, key = prepare_reporter(scenario, config, key, output_path) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 7aed541004..ca73ce5db6 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -1,128 +1,49 @@ -"""Atomic computations for MESSAGEix-GLOBIOM. - -Some of these may migrate upstream to message_ix or ixmp in the future. -""" +"""Atomic reporting computations for MESSAGEix-GLOBIOM.""" import itertools import logging -# TODO shouldn't be necessary to have so many imports; tidy up from iam_units import convert_gwp from iam_units.emissions import SPECIES from ixmp.reporting import Quantity -from ixmp.reporting.computations import apply_units, select # noqa: F401 -from ixmp.reporting.utils import collect_units -from message_ix.reporting import computations -from message_ix.reporting.computations import * # noqa: F401,F403 -from message_ix.reporting.computations import concat import pandas as pd -# Computations for specific models and projects -from message_data.model.transport.report import ( # noqa: F401 - check_computation as transport_check -) - log = logging.getLogger(__name__) -def combine(*quantities, select=None, weights=None): # noqa: F811 - """Sum distinct *quantities* by *weights*. - - Parameters - ---------- - *quantities : Quantity - The quantities to be added. - select : list of dict - Elements to be selected from each quantity. Must have the same number - of elements as `quantities`. - weights : list of float - Weight applied to each quantity. Must have the same number of elements - as `quantities`. - - Raises - ------ - ValueError - If the *quantities* have mismatched units. - """ - # Handle arguments - select = select or len(quantities) * [{}] - weights = weights or len(quantities) * [1.] - - # Check units - units = collect_units(*quantities) - for u in units: - # TODO relax this condition: modify the weights with conversion factors - # if the units are compatible, but not the same - if u != units[0]: - raise ValueError(f'Cannot combine() units {units[0]} and {u}') - units = units[0] - - args = [] - - for quantity, indexers, weight in zip(quantities, select, weights): - # Select data - temp = computations.select(quantity, indexers) - - # Dimensions along which multiple values are selected - multi = [ - dim for dim, values in indexers.items() if isinstance(values, list) - ] - if len(multi): - # Sum along these dimensions - temp = temp.sum(dim=multi) - - args.append(weight * temp) - - result = computations.add(*args) - result.attrs['_unit'] = units - - return result - - def gwp_factors(): """Use :mod:`iam_units` to generate a Quantity of GWP factors. - The quantity is dimensionless, e.g. for converting [mass] to [mass], and - has dimensions: + The quantity is dimensionless, e.g. for converting [mass] to [mass], andhas + dimensions: - - 'gwp metric': the name of a GWP metric, e.g. 'SAR', 'AR4', 'AR5'. All - metrics are on a 100-year basis. - - 'e': emissions species, as in MESSAGE. The entry 'HFC' is added as an - alias for the species 'HFC134a' from iam_units. + - 'gwp metric': the name of a GWP metric, e.g. 'SAR', 'AR4', 'AR5'. All metrics are + on a 100-year basis. + - 'e': emissions species, as in MESSAGE. The entry 'HFC' is added as an alias for + the species 'HFC134a' from iam_units. - 'e equivalent': GWP-equivalent species, always 'CO2'. """ - dims = ['gwp metric', 'e', 'e equivalent'] - metric = ['SARGWP100', 'AR4GWP100', 'AR5GWP100'] - species_to = ['CO2'] # Add to this list to perform additional conversions + dims = ["gwp metric", "e", "e equivalent"] + metric = ["SARGWP100", "AR4GWP100", "AR5GWP100"] + species_to = ["CO2"] # Add to this list to perform additional conversions data = [] for m, s_from, s_to in itertools.product(metric, SPECIES, species_to): # Get the conversion factor from iam_units - factor = convert_gwp(m, (1, 'kg'), s_from, s_to).magnitude + factor = convert_gwp(m, (1, "kg"), s_from, s_to).magnitude # MESSAGEix-GLOBIOM uses e='HFC' to refer to this species - if s_from == 'HFC134a': - s_from = 'HFC' + if s_from == "HFC134a": + s_from = "HFC" # Store entry data.append((m[:3], s_from, s_to, factor)) # Convert to Quantity object and return return Quantity( - pd.DataFrame(data, columns=dims + ['value']) - .set_index(dims)['value'] - .dropna() + pd.DataFrame(data, columns=dims + ["value"]).set_index(dims)["value"].dropna() ) -def group_sum(qty, group, sum): - """Group by dimension *group*, then sum across dimension *sum*. - - The result drops the latter dimension. - """ - return concat([values.sum(dim=[sum]) for _, values in qty.groupby(group)], - dim=group) - - # commented: currently unused # def share_cogeneration(fraction, *parts): # """Deducts a *fraction* from the first of *parts*.""" @@ -132,43 +53,7 @@ def group_sum(qty, group, sum): def share_curtailment(curt, *parts): """Apply a share of *curt* to the first of *parts*. - If this is being used, it usually will indicate the need to split *curt* - into multiple technologies; one for each of *parts*. + If this is being used, it usually will indicate the need to split *curt* into + multiple technologies; one for each of *parts*. """ return parts[0] - curt * (parts[0] / sum(parts)) - - -def update_scenario(scenario, *quantities, params=[]): - """Update *scenario* with computed data from reporting *quantities*. - - Parameters - ---------- - scenario : .Scenario - quantities : .Quantity or pd.DataFrame - If DataFrame, must be valid input to :meth:`.Scenario.add_par`. - params : list of str, optional - For every element of `quantities` that is a pd.DataFrame, the element - of `params` at the same index gives the name of the parameter to - update. - """ - log.info("Update '{0.model}/{0.scenario}#{0.version}'".format(scenario)) - scenario.check_out() - - for order, (qty, par_name) in enumerate( - itertools.zip_longest(quantities, params) - ): - if not isinstance(qty, pd.DataFrame): - # Convert a Quantity to a DataFrame - par_name = qty.name - new = qty.to_series() \ - .reset_index() \ - .rename(columns={par_name: 'value'}) - new['unit'] = '{:~}'.format(qty.attrs['_unit']) - qty = new - - # Add the data - log.info(f' {repr(par_name)} ← {len(qty)} rows') - scenario.add_par(par_name, qty) - - scenario.commit('Data added using ' - 'message_data.reporting.computations.update_scenario') diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 3152260986..5409a745c4 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -1,29 +1,13 @@ -from copy import copy, deepcopy -from functools import partial import logging +from copy import deepcopy +from functools import partial from pathlib import Path -from message_ix.reporting import Key, Reporter - -from message_data.tools import get_context - -from . import computations -from .computations import ( - concat, - combine, - group_sum, - select, - write_report, -) -from .util import collapse, infer_keys - +from message_ix.reporting import Reporter log = logging.getLogger(__name__) -CALLBACKS = [] - - # Equivalent of some content in global.yaml CONFIG = dict(units=dict(replace={"-": ""})) @@ -46,6 +30,8 @@ def cb(rep: Reporter): register(cb) """ + from genno.config import CALLBACKS + if callback in CALLBACKS: log.info(f"Already registered: {callback}") return @@ -102,306 +88,18 @@ def prepare_reporter(scenario, config, key, output_path=None): # Variable name replacement: dict, not list of entries rep.add("iamc variable names", config.pop("iamc variable names", {})) - # Mapping of file sections to handlers - sections = ( - ("aggregate", add_aggregate), - ("combine", add_combination), - ("iamc", add_iamc_table), - ("general", add_general), - ("report", add_report), - ) - - # Assemble a queue of (args, kwargs) to Reporter.add() - to_add = [] - for section_name, func in sections: - for entry in config.pop(section_name, []): - # Append to queue - to_add.append((("apply", func), dict(info=entry))) - - # Also add the callbacks to the queue - to_add.extend((("apply", cb), {}) for cb in CALLBACKS) - - # Use ixmp.Reporter.add_queue() to process the entries. Retry at most - # once; raise an exception if adding fails after that. - rep.add_queue(to_add, max_tries=2, fail="raise") - # Tidy the config dict by removing any YAML sections starting with '_' [config.pop(k) for k in list(config.keys()) if k.startswith("_")] # If needed, get the full key for *quantity* - key = infer_keys(rep, key) + key = rep.infer_keys(key) if output_path and not output_path.is_dir(): # Add a new computation that writes *key* to the specified file - rep.add("cli-output", (partial(write_report, path=output_path), key)) - key = "cli-output" + key = rep.add( + "cli-output", (partial(rep.get_comp("write_report"), path=output_path), key) + ) log.info("…done") return rep, key - - -def add_aggregate(rep: Reporter, info): - """Add one entry from the 'aggregate:' section of a config file. - - Each entry uses :meth:`~.ixmp.reporting.Reporter.aggregate` to - compute sums across labels within one dimension of a quantity. - - The entry *info* must contain: - - - **_quantities**: list of 0 or more keys for quantities to aggregate. The - full dimensionality of the key(s) is inferred. - - **_tag** (:class:`str`): new tag to append to the keys for the aggregated - quantities. - - **_dim** (:class:`str`): dimensions - - All other keys are treated as group names; the corresponding values are - lists of labels along the dimension to sum. - - **Example:** - - .. code-block:: yaml - - aggregate: - - _quantities: [foo, bar] - _tag: aggregated - _dim: a - - baz123: [baz1, baz2, baz3] - baz12: [baz1, baz2] - - If the full dimensionality of the input quantities are ``foo:a-b`` and - ``bar:a-b-c``, then :meth:`add_aggregate` creates the new quantities - ``foo:a-b:aggregated`` and ``bar:a-b-c:aggregated``. These new quantities - have the new labels ``baz123`` and ``baz12`` along their ``a`` dimension, - with sums of the indicated values. - """ - # Copy for destructive .pop() - info = copy(info) - - quantities = infer_keys(rep, info.pop("_quantities")) - tag = info.pop("_tag") - groups = {info.pop("_dim"): info} - - for qty in quantities: - keys = rep.aggregate(qty, tag, groups, sums=True) - - log.info(f"Add {repr(keys[0])} + {len(keys)-1} partial sums") - - -def add_combination(rep: Reporter, info): - r"""Add one entry from the 'combine:' section of a config file. - - Each entry uses the :func:`~.combine` operation to compute a weighted sum - of different quantities. - - The entry *info* must contain: - - - **key**: key for the new quantity, including dimensionality. - - **inputs**: a list of dicts specifying inputs to the weighted sum. Each - dict contains: - - - **quantity** (required): key for the input quantity. - :meth:`add_combination` infers the proper dimensionality from the - dimensions of `key` plus dimension to `select` on. - - **select** (:class:`dict`, optional): selectors to be applied to the - input quantity. Keys are dimensions; values are either single labels, - or lists of labels. In the latter case, the sum is taken across these - values, so that the result has the same dimensionality as `key`. - - **weight** (:class:`int`, optional): weight for the input quantity; - default 1. - - **Example.** For the following YAML: - - .. code-block:: yaml - - combine: - - key: foo:a-b-c - inputs: - - quantity: bar - weight: -1 - - quantity: baz::tag - select: {d: [d1, d2, d3]} - - …:meth:`add_combination` infers: - - .. math:: - - \text{foo}_{abc} = -1 \times \text{bar}_{abc} - + 1 \times \sum_{d \in \{ d1, d2, d3 \}}{\text{baz}_{abcd}^\text{(tag)}} - \quad \forall \quad a, b, c - """ - # Split inputs into three lists - quantities, select, weights = [], [], [] - - # Key for the new quantity - key = Key.from_str_or_key(info["key"]) - - # Loop over inputs to the combination - for i in info["inputs"]: - # Required dimensions for this input: output key's dims, plus any - # dims that must be selected on - selector = i.get("select", {}) - dims = set(key.dims) | set(selector.keys()) - quantities.append(infer_keys(rep, i["quantity"], dims)) - - select.append(selector) - weights.append(i.get("weight", 1)) - - # Check for malformed input - assert len(quantities) == len(select) == len(weights) - - # Computation - c = tuple([partial(combine, select=select, weights=weights)] + quantities) - - added = rep.add(key, c, strict=True, index=True, sums=True) - - log.info(f"Add {repr(key)} + {len(added)-1} partial sums") - log.debug(" as combination of") - log.debug(f" {repr(quantities)}") - - -def add_iamc_table(rep: Reporter, info): - """Add one entry from the 'iamc:' section of a config file. - - Each entry uses :meth:`message_ix.reporting.Reporter.convert_pyam` - (plus extra computations) to reformat data from the internal - :class:`ixmp.reporting.Quantity` data structure into a - :class:`pyam.IamDataFrame`. - - The entry *info* must contain: - - - **variable** (:class:`str`): variable name. This is used two ways: it - is placed in 'Variable' column of the resulting IamDataFrame; and the - reporting key to :meth:`~ixmp.reporting.Reporter.get` the data frame is - ``:iamc``. - - **base** (:class:`str`): key for the quantity to convert. - - **select** (:class:`dict`, optional): keyword arguments to - :meth:`ixmp.reporting.Quantity.sel`. - - **group_sum** (2-:class:`tuple`, optional): `group` and `sum` arguments - to :func:`.group_sum`. - - **year_time_dim** (:class:`str`, optional): Dimension to use for the IAMC - 'Year' or 'Time' column. Default 'ya'. (Passed to - :meth:`~message_ix.reporting.Reporter.convert_pyam`.) - - **drop** (:class:`list` of :class:`str`, optional): Dimensions to drop - (→ convert_pyam). - - **unit** (:class:`str`, optional): Force output in these units (→ - convert_pyam). - - Additional entries are passed as keyword arguments to :func:`.collapse`, - which is then given as the `collapse` callback for - :meth:`~message_ix.reporting.Reporter.convert_pyam`. - - :func:`.collapse` formats the 'Variable' column of the IamDataFrame. - The variable name replacements from the 'iamc variable names:' section of - the config file are applied to all variables. - """ - # For each quantity, use a chain of computations to prepare it - name = info.pop("variable") - - # Chain of keys produced: first entry is the key for the base quantity - base = Key.from_str_or_key(info.pop("base")) - keys = [base] - - # Second entry is a simple rename - keys.append(rep.add(Key(name, base.dims, base.tag), base)) - - # Optionally select a subset of data from the base quantity - try: - sel = info.pop("select") - except KeyError: - pass - else: - key = keys[-1].add_tag("sel") - rep.add(key, (select, keys[-1], sel), strict=True) - keys.append(key) - - # Optionally aggregate data by groups - try: - gs = info.pop("group_sum") - except KeyError: - pass - else: - key = keys[-1].add_tag("agg") - task = (partial(group_sum, group=gs[0], sum=gs[1]), keys[-1]) - rep.add(key, task, strict=True) - keys.append(key) - - # Arguments for Reporter.convert_pyam() - args = dict( - # Use 'ya' for the IAMC 'Year' column; unless YAML reporting config - # includes a different dim under format/year_time_dim. - year_time_dim=info.pop("year_time_dim", "ya"), - drop=set(info.pop("drop", [])) & set(keys[-1].dims), - replace_vars="iamc variable names", - ) - - # Optionally convert units - try: - args["unit"] = info.pop("unit") - except KeyError: - pass - - # Remaining arguments are for the collapse() callback - args["collapse"] = partial(collapse, var_name=name, **info) - - # Use the message_ix.Reporter method to add the coversion step - iamc_keys = rep.convert_pyam(keys[-1], **args) - keys.extend(iamc_keys) - - # Revise the 'message:default' report to include the last key in the chain - rep.add("message:default", rep.graph["message:default"] + (keys[-1],)) - - log.info(f"Add {repr(keys[-1])} from {repr(keys[0])}") - log.debug(f" {len(keys)} keys total") - - -def add_report(rep: Reporter, info): - """Add items from the 'report' tree in the config file.""" - log.info(f"Add report {info['key']} with {len(info['members'])} table(s)") - - # Concatenate pyam data structures - rep.add(info["key"], tuple([concat] + info["members"]), strict=True) - - -def add_general(rep: Reporter, info): - """Add one entry from the 'general:' tree in the config file. - - This is, as the name implies, the most generalized section of the config - file. Entry *info* must contain: - - - **comp**: this refers to the name of a computation that is available in - the namespace of :mod:`message_data.reporting.computations` (be aware - that it also imports all the computations from :doc:`ixmp - ` and :doc:`message_ix `). E.g. - if 'product', then :meth:`ixmp.reporting.Reporter.add_product` is - called, which also automatically infers the correct dimensions for - each input. - - **key**: the key for the computed quantity. - - **inputs**: a list of keys to which the computation is applied. - - **args** (:class:`dict`, optional): keyword arguments to the computation. - - **add args** (:class:`dict`, optional): keyword arguments to - :meth:`ixmp.reporting.Reporter.add` itself. - """ - inputs = infer_keys(rep, info.get("inputs", [])) - - if info["comp"] == "product": - key = rep.add_product(info["key"], *inputs) - log.info(f"Add {repr(key)} using .add_product()") - else: - key = Key.from_str_or_key(info["key"]) - - # Retrieve the function for the computation - f = getattr(computations, info["comp"]) - - log.info(f"Add {repr(key)} using {f.__name__}(...)") - - kwargs = info.get("args", {}) - task = tuple([partial(f, **kwargs)] + inputs) - - added = rep.add( - key, task, strict=True, index=True, sums=info.get("sums", False) - ) - - if isinstance(added, list): - log.info(f" + {len(added)-1} partial sums") diff --git a/message_ix_models/report/plot.py b/message_ix_models/report/plot.py deleted file mode 100644 index 2bc646108d..0000000000 --- a/message_ix_models/report/plot.py +++ /dev/null @@ -1,66 +0,0 @@ -import logging - -import matplotlib -import plotnine as p9 - -log = logging.getLogger(__name__) - - -try: - matplotlib.use("cairo") -except ImportError: - log.info( - f"'cairo' not available; using {matplotlib.get_backend()} matplotlib backend" - ) - - -class Plot: - """Class for reporting plots. - - To use this class: - - 1. Create a subclass that overrides :attr:`name`, :attr:`inputs`, and - :meth:`generate`. - - 2. Call :meth:`computation` to get a tuple (callable, followed by key - names) suitable for adding to a Reporter:: - - rep.add("foo", P.computation()) - """ - - #: Path fragments for output. - path = [] - #: Filename base for saving the plot. - name = "" - #: Keys for reporting quantities needed by :meth:`generate`. - inputs = [] - #: Keyword arguments for :meth:`plotnine.ggplot.save`. - save_args = dict(verbose=False) - - # TODO add static geoms automatically in generate() - __static = [] - - def __call__(self, config, *args): - path = config["output_path"].joinpath(*self.path, f"{self.name}.pdf") - log.info(f"Generate {path}") - path.parent.mkdir(parents=True, exist_ok=True) - - plot_or_plots = self.generate(*args) - - try: - # Single plot - plot_or_plots.save(path, **self.save_args) - except AttributeError: - # Iterator containing multiple plots - p9.save_as_pdf_pages(plot_or_plots, path, **self.save_args) - - return path - - @classmethod - def computation(cls): - """Return a computation :class:`tuple` to add to a Reporter.""" - return tuple([cls(), "config"] + cls.inputs) - - def generate(*args): - """Generate and return the plot.""" - return p9.ggplot(*args) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 96ccb132c5..fa5a1cb6a7 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,8 +1,5 @@ import logging -from ixmp.reporting import Key - - log = logging.getLogger(__name__) @@ -161,26 +158,3 @@ def collapse_gwp_info(df, var): # Remove columns from further processing [var.remove(c) for c in cols] return df.drop(cols, axis=1), var - - -def infer_keys(reporter, key_or_keys, dims=[]): - """Helper to guess complete keys in *reporter*.""" - single = isinstance(key_or_keys, (str, Key)) - keys = [key_or_keys] if single else key_or_keys - - result = [] - - for k in keys: - # Has some dimensions or tag - key = Key.from_str_or_key(k) if ":" in k else k - - if "::" in k or key not in reporter: - key = reporter.full_key(key) - - if dims: - # Drop all but *dims* - key = key.drop(*[d for d in key.dims if d not in dims]) - - result.append(key) - - return result[0] if single else result From 7fabe17f15f60ecb1326381cda7a748d2c1762e6 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 9 Feb 2021 16:50:56 +0100 Subject: [PATCH 111/220] Adjust imports; remove tests of upstreamed reporting code --- message_ix_models/tests/report/__init__.py | 0 .../tests/report/test_computations.py | 72 ------------------- message_ix_models/tests/test_report.py | 33 +-------- 3 files changed, 1 insertion(+), 104 deletions(-) delete mode 100644 message_ix_models/tests/report/__init__.py delete mode 100644 message_ix_models/tests/report/test_computations.py diff --git a/message_ix_models/tests/report/__init__.py b/message_ix_models/tests/report/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/message_ix_models/tests/report/test_computations.py b/message_ix_models/tests/report/test_computations.py deleted file mode 100644 index dfcd30c040..0000000000 --- a/message_ix_models/tests/report/test_computations.py +++ /dev/null @@ -1,72 +0,0 @@ -from functools import partial -import logging - -from ixmp.reporting import Quantity -from ixmp.testing import assert_logs -from message_ix.reporting import Reporter - -from message_data import testing -from message_data.reporting.computations import update_scenario -from message_data.tools import ScenarioInfo, make_df - - -def test_update_scenario(request, caplog, session_context): - scen = testing.bare_res(request, session_context) - - # Number of rows in the 'demand' parameter - N_before = len(scen.par("demand")) - - # A Reporter used as calculation engine - calc = Reporter() - - # Target Scenario for updating data - calc.add("target", scen) - - # Create a pd.DataFrame suitable for Scenario.add_par() - units = "GWa" - demand = make_df( - "demand", - node="World", - commodity="electr", - level="secondary", - year=ScenarioInfo(scen).Y[:10], - time="year", - value=1.0, - unit=units, - ) - - # Add to the Reporter - calc.add("input", demand) - - # Task to update the scenario with the data - calc.add("test 1", (partial(update_scenario, params=["demand"]), "target", "input")) - - # Trigger the computation that results in data being added - with assert_logs(caplog, "'demand' ← 10 rows", at_level=logging.DEBUG): - # Returns nothing - assert calc.get("test 1") is None - - # Rows were added to the parameter - assert len(scen.par("demand")) == N_before + len(demand) - - # Modify the data - demand["value"] = 2.0 - demand = demand.iloc[:5] - # Convert to a Quantity object - input = Quantity( - demand.set_index("node commodity level year time".split())["value"], - name="demand", - units=units, - ) - # Re-add - calc.add("input", input) - - # Revise the task; the parameter name ('demand') - calc.add("test 2", (update_scenario, "target", "input")) - - # Trigger the computation - with assert_logs(caplog, "'demand' ← 5 rows"): - calc.get("test 2") - - # Only half the rows have been updated - assert scen.par("demand")["value"].mean() == 1.5 diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index b0f87837fc..f0212804ec 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -1,14 +1,9 @@ -"""Tests for reporting/.""" -from functools import partial - -from ixmp.reporting.quantity import Quantity -from message_ix.reporting import Reporter +"""Tests for message_data.reporting.""" import pandas as pd import pytest from message_data import testing from message_data.reporting import prepare_reporter -from message_data.reporting.computations import combine # Minimal reporting configuration for testing @@ -26,32 +21,6 @@ # yield test_context.get_config_file('report', 'global') -def test_computation_combine(): - rep = Reporter() - - # Add data to the Reporter - foo = ["foo1", "foo2"] - bar = ["bar1", "bar2"] - - a = pd.Series( - [1, 2, 3, 4], - index=pd.MultiIndex.from_product([foo, bar], names=["foo", "bar"]), - ) - b = pd.Series( - [10, 20, 30, 40], - index=pd.MultiIndex.from_product([bar, foo], names=["bar", "foo"]), - ) - c = pd.Series([100, 200], index=pd.Index(foo, name="foo")) - - rep.add("a", Quantity(a)) - rep.add("b", Quantity(b)) - rep.add("c", Quantity(c)) - - rep.add("d", (partial(combine, weights=[0.5, 1, 2]), "a", "b", "c")) - - assert rep.get("d").loc[("foo2", "bar1")] == 3 * 0.5 + 20 * 1 + 200 * 2 - - def test_report_bare_res(request, session_context): """Prepare and run the standard MESSAGE-GLOBIOM reporting on a bare RES.""" ctx = session_context From 9a5713f4343a380664e5a6436e12d3dd5cfd3187 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 10 Feb 2021 14:05:35 +0100 Subject: [PATCH 112/220] Update /reporting/doc/index.rst; add genno to intersphinx config --- doc/api/report/index.rst | 47 +++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 20 deletions(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index f4b6d21d5a..2404d15edd 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -17,44 +17,48 @@ See also: Introduction ============ -:mod:`message_data.reporting` is developed on the basis of :doc:`message_ix `, and in turn :doc:`ixmp ` features. +:mod:`message_data.reporting` is developed on the basis of :doc:`message_ix `, :doc:`ixmp `, and :mod:`genno`. Each layer of the stack provides reporting features that match the framework features at the corresponding level: .. list-table:: :header-rows: 1 - * - Stack level + * - Package - Role - Core feature - Reporting feature + * - ``genno`` + - Structured computations + - :class:`~genno.Computer`, + :class:`~genno.Key`, + :class:`~genno.Quantity` + - — * - ``ixmp`` - Optimization models & data - - N-dimensional parameters - - :class:`~ixmp.reporting.Reporter`, - :class:`~ixmp.reporting.Key`, - :class:`~ixmp.reporting.quantity.Quantity` + - Sets, parameters, variables + - Auto-populated :class:`~ixmp.Reporter` * - ``message_ix`` - Generalized energy model - Specific sets/parameters (``output``) - Derived quantities (``tom``) * - ``message_data`` - MESSAGEix-GLOBIOM models - - Specific set members (``coal_ppl`` in ``t``) + - Specific structure (``coal_ppl`` in ``t``) - Calculations for M-G tech groups -For example: ``message_ix`` cannot contain reporting code that references ``coal_ppl``, because not every model built on the MESSAGE framework will have a technology with this name. -Any reporting specific to ``coal_ppl`` must be in ``message_data``, since all models in the MESSAGEix-GLOBIOM family will have this technology. +For example: :mod:`message_ix` cannot contain reporting code that references ``coal_ppl``, because not every model built on the MESSAGE framework will have a technology with this name. +Any reporting specific to ``coal_ppl`` must be in :mod:`message_data`, since all models in the MESSAGEix-GLOBIOM family will have this technology. The basic **design pattern** of :mod:`message_data.reporting` is: - A ``global.yaml`` file (i.e. in `YAML `_ format) that contains a *concise* yet *explicit* description of the reporting computations needed for a MESSAGE-GLOBIOM model. - :func:`.prepare_reporter` reads the file and a Scenario object, and uses it to populate a new Reporter… -- …by calling methods like :func:`.add_aggregate` that process atomic chunks of the file. +- …by calling :doc:`configuration handlers ` that process sections or items from the file. Features ======== -By combining these ixmp, message_ix, and message_data features, the following functionality is provided. +By combining these genno, ixmp, message_ix, and message_data features, the following functionality is provided. .. note:: If any of this does not appear to work as advertised, file a bug! @@ -114,17 +118,8 @@ Core .. currentmodule:: message_data.reporting.core -.. autosummary:: - - add_aggregate - add_combination - add_general - add_iamc_table - add_report - .. automodule:: message_data.reporting.core :members: - :exclude-members: prepare_reporter Computations @@ -134,6 +129,18 @@ Computations .. automodule:: message_data.reporting.computations :members: + :mod:`message_data` provides the following: + + .. autosummary:: + + gwp_factors + share_curtailment + + Other computations are provided by: + + - :mod:`message_ix.reporting.computations` + - :mod:`ixmp.reporting.computations` + - :mod:`genno.computations` Utilities --------- From ef8a42b57db4969c7ce84a5d01b5264bdb67ae67 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 11 Feb 2021 17:48:41 +0100 Subject: [PATCH 113/220] Remove unused/unsupported arguments in .reporting.util.collapse() --- message_ix_models/report/util.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index fa5a1cb6a7..36c4075bef 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -56,7 +56,7 @@ } -def collapse(df, var_name, var=[], region=[], replace_common=True): +def collapse(df, var=[], replace_common=True): """Callback for the `collapse` argument to :meth:`~.Reporter.convert_pyam`. The dimensions listed in the `var` and `region` arguments are automatically @@ -66,11 +66,10 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): Parameters ---------- - var_name : str - Initial value to populate the IAMC 'Variable' column. var : list of str, optional - Dimensions to concatenate to the 'Variable' column. These are joined - after the `var_name` using the pipe ('|') character. + Strings or dimensions to concatenate to the 'Variable' column. The first of + these is usually a string value used to populate the column. These are joined + using the pipe ('|') character. region : list of str, optional Dimensions to concatenate to the 'Region' column. replace_common : bool, optional @@ -102,6 +101,8 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): except KeyError: pass + var_name, *var = var + if "emissions" in var_name.lower(): log.info(f"Collapse GWP info for {var_name}") df, var = collapse_gwp_info(df, var) @@ -109,9 +110,6 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): # Apply replacements df = df.replace(REPLACE_DIMS) - # Extend region column ('n' and 'nl' are automatically added by message_ix) - df["region"] = df["region"].astype(str).str.cat([df[c] for c in region], sep="|") - # Assemble variable column df["variable"] = var_name df["variable"] = df["variable"].str.cat([df[c] for c in var], sep="|") @@ -123,7 +121,7 @@ def collapse(df, var_name, var=[], region=[], replace_common=True): df["variable"] = df["variable"].str.replace(pat, repl, regex=True) # Drop same columns - return df.drop(var + region, axis=1) + return df.drop(var, axis=1) def collapse_gwp_info(df, var): From f3d4c2cc6e253595f4c1b71eb5f3560cce4a5f5c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 11 Feb 2021 17:49:33 +0100 Subject: [PATCH 114/220] Override genno.config handler for "iamc:"; simplify prepare_reporter() --- message_ix_models/report/__init__.py | 3 +- message_ix_models/report/core.py | 79 +++++++++++++++++++++------- 2 files changed, 60 insertions(+), 22 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index dced1dc70f..68bb72e3e5 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -2,10 +2,9 @@ from pathlib import Path import logging -from .core import CONFIG, prepare_reporter, register +from .core import prepare_reporter, register __all__ = [ - "CONFIG", "prepare_reporter", "register", "report", diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py index 5409a745c4..7c8b276c2a 100644 --- a/message_ix_models/report/core.py +++ b/message_ix_models/report/core.py @@ -2,24 +2,36 @@ from copy import deepcopy from functools import partial from pathlib import Path +from typing import Callable, List +import genno.config +from genno.compat.pyam import iamc as handle_iamc from message_ix.reporting import Reporter + +from . import computations, util +from message_data.tools import Context + log = logging.getLogger(__name__) -# Equivalent of some content in global.yaml -CONFIG = dict(units=dict(replace={"-": ""})) +# Add to the configuration keys stored by Reporter.configure(). +genno.config.STORE.add("output_path") + +#: List of callbacks for preparing the Reporter +CALLBACKS: List[Callable] = [] def register(callback) -> None: """Register a callback function for :meth:`prepare_reporter`. - Each registered function is called by :meth:`prepare_reporter`, in order to - add or modify reporting keys. Specific model variants and projects can - register a callback to extend the reporting graph. + Each registered function is called by :meth:`prepare_reporter`, in order to add or + modify reporting keys. Specific model variants and projects can register a callback + to extend the reporting graph. - Callback functions must take one argument, with a type annotation:: + Callback functions must take one argument, the Reporter: + + .. code-block:: python from message_ix.reporting import Reporter from message_data.reporting import register @@ -30,8 +42,6 @@ def cb(rep: Reporter): register(cb) """ - from genno.config import CALLBACKS - if callback in CALLBACKS: log.info(f"Already registered: {callback}") return @@ -39,6 +49,28 @@ def cb(rep: Reporter): CALLBACKS.append(callback) +@genno.config.handles("iamc") +def iamc(c: Reporter, info): + """Handle one entry from the ``iamc:`` config section.""" + # Use message_data custom collapse() method + info.setdefault("collapse", {}) + info["collapse"]["callback"] = util.collapse + + # Add standard renames + info.setdefault("rename", {}) + for dim, target in ( + ("n", "region"), + ("nl", "region"), + ("y", "year"), + ("ya", "year"), + ("yv", "year"), + ): + info["rename"].setdefault(dim, target) + + # Invoke the genno built-in handler + handle_iamc(c, info) + + def prepare_reporter(scenario, config, key, output_path=None): """Prepare to report *key* from *scenario*. @@ -69,27 +101,34 @@ def prepare_reporter(scenario, config, key, output_path=None): # Create a Reporter for *scenario* rep = Reporter.from_scenario(scenario) + # Append the message_data computations + rep.modules.append(computations) + + # Apply configuration if isinstance(config, dict): - # Deepcopy to avoid destructive operations below - config = deepcopy(config) + if len(config): + # Deepcopy to avoid destructive operations below + config = deepcopy(config) + else: + config = dict( + path=Context.get_instance(-1).get_config_file("report", "global") + ) else: - # Load and apply configuration # A non-dict *config* argument must be a Path - config = dict(path=Path(config)) + path = Path(config) + if not path.exists() and not path.is_absolute(): + # Try to resolve relative to the data directory + path = Context.get_instance(-1).message_data_path.joinpath("report", path) + config = dict(path=path) # Directory for reporting output config.setdefault("output_path", output_path) + # Handle configuration rep.configure(**config) - # Reference to the configuration as stored in the reporter - config = rep.graph["config"] - - # Variable name replacement: dict, not list of entries - rep.add("iamc variable names", config.pop("iamc variable names", {})) - - # Tidy the config dict by removing any YAML sections starting with '_' - [config.pop(k) for k in list(config.keys()) if k.startswith("_")] + for callback in CALLBACKS: + callback(rep) # If needed, get the full key for *quantity* key = rep.infer_keys(key) From 5a0af842e5303e5143f6197d02aa8761693f7c18 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 11 Feb 2021 17:50:58 +0100 Subject: [PATCH 115/220] Remove obsolete test_iamc_replace_vars --- message_ix_models/tests/test_report.py | 48 ++++++-------------------- 1 file changed, 11 insertions(+), 37 deletions(-) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index f0212804ec..0857a23875 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -14,13 +14,6 @@ } -# commented: was only used in test_report_bare_res(); uncomment if 1+ more -# use(s) are added. -# @pytest.fixture -# def global_config(test_context): -# yield test_context.get_config_file('report', 'global') - - def test_report_bare_res(request, session_context): """Prepare and run the standard MESSAGE-GLOBIOM reporting on a bare RES.""" ctx = session_context @@ -49,12 +42,16 @@ def test_report_bare_res(request, session_context): columns="node_loc technology year_vtg value unit".split(), ) -IAMC_INV_COST = dict( - variable="Investment Cost", - base="inv_cost:nl-t-yv", - year_time_dim="yv", - var=["t"], - unit="EUR_2005", +INV_COST_CONFIG = dict( + iamc=[ + dict( + variable="Investment Cost", + base="inv_cost:nl-t-yv", + rename=dict(nl="region", yv="year"), + collapse=dict(var=["t"]), + unit="EUR_2005", + ) + ] ) @@ -102,32 +99,9 @@ def test_apply_units(request, test_context, regions): assert str(reporter.get(key).attrs["_unit"]) == USD_2005 # Update configuration, re-create the reporter - config["iamc"] = [IAMC_INV_COST] + config.update(INV_COST_CONFIG) reporter, key = prepare_reporter(bare_res, config=config, key=qty) # Units are converted df = reporter.get("Investment Cost:iamc").as_pandas() assert set(df["unit"]) == {"EUR_2005"} - - -@pytest.mark.parametrize("regions", ["R11"]) -def test_iamc_replace_vars(request, test_context, regions): - """Test the 'iamc variable names' reporting configuration.""" - test_context.regions = regions - scen = testing.bare_res(request, test_context) - - qty = "inv_cost" - config = { - "iamc": [IAMC_INV_COST], - "iamc variable names": { - "Investment Cost|Coal_Ppl": "Investment Cost|Coal", - }, - } - scen.check_out() - scen.add_par("inv_cost", DATA_INV_COST) - scen.commit("") - scen.solve() - - reporter, key = prepare_reporter(scen, config=config, key=qty) - df = reporter.get("Investment Cost:iamc").as_pandas() - assert set(df["variable"]) == {"Investment Cost|Coal"} From 0c3c2fddd7d07958fc27d2ee0d20fae293702b3a Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 11 Feb 2021 17:51:32 +0100 Subject: [PATCH 116/220] Update report/global.yaml for genno --- message_ix_models/data/report/global.yaml | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 13562a67df..be3ed21e35 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -846,26 +846,17 @@ _iamc formats: price_iamc: &price_iamc unit: USD_2010 / GJ - year_time_dim: y -# Replacements for entire variable name strings -iamc variable names: - Input|variable|name: Final|variable|name - - -# This section is used by reporting.core.add_iamc_table() +# This section is handled by message_data.reporting.core.iamc iamc: - - variable: GDP|MER base: GDP:n-y unit: billion USD_2010 / year - year_time_dim: y - variable: GDP|PPP base: gdp_ppp:n-y unit: billion USD_2010 / year - year_time_dim: y - variable: Primary Energy|Coal base: coal:nl-ya @@ -980,7 +971,7 @@ iamc: # removed. - variable: land_out CH4 base: land_out:n-s-y-c:CH4_0+1+2 - year_time_dim: y + rename: {y: year} var: [c, s] # SF6 emissions @@ -1005,12 +996,12 @@ iamc: # TODO check that Mt (rather than t or kt) is correct. # TODO check whether there is a species / GWP conversion here. unit: USD_2010 / Mt - year_time_dim: y + rename: {y: year} # commented: see above # - variable: Price w/o carbon # base: price ex carbon:n-t-y-c-e # var: [t, c, l, e] -# year_time_dim: y +# rename: {y: year} # TODO ensure these are covered by the preferred method, above, and then # remove these separate conversions. @@ -1058,7 +1049,7 @@ iamc: <<: *price_iamc #- variable: Price (legacy)|Agriculture|Non-Energy Crops and Livestock|Index # base: price_agriculture:n-y-h -# year_time_dim: y +# rename: {y: year} # This section is used by reporting.core.add_report() From 65c4bc4f8400998d55ffcf9c6184da17d73ce40c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 12 Feb 2021 20:47:54 +0100 Subject: [PATCH 117/220] Update reporting documentation --- doc/api/report/index.rst | 53 +++++++++++----------------------------- 1 file changed, 14 insertions(+), 39 deletions(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 2404d15edd..9678e0d5a1 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -6,8 +6,9 @@ Reporting See also: -- `“Reporting” project board `_ on GitHub, tracking ongoing development. - ``global.yaml``, the :doc:`reporting/default-config`. +- Documentation for :mod:`genno`, :mod:`ixmp.reporting`, and :mod:`message_ix.reporting`. +- `“Reporting” project board `_ on GitHub for the initial development of these features. .. toctree:: :hidden: @@ -17,43 +18,15 @@ See also: Introduction ============ -:mod:`message_data.reporting` is developed on the basis of :doc:`message_ix `, :doc:`ixmp `, and :mod:`genno`. -Each layer of the stack provides reporting features that match the framework features at the corresponding level: - -.. list-table:: - :header-rows: 1 - - * - Package - - Role - - Core feature - - Reporting feature - * - ``genno`` - - Structured computations - - :class:`~genno.Computer`, - :class:`~genno.Key`, - :class:`~genno.Quantity` - - — - * - ``ixmp`` - - Optimization models & data - - Sets, parameters, variables - - Auto-populated :class:`~ixmp.Reporter` - * - ``message_ix`` - - Generalized energy model - - Specific sets/parameters (``output``) - - Derived quantities (``tom``) - * - ``message_data`` - - MESSAGEix-GLOBIOM models - - Specific structure (``coal_ppl`` in ``t``) - - Calculations for M-G tech groups - -For example: :mod:`message_ix` cannot contain reporting code that references ``coal_ppl``, because not every model built on the MESSAGE framework will have a technology with this name. +See :doc:`the discussion in the MESSAGEix docs ` about the stack. +In short, :mod:`message_ix` cannot contain reporting code that references ``coal_ppl``, because not every model built on the MESSAGE framework will have a technology with this name. Any reporting specific to ``coal_ppl`` must be in :mod:`message_data`, since all models in the MESSAGEix-GLOBIOM family will have this technology. The basic **design pattern** of :mod:`message_data.reporting` is: - A ``global.yaml`` file (i.e. in `YAML `_ format) that contains a *concise* yet *explicit* description of the reporting computations needed for a MESSAGE-GLOBIOM model. -- :func:`.prepare_reporter` reads the file and a Scenario object, and uses it to populate a new Reporter… -- …by calling :doc:`configuration handlers ` that process sections or items from the file. +- :func:`.prepare_reporter` reads the file and a Scenario object, and uses it to populate a new Reporter. + This function mostly relies on the :doc:`configuration handlers ` built in to Genno to handle the different sections of the file. Features ======== @@ -65,11 +38,11 @@ By combining these genno, ixmp, message_ix, and message_data features, the follo Units ----- -- read automatically for ixmp parameters. -- pass through calculations/are derived automatically. -- are recognized based on the definitions of non-SI units from `IAMconsortium/units `_. -- are discarded when inconsistent. -- can be overridden for entire parameters: +- Are read automatically for ixmp parameters. +- Pass through calculations/are derived automatically. +- Are recognized based on the definitions of non-SI units from `IAMconsortium/units `_. +- Are discarded when inconsistent. +- Can be overridden for entire parameters: .. code-block:: yaml @@ -77,7 +50,7 @@ Units apply: inv_cost: USD -- can be set explicitly when converting data to IAMC format: +- Can be set explicitly when converting data to IAMC format: .. code-block:: yaml @@ -94,6 +67,7 @@ Continous reporting The IIASA TeamCity build server is configured to automatically run the full (:file:`global.yaml`) reporting on the following scenarios: .. literalinclude:: ../../ci/report.yaml + :caption: :file:`ci/report.yaml` :language: yaml This takes place: @@ -120,6 +94,7 @@ Core .. automodule:: message_data.reporting.core :members: + :exclude-members: prepare_reporter Computations From be57b10d7f9de2cf3f965bc52e6476a97f96b6d8 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 12 Feb 2021 21:22:13 +0100 Subject: [PATCH 118/220] Merge .reporting.core to .reporting.__init__ --- doc/api/report/index.rst | 10 -- message_ix_models/report/__init__.py | 152 ++++++++++++++++++++++++++- message_ix_models/report/core.py | 144 ------------------------- 3 files changed, 150 insertions(+), 156 deletions(-) delete mode 100644 message_ix_models/report/core.py diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 9678e0d5a1..9d270e546d 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -87,16 +87,6 @@ API reference :members: -Core ----- - -.. currentmodule:: message_data.reporting.core - -.. automodule:: message_data.reporting.core - :members: - :exclude-members: prepare_reporter - - Computations ------------ diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 68bb72e3e5..10d57af17c 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,8 +1,17 @@ """Reporting for the MESSAGEix-GLOBIOM global model.""" -from pathlib import Path import logging +from copy import deepcopy +from functools import partial +from pathlib import Path +from typing import Callable, List + +import genno.config +from genno.compat.pyam import iamc as handle_iamc +from message_ix.reporting import Reporter + +from . import computations, util +from message_data.tools import Context -from .core import prepare_reporter, register __all__ = [ "prepare_reporter", @@ -13,6 +22,72 @@ log = logging.getLogger(__name__) +# Add to the configuration keys stored by Reporter.configure(). +genno.config.STORE.add("output_path") + +#: List of callbacks for preparing the Reporter. +CALLBACKS: List[Callable] = [] + + +@genno.config.handles("iamc") +def iamc(c: Reporter, info): + """Handle one entry from the ``iamc:`` config section. + + This version overrides the version fron :mod:`genno.config` to: + + - Set some defaults for the `rename` argument for :meth:`.convert_pyam`: + + - The `n` and `nl` dimensions are mapped to the "region" IAMC column. + - The `y`, `ya`, and `yv` dimensions are mapped to the "year" column. + + - Use the MESSAGEix-GLOBIOM custom :func:`.util.collapse` callback to perform + renaming etc. while collapsing dimensions to the IAMC ones. + """ + # Use message_data custom collapse() method + info.setdefault("collapse", {}) + info["collapse"]["callback"] = util.collapse + + # Add standard renames + info.setdefault("rename", {}) + for dim, target in ( + ("n", "region"), + ("nl", "region"), + ("y", "year"), + ("ya", "year"), + ("yv", "year"), + ): + info["rename"].setdefault(dim, target) + + # Invoke the genno built-in handler + handle_iamc(c, info) + + +def register(callback) -> None: + """Register a callback function for :meth:`prepare_reporter`. + + Each registered function is called by :meth:`prepare_reporter`, in order to add or + modify reporting keys. Specific model variants and projects can register a callback + to extend the reporting graph. + + Callback functions must take one argument, the Reporter: + + .. code-block:: python + + from message_ix.reporting import Reporter + from message_data.reporting import register + + def cb(rep: Reporter): + # Modify `rep` by calling its methods ... + pass + + register(cb) + """ + if callback in CALLBACKS: + log.info(f"Already registered: {callback}") + return + + CALLBACKS.append(callback) + def report(scenario, key=None, config=None, output_path=None, dry_run=False, **kwargs): """Run complete reporting on *scenario* with output to *output_path*. @@ -85,3 +160,76 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k msg = f" written to {output_path}" if output_path else f":\n{result}" log.info(f"Result{msg}") + + +def prepare_reporter(scenario, config, key, output_path=None): + """Prepare to report *key* from *scenario*. + + Parameters + ---------- + scenario : ixmp.Scenario + MESSAGE-GLOBIOM scenario containing a solution, to be reported. + config : os.Pathlike or dict-like + Reporting configuration path or dictionary. + key : str or ixmp.reporting.Key + Quantity or node to compute. The computation is not triggered (i.e. + :meth:`get ` is not called); but the + corresponding, full-resolution Key is returned. + output_path : os.Pathlike + If given, a computation ``cli-output`` is added to the Reporter which + writes *key* to this path. + + Returns + ------- + ixmp.reporting.Reporter + Reporter prepared with MESSAGE-GLOBIOM calculations. + ixmp.reporting.Key + Same as *key*, in full resolution, if any. + + """ + log.info("Preparing reporter") + + # Create a Reporter for *scenario* + rep = Reporter.from_scenario(scenario) + + # Append the message_data computations + rep.modules.append(computations) + + # Apply configuration + if isinstance(config, dict): + if len(config): + # Deepcopy to avoid destructive operations below + config = deepcopy(config) + else: + config = dict( + path=Context.get_instance(-1).get_config_file("report", "global") + ) + else: + # A non-dict *config* argument must be a Path + path = Path(config) + if not path.exists() and not path.is_absolute(): + # Try to resolve relative to the data directory + path = Context.get_instance(-1).message_data_path.joinpath("report", path) + config = dict(path=path) + + # Directory for reporting output + config.setdefault("output_path", output_path) + + # Handle configuration + rep.configure(**config) + + for callback in CALLBACKS: + callback(rep) + + # If needed, get the full key for *quantity* + key = rep.infer_keys(key) + + if output_path and not output_path.is_dir(): + # Add a new computation that writes *key* to the specified file + key = rep.add( + "cli-output", (partial(rep.get_comp("write_report"), path=output_path), key) + ) + + log.info("…done") + + return rep, key diff --git a/message_ix_models/report/core.py b/message_ix_models/report/core.py deleted file mode 100644 index 7c8b276c2a..0000000000 --- a/message_ix_models/report/core.py +++ /dev/null @@ -1,144 +0,0 @@ -import logging -from copy import deepcopy -from functools import partial -from pathlib import Path -from typing import Callable, List - -import genno.config -from genno.compat.pyam import iamc as handle_iamc -from message_ix.reporting import Reporter - - -from . import computations, util -from message_data.tools import Context - -log = logging.getLogger(__name__) - - -# Add to the configuration keys stored by Reporter.configure(). -genno.config.STORE.add("output_path") - -#: List of callbacks for preparing the Reporter -CALLBACKS: List[Callable] = [] - - -def register(callback) -> None: - """Register a callback function for :meth:`prepare_reporter`. - - Each registered function is called by :meth:`prepare_reporter`, in order to add or - modify reporting keys. Specific model variants and projects can register a callback - to extend the reporting graph. - - Callback functions must take one argument, the Reporter: - - .. code-block:: python - - from message_ix.reporting import Reporter - from message_data.reporting import register - - def cb(rep: Reporter): - # Modify `rep` by calling its methods ... - pass - - register(cb) - """ - if callback in CALLBACKS: - log.info(f"Already registered: {callback}") - return - - CALLBACKS.append(callback) - - -@genno.config.handles("iamc") -def iamc(c: Reporter, info): - """Handle one entry from the ``iamc:`` config section.""" - # Use message_data custom collapse() method - info.setdefault("collapse", {}) - info["collapse"]["callback"] = util.collapse - - # Add standard renames - info.setdefault("rename", {}) - for dim, target in ( - ("n", "region"), - ("nl", "region"), - ("y", "year"), - ("ya", "year"), - ("yv", "year"), - ): - info["rename"].setdefault(dim, target) - - # Invoke the genno built-in handler - handle_iamc(c, info) - - -def prepare_reporter(scenario, config, key, output_path=None): - """Prepare to report *key* from *scenario*. - - Parameters - ---------- - scenario : ixmp.Scenario - MESSAGE-GLOBIOM scenario containing a solution, to be reported. - config : os.Pathlike or dict-like - Reporting configuration path or dictionary. - key : str or ixmp.reporting.Key - Quantity or node to compute. The computation is not triggered (i.e. - :meth:`get ` is not called); but the - corresponding, full-resolution Key is returned. - output_path : os.Pathlike - If given, a computation ``cli-output`` is added to the Reporter which - writes *key* to this path. - - Returns - ------- - ixmp.reporting.Reporter - Reporter prepared with MESSAGE-GLOBIOM calculations. - ixmp.reporting.Key - Same as *key*, in full resolution, if any. - - """ - log.info("Preparing reporter") - - # Create a Reporter for *scenario* - rep = Reporter.from_scenario(scenario) - - # Append the message_data computations - rep.modules.append(computations) - - # Apply configuration - if isinstance(config, dict): - if len(config): - # Deepcopy to avoid destructive operations below - config = deepcopy(config) - else: - config = dict( - path=Context.get_instance(-1).get_config_file("report", "global") - ) - else: - # A non-dict *config* argument must be a Path - path = Path(config) - if not path.exists() and not path.is_absolute(): - # Try to resolve relative to the data directory - path = Context.get_instance(-1).message_data_path.joinpath("report", path) - config = dict(path=path) - - # Directory for reporting output - config.setdefault("output_path", output_path) - - # Handle configuration - rep.configure(**config) - - for callback in CALLBACKS: - callback(rep) - - # If needed, get the full key for *quantity* - key = rep.infer_keys(key) - - if output_path and not output_path.is_dir(): - # Add a new computation that writes *key* to the specified file - key = rep.add( - "cli-output", (partial(rep.get_comp("write_report"), path=output_path), key) - ) - - log.info("…done") - - return rep, key From 8547674cea4108fe8814bb11dc039cdc3d941ef3 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 12 Feb 2021 22:12:10 +0100 Subject: [PATCH 119/220] Add tests of .reporting.util.collapse() --- message_ix_models/data/report/global.yaml | 13 --- message_ix_models/report/__init__.py | 1 - message_ix_models/report/util.py | 111 ++++++++++------------ message_ix_models/tests/test_report.py | 47 ++++++++- 4 files changed, 95 insertions(+), 77 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index be3ed21e35..077b63be06 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -1,9 +1,5 @@ # Configuration for reporting of the MESSAGEix-GLOBIOM global model # -# Some groups in this file ('units', 'files', 'alias') are used by the -# ixmp.reporting and message_ix.reporting built-in configuration code. -# Others are used in message_data.reporting.core.prepare_reporter. -# # # EDITING # @@ -35,9 +31,6 @@ units: emission_factor: "Mt / year" # Files with external data -# -# Entries are keyword arguments to ixmp.Reporter.add_file() - # files: # - path: ./foo.csv # key: gwp:e-gwp_source @@ -58,7 +51,6 @@ units: # Aggregate across dimensions of single quantities # -# - Corresponds to ixmp.Reporter.aggregate via reporting.core.add_aggregate. # - The dimension `_dim` is not removed; it gains new labels that are the sum # of the listed members. Basically regrouping over one dimension. # - Keep members in alphabetical order. @@ -312,7 +304,6 @@ aggregate: # Create new quantities by weighted sum across multiple quantities -# - Parsed by reporting.core.add_combination combine: # Name and dimensions of quantity to be created - key: coal:nl-ya @@ -566,7 +557,6 @@ combine: # c: ["Price|Agriculture|Non-Energy Crops and Livestock|Index"] -# - Parsed by reporting.core.add_general general: - key: Liquids:nl-ya comp: apply_units @@ -848,7 +838,6 @@ _iamc formats: unit: USD_2010 / GJ -# This section is handled by message_data.reporting.core.iamc iamc: - variable: GDP|MER base: GDP:n-y @@ -1051,8 +1040,6 @@ iamc: # base: price_agriculture:n-y-h # rename: {y: year} - -# This section is used by reporting.core.add_report() report: - key: pe test members: diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 10d57af17c..ea0ac3085a 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,4 +1,3 @@ -"""Reporting for the MESSAGEix-GLOBIOM global model.""" import logging from copy import deepcopy from functools import partial diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 36c4075bef..9d9618592e 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,12 +1,18 @@ import logging +import pandas as pd +from genno.compat.pyam.util import collapse as genno_collapse + + log = logging.getLogger(__name__) #: Replacements used in :meth:`collapse`. +#: These are applied using :meth:`pandas.DataFrame.replace` with ``regex=True``; see +#: the documentation of that method. #: #: - Applied to whole strings along each dimension. -#: - These columns have :meth:`str.title` applied before these replacements +#: - These columns have :meth:`str.title` applied before these replacements. REPLACE_DIMS = { "c": { "Crudeoil": "Oil", @@ -19,24 +25,28 @@ "l": { "Final Energy": "Final Energy|Residential", }, - "t": {}, } -#: Replacements used in :meth:`collapse` after the 'variable' column is -#: assembled. +#: Replacements used in :meth:`collapse` after the 'variable' column is assembled. +#: These are applied using :meth:`pandas.DataFrame.replace` with ``regex=True``; see +#: the documentation of that method. For documentation of regular expressions, see +#: https://docs.python.org/3/library/re.html and https://regex101.com. #: -#: - Applied in sequence, from first to last. -#: - Partial string matches. -#: - Handled as regular expressions; see https://regex101.com and -#: https://docs.python.org/3/library/re.html. +#: .. todo:: These may be particular or idiosyncratic to a single "template". The +#: strings used to collapse multiple conceptual dimensions into the IAMC "variable" +#: column are known to vary in poorly-documented ways across these templates. +#: +#: This setting is currently applied universally. To improve, specify a different +#: mapping with the replacements needed for each individual template, and load the +#: correct one when reporting scenarios to that template. REPLACE_VARS = { # Secondary energy: remove duplicate "Solids" r"(Secondary Energy\|Solids)\|Solids": r"\1", # CH4 emissions from MESSAGE technologies r"(Emissions\|CH4)\|Fugitive": r"\1|Energy|Supply|Fugitive", # CH4 emissions from GLOBIOM - r"(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat).*)": ( - r"\1|Energy|Supply|\2|Fugitive" + r"(Emissions\|CH4)\|((Gases|Liquids|Solids|Elec|Heat)(.*))": ( + r"\1|Energy|Supply|\3|Fugitive\4" ), r"^(land_out CH4.*\|)Awm": r"\1Manure Management", r"^land_out CH4\|Emissions\|Ch4\|Land Use\|Agriculture\|": ( @@ -50,19 +60,20 @@ r"Import Energy\|Lng": "Primary Energy|Gas", r"Import Energy\|Coal": "Primary Energy|Coal", r"Import Energy\|Oil": "Primary Energy|Oil", - r"Import Energy\|(Liquids|Oil)": r"Secondary Energy|\1", - r"Import Energy\|(Liquids|Biomass)": r"Secondary Energy|\1", + r"Import Energy\|(Liquids\|(Biomass|Oil))": r"Secondary Energy|\1", r"Import Energy\|Lh2": "Secondary Energy|Hydrogen", } -def collapse(df, var=[], replace_common=True): +def collapse(df: pd.DataFrame, var=[]) -> pd.DataFrame: """Callback for the `collapse` argument to :meth:`~.Reporter.convert_pyam`. - The dimensions listed in the `var` and `region` arguments are automatically - dropped from the returned :class:`pyam.IamDataFrame`. + Replacements from :data:`REPLACE_DIMS` and :data:`REPLACE_VARS` are applied. + The dimensions listed in the `var` arguments are automatically dropped from the + returned :class:`pyam.IamDataFrame`. If ``var[0]`` contains the word "emissions", + then :meth:`collapse_gwp_info` is invoked. - Adapted from :func:`.pyam.collapse_message_cols`. + Adapted from :func:`genno.compat.pyam.collapse`. Parameters ---------- @@ -70,58 +81,34 @@ def collapse(df, var=[], replace_common=True): Strings or dimensions to concatenate to the 'Variable' column. The first of these is usually a string value used to populate the column. These are joined using the pipe ('|') character. - region : list of str, optional - Dimensions to concatenate to the 'Region' column. - replace_common : bool, optional - If :obj:`True` (the default), perform standard replacements on columns - before and after assembling the 'Variable' column, according to - ``REPLACE_DIMS`` and ``REPLACE_VARS``. See also -------- - .core.add_iamc_table REPLACE_DIMS REPLACE_VARS + collapse_gwp_info + test_collapse """ - if replace_common: - # Convert dimension labels to title-case strings - for dim in filter(lambda d: d in df.columns, REPLACE_DIMS.keys()): - df[dim] = df[dim].astype(str).str.title() - - try: - # Level: to title case, add the word 'energy' - # FIXME astype() here should not be necessary; debug - df["l"] = df["l"].astype(str).str.title() + " Energy" - except KeyError: - pass - try: - # Commodity: to title case - # FIXME astype() here should not be necessary; debug - df["c"] = df["c"].astype(str).str.title() - except KeyError: - pass - - var_name, *var = var - - if "emissions" in var_name.lower(): - log.info(f"Collapse GWP info for {var_name}") - df, var = collapse_gwp_info(df, var) - - # Apply replacements - df = df.replace(REPLACE_DIMS) - - # Assemble variable column - df["variable"] = var_name - df["variable"] = df["variable"].str.cat([df[c] for c in var], sep="|") - - # TODO roll this into the rename_vars argument of message_ix...as_pyam() - if replace_common: - # Apply variable name partial replacements - for pat, repl in REPLACE_VARS.items(): - df["variable"] = df["variable"].str.replace(pat, repl, regex=True) - - # Drop same columns - return df.drop(var, axis=1) + # Convert some dimension labels to title-case strings + for dim in filter(lambda d: d in df.columns, "clt"): + df[dim] = df[dim].astype(str).str.title() + + if "l" in df.columns: + # Level: to title case, add the word 'energy' + df["l"] = df["l"] + " Energy" + + if len(var) and "emissions" in var[0].lower(): + log.info(f"Collapse GWP info for {var[0]}") + df, var = collapse_gwp_info(df, var) + + # - Apply replacements to individual dimensions. + # - Use the genno built-in to assemble the variable column. + # - Apply replacements to assembled columns. + return ( + df.replace(REPLACE_DIMS, regex=True) + .pipe(genno_collapse, columns=dict(variable=var)) + .replace(dict(variable=REPLACE_VARS), regex=True) + ) def collapse_gwp_info(df, var): diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 0857a23875..823a803f94 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -1,9 +1,10 @@ """Tests for message_data.reporting.""" import pandas as pd +import pandas.testing as pdt import pytest from message_data import testing -from message_data.reporting import prepare_reporter +from message_data.reporting import prepare_reporter, util # Minimal reporting configuration for testing @@ -105,3 +106,47 @@ def test_apply_units(request, test_context, regions): # Units are converted df = reporter.get("Investment Cost:iamc").as_pandas() assert set(df["unit"]) == {"EUR_2005"} + + +@pytest.mark.parametrize( + "input, exp", + ( + ("x Secondary Energy|Solids|Solids x", "x Secondary Energy|Solids x"), + ("x Emissions|CH4|Fugitive x", "x Emissions|CH4|Energy|Supply|Fugitive x"), + ( + "x Emissions|CH4|Heat|foo x", + "x Emissions|CH4|Energy|Supply|Heat|Fugitive|foo x", + ), + ( + "land_out CH4|Emissions|Ch4|Land Use|Agriculture|foo x", + "Emissions|CH4|AFOLU|Agriculture|Livestock|foo x", + ), + ("land_out CH4|foo|bar|Awm x", "foo|bar|Manure Management x"), + ("x Residential|Biomass x", "x Residential|Solids|Biomass x"), + ("x Residential|Gas x", "x Residential|Gases|Natural Gas x"), + ("x Import Energy|Lng x", "x Primary Energy|Gas x"), + ("x Import Energy|Coal x", "x Primary Energy|Coal x"), + ("x Import Energy|Oil x", "x Primary Energy|Oil x"), + ("x Import Energy|Liquids|Biomass x", "x Secondary Energy|Liquids|Biomass x"), + ("x Import Energy|Lh2 x", "x Secondary Energy|Hydrogen x"), + ), +) +def test_collapse(input, exp): + """Test :meth:`.reporting.util.collapse` and use of :data:`.REPLACE_VARS`. + + This test is parametrized with example input and expected output strings for the + ``variable`` IAMC column. There should be ≥1 example for each pattern in + :data:`.REPLACE_VARS`. + + When adding test cases, if the pattern does not start with ``^`` or end with ``$``, + then prefix "x " or suffix " x" respectively to ensure these are handled as + intended. + + .. todo:: Extend or duplicate to also cover :data:`.REPLACE_DIMS`. + """ + # Convert values to data frames with 1 row and 1 column + df_in = pd.DataFrame([[input]], columns=["variable"]) + df_exp = pd.DataFrame([[exp]], columns=["variable"]) + + # collapse() transforms the "variable" column in the expected way + pdt.assert_frame_equal(util.collapse(df_in), df_exp) From 527f26217a01a2d4cb12291c7de824751fb23740 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sun, 14 Feb 2021 23:14:03 +0100 Subject: [PATCH 120/220] Adjust transport reports for genno.compat.pyam --- message_ix_models/report/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index ea0ac3085a..b51aa9f725 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -213,6 +213,9 @@ def prepare_reporter(scenario, config, key, output_path=None): # Directory for reporting output config.setdefault("output_path", output_path) + # For genno.compat.plot + # FIXME use a consistent set of names + config.setdefault("output_dir", output_path) # Handle configuration rep.configure(**config) From 7111e44d933d9b5403c7f296880aaeace9322948 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 16 Feb 2021 17:07:09 +0100 Subject: [PATCH 121/220] Allow reporting of unsolved scenarios --- message_ix_models/report/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index b51aa9f725..9aac55c7f7 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -218,7 +218,7 @@ def prepare_reporter(scenario, config, key, output_path=None): config.setdefault("output_dir", output_path) # Handle configuration - rep.configure(**config) + rep.configure(**config, fail="raise" if scenario.has_solution() else logging.DEBUG) for callback in CALLBACKS: callback(rep) From 2ef39145c1a429233a2d79260d184d485a2230da Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 18 Feb 2021 03:30:41 +0100 Subject: [PATCH 122/220] Move mark_time() to .logging; add --verbose common CLI parameter --- message_ix_models/report/cli.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 95337bf44a..87521dd688 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -53,8 +53,6 @@ def cli(context, config_file, module, output_path, from_file, verbose, dry_run, With --from-file, read multiple Scenario identifiers from FILE, and report each one. In this usage, --output-path may only be a directory. """ - mark_time(quiet=True) - # --config: use the option value as if it were an absolute path config = Path(config_file) if not config.exists(): From 1b53075255d5fcdda426ecda2d745484613bac0c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 18 Feb 2021 03:34:29 +0100 Subject: [PATCH 123/220] Lint (isort, wrap at 88 lines), comment, and document 8 files --- message_ix_models/report/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 9aac55c7f7..779e45e5f6 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -186,7 +186,7 @@ def prepare_reporter(scenario, config, key, output_path=None): Same as *key*, in full resolution, if any. """ - log.info("Preparing reporter") + log.info("Prepare reporter") # Create a Reporter for *scenario* rep = Reporter.from_scenario(scenario) From 002561d5c8ee078734bab31052aea8dd56cd31d0 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 18 Feb 2021 03:39:53 +0100 Subject: [PATCH 124/220] =?UTF-8?q?Make=20prepare=5Freporter(=E2=80=A6,=20?= =?UTF-8?q?key=3D)=20arg=20optional?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message_ix_models/report/__init__.py | 38 +++++++++++++++------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 779e45e5f6..da1ea1d804 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -161,29 +161,29 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k log.info(f"Result{msg}") -def prepare_reporter(scenario, config, key, output_path=None): +def prepare_reporter(scenario, config, key=None, output_path=None): """Prepare to report *key* from *scenario*. Parameters ---------- scenario : ixmp.Scenario - MESSAGE-GLOBIOM scenario containing a solution, to be reported. + Scenario containing a solution, to be reported. config : os.Pathlike or dict-like Reporting configuration path or dictionary. - key : str or ixmp.reporting.Key + key : str or ixmp.reporting.Key, optional Quantity or node to compute. The computation is not triggered (i.e. :meth:`get ` is not called); but the - corresponding, full-resolution Key is returned. - output_path : os.Pathlike - If given, a computation ``cli-output`` is added to the Reporter which - writes *key* to this path. + corresponding, full-resolution Key, if any, is returned. + output_path : os.Pathlike, optional + If given, a computation ``cli-output`` is added to the Reporter which writes + `key` to this path. Returns ------- - ixmp.reporting.Reporter + .Reporter Reporter prepared with MESSAGE-GLOBIOM calculations. - ixmp.reporting.Key - Same as *key*, in full resolution, if any. + .Key + Same as `key`, but in full resolution, if any. """ log.info("Prepare reporter") @@ -224,14 +224,16 @@ def prepare_reporter(scenario, config, key, output_path=None): callback(rep) # If needed, get the full key for *quantity* - key = rep.infer_keys(key) - - if output_path and not output_path.is_dir(): - # Add a new computation that writes *key* to the specified file - key = rep.add( - "cli-output", (partial(rep.get_comp("write_report"), path=output_path), key) - ) + if key: + key = rep.infer_keys(key) + + if output_path and not output_path.is_dir(): + # Add a new computation that writes *key* to the specified file + key = rep.add( + "cli-output", + (partial(rep.get_comp("write_report"), path=output_path), key), + ) log.info("…done") - return rep, key + return rep, rep.default_key From c3eb20c5e9a97f161e0cb8445eb8c4bcd57f3e7d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 18 Feb 2021 03:58:41 +0100 Subject: [PATCH 125/220] Tidy import, use of .logging --- message_ix_models/report/cli.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 87521dd688..1fe1efc2a3 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -6,9 +6,8 @@ import click import yaml +from message_data.logging import mark_time from message_data.reporting import register, report -from message_data.tools.cli import mark_time - log = logging.getLogger(__name__) From a0828c7461fcef3c4a912bdf3523f34e7b6f5146 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 22 Feb 2021 17:23:33 +0100 Subject: [PATCH 126/220] Update .reporting.cli - Use keyword arguments to report() - --verbose is now handled by the top-level CLI - log instead of print() --- message_ix_models/report/cli.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 1fe1efc2a3..ee5186eec4 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -37,10 +37,9 @@ type=click.Path(exists=True, dir_okay=False), help="Report multiple Scenarios listed in FILE.", ) -@click.option("--verbose", is_flag=True, help="Set log level to DEBUG.") @click.option("--dry-run", "-n", is_flag=True, help="Only show what would be done.") @click.argument("key", default="message:default") -def cli(context, config_file, module, output_path, from_file, verbose, dry_run, key): +def cli(context, config_file, module, output_path, from_file, dry_run, key): """Postprocess results. KEY defaults to the comprehensive report 'message:default', but may alsobe the name @@ -65,17 +64,13 @@ def cli(context, config_file, module, output_path, from_file, verbose, dry_run, # --output/-o: handle "~" output_path = output_path.expanduser() - if verbose: - log.setLevel("DEBUG") - logging.getLogger("ixmp").setLevel("DEBUG") - # Load modules module = module or "" for name in filter(lambda n: len(n), module.split(",")): name = f"message_data.{name}.report" __import__(name) register(sys.modules[name].callback) - print(f"Registered reporting config from {name}") + log.info(f"Registered reporting config from {name}") # Prepare a list of Context objects, each referring to one Scenario contexts = [] @@ -117,4 +112,10 @@ def cli(context, config_file, module, output_path, from_file, verbose, dry_run, scenario = context.get_scenario() mark_time() - report(scenario, key, config, ctx.output_path, dry_run) + report( + scenario, + config=config, + key=key, + output_path=ctx.output_path, + dry_run=dry_run, + ) From 19f73f9f819c14e30097059e0bdef71960ae48a5 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 22 Feb 2021 17:24:51 +0100 Subject: [PATCH 127/220] Update handling of default key in .reporting.prepare_reporter() --- message_ix_models/report/__init__.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index da1ea1d804..573874d27b 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -150,7 +150,9 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k rep, key = prepare_reporter(scenario, config, key, output_path) - log.info(f"Prepare to report:\n\n{rep.describe(key)}") + log.info(f"Prepare to report {'(DRY RUN)' if dry_run else ''}") + log.info(key) + log.debug(rep.describe(key)) if dry_run: return @@ -223,8 +225,8 @@ def prepare_reporter(scenario, config, key=None, output_path=None): for callback in CALLBACKS: callback(rep) - # If needed, get the full key for *quantity* if key: + # If needed, get the full key for *quantity* key = rep.infer_keys(key) if output_path and not output_path.is_dir(): @@ -233,7 +235,10 @@ def prepare_reporter(scenario, config, key=None, output_path=None): "cli-output", (partial(rep.get_comp("write_report"), path=output_path), key), ) + else: + log.info(f"No key given; will use default: {repr(key)}") + key = rep.default_key log.info("…done") - return rep, rep.default_key + return rep, key From 5f6340e8bfd9a94d14cb1b7de0a31571c6faea0a Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 1 Mar 2021 13:02:02 +0100 Subject: [PATCH 128/220] Update uses of deprecated Context methods/attributes in existing --- message_ix_models/report/__init__.py | 13 +++++-------- message_ix_models/tests/test_report.py | 3 ++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 573874d27b..989449dba4 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -7,9 +7,9 @@ import genno.config from genno.compat.pyam import iamc as handle_iamc from message_ix.reporting import Reporter +from message_ix_models.util import private_data_path from . import computations, util -from message_data.tools import Context __all__ = [ @@ -144,9 +144,7 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k # Default arguments key = key or "default" - config = config or ( - Path(__file__).parents[2].joinpath("data", "report", "global.yaml") - ) + config = config or private_data_path("report", "global.yaml") rep, key = prepare_reporter(scenario, config, key, output_path) @@ -202,15 +200,14 @@ def prepare_reporter(scenario, config, key=None, output_path=None): # Deepcopy to avoid destructive operations below config = deepcopy(config) else: - config = dict( - path=Context.get_instance(-1).get_config_file("report", "global") - ) + config = private_data_path("report", "global.yaml") else: # A non-dict *config* argument must be a Path path = Path(config) if not path.exists() and not path.is_absolute(): # Try to resolve relative to the data directory - path = Context.get_instance(-1).message_data_path.joinpath("report", path) + path = private_data_path("report", path) + assert path.exists(), path config = dict(path=path) # Directory for reporting output diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 823a803f94..62bccfde34 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -2,6 +2,7 @@ import pandas as pd import pandas.testing as pdt import pytest +from message_ix_models.util import private_data_path from message_data import testing from message_data.reporting import prepare_reporter, util @@ -24,7 +25,7 @@ def test_report_bare_res(request, session_context): # Prepare the reporter reporter, key = prepare_reporter( scenario, - config=session_context.get_config_file("report", "global"), + config=private_data_path("report", "global.yaml"), key="message:default", ) From 1d595001e59fffb85c8120a2c003e08dbf31f14d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 2 Mar 2021 22:04:16 +0100 Subject: [PATCH 129/220] Import from message_ix_models.util.{click,logging}, not old locations --- message_ix_models/report/cli.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index ee5186eec4..71907f2641 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -5,8 +5,8 @@ import click import yaml +from message_ix_models.util.logging import mark_time -from message_data.logging import mark_time from message_data.reporting import register, report log = logging.getLogger(__name__) From 3dcd6b04c89f535edda923daccfe69bc8f2bbe76 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 22 Mar 2021 22:15:42 +0100 Subject: [PATCH 130/220] Adjust imports of migrated code --- message_ix_models/report/cli.py | 2 +- message_ix_models/tests/test_report.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 71907f2641..d674824968 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -5,7 +5,7 @@ import click import yaml -from message_ix_models.util.logging import mark_time +from message_ix_models.util._logging import mark_time from message_data.reporting import register, report diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 62bccfde34..44fa4e4f96 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -3,8 +3,8 @@ import pandas.testing as pdt import pytest from message_ix_models.util import private_data_path +from message_ix_models import testing -from message_data import testing from message_data.reporting import prepare_reporter, util From 198f8149e6b2f2d89aeba898aa294f9ae4dc466e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 23 Apr 2021 22:01:29 +0200 Subject: [PATCH 131/220] Quiet prepare_reporter() on an unsolved Scenario --- message_ix_models/report/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 989449dba4..95e7ea321a 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -217,7 +217,7 @@ def prepare_reporter(scenario, config, key=None, output_path=None): config.setdefault("output_dir", output_path) # Handle configuration - rep.configure(**config, fail="raise" if scenario.has_solution() else logging.DEBUG) + rep.configure(**config, fail="raise" if scenario.has_solution() else logging.NOTSET) for callback in CALLBACKS: callback(rep) From 110cdd159aa0481424324880267f4786bed270a8 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 5 May 2021 15:51:59 +0200 Subject: [PATCH 132/220] Use private_data_path in the reporting CLI --- message_ix_models/report/cli.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index d674824968..558eb8a410 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -5,6 +5,7 @@ import click import yaml +from message_ix_models.util import private_data_path from message_ix_models.util._logging import mark_time from message_data.reporting import register, report @@ -55,11 +56,11 @@ def cli(context, config_file, module, output_path, from_file, dry_run, key): config = Path(config_file) if not config.exists(): # Path doesn't exist; treat it as a stem in the metadata dir - config = context.get_config_file("report", config_file) + config = private_data_path("report", config_file).with_suffix(".yaml") if not config.exists(): # Can't find the file - raise click.BadOptionUsage(f"--config={config_file} not found") + raise FileNotFoundError(f"Reporting configuration --config={config}") # --output/-o: handle "~" output_path = output_path.expanduser() From a8460ece0131128978371d7e15e06f0ab1f3d692 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 25 Aug 2021 14:40:52 +0200 Subject: [PATCH 133/220] Disambiguate reference to .reporting.prepare_reporter --- doc/api/report/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 9d270e546d..7af5ecad23 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -25,7 +25,7 @@ Any reporting specific to ``coal_ppl`` must be in :mod:`message_data`, since all The basic **design pattern** of :mod:`message_data.reporting` is: - A ``global.yaml`` file (i.e. in `YAML `_ format) that contains a *concise* yet *explicit* description of the reporting computations needed for a MESSAGE-GLOBIOM model. -- :func:`.prepare_reporter` reads the file and a Scenario object, and uses it to populate a new Reporter. +- :func:`~.reporting.prepare_reporter` reads the file and a Scenario object, and uses it to populate a new Reporter. This function mostly relies on the :doc:`configuration handlers ` built in to Genno to handle the different sections of the file. Features From bb622836cab5e69cb36209ceb91cf7ab917b8ee7 Mon Sep 17 00:00:00 2001 From: FRICKO Oliver Date: Fri, 15 Oct 2021 14:28:28 +0200 Subject: [PATCH 134/220] Move data files to correct location --- .../data/report/standard_kyoto_hist.csv | 13 + .../data/report/standard_lu_co2_hist.csv | 13 + .../data/report/standard_pop_urban_rural.csv | 13 + .../data/report/standard_run_config.yaml | 317 ++++++++++++++++++ .../data/report/standard_units.yaml | 131 ++++++++ 5 files changed, 487 insertions(+) create mode 100644 message_ix_models/data/report/standard_kyoto_hist.csv create mode 100644 message_ix_models/data/report/standard_lu_co2_hist.csv create mode 100644 message_ix_models/data/report/standard_pop_urban_rural.csv create mode 100644 message_ix_models/data/report/standard_run_config.yaml create mode 100644 message_ix_models/data/report/standard_units.yaml diff --git a/message_ix_models/data/report/standard_kyoto_hist.csv b/message_ix_models/data/report/standard_kyoto_hist.csv new file mode 100644 index 0000000000..d92f870e21 --- /dev/null +++ b/message_ix_models/data/report/standard_kyoto_hist.csv @@ -0,0 +1,13 @@ +Region,1990,1995,2000,2005,2010 +AFR,1143.537774,1034.585808,1204.543709,1334.008096,1235.420274 +CPA,3408.111064,3995.069333,4497.955203,7103.399628,9582.309896 +EEU,1288.716456,1035.896608,1028.481181,1098.64354,1007.039145 +FSU,4738.743965,3709.056679,3039.178254,3207.090086,3179.182181 +LAM,1658.240005,1769.880564,2093.295807,2242.718187,2296.809478 +MEA,1448.053574,1719.280902,1750.521751,2159.050332,2749.199575 +NAM,6722.067682,7347.677312,7785.383881,8053.022577,7387.84272 +PAO,1701.098285,1783.524901,1889.728184,1986.70701,1926.84032 +PAS,1389.140611,1771.847684,2270.879053,2694.172891,2951.050454 +SAS,1101.739136,1216.503631,1675.495524,2035.472606,2349.458252 +WEU,4419.4768,4387.507941,4468.776125,4747.766855,4296.894597 +World,50.852267,58.884651,535.942792,575.997804,614.443933 diff --git a/message_ix_models/data/report/standard_lu_co2_hist.csv b/message_ix_models/data/report/standard_lu_co2_hist.csv new file mode 100644 index 0000000000..be91a9d933 --- /dev/null +++ b/message_ix_models/data/report/standard_lu_co2_hist.csv @@ -0,0 +1,13 @@ +Region,1990,1995,2000,2005,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110 +AFR,1557.553955,1662.462036,1767.968018,1878.840942,1989.707031,0,0,0,0,0,0,0,0,0,0 +CPA,0.0,0.0,0.0,153.045197,306.095093,0,0,0,0,0,0,0,0,0,0 +EEU,0.0,0.0,0.0,7.254708,14.50712,0,0,0,0,0,0,0,0,0,0 +FSU,0.0,0.0,0.0,46.16679,92.287086,0,0,0,0,0,0,0,0,0,0 +LAM,3653.98291,3900.438965,4147.679199,3825.943115,3504.206055,0,0,0,0,0,0,0,0,0,0 +MEA,0.0,0.0,0.0,5.986132,11.97022,0,0,0,0,0,0,0,0,0,0 +NAM,0.0,0.0,0.0,53.316441,106.632896,0,0,0,0,0,0,0,0,0,0 +PAO,0.0,0.0,0.0,124.8834,249.766006,0,0,0,0,0,0,0,0,0,0 +PAS,1011.903015,856.075684,700.248413,671.362427,642.476379,0,0,0,0,0,0,0,0,0,0 +SAS,-34.031841,-28.65848,-23.583241,-23.34458,-23.10548,0,0,0,0,0,0,0,0,0,0 +WEU,0.0,0.0,0.0,19.33499,38.658031,0,0,0,0,0,0,0,0,0,0 +World,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0 diff --git a/message_ix_models/data/report/standard_pop_urban_rural.csv b/message_ix_models/data/report/standard_pop_urban_rural.csv new file mode 100644 index 0000000000..7a413dcf1c --- /dev/null +++ b/message_ix_models/data/report/standard_pop_urban_rural.csv @@ -0,0 +1,13 @@ +Region,1990,1995,2000,2005,2010,2015,2020,2025,2030,2035,2040,2045,2050,2055,2060,2070,2080,2090,2100,2110 +AFR,28.377,30.576,32.599,34.802,37.111,39.8045,42.498,45.0185,47.539,49.882,52.225,54.3755,56.526,58.473,60.42,63.927,67.057,69.84,72.312,72.312 +CPA,26.894,31.077,35.657,41.963,46.178,49.8965,53.615,56.6675,59.72,62.18,64.64,66.6215,68.603,70.2155,71.828,74.481,76.69,78.547,80.122,80.122 +EEU,59.286,59.794,59.836,60.486,61.408,63.999,66.59,68.656,70.722,72.3835,74.045,75.4035,76.762,77.8845,79.007,80.879,82.46,83.809,84.966,84.966 +FSU,65.41,64.869,64.427,64.086,64.256,66.2495,68.243,70.0165,71.79,73.3815,74.973,76.392,77.811,79.068,80.325,82.498,84.368,85.968,87.326,87.326 +LAM,70.351,72.981,75.383,77.638,79.524,81.038,82.552,83.754,84.956,85.9245,86.893,87.6835,88.474,89.126,89.778,90.856,91.757,92.521,93.173,93.173 +MEA,52.081,54.147,55.949,57.763,59.829,62.2705,64.712,66.7395,68.767,70.4905,72.214,73.676,75.138,76.3755,77.613,79.705,81.483,83.017,84.35,84.35 +NAM,75.393,77.421,79.321,80.908,82.303,83.6955,85.088,86.2925,87.497,88.5315,89.566,90.4475,91.329,92.0735,92.818,94.07,95.117,95.987,96.709,96.709 +PAO,66.28,67.814,68.575,69.518,70.624,72.6055,74.587,76.3575,78.128,79.6845,81.241,82.6025,83.964,85.1405,86.317,88.336,90.054,91.509,92.727,92.727 +PAS,38.271,41.394,44.906,46.197,47.806,50.6655,53.525,56.0805,58.636,60.8675,63.099,65.0185,66.938,68.5795,70.221,73.029,75.429,77.485,79.254,79.254 +SAS,25.037,26.144,27.322,28.491,29.911,32.79,35.669,38.584,41.499,44.347,47.195,49.9005,52.606,55.1135,57.621,62.185,66.284,69.927,73.143,73.143 +WEU,71.14,71.975,72.872,74.275,75.691,77.319,78.947,80.3295,81.712,82.892,84.072,85.092,86.112,86.9985,87.885,89.421,90.749,91.89,92.868,92.868 +World,42.616,44.45,46.398,48.627,50.525,54.489,58.453,62.037,65.621,68.7665,71.912,74.601,77.29,79.535,81.78,85.453,88.414,90.769,92.627,92.627 diff --git a/message_ix_models/data/report/standard_run_config.yaml b/message_ix_models/data/report/standard_run_config.yaml new file mode 100644 index 0000000000..65eb20ba53 --- /dev/null +++ b/message_ix_models/data/report/standard_run_config.yaml @@ -0,0 +1,317 @@ +Res_extr: + root: Resource|Extraction + active: True + function: retr_extraction + args: {"units": "EJ/yr"} +Res_extr_cum: + root: Resource|Cumulative Extraction + active: True + function: retr_cumulative_extraction + args: {"units": "ZJ"} +Res_remain: + root: Resource|Remaining + active: False # This function is not yet working + function: retr_remaining_resources + args: {"units": "ZJ"} +Enrgy_PE: + root: Primary Energy + active: True + function: retr_pe + args: {"units": "EJ/yr"} +Enrgy_PE_sub: + root: Primary Energy (substitution method) + active: True + function: retr_pe + args: {"units": "EJ/yr", + "method": "substitution"} +Enrgy_FE: + root: Final Energy + active: True + function: retr_fe + args: {"units": "EJ/yr"} +Enrgy_SE_elec: + root: Secondary Energy|Electricity + active: True + function: retr_SE_elecgen + args: {"units": "EJ/yr"} +Enrgy_SE_heat: + root: Secondary Energy|Heat + active: True + function: retr_SE_district_heat + args: {"units": "EJ/yr"} +Enrgy_SE_syn: + root: Secondary Energy + active: True + function: retr_SE_synfuels + args: {"units": "EJ/yr"} +Enrgy_SE_gas: + root: Secondary Energy|Gases + active: True + function: retr_SE_gases + args: {"units": "EJ/yr"} +Enrgy_SE_solid: + root: Secondary Energy|Solids + active: True + function: retr_SE_solids + args: {"units": "EJ/yr"} +Emi_CO2: + root: Emissions|CO2 + active: True + function: retr_CO2emi + args: {"units_emi": "Mt CO2/yr", + "units_ene_mdl": "GWa"} +Emi_Crb_seq: + root: Carbon Sequestration + active: True + function: retr_CO2_CCS + args: {"units_emi": "Mt CO2/yr", + "units_ene": "EJ/yr"} +Emi_BC: + root: Emissions|BC + active: True + function: retr_othemi + args: {"var": "BCA", + "units": "Mt BC/yr"} +Emi_OC: + root: Emissions|OC + active: True + function: retr_othemi + args: {"var": "OCA", + "units": "Mt OC/yr"} +Emi_CO: + root: Emissions|CO + active: True + function: retr_othemi + args: {"var": "CO", + "units": "Mt CO/yr"} +Emi_N2O: + root: Emissions|N2O + active: True + function: retr_othemi + args: {"var": "N2O", + "units": "kt N2O/yr"} +Emi_CH4: + root: Emissions|CH4 + active: True + function: retr_othemi + args: {"var": "CH4", + "units": "Mt CH4/yr"} +Emi_NH3: + root: Emissions|NH3 + active: True + function: retr_othemi + args: {"var": "NH3", + "units": "Mt NH3/yr"} +Emi_SO2: + root: Emissions|Sulfur + active: True + function: retr_othemi + args: {"var": "SO2", + "units": "Mt SO2/yr"} +Emi_NOx: + root: Emissions|NOx + active: True + function: retr_othemi + args: {"var": "NOx", + "units": "Mt NOx/yr"} +Emi_VOC: + root: Emissions|VOC + active: True + function: retr_othemi + args: {"var": "VOC", + "units": "Mt VOC/yr"} +Emi_HFC: + root: Emissions|HFC + active: True + function: retr_hfc + args: {"hfc_lst": { + "Total": [True, 0, "kt HFC134a-equiv/yr"], + "HFC125": [True, 125, "kt HFC125/yr"], + "HFC134a": [True, 134, "kt HFC134a/yr"], + "HFC143a": [True, 143, "kt HFC143a/yr"], + "HFC227ea": [True, 227, "kt HFC227ea/yr"], + "HFC23": ["empty", 0, "kt HFC23/yr"], + "HFC245fa": [True, 245, "kt HFC245fa/yr"], + "HFC32": [True, 32, "kt HFC32/yr"], + "HFC43-10": [True, 431, "kt HFC43-10/yr"], + "HFC365mfc": [False, 365, "kt HFC365mfc/yr"], + "HFC152a": [False, 152, "kt HFC152a/yr"], + "HFC236fa": [False, 236, "kt HFC236fa/yr"]}} +Emi_fgas: + root: Emissions + active: True + function: retr_fgases + args: {"units_SF6": "kt SF6/yr", + "conv_SF6": 1000, + "units_CF4": "kt CF4/yr", + "conv_CF4": 1000, + "units_fgas": "Mt CO2-equiv/yr"} +Emi_kyoto: + root: Emissions + active: True + function: retr_kyoto + args: {"units": "Mt CO2-equiv/yr"} +LU_Agr_dem: + root: Agricultural Demand + active: True + function: retr_agri_dem + args: {"units": "million t DM/yr"} +LU_Agr_pro: + root: Agricultural Production + active: True + function: retr_agri_prd + args: {"units": "million t DM/yr"} +LU_Agr_fert: + root: Fertilizer Use + active: True + function: retr_fertilizer_use + args: {"units_nitrogen": "Tg N/yr", + "units_phosphorus": "Tg P/yr"} +LU_Fd_dem: + root: Food Demand + active: True + function: retr_food_dem + args: {"units": "kcal/cap/day"} +LU_For_dem: + root: Forestry Demand + active: True + function: retr_frst_dem + args: {"units": "million m3/yr"} +LU_For_prd: + root: Forestry Production + active: True + function: retr_frst_prd + args: {"units": "million m3/yr"} +LU_Lnd_cvr: + root: Land Cover + active: True + function: retr_lnd_cvr + args: {"units": "million ha"} +LU_Yld: + root: Yield + active: True + function: retr_yield + args: {"units": "t DM/ha/yr"} +Tec_cap: + root: Capacity + active: True + function: retr_ppl_capparameters + args: {"prmfunc": pp.tic, + "units": "GW"} +Tec_cap_add: + root: Capacity Additions + active: True + function: retr_ppl_capparameters + args: {"prmfunc": pp.nic, + "units": "GW"} +Tec_cap_cum: + root: Cumulative Capacity + active: True + function: retr_ppl_capparameters + args: {"prmfunc": pp.cumcap, + "units": "GW"} +Tec_inv_cst: + root: Capital Cost + active: True + function: retr_ppl_parameters + args: {"prmfunc": pp.inv_cost, + "units": "US$2010/kW"} +Tec_FOM_cst: + root: OM Cost|Fixed + active: True + function: retr_ppl_opcost_parameters + args: {"prmfunc": pp.fom, + "units": "US$2010/kW/yr"} +Tec_VOM_cst: + root: OM Cost|Variable + active: True + function: retr_ppl_opcost_parameters + args: {"prmfunc": pp.vom, + "units": "US$2010/kWh"} +Tec_lft: + root: Lifetime + active: True + function: retr_ppl_parameters + args: {"prmfunc": pp.pll, + "units": "years"} +Tec_eff: + root: Efficiency + active: True + function: retr_eff_parameters + args: {"units": "%"} +LU_glo: + root: GLOBIOM + active: True + function: retr_globiom + args: {"units_ghg": "Mt CO2eq/yr", + "units_co2": "Mt CO2/yr", + "units_energy": "EJ/yr", + "units_volume": "Mm3", + "units_area": "million ha"} +Pop: + root: Population + active: True + function: retr_pop + args: {"units": "million"} +Prc: + root: Price + active: True + function: retr_price + args: {"units_CPrc_co2": "US$2010/tCO2", + "units_CPrc_co2_outp": "US$2010/t CO2 or local currency/t CO2", # Name of units in output file + "units_energy": "US$2010/GJ", + "units_energy_outp": "US$2010/GJ or local currency/GJ", + "units_CPrc_c": "US$2010/tC", + "conv_CPrc_co2_to_c": 0.03171, + "units_agri": "Index (2005 = 1)"} +Enrgy_UE_inp: + root: Useful Energy + active: True + function: retr_demands_input + args: {"units": "EJ/yr"} +Enrgy_UE_outp: + root: Useful Energy + active: True + function: retr_demands_output + args: {"units": "EJ/yr"} +Enrgy_Trd: + root: Trade + active: True + function: retr_trade + args: {"units_energy": "EJ/yr", + "units_CPrc_co2": "US$2010/tCO2", + "units_emi_val": "billion US$2010/yr", + "units_emi_vol": "Mt CO2-equiv/yr"} +Tec_Invst: + root: Investment|Energy Supply + active: True + function: retr_supply_inv + args: {"units_energy": "billion US$2010/yr", + "units_emi": "Mt CO2/yr", + "units_ene_mdl": "GWa"} +Wtr_cons: + root: Water Consumption + active: True + function: retr_water_use + args: {"units": "km3/yr", + "method": "consumption"} +Wtr_wthd: + root: Water Withdrawal + active: True + function: retr_water_use + args: {"units": "km3/yr", + "method": "withdrawal"} +GDP: + root: GDP + active: True + function: retr_macro + condition: scen.var("GDP").empty + args: {"units": "billion US$2010/yr", + "conv_usd": 1.10774} +Cst: + root: Cost + active: True + function: retr_cost + condition: scen.var("COST_NODAL_NET").empty + args: {"units": "billion US$2010/yr", + "conv_usd": 1.10774} diff --git a/message_ix_models/data/report/standard_units.yaml b/message_ix_models/data/report/standard_units.yaml new file mode 100644 index 0000000000..719f9af87f --- /dev/null +++ b/message_ix_models/data/report/standard_units.yaml @@ -0,0 +1,131 @@ +model_units: + conv_c2co2: 44. / 12. + conv_co22c: 12. / 44. + crbcnt_gas: 0.482 # Carbon content of natural gas + crbcnt_oil: 0.631 # Carbon content of oil + crbcnt_coal: 0.814 # Carbon content of coal + currency_unit_out: "US$2010" + currency_unit_out_conv: 1.10774 + gwp_ch4: 25 + gwp_n2o: 298 + # HFC factors: GWP-HFC134a / HFC-Species + # GWP from Guus Velders (SSPs 2015 scen: OECD-SSP2) + # Email to Riahi, Fricko 20150713 + gwp_HFC125: 1360. / 3450. + gwp_HFC134a: 1360. / 1360. + gwp_HFC143a: 1360. / 5080. + gwp_HFC227ea: 1360. / 3140. + gwp_HFC23: 1360. / 12500. + gwp_HFC245fa: 1360. / 882. + gwp_HFC365: 1360. / 804. + gwp_HFC32: 1360. / 704. + gwp_HFC4310: 1360. / 1650. + gwp_HFC236fa: 1360. / 8060. + gwp_HFC152a: 1360. / 148. +conversion_factors: + GWa: + EJ/yr: .03154 + GWa: 1. + ???: 1. + MWa: 1000 + ZJ: .00003154 + km3/yr: 1. + Index (2005 = 1): 1 + TWh: 8760. / 1000. + GWa/a: + EJ/yr: .03154 + GWa: 1. + ???: 1. + MWa: .001 + ZJ: .00003154 + km3/yr: 1. + Index (2005 = 1): 1 + EJ/yr: + ZJ: .001 + y: + years: 1. + # Emissions currently have the units ??? + ???: + # Model units for CO2 are in MtC + # NB this values implies that whatever quantity it is applied to is + # internally [Mt C/yr] + Mt CO2/yr: "float(f\"{mu['conv_c2co2']}\")" + Mt CO2-equiv/yr: "float(f\"{mu['conv_c2co2']}\")" + # N2O is always left in kt + kt N2O/yr: 1. + # All other units are in kt + # NB this values implies that whatever quantity it is applied to is + # internally [kt BC/yr], etc. + Mt BC/yr: .001 + Mt CH4/yr: .001 + Mt CO/yr: .001 + Mt OC/yr: .001 + Mt NOx/yr: .001 + Mt NH3/yr: .001 + Mt SO2/yr: .001 + Mt VOC/yr: .001 + kt HFC125/yr: "float(f\"{mu['gwp_HFC125']}\")" + kt HFC134a/yr: "float(f\"{mu['gwp_HFC134a']}\")" + kt HFC143a/yr: "float(f\"{mu['gwp_HFC143a']}\")" + kt HFC227ea/yr: "float(f\"{mu['gwp_HFC227ea']}\")" + kt HFC23/yr: "float(f\"{mu['gwp_HFC23']}\")" + kt HFC245fa/yr: "float(f\"{mu['gwp_HFC245fa']}\")" + kt HFC365/yr: "float(f\"{mu['gwp_HFC365']}\")" + kt HFC32/yr: "float(f\"{mu['gwp_HFC32']}\")" + kt HFC43-10/yr: "float(f\"{mu['gwp_HFC4310']}\")" + kt HFC236fa/yr: "float(f\"{mu['gwp_HFC236fa']}\")" + kt HFC152a/yr: "float(f\"{mu['gwp_HFC152a']}\")" + ???: 1. + Index (2005 = 1): 1 + USD/kWa: + "f\"{mu['currency_unit_out']}/kW/yr\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"{mu['currency_unit_out']}/kW\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"{mu['currency_unit_out']}/kWh\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"billion {mu['currency_unit_out']}/yr\"": "float(f\"{mu['currency_unit_out_conv']}\") / 1000" + "f\"{mu['currency_unit_out']}/GJ\"": "0.03171 * float(f\"{mu['currency_unit_out_conv']}\")" + USD/kW: + "f\"{mu['currency_unit_out']}/kW/yr\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"{mu['currency_unit_out']}/kW\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"{mu['currency_unit_out']}/kWh\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"billion {mu['currency_unit_out']}/yr\"": "float(f\"{mu['currency_unit_out_conv']}\") / 1000" + "f\"{mu['currency_unit_out']}/GJ\"": "0.03171 * float(f\"{mu['currency_unit_out_conv']}\")" + USD/GWa: + "f\"{mu['currency_unit_out']}/kWh\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"{mu['currency_unit_out']}/kW/yr\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"{mu['currency_unit_out']}/kW\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"billion {mu['currency_unit_out']}/yr\"": "float(f\"{mu['currency_unit_out_conv']}\") / 1000" + "f\"{mu['currency_unit_out']}/GJ\"": "0.03171 * float(f\"{mu['currency_unit_out_conv']}\")" + Index (2005 = 1): 1 + US$2005/tC: + "f\"{mu['currency_unit_out']}/tC\"": "float(f\"{mu['currency_unit_out_conv']}\")" + "f\"{mu['currency_unit_out']}/tCO2\"": "float(f\"{mu['conv_co22c']}\") * float(f\"{mu['currency_unit_out_conv']}\")" + kt BC/yr: + Mt BC/yr: 1. / 1000. + kt CO/yr: + Mt CO/yr: 1. / 1000. + kt CH4/yr: + Mt CO2eq/yr: "float(f\"{mu['gwp_ch4']}\") / 1000." + Mt C/yr: "float(f\"{mu['gwp_ch4']}\") * float(f\"{mu['conv_co22c']}\") / 1000." + Mt CH4/yr: 1. / 1000. + kt N2O/yr: + Mt CO2eq/yr: "float(f\"{mu['gwp_n2o']}\") / 1000." + Mt C/yr: "float(f\"{mu['gwp_n2o']}\") * float(f\"{mu['conv_co22c']}\") / 1000." + Mt N2O/yr: 1. / 1000. + kt NH3/yr: + Mt NH3/yr: 1. / 1000. + kt NOx/yr: + Mt NOx/yr: 1. / 1000. + kt OC/yr: + Mt OC/yr: 1. / 1000. + kt SO2/yr: + kt Sulfur/yr: 1. + Mt Sulfur/yr: 1. / 1000. + Mt SO2/yr: 1. / 1000. + kt VOC/yr: + Mt VOC/yr: 1. / 1000. + Mt CO2eq/yr: + Mt C/yr: "float(f\"{mu['conv_co22c']}\")" + Mt C/yr: + Mt CO2eq/yr: "float(f\"{mu['conv_c2co2']}\")" + Mt CO2/yr: "float(f\"{mu['conv_c2co2']}\")" + Mt CO2-equiv/yr: "float(f\"{mu['conv_c2co2']}\")" From a9a5ab4f03776f3fde7f9c5960f5aef1fb5049b3 Mon Sep 17 00:00:00 2001 From: FRICKO Oliver Date: Fri, 15 Oct 2021 15:35:12 +0200 Subject: [PATCH 135/220] Move from xlsx to using csv to track changes --- message_ix_models/data/report/aggregates.csv | 391 ++ .../data/report/variable_definitions.csv | 3308 +++++++++++++++++ 2 files changed, 3699 insertions(+) create mode 100644 message_ix_models/data/report/aggregates.csv create mode 100644 message_ix_models/data/report/variable_definitions.csv diff --git a/message_ix_models/data/report/aggregates.csv b/message_ix_models/data/report/aggregates.csv new file mode 100644 index 0000000000..dc4a40f621 --- /dev/null +++ b/message_ix_models/data/report/aggregates.csv @@ -0,0 +1,391 @@ +IAMC Parent,IAMC Child +Capacity Additions|Electricity|Storage Capacity,Capacity Additions|Electricity|Storage +Emissions|XXX|AFOLU|Agriculture and Biomass Burning,Emissions|XXX|AFOLU|Agriculture +Emissions|XXX|AFOLU|Agriculture and Biomass Burning,Emissions|XXX|AFOLU|Biomass Burning +Emissions|XXX|Energy|Demand|Residential and Commercial,Emissions|XXX|Energy|Demand|Commercial +Emissions|XXX|Energy|Demand|Residential and Commercial,Emissions|XXX|Energy|Demand|Residential +Emissions|XXX|Energy|Demand|Residential and Commercial and AFOFI,Emissions|XXX|Energy|Demand|AFOFI +Emissions|XXX|Energy|Demand|Residential and Commercial and AFOFI,Emissions|XXX|Energy|Demand|Residential and Commercial +Emissions|XXX|Energy|Demand|Transportation|Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Rail +Emissions|XXX|Energy|Demand|Transportation|Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Shipping|Domestic +Emissions|XXX|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Rail +Emissions|XXX|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Road +Emissions|XXX|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Shipping|Domestic +Emissions|XXX|Energy|Supply|Electricity and Heat,Emissions|XXX|Energy|Supply|Electricity +Emissions|XXX|Energy|Supply|Electricity and Heat,Emissions|XXX|Energy|Supply|Heat +Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Biomass|Fugitive +Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Coal|Fugitive +Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Extraction|Fugitive +Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Hydrogen|Fugitive +Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Natural Gas|Fugitive +Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Transportation|Fugitive +Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Biomass|Fugitive +Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Coal|Fugitive +Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Extraction|Fugitive +Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Natural Gas|Fugitive +Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Oil|Fugitive +Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Transportation|Fugitive +Emissions|XXX|Energy|Supply|Gases and Liquids Fugitive,Emissions|XXX|Energy|Supply|Gases|Fugitive +Emissions|XXX|Energy|Supply|Gases and Liquids Fugitive,Emissions|XXX|Energy|Supply|Liquids|Fugitive +Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Biomass|Combustion +Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Coal|Combustion +Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Extraction|Combustion +Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Hydrogen|Combustion +Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Natural Gas|Combustion +Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Transportation|Combustion +Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Biomass|Combustion +Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Coal|Combustion +Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Extraction|Combustion +Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Natural Gas|Combustion +Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Oil|Combustion +Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Transportation|Combustion +Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Biomass +Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Coal +Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Extraction +Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Hydrogen +Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Natural Gas +Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Transportation +Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Biomass +Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Coal +Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Extraction +Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Natural Gas +Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Oil +Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Transportation +Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Biomass|Fugitive +Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Coal|Fugitive +Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Extraction|Fugitive +Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Transportation|Fugitive +Emissions|XXX|Energy|Supply|Solids and Other Fugitive,Emissions|XXX|Energy|Supply|Solids|Fugitive +Emissions|XXX|Energy|Supply|Solids and Other Fugitive,Emissions|XXX|Energy|Supply|Other|Fugitive +Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Biomass|Combustion +Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Coal|Combustion +Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Extraction|Combustion +Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Transportation|Combustion +Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Biomass +Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Coal +Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Extraction +Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Transportation +Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Electricity +Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Heat +Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Solids +Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Liquids +Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Other +Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Gases +Emissions|XXX|Energy,Emissions|XXX|Energy|Supply +Emissions|XXX|Energy,Emissions|XXX|Energy|Demand +Emissions|XXX|Industrial Processes|Metals and Minerals,Emissions|XXX|Industrial Processes|Non-Ferrous Metals +Emissions|XXX|Industrial Processes|Metals and Minerals,Emissions|XXX|Industrial Processes|Non-Metallic Minerals +Emissions|XXX|Industrial Processes|Metals and Minerals,Emissions|XXX|Industrial Processes|Iron and Steel +Emissions|XXX|Fossil Fuels and Industry,Emissions|XXX|Energy +Emissions|XXX|Fossil Fuels and Industry,Emissions|XXX|Industrial Processes +Emissions|XXX|Energy and Industrial Processes,Emissions|XXX|Energy +Emissions|XXX|Energy and Industrial Processes,Emissions|XXX|Industrial Processes +Emissions|XXX,Emissions|XXX|AFOLU +Emissions|XXX,Emissions|XXX|Energy +Emissions|XXX,Emissions|XXX|Industrial Processes +Emissions|XXX,Emissions|XXX|Natural +Emissions|XXX,Emissions|XXX|Product Use +Emissions|XXX,Emissions|XXX|Waste +Final Energy|Residential and Commercial|Solids,Final Energy|Residential and Commercial|Solids|Biomass +Final Energy|Residential and Commercial|Solids,Final Energy|Residential and Commercial|Solids|Coal +Final Energy|Electricity,Final Energy|Industry|Electricity +Final Energy|Electricity,Final Energy|Residential and Commercial|Electricity +Final Energy|Electricity,Final Energy|Transportation|Electricity +Final Energy|Electricity|Solar,Final Energy|Residential and Commercial|Electricity|Solar +Final Energy|Electricity|Solar,Final Energy|Industry|Electricity|Solar +Final Energy|Gases,Final Energy|Industry|Gases +Final Energy|Gases,Final Energy|Residential and Commercial|Gases +Final Energy|Gases,Final Energy|Transportation|Gases +Final Energy|Heat,Final Energy|Industry|Heat +Final Energy|Heat,Final Energy|Residential and Commercial|Heat +Final Energy|Hydrogen,Final Energy|Industry|Hydrogen +Final Energy|Hydrogen,Final Energy|Residential and Commercial|Hydrogen +Final Energy|Hydrogen,Final Energy|Transportation|Hydrogen +Final Energy|Liquids|Biomass,Final Energy|Industry|Liquids|Biomass +Final Energy|Liquids|Biomass,Final Energy|Residential and Commercial|Liquids|Biomass +Final Energy|Liquids|Biomass,Final Energy|Transportation|Liquids|Biomass +Final Energy|Liquids|Coal,Final Energy|Industry|Liquids|Coal +Final Energy|Liquids|Coal,Final Energy|Residential and Commercial|Liquids|Coal +Final Energy|Liquids|Coal,Final Energy|Transportation|Liquids|Coal +Final Energy|Liquids|Gas,Final Energy|Industry|Liquids|Gas +Final Energy|Liquids|Gas,Final Energy|Residential and Commercial|Liquids|Gas +Final Energy|Liquids|Gas,Final Energy|Transportation|Liquids|Gas +Final Energy|Liquids|Oil,Final Energy|Industry|Liquids|Oil +Final Energy|Liquids|Oil,Final Energy|Residential and Commercial|Liquids|Oil +Final Energy|Liquids|Oil,Final Energy|Transportation|Liquids|Oil +Final Energy|Liquids,Final Energy|Liquids|Biomass +Final Energy|Liquids,Final Energy|Liquids|Coal +Final Energy|Liquids,Final Energy|Liquids|Gas +Final Energy|Liquids,Final Energy|Liquids|Oil +Final Energy|Solar,Final Energy|Industry|Other +Final Energy|Solar,Final Energy|Residential and Commercial|Other +Final Energy|Solids|Biomass,Final Energy|Industry|Solids|Biomass +Final Energy|Solids|Biomass,Final Energy|Residential and Commercial|Solids|Biomass +Final Energy|Solids|Biomass|Traditional,Final Energy|Residential and Commercial|Solids|Biomass|Traditional +Final Energy|Solids|Coal,Final Energy|Industry|Solids|Coal +Final Energy|Solids|Coal,Final Energy|Residential and Commercial|Solids|Coal +Final Energy|Solids|Coal,Final Energy|Transportation|Other +Final Energy|Solids,Final Energy|Solids|Biomass +Final Energy|Solids,Final Energy|Solids|Coal +Final Energy,Final Energy|Industry +Final Energy,Final Energy|Residential and Commercial +Final Energy,Final Energy|Transportation +Primary Energy|Biomass,Primary Energy|Biomass|w/ CCS +Primary Energy|Biomass,Primary Energy|Biomass|w/o CCS +Primary Energy|Biomass|Electricity,Primary Energy|Biomass|Electricity|w/ CCS +Primary Energy|Biomass|Electricity,Primary Energy|Biomass|Electricity|w/o CCS +Primary Energy|Coal,Primary Energy|Coal|w/o CCS +Primary Energy|Coal,Primary Energy|Coal|w/ CCS +Primary Energy|Coal|Electricity,Primary Energy|Coal|Electricity|w/ CCS +Primary Energy|Coal|Electricity,Primary Energy|Coal|Electricity|w/o CCS +Primary Energy|Gas,Primary Energy|Gas|w/o CCS +Primary Energy|Gas,Primary Energy|Gas|w/ CCS +Primary Energy|Gas|Electricity,Primary Energy|Gas|Electricity|w/ CCS +Primary Energy|Gas|Electricity,Primary Energy|Gas|Electricity|w/o CCS +Primary Energy|Oil,Primary Energy|Oil|w/o CCS +Primary Energy|Oil,Primary Energy|Oil|w/ CCS +Primary Energy|Fossil,Primary Energy|Coal|w/ CCS +Primary Energy|Fossil,Primary Energy|Coal|w/o CCS +Primary Energy|Fossil,Primary Energy|Oil|w/ CCS +Primary Energy|Fossil,Primary Energy|Oil|w/o CCS +Primary Energy|Fossil,Primary Energy|Gas|w/ CCS +Primary Energy|Fossil,Primary Energy|Gas|w/o CCS +Primary Energy|Fossil|w/ CCS,Primary Energy|Coal|w/ CCS +Primary Energy|Fossil|w/ CCS,Primary Energy|Gas|w/ CCS +Primary Energy|Fossil|w/ CCS,Primary Energy|Oil|w/ CCS +Primary Energy|Fossil|w/o CCS,Primary Energy|Coal|w/o CCS +Primary Energy|Fossil|w/o CCS,Primary Energy|Gas|w/o CCS +Primary Energy|Fossil|w/o CCS,Primary Energy|Oil|w/o CCS +Primary Energy|Non-Biomass Renewables,Primary Energy|Geothermal +Primary Energy|Non-Biomass Renewables,Primary Energy|Hydro +Primary Energy|Non-Biomass Renewables,Primary Energy|Ocean +Primary Energy|Non-Biomass Renewables,Primary Energy|Solar +Primary Energy|Non-Biomass Renewables,Primary Energy|Wind +Primary Energy,Primary Energy|Biomass +Primary Energy,Primary Energy|Coal +Primary Energy,Primary Energy|Gas +Primary Energy,Primary Energy|Geothermal +Primary Energy,Primary Energy|Hydro +Primary Energy,Primary Energy|Nuclear +Primary Energy,Primary Energy|Oil +Primary Energy,Primary Energy|Other +Primary Energy,Primary Energy|Solar +Primary Energy,Primary Energy|Wind +Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Coal|w/ CCS +Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Coal|w/o CCS +Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Oil|w/ CCS +Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Oil|w/o CCS +Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Gas|w/ CCS +Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Gas|w/o CCS +Primary Energy (substitution method)|Fossil|w/ CCS,Primary Energy (substitution method)|Coal|w/ CCS +Primary Energy (substitution method)|Fossil|w/ CCS,Primary Energy (substitution method)|Gas|w/ CCS +Primary Energy (substitution method)|Fossil|w/ CCS,Primary Energy (substitution method)|Oil|w/ CCS +Primary Energy (substitution method)|Fossil|w/o CCS,Primary Energy (substitution method)|Coal|w/o CCS +Primary Energy (substitution method)|Fossil|w/o CCS,Primary Energy (substitution method)|Gas|w/o CCS +Primary Energy (substitution method)|Fossil|w/o CCS,Primary Energy (substitution method)|Oil|w/o CCS +Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Geothermal +Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Hydro +Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Ocean +Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Solar +Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Wind +Primary Energy (substitution method),Primary Energy (substitution method)|Biomass +Primary Energy (substitution method),Primary Energy (substitution method)|Coal +Primary Energy (substitution method),Primary Energy (substitution method)|Gas +Primary Energy (substitution method),Primary Energy (substitution method)|Geothermal +Primary Energy (substitution method),Primary Energy (substitution method)|Hydro +Primary Energy (substitution method),Primary Energy (substitution method)|Nuclear +Primary Energy (substitution method),Primary Energy (substitution method)|Oil +Primary Energy (substitution method),Primary Energy (substitution method)|Other +Primary Energy (substitution method),Primary Energy (substitution method)|Solar +Primary Energy (substitution method),Primary Energy (substitution method)|Wind +Secondary Energy|Electricity|Fossil,Secondary Energy|Electricity|Coal +Secondary Energy|Electricity|Fossil,Secondary Energy|Electricity|Gas +Secondary Energy|Electricity|Fossil,Secondary Energy|Electricity|Oil +Secondary Energy|Electricity|Fossil|w/ CCS,Secondary Energy|Electricity|Coal|w/ CCS +Secondary Energy|Electricity|Fossil|w/ CCS,Secondary Energy|Electricity|Gas|w/ CCS +Secondary Energy|Electricity|Fossil|w/ CCS,Secondary Energy|Electricity|Oil|w/ CCS +Secondary Energy|Electricity|Fossil|w/o CCS,Secondary Energy|Electricity|Coal|w/o CCS +Secondary Energy|Electricity|Fossil|w/o CCS,Secondary Energy|Electricity|Gas|w/o CCS +Secondary Energy|Electricity|Fossil|w/o CCS,Secondary Energy|Electricity|Oil|w/o CCS +Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Geothermal +Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Hydro +Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Ocean +Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Solar +Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Wind +Secondary Energy|Electricity|Solar,Secondary Energy|Electricity|Solar|CSP +Secondary Energy|Electricity|Solar,Secondary Energy|Electricity|Solar|PV +Secondary Energy|Electricity|Wind,Secondary Energy|Electricity|Wind|Offshore +Secondary Energy|Electricity|Wind,Secondary Energy|Electricity|Wind|Onshore +Secondary Energy|Electricity,Secondary Energy|Electricity|Biomass +Secondary Energy|Electricity,Secondary Energy|Electricity|Coal +Secondary Energy|Electricity,Secondary Energy|Electricity|Gas +Secondary Energy|Electricity,Secondary Energy|Electricity|Geothermal +Secondary Energy|Electricity,Secondary Energy|Electricity|Hydro +Secondary Energy|Electricity,Secondary Energy|Electricity|Nuclear +Secondary Energy|Electricity,Secondary Energy|Electricity|Oil +Secondary Energy|Electricity,Secondary Energy|Electricity|Other +Secondary Energy|Electricity,Secondary Energy|Electricity|Solar +Secondary Energy|Electricity,Secondary Energy|Electricity|Wind +Secondary Energy|Hydrogen|Fossil,Secondary Energy|Hydrogen|Coal +Secondary Energy|Hydrogen|Fossil,Secondary Energy|Hydrogen|Gas +Secondary Energy|Hydrogen|Fossil,Secondary Energy|Hydrogen|Oil +Secondary Energy|Hydrogen|Fossil|w/ CCS,Secondary Energy|Hydrogen|Coal|w/ CCS +Secondary Energy|Hydrogen|Fossil|w/ CCS,Secondary Energy|Hydrogen|Gas|w/ CCS +Secondary Energy|Hydrogen|Fossil|w/o CCS,Secondary Energy|Hydrogen|Coal|w/o CCS +Secondary Energy|Hydrogen|Fossil|w/o CCS,Secondary Energy|Hydrogen|Gas|w/o CCS +Secondary Energy|Hydrogen|Fossil|w/o CCS,Secondary Energy|Hydrogen|Oil +Secondary Energy|Liquids|Fossil,Secondary Energy|Liquids|Coal +Secondary Energy|Liquids|Fossil,Secondary Energy|Liquids|Gas +Secondary Energy|Liquids|Fossil,Secondary Energy|Liquids|Oil +Secondary Energy|Liquids|Fossil|w/ CCS,Secondary Energy|Liquids|Coal|w/ CCS +Secondary Energy|Liquids|Fossil|w/ CCS,Secondary Energy|Liquids|Gas|w/ CCS +Secondary Energy|Liquids|Fossil|w/o CCS,Secondary Energy|Liquids|Coal|w/o CCS +Secondary Energy|Liquids|Fossil|w/o CCS,Secondary Energy|Liquids|Gas|w/o CCS +Secondary Energy|Liquids|Fossil|w/o CCS,Secondary Energy|Liquids|Oil +Resource|Extraction,Resource|Extraction|Coal +Resource|Extraction,Resource|Extraction|Gas +Resource|Extraction,Resource|Extraction|Oil +Resource|Cumulative Extraction,Resource|Cumulative Extraction|Coal +Resource|Cumulative Extraction,Resource|Cumulative Extraction|Gas +Resource|Cumulative Extraction,Resource|Cumulative Extraction|Oil +Land Cover,Land Cover|Total +Emissions|HFC,Emissions|HFC|Total +Population,Population|Total +Investment|Energy Supply|Electricity|Fossil,Investment|Energy Supply|Electricity|Coal +Investment|Energy Supply|Electricity|Fossil,Investment|Energy Supply|Electricity|Gas +Investment|Energy Supply|Electricity|Fossil,Investment|Energy Supply|Electricity|Oil +Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Geothermal +Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Hydro +Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Solar +Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Wind +Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Geothermal +Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Hydro +Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Solar +Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Wind +Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Nuclear +Investment|Energy Supply|Extraction|Fossil,Investment|Energy Supply|Extraction|Coal +Investment|Energy Supply|Extraction|Fossil,Investment|Energy Supply|Extraction|Gas +Investment|Energy Supply|Extraction|Fossil,Investment|Energy Supply|Extraction|Oil +Water Consumption|Electricity|Fossil|w/ CCS,Water Consumption|Electricity|Coal|w/ CCS +Water Consumption|Electricity|Fossil|w/ CCS,Water Consumption|Electricity|Gas|w/ CCS +Water Consumption|Electricity|Fossil|w/ CCS,Water Consumption|Electricity|Oil|w/ CCS +Water Consumption|Electricity|Fossil|w/o CCS,Water Consumption|Electricity|Coal|w/o CCS +Water Consumption|Electricity|Fossil|w/o CCS,Water Consumption|Electricity|Gas|w/o CCS +Water Consumption|Electricity|Fossil|w/o CCS,Water Consumption|Electricity|Oil|w/o CCS +Water Consumption|Electricity|Fossil,Water Consumption|Electricity|Fossil|w/ CCS +Water Consumption|Electricity|Fossil,Water Consumption|Electricity|Fossil|w/o CCS +Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Geothermal +Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Hydro +Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Solar +Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Wind +Water Consumption|Electricity,Water Consumption|Electricity|Biomass +Water Consumption|Electricity,Water Consumption|Electricity|Coal +Water Consumption|Electricity,Water Consumption|Electricity|Gas +Water Consumption|Electricity,Water Consumption|Electricity|Geothermal +Water Consumption|Electricity,Water Consumption|Electricity|Hydro +Water Consumption|Electricity,Water Consumption|Electricity|Nuclear +Water Consumption|Electricity,Water Consumption|Electricity|Oil +Water Consumption|Electricity,Water Consumption|Electricity|Other +Water Consumption|Electricity,Water Consumption|Electricity|Solar +Water Consumption|Electricity,Water Consumption|Electricity|Wind +Water Consumption|Hydrogen|Fossil|w/ CCS,Water Consumption|Hydrogen|Coal|w/ CCS +Water Consumption|Hydrogen|Fossil|w/ CCS,Water Consumption|Hydrogen|Gas|w/ CCS +Water Consumption|Hydrogen|Fossil|w/o CCS,Water Consumption|Hydrogen|Coal|w/o CCS +Water Consumption|Hydrogen|Fossil|w/o CCS,Water Consumption|Hydrogen|Gas|w/o CCS +Water Consumption|Hydrogen|Fossil|w/o CCS,Water Consumption|Hydrogen|Oil +Water Consumption|Hydrogen|Fossil,Water Consumption|Hydrogen|Fossil|w/ CCS +Water Consumption|Hydrogen|Fossil,Water Consumption|Hydrogen|Fossil|w/o CCS +Water Consumption|Hydrogen,Water Consumption|Hydrogen|Biomass +Water Consumption|Hydrogen,Water Consumption|Hydrogen|Coal +Water Consumption|Hydrogen,Water Consumption|Hydrogen|Electricity +Water Consumption|Hydrogen,Water Consumption|Hydrogen|Gas +Water Consumption|Hydrogen,Water Consumption|Hydrogen|Oil +Water Consumption|Hydrogen,Water Consumption|Hydrogen|Other +Water Consumption|Hydrogen,Water Consumption|Hydrogen|Solar +Water Consumption|Liquids|Fossil|w/ CCS,Water Consumption|Liquids|Coal|w/ CCS +Water Consumption|Liquids|Fossil|w/ CCS,Water Consumption|Liquids|Gas|w/ CCS +Water Consumption|Liquids|Fossil|w/o CCS,Water Consumption|Liquids|Coal|w/o CCS +Water Consumption|Liquids|Fossil|w/o CCS,Water Consumption|Liquids|Gas|w/o CCS +Water Consumption|Liquids|Fossil|w/o CCS,Water Consumption|Liquids|Oil +Water Consumption|Liquids|Fossil,Water Consumption|Liquids|Fossil|w/ CCS +Water Consumption|Liquids|Fossil,Water Consumption|Liquids|Fossil|w/o CCS +Water Consumption|Liquids,Water Consumption|Liquids|Biomass +Water Consumption|Liquids,Water Consumption|Liquids|Coal +Water Consumption|Liquids,Water Consumption|Liquids|Gas +Water Consumption|Liquids,Water Consumption|Liquids|Oil +Water Consumption,Water Consumption|Electricity +Water Consumption,Water Consumption|Extraction +Water Consumption,Water Consumption|Gases +Water Consumption,Water Consumption|Heat +Water Consumption,Water Consumption|Hydrogen +Water Consumption,Water Consumption|Industrial Water +Water Consumption,Water Consumption|Irrigation +Water Consumption,Water Consumption|Liquids +Water Consumption,Water Consumption|Livestock +Water Consumption,Water Consumption|Municipal Water +Water Thermal Pollution|Electricity|Fossil|w/ CCS,Water Thermal Pollution|Electricity|Coal|w/ CCS +Water Thermal Pollution|Electricity|Fossil|w/ CCS,Water Thermal Pollution|Electricity|Gas|w/ CCS +Water Thermal Pollution|Electricity|Fossil|w/ CCS,Water Thermal Pollution|Electricity|Oil|w/ CCS +Water Thermal Pollution|Electricity|Fossil|w/o CCS,Water Thermal Pollution|Electricity|Coal|w/o CCS +Water Thermal Pollution|Electricity|Fossil|w/o CCS,Water Thermal Pollution|Electricity|Gas|w/o CCS +Water Thermal Pollution|Electricity|Fossil|w/o CCS,Water Thermal Pollution|Electricity|Oil|w/o CCS +Water Thermal Pollution|Electricity|Fossil,Water Thermal Pollution|Electricity|Fossil|w/ CCS +Water Thermal Pollution|Electricity|Fossil,Water Thermal Pollution|Electricity|Fossil|w/o CCS +Water Thermal Pollution|Electricity|Non-Biomass Renewables,Water Thermal Pollution|Electricity|Geothermal +Water Thermal Pollution|Electricity|Non-Biomass Renewables,Water Thermal Pollution|Electricity|Solar +Water Withdrawal|Electricity|Fossil|w/ CCS,Water Withdrawal|Electricity|Coal|w/ CCS +Water Withdrawal|Electricity|Fossil|w/ CCS,Water Withdrawal|Electricity|Gas|w/ CCS +Water Withdrawal|Electricity|Fossil|w/ CCS,Water Withdrawal|Electricity|Oil|w/ CCS +Water Withdrawal|Electricity|Fossil|w/o CCS,Water Withdrawal|Electricity|Coal|w/o CCS +Water Withdrawal|Electricity|Fossil|w/o CCS,Water Withdrawal|Electricity|Gas|w/o CCS +Water Withdrawal|Electricity|Fossil|w/o CCS,Water Withdrawal|Electricity|Oil|w/o CCS +Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Geothermal +Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Hydro +Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Solar +Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Wind +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Biomass +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Coal +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Gas +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Geothermal +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Hydro +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Nuclear +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Oil +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Other +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Solar +Water Withdrawal|Electricity,Water Withdrawal|Electricity|Wind +Water Withdrawal|Hydrogen|Fossil|w/ CCS,Water Withdrawal|Hydrogen|Coal|w/ CCS +Water Withdrawal|Hydrogen|Fossil|w/ CCS,Water Withdrawal|Hydrogen|Gas|w/ CCS +Water Withdrawal|Hydrogen|Fossil|w/o CCS,Water Withdrawal|Hydrogen|Coal|w/o CCS +Water Withdrawal|Hydrogen|Fossil|w/o CCS,Water Withdrawal|Hydrogen|Gas|w/o CCS +Water Withdrawal|Hydrogen|Fossil|w/o CCS,Water Withdrawal|Hydrogen|Oil +Water Withdrawal|Hydrogen|Fossil,Water Withdrawal|Hydrogen|Fossil|w/ CCS +Water Withdrawal|Hydrogen|Fossil,Water Withdrawal|Hydrogen|Fossil|w/o CCS +Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Biomass +Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Coal +Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Electricity +Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Gas +Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Oil +Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Other +Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Solar +Water Withdrawal|Liquids|Fossil|w/ CCS,Water Withdrawal|Liquids|Coal|w/ CCS +Water Withdrawal|Liquids|Fossil|w/ CCS,Water Withdrawal|Liquids|Gas|w/ CCS +Water Withdrawal|Liquids|Fossil|w/o CCS,Water Withdrawal|Liquids|Coal|w/o CCS +Water Withdrawal|Liquids|Fossil|w/o CCS,Water Withdrawal|Liquids|Gas|w/o CCS +Water Withdrawal|Liquids|Fossil|w/o CCS,Water Withdrawal|Liquids|Oil +Water Withdrawal|Liquids|Fossil,Water Withdrawal|Liquids|Fossil|w/ CCS +Water Withdrawal|Liquids|Fossil,Water Withdrawal|Liquids|Fossil|w/o CCS +Water Withdrawal|Liquids,Water Withdrawal|Liquids|Biomass +Water Withdrawal|Liquids,Water Withdrawal|Liquids|Coal +Water Withdrawal|Liquids,Water Withdrawal|Liquids|Gas +Water Withdrawal|Liquids,Water Withdrawal|Liquids|Oil +Water Withdrawal,Water Withdrawal|Electricity +Water Withdrawal,Water Withdrawal|Extraction +Water Withdrawal,Water Withdrawal|Gases +Water Withdrawal,Water Withdrawal|Heat +Water Withdrawal,Water Withdrawal|Hydrogen +Water Withdrawal,Water Withdrawal|Industrial Water +Water Withdrawal,Water Withdrawal|Irrigation +Water Withdrawal,Water Withdrawal|Liquids +Water Withdrawal,Water Withdrawal|Livestock +Water Withdrawal,Water Withdrawal|Municipal Water +Consumption,GDP|Consumption diff --git a/message_ix_models/data/report/variable_definitions.csv b/message_ix_models/data/report/variable_definitions.csv new file mode 100644 index 0000000000..fed45ae863 --- /dev/null +++ b/message_ix_models/data/report/variable_definitions.csv @@ -0,0 +1,3308 @@ +Variable,Unit,Definition +Agricultural Demand,million t DM/yr,"total demand for food, non-food and feed products (crops and livestock) and bioenergy crops (1st & 2nd generation)" +Agricultural Demand|Energy,million t DM/yr,"agricultural demand level for all bioenergy (consumption, not production)" +Agricultural Demand|Energy|Crops,million t DM/yr,demand for modern primary energy crops (1st and 2nd generation) +Agricultural Demand|Energy|Crops|1st generation,million t DM/yr,demand for modern primary 1st generation energy crops +Agricultural Demand|Energy|Crops|2nd generation,million t DM/yr,demand for modern primary 2nd generation energy crops +Agricultural Demand|Energy|Residues,million t DM/yr,demand of agricultural residues for modern bioenergy production +Agricultural Demand|Non-Energy,million t DM/yr,"total demand for food, non-food and feed products (crops and livestock)" +Agricultural Demand|Non-Energy|Crops,million t DM/yr,"total demand for food, non-food and feed products (crops)" +Agricultural Demand|Non-Energy|Crops|Feed,million t DM/yr,total demand for feed (crops) +Agricultural Demand|Non-Energy|Crops|Food,million t DM/yr,total demand for food (crops) +Agricultural Demand|Non-Energy|Crops|Other,million t DM/yr,total demand for non-food and non-feed (crops) +Agricultural Demand|Non-Energy|Livestock,million t DM/yr,total demand for livestock products +Agricultural Demand|Non-Energy|Livestock|Food,million t DM/yr,total demand for food livestock products +Agricultural Demand|Non-Energy|Livestock|Other,million t DM/yr,total demand for non-food livestock products +Agricultural Production,million t DM/yr,"total production of food, non-food and feed products (crops and livestock) and bioenergy crops (1st & 2nd generation)" +Agricultural Production|Energy,million t DM/yr,total bioenergy-related agricultural production (including waste and residues) +Agricultural Production|Energy|Crops,million t DM/yr,production for modern primary energy crops (1st and 2nd generation) +Agricultural Production|Energy|Crops|1st generation,million t DM/yr,production for modern primary 1st generation energy crops +Agricultural Production|Energy|Crops|2nd generation,million t DM/yr,production for modern primary 2nd generation energy crops +Agricultural Production|Energy|Residues,million t DM/yr,production of agricultural residues for modern bioenergy production +Agricultural Production|Non-Energy,million t DM/yr,"total production for food, non-food and feed products (crops and livestock)" +Agricultural Production|Non-Energy|Crops,million t DM/yr,"total production for food, non-food and feed products (crops)" +Agricultural Production|Non-Energy|Crops|Feed,million t DM/yr,total production for feed (crops) +Agricultural Production|Non-Energy|Crops|Food,million t DM/yr,total production for food (crops) +Agricultural Production|Non-Energy|Crops|Other,million t DM/yr,total production for non-food and non-feed (crops) +Agricultural Production|Non-Energy|Livestock,million t DM/yr,total production for livestock products +Agricultural Production|Non-Energy|Livestock|Food,million t DM/yr,total production for food livestock products +Agricultural Production|Non-Energy|Livestock|Other,million t DM/yr,total production for non-food livestock products +Capacity Additions|Electricity,GW/yr,Newly installed capacity of all operating power plants +Capacity Additions|Electricity|Biomass,GW/yr,Newly installed capacity of operating biomass plants +Capacity Additions|Electricity|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Biomass|w/ CCS|1,GW/yr,"Newly installed capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Biomass|w/ CCS|2,GW/yr, +Capacity Additions|Electricity|Biomass|w/ CCS|3,GW/yr, +Capacity Additions|Electricity|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Biomass|w/o CCS|1,GW/yr,"Newly installed capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Biomass|w/o CCS|2,GW/yr,"Newly installed capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Biomass|w/o CCS|3,GW/yr, +Capacity Additions|Electricity|Coal,GW/yr,Newly installed capacity of operating coal plants +Capacity Additions|Electricity|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/ CCS|1,GW/yr,"Newly installed capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/ CCS|2,GW/yr,"Newly installed capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/ CCS|3,GW/yr, +Capacity Additions|Electricity|Coal|w/ CCS|4,GW/yr, +Capacity Additions|Electricity|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/o CCS|1,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/o CCS|2,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/o CCS|3,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/o CCS|4,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Coal|w/o CCS|5,GW/yr, +Capacity Additions|Electricity|Gas,GW/yr,Newly installed capacity of operating gas plants +Capacity Additions|Electricity|Gas|w/ CCS,GW/yr,"Newly installed capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Gas|w/ CCS|1,GW/yr,"Newly installed capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Gas|w/ CCS|2,GW/yr, +Capacity Additions|Electricity|Gas|w/ CCS|3,GW/yr, +Capacity Additions|Electricity|Gas|w/o CCS,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Gas|w/o CCS|1,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Gas|w/o CCS|2,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Gas|w/o CCS|3,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Geothermal,GW/yr,Newly installed capacity of operating geothermal plants +Capacity Additions|Electricity|Hydro,GW/yr,"Newly installed capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Hydro|1,GW/yr,"Newly installed capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Hydro|2,GW/yr,"Newly installed capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Nuclear,GW/yr,"Newly installed capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Nuclear|1,GW/yr,"Newly installed capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Nuclear|2,GW/yr,"Newly installed capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Ocean,GW/yr,Newly installed capacity of operating ocean power plants +Capacity Additions|Electricity|Oil,GW/yr,Newly installed capacity of operating oil plants +Capacity Additions|Electricity|Oil|w/ CCS,GW/yr,"Newly installed capacity of oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Oil|w/o CCS,GW/yr,Newly installed capacity of operating oil plants +Capacity Additions|Electricity|Oil|w/o CCS|1,GW/yr,Newly installed capacity of operating oil plants +Capacity Additions|Electricity|Oil|w/o CCS|2,GW/yr,Newly installed capacity of operating oil plants +Capacity Additions|Electricity|Oil|w/o CCS|3,GW/yr,Newly installed capacity of operating oil plants +Capacity Additions|Electricity|Other,GW/yr,Newly installed capacity of all others types of operating power plants +Capacity Additions|Electricity|Peak Demand,GW/yr,peak (maximum) electricity load +Capacity Additions|Electricity|Solar,GW/yr,Newly installed capacity of all operating solar facilities (both CSP and PV) +Capacity Additions|Electricity|Solar|CSP,GW/yr,"Newly installed capacity of concentrating solar power (CSP). The installed (available) capacity of CSP by technology type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|CSP|1, ..., Capacity|Electricity|Solar|CSP|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Solar|CSP|1,GW/yr, +Capacity Additions|Electricity|Solar|CSP|2,GW/yr, +Capacity Additions|Electricity|Solar|PV,GW/yr,"Newly installed capacity of solar PV power plants. The installed (available) capacity of solar PV power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|PV|1, ..., Capacity|Electricity|Solar|PV|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Storage Capacity,GW/yr,Newly installed capacity of operating electricity storage +Capacity Additions|Electricity|Transmissions Grid,GW/yr, +Capacity Additions|Electricity|Wind,GW/yr,"Newly installed capacity of wind power plants (onshore + offshore). The installed (available) capacity of wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|1, ..., Capacity|Electricity|Wind|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Wind|Offshore,GW/yr,"Newly installed capacity of offshore wind power plants. The installed (available) capacity of offshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Offshore|1, ..., Capacity|Electricity|Wind|Offshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Electricity|Wind|Onshore,GW/yr,"Newly installed capacity of onshore wind power plants. The installed (available) capacity of onshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Onshore|1, ..., Capacity|Electricity|Wind|Onshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Gases,GW/yr,Newly installed capacity of all gas generation plants. +Capacity Additions|Gases|Biomass,GW/yr,Newly installed capacity of biomass to gas plants. +Capacity Additions|Gases|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass to gas plants with CCS. The installed (available) capacity of CCS biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/ CCS|1, ..., Capacity|Gases|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Gases|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass to gas plants without CCS. The installed (available) capacity of biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/o CCS|1, ..., Capacity|Gases|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Gases|Coal,GW/yr,Newly installed capacity of coal to gas plants. +Capacity Additions|Gases|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal to gas plants with CCS. The installed (available) capacity of CCS coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/ CCS|1, ..., Capacity|Gases|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Gases|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal to gas plants without CCS. The installed (available) capacity of coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/o CCS|1, ..., Capacity|Gases|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Gases|Other,GW/yr,Newly installed capacity of other gas production plants. +Capacity Additions|Hydrogen,GW/yr,Newly installed capacity of all hydrogen generation plants. +Capacity Additions|Hydrogen|Biomass,GW/yr,Newly installed capacity of biomass to hydrogen plants. +Capacity Additions|Hydrogen|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass to hydrogen plants with CCS. The installed (available) capacity of CCS biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/ CCS|1, ..., Capacity|Hydrogen|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Hydrogen|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass to hydrogen plants without CCS. The installed (available) capacity of biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/o CCS|1, ..., Capacity|Hydrogen|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Hydrogen|Coal,GW/yr,Newly installed capacity of coal to hydrogen plants. +Capacity Additions|Hydrogen|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal to hydrogen plants with CCS. The installed (available) capacity of CCS coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/ CCS|1, ..., Capacity|Hydrogen|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Hydrogen|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal to hydrogen plants without CCS. The installed (available) capacity of coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/o CCS|1, ..., Capacity|Hydrogen|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Hydrogen|Electricity,GW/yr,"Newly installed capacity of hydrogen-by-electrolysis plants. The installed (available) capacity of hydrogen-by-electrolysis plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Electricity|w/ CCS|1, ..., Capacity|Hydrogen|Electricity|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Hydrogen|Gas,GW/yr,Newly installed capacity of gas to hydrogen plants. +Capacity Additions|Hydrogen|Gas|w/ CCS,GW/yr,"Newly installed capacity of gas to hydrogen plants with CCS. The installed (available) capacity of CCS gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/ CCS|1, ..., Capacity|Hydrogen|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Hydrogen|Gas|w/o CCS,GW/yr,"Newly installed capacity of gas to hydrogen plants without CCS. The installed (available) capacity of gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/o CCS|1, ..., Capacity|Hydrogen|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Hydrogen|Other,GW/yr,Newly installed capacity of other hydrogen production plants. +Capacity Additions|Liquids,GW/yr,Newly installed capacity of liquefaction plants. +Capacity Additions|Liquids|Biomass,GW/yr,Newly installed capacity of biomass to liquids plants. +Capacity Additions|Liquids|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Biomass|w/ CCS|1,GW/yr,"Newly installed capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Biomass|w/ CCS|2,GW/yr,"Newly installed capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Biomass|w/o CCS|1,GW/yr,"Newly installed capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Biomass|w/o CCS|2,GW/yr,"Newly installed capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Coal,GW/yr,Newly installed capacity of coal to liquids plants. +Capacity Additions|Liquids|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Coal|w/ CCS|1,GW/yr,"Newly installed capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Coal|w/ CCS|2,GW/yr,"Newly installed capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Coal|w/o CCS|1,GW/yr,"Newly installed capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Coal|w/o CCS|2,GW/yr,"Newly installed capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Gas,GW/yr,Newly installed capacity of gas to liquids plants. +Capacity Additions|Liquids|Gas|w/ CCS,GW/yr,"Newly installed capacity of gas to liquids plants with CCS. The installed (available) capacity of CCS gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/ CCS|1, ..., Capacity|Liquids|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Gas|w/o CCS,GW/yr,"Newly installed capacity of gas to liquids plants without CCS. The installed (available) capacity of gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/o CCS|1, ..., Capacity|Liquids|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Oil,GW/yr,"Newly installed capacity of oil refining plants. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Oil|w/ CCS,GW/yr,"Newly installed capacity of oil refining plants with CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Oil|w/o CCS,GW/yr,"Newly installed capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Oil|w/o CCS|1,GW/yr,"Newly installed capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Oil|w/o CCS|2,GW/yr,"Newly installed capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity Additions|Liquids|Other,GW/yr,Newly installed capacity of other liquid production plants. +Capacity|Electricity,GW,Total installed (available) capacity of all operating power plants +Capacity|Electricity|Biomass,GW,Total installed (available) capacity of operating biomass plants +Capacity|Electricity|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Biomass|w/ CCS|1,GW,"Total installed (available) capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Biomass|w/ CCS|2,GW, +Capacity|Electricity|Biomass|w/ CCS|3,GW, +Capacity|Electricity|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Biomass|w/o CCS|1,GW,"Total installed (available) capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Biomass|w/o CCS|2,GW,"Total installed (available) capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Biomass|w/o CCS|3,GW, +Capacity|Electricity|Coal,GW,Total installed (available) capacity of operating coal plants +Capacity|Electricity|Coal|w/ CCS,GW,"Total installed (available) capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/ CCS|1,GW,"Total installed (available) capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/ CCS|2,GW,"Total installed (available) capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/ CCS|3,GW, +Capacity|Electricity|Coal|w/ CCS|4,GW, +Capacity|Electricity|Coal|w/o CCS,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/o CCS|1,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/o CCS|2,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/o CCS|3,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/o CCS|4,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Coal|w/o CCS|5,GW, +Capacity|Electricity|Gas,GW,Total installed (available) capacity of operating gas plants +Capacity|Electricity|Gas|w/ CCS,GW,"Total installed (available) capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Gas|w/ CCS|1,GW,"Total installed (available) capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Gas|w/ CCS|2,GW, +Capacity|Electricity|Gas|w/ CCS|3,GW, +Capacity|Electricity|Gas|w/o CCS,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Gas|w/o CCS|1,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Gas|w/o CCS|2,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Gas|w/o CCS|3,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Geothermal,GW,Total installed (available) capacity of operating geothermal plants +Capacity|Electricity|Hydro,GW,"Total installed (available) capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Hydro|1,GW,"Total installed (available) capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Hydro|2,GW,"Total installed (available) capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Nuclear,GW,"Total installed (available) capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Nuclear|1,GW,"Total installed (available) capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Nuclear|2,GW,"Total installed (available) capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Ocean,GW,Total installed (available) capacity of operating ocean power plants +Capacity|Electricity|Oil,GW,Total installed (available) capacity of operating oil plants +Capacity|Electricity|Oil|w/ CCS,GW,"Total installed (available) capacity of oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Oil|w/o CCS,GW,Total installed (available) capacity of operating oil plants +Capacity|Electricity|Oil|w/o CCS|1,GW,Total installed (available) capacity of operating oil plants +Capacity|Electricity|Oil|w/o CCS|2,GW,Total installed (available) capacity of operating oil plants +Capacity|Electricity|Oil|w/o CCS|3,GW,Total installed (available) capacity of operating oil plants +Capacity|Electricity|Other,GW,Total installed (available) capacity of all others types of operating power plants +Capacity|Electricity|Peak Demand,GW,peak (maximum) electricity load +Capacity|Electricity|Solar,GW,Total installed (available) capacity of all operating solar facilities (both CSP and PV) +Capacity|Electricity|Solar|CSP,GW,"Total installed (available) capacity of concentrating solar power (CSP). The installed (available) capacity of CSP by technology type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|CSP|1, ..., Capacity|Electricity|Solar|CSP|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Solar|CSP|1,GW, +Capacity|Electricity|Solar|CSP|2,GW, +Capacity|Electricity|Solar|PV,GW,"Total installed (available) capacity of solar PV power plants. The installed (available) capacity of solar PV power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|PV|1, ..., Capacity|Electricity|Solar|PV|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Storage,GW,Total installed (available) capacity of operating electricity storage +Capacity|Electricity|Storage Capacity,GWh, +Capacity|Electricity|Transmissions Grid,GWkm, +Capacity|Electricity|Wind,GW,"Total installed (available) capacity of wind power plants (onshore + offshore). The installed (available) capacity of wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|1, ..., Capacity|Electricity|Wind|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Wind|Offshore,GW,"Total installed (available) capacity of offshore wind power plants. The installed (available) capacity of offshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Offshore|1, ..., Capacity|Electricity|Wind|Offshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Electricity|Wind|Onshore,GW,"Total installed (available) capacity of onshore wind power plants. The installed (available) capacity of onshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Onshore|1, ..., Capacity|Electricity|Wind|Onshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Gases,GW,Total installed (available) capacity of all gas generation plants. +Capacity|Gases|Biomass,GW,Total installed (available) capacity of biomass to gas plants. +Capacity|Gases|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass to gas plants with CCS. The installed (available) capacity of CCS biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/ CCS|1, ..., Capacity|Gases|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Gases|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass to gas plants without CCS. The installed (available) capacity of biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/o CCS|1, ..., Capacity|Gases|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Gases|Coal,GW,Total installed (available) capacity of coal to gas plants. +Capacity|Gases|Coal|w/ CCS,GW,"Total installed (available) capacity of coal to gas plants with CCS. The installed (available) capacity of CCS coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/ CCS|1, ..., Capacity|Gases|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Gases|Coal|w/o CCS,GW,"Total installed (available) capacity of coal to gas plants without CCS. The installed (available) capacity of coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/o CCS|1, ..., Capacity|Gases|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Gases|Other,GW,Total installed (available) capacity of other gas production plants. +Capacity|Hydrogen,GW,Total installed (available) capacity of all hydrogen generation plants. +Capacity|Hydrogen|Biomass,GW,Total installed (available) capacity of biomass to hydrogen plants. +Capacity|Hydrogen|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass to hydrogen plants with CCS. The installed (available) capacity of CCS biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/ CCS|1, ..., Capacity|Hydrogen|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Hydrogen|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass to hydrogen plants without CCS. The installed (available) capacity of biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/o CCS|1, ..., Capacity|Hydrogen|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Hydrogen|Coal,GW,Total installed (available) capacity of coal to hydrogen plants. +Capacity|Hydrogen|Coal|w/ CCS,GW,"Total installed (available) capacity of coal to hydrogen plants with CCS. The installed (available) capacity of CCS coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/ CCS|1, ..., Capacity|Hydrogen|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Hydrogen|Coal|w/o CCS,GW,"Total installed (available) capacity of coal to hydrogen plants without CCS. The installed (available) capacity of coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/o CCS|1, ..., Capacity|Hydrogen|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Hydrogen|Electricity,GW,"Total installed (available) capacity of hydrogen-by-electrolysis plants. The installed (available) capacity of hydrogen-by-electrolysis plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Electricity|w/ CCS|1, ..., Capacity|Hydrogen|Electricity|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Hydrogen|Gas,GW,Total installed (available) capacity of gas to hydrogen plants. +Capacity|Hydrogen|Gas|w/ CCS,GW,"Total installed (available) capacity of gas to hydrogen plants with CCS. The installed (available) capacity of CCS gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/ CCS|1, ..., Capacity|Hydrogen|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Hydrogen|Gas|w/o CCS,GW,"Total installed (available) capacity of gas to hydrogen plants without CCS. The installed (available) capacity of gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/o CCS|1, ..., Capacity|Hydrogen|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Hydrogen|Other,GW,Total installed (available) capacity of other hydrogen production plants. +Capacity|Liquids,GW,Total installed (available) capacity of liquefaction plants. +Capacity|Liquids|Biomass,GW,Total installed (available) capacity of biomass to liquids plants. +Capacity|Liquids|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Biomass|w/ CCS|1,GW,"Total installed (available) capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Biomass|w/ CCS|2,GW,"Total installed (available) capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Biomass|w/o CCS|1,GW,"Total installed (available) capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Biomass|w/o CCS|2,GW,"Total installed (available) capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Coal,GW,Total installed (available) capacity of coal to liquids plants. +Capacity|Liquids|Coal|w/ CCS,GW,"Total installed (available) capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Coal|w/ CCS|1,GW,"Total installed (available) capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Coal|w/ CCS|2,GW,"Total installed (available) capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Coal|w/o CCS,GW,"Total installed (available) capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Coal|w/o CCS|1,GW,"Total installed (available) capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Coal|w/o CCS|2,GW,"Total installed (available) capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Gas,GW,Total installed (available) capacity of gas to liquids plants. +Capacity|Liquids|Gas|w/ CCS,GW,"Total installed (available) capacity of gas to liquids plants with CCS. The installed (available) capacity of CCS gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/ CCS|1, ..., Capacity|Liquids|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Gas|w/o CCS,GW,"Total installed (available) capacity of gas to liquids plants without CCS. The installed (available) capacity of gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/o CCS|1, ..., Capacity|Liquids|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Oil,GW,"Total installed (available) capacity of oil refining plants. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Oil|w/ CCS,GW,"Total installed (available) capacity of oil refining plants with CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Oil|w/o CCS,GW,"Total installed (available) capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Oil|w/o CCS|1,GW,"Total installed (available) capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Oil|w/o CCS|2,GW,"Total installed (available) capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capacity|Liquids|Other,GW,Total installed (available) capacity of other liquid production plants. +Capital Cost|Electricity|Biomass|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report capital costs for each represented CCS biomass power technology by adding variables Capital Cost|Electricity|Biomass|w/ CCS|2, ... Capital Cost|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Biomass|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report capital costs for each represented biomass power technology by adding variables Capital Cost|Electricity|Biomass|w/o CCS|2, ... Capital Cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Biomass|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report capital costs for each represented biomass power technology by adding variables Capital Cost|Electricity|Biomass|w/o CCS|2, ... Capital Cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Coal|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report capital costs for each represented CCS coal power technology by adding variables Capital Cost|Electricity|Coal|w/ CCS|2, ... Capital Cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Coal|w/ CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report capital costs for each represented CCS coal power technology by adding variables Capital Cost|Electricity|Coal|w/ CCS|2, ... Capital Cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Coal|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Coal|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Coal|w/o CCS|3,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Coal|w/o CCS|4,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Gas|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report capital costs for each represented CCS gas power technology by adding variables Capital Cost|Electricity|Gas|w/ CCS|2, ... Capital Cost|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Gas|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report capital costs for each represented gas power technology by adding variables Capital Cost|Electricity|Gas|w/o CCS|2, ... Capital Cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Gas|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report capital costs for each represented gas power technology by adding variables Capital Cost|Electricity|Gas|w/o CCS|2, ... Capital Cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Gas|w/o CCS|3,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report capital costs for each represented gas power technology by adding variables Capital Cost|Electricity|Gas|w/o CCS|2, ... Capital Cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Geothermal,US$2010/kW OR local currency/kW,"Capital cost of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report capital costs for each represented geothermal power technology by adding variables Capital Cost|Electricity|Geothermal|2, ... Capital Cost|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Hydro,US$2010/kW OR local currency/kW,"Capital cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report capital costs for each represented hydropower technology by adding variables Capital Cost|Electricity|Hydro|2, ... Capital Cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Hydro|1,US$2010/kW OR local currency/kW,"Capital cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report capital costs for each represented hydropower technology by adding variables Capital Cost|Electricity|Hydro|2, ... Capital Cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Hydro|2,US$2010/kW OR local currency/kW,"Capital cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report capital costs for each represented hydropower technology by adding variables Capital Cost|Electricity|Hydro|2, ... Capital Cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Nuclear,US$2010/kW OR local currency/kW,"Capital cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report capital costs for each represented nuclear power technology by adding variables Capital Cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Nuclear|1,US$2010/kW OR local currency/kW,"Capital cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report capital costs for each represented nuclear power technology by adding variables Capital Cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Nuclear|2,US$2010/kW OR local currency/kW,"Capital cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report capital costs for each represented nuclear power technology by adding variables Capital Cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Ocean,US$2010/kW OR local currency/kW,Capital cost of operating ocean power plants +Capital Cost|Electricity|Oil|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Capital Cost|Electricity|Oil|w/o CCS,US$2010/kW OR local currency/kW,Capital cost of a newoil plants +Capital Cost|Electricity|Oil|w/o CCS|1,US$2010/kW OR local currency/kW,Capital cost of a newoil plants +Capital Cost|Electricity|Oil|w/o CCS|2,US$2010/kW OR local currency/kW,Capital cost of a newoil plants +Capital Cost|Electricity|Oil|w/o CCS|3,US$2010/kW OR local currency/kW,Capital cost of a newoil plants +Capital Cost|Electricity|Solar|CSP|1,US$2010/kW OR local currency/kW,"Capital cost of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report capital costs for each represented CSP technology by adding variables Capital Cost|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Solar|CSP|2,US$2010/kW OR local currency/kW, +Capital Cost|Electricity|Solar|PV,US$2010/kW OR local currency/kW,"Capital cost of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report capital costs for each represented PV technology by adding variables Capital Cost|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Wind|Offshore,US$2010/kW OR local currency/kW,"Capital cost of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report capital costs for each represented wind power technology by adding variables Capital Cost|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Electricity|Wind|Onshore,US$2010/kW OR local currency/kW,"Capital cost of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report capital costs for each represented wind power technology by adding variables Capital Cost|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Gases|Biomass|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report capital costs for each represented CCS biomass to gas technology by adding variables Capital Cost|Gases|Biomass|w/ CCS|2, ... Capital Cost|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Gases|Biomass|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report capital costs for each represented biomass to gas technology by adding variables Capital Cost|Gases|Biomass|w/o CCS|2, ... Capital Cost|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Gases|Coal|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report capital costs for each represented CCS coal to gas technology by adding variables Capital Cost|Gases|Coal|w/ CCS|2, ... Capital Cost|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Gases|Coal|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report capital costs for each represented coal to gas technology by adding variables Capital Cost|Gases|Coal|w/o CCS|2, ... Capital Cost|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Hydrogen|Biomass|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report capital costs for each represented CCS biomass to hydrogen technology by adding variables Capital Cost|Hydrogen|Biomass|w/ CCS|2, ... Capital Cost|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Hydrogen|Biomass|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report capital costs for each represented biomass to hydrogen technology by adding variables Capital Cost|Hydrogen|Biomass|w/o CCS|2, ... Capital Cost|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Hydrogen|Coal|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report capital costs for each represented CCS coal to hydrogen technology by adding variables Capital Cost|Hydrogen|Coal|w/ CCS|2, ... Capital Cost|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Hydrogen|Coal|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report capital costs for each represented coal to hydrogen technology by adding variables Capital Cost|Hydrogen|Coal|w/o CCS|2, ... Capital Cost|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Hydrogen|Electricity,US$2010/kW OR local currency/kW,"Capital cost of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report capital costs for each represented hydrogen-by-electrolysis technology by adding variables Capital Cost|Hydrogen|Electricity|2, ... Capital Cost|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Hydrogen|Gas|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report capital costs for each represented CCS gas to hydrogen technology by adding variables Capital Cost|Hydrogen|Gas|w/ CCS|2, ... Capital Cost|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Hydrogen|Gas|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report capital costs for each represented gas to hydrogen technology by adding variables Capital Cost|Hydrogen|Gas|w/o CCS|2, ... Capital Cost|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Biomass|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report capital costs for each represented CCS BTL technology by adding variables Capital Cost|Liquids|Biomass|w/ CCS|2, ... Capital Cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Biomass|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report capital costs for each represented CCS BTL technology by adding variables Capital Cost|Liquids|Biomass|w/ CCS|2, ... Capital Cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Biomass|w/ CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report capital costs for each represented CCS BTL technology by adding variables Capital Cost|Liquids|Biomass|w/ CCS|2, ... Capital Cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Biomass|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report capital costs for each represented BTL technology by adding variables Capital Cost|Liquids|Biomass|w/o CCS|2, ... Capital Cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Biomass|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report capital costs for each represented BTL technology by adding variables Capital Cost|Liquids|Biomass|w/o CCS|2, ... Capital Cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Biomass|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report capital costs for each represented BTL technology by adding variables Capital Cost|Liquids|Biomass|w/o CCS|2, ... Capital Cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Coal|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report capital costs for each represented CCS CTL technology by adding variables Capital Cost|Liquids|Coal|w/ CCS|2, ... Capital Cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Coal|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report capital costs for each represented CCS CTL technology by adding variables Capital Cost|Liquids|Coal|w/ CCS|2, ... Capital Cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Coal|w/ CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report capital costs for each represented CCS CTL technology by adding variables Capital Cost|Liquids|Coal|w/ CCS|2, ... Capital Cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Coal|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report capital costs for each represented CTL technology by adding variables Capital Cost|Liquids|Coal|w/o CCS|2, ... Capital Cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Coal|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report capital costs for each represented CTL technology by adding variables Capital Cost|Liquids|Coal|w/o CCS|2, ... Capital Cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Coal|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report capital costs for each represented CTL technology by adding variables Capital Cost|Liquids|Coal|w/o CCS|2, ... Capital Cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Gas|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report capital costs for each represented CCS GTL technology by adding variables Capital Cost|Liquids|Gas|w/ CCS|2, ... Capital Cost|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Gas|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report capital costs for each represented GTL technology by adding variables Capital Cost|Liquids|Gas|w/o CCS|2, ... Capital Cost|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Oil|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Oil|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Oil|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Oil|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Cost|Liquids|Oil|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Capital Formation,billion US$2010/yr OR local currency,net additions to the physical capital stock +Capital Stock,billion US$2010/yr or local currency/yr,Macroeconomic capital stock +Carbon Sequestration|CCS,Mt CO2/yr,"total carbon dioxide emissions captured and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass|Energy|Demand|Industry,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in industry (IPCC category 1A2) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass|Energy|Supply,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass|Energy|Supply|Electricity,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in electricity production (part of IPCC category 1A1a) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass|Energy|Supply|Gases,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in gaseous fuel production, excl. hydrogen (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass|Energy|Supply|Hydrogen,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in hydrogen production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass|Energy|Supply|Liquids,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in liquid fuel production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Biomass|Energy|Supply|Other,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in other energy supply (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil|Energy|Demand|Industry,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in industry (IPCC category 1A2) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil|Energy|Supply,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in energy supply (IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil|Energy|Supply|Electricity,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in electricity production (part of IPCC category 1A1a) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil|Energy|Supply|Gases,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in gaseous fuel production, excl. hydrogen (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil|Energy|Supply|Hydrogen,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in hydrogen production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil|Energy|Supply|Liquids,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in liquid fuel production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Fossil|Energy|Supply|Other,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in other energy supply (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|CCS|Industrial Processes,Mt CO2/yr,"total carbon dioxide emissions captured from industrial processes (e.g., cement production, but not from fossil fuel burning) use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" +Carbon Sequestration|Direct Air Capture,Mt CO2/yr,total carbon dioxide sequestered through direct air capture +Carbon Sequestration|Enhanced Weathering,Mt CO2/yr,total carbon dioxide sequestered through enhanced weathering +Carbon Sequestration|Land Use,Mt CO2/yr,"total carbon dioxide sequestered through land-based sinks (e.g., afforestation, soil carbon enhancement, biochar)" +Carbon Sequestration|Land Use|Afforestation,Mt CO2/yr,total carbon dioxide sequestered through afforestation +Carbon Sequestration|Land Use|Biochar,Mt CO2/yr,total carbon dioxide sequestered through biochar +Carbon Sequestration|Land Use|Soil Carbon Management,Mt CO2/yr,total carbon dioxide sequestered through soil carbon management techniques +Carbon Sequestration|Other,Mt CO2/yr,total carbon dioxide sequestered through other techniques (please provide a definition of other sources in this category in the 'comments' tab) +Concentration|CH4,ppb,atmospheric concentration of methane +Concentration|CO2,ppm,atmospheric concentration of carbon dioxide +Concentration|N2O,ppb,atmospheric concentration of nitrous oxide +Consumption,billion US$2010/yr,"total consumption of all goods, by all consumers in a region" +Cost|Cost Nodal Net,billion US$2010/yr, +Cumulative Capacity|Electricity,GW,Cumulative installed capacity (since 2005)of all operating power plants +Cumulative Capacity|Electricity|Biomass,GW,Cumulative installed capacity (since 2005)of operating biomass plants +Cumulative Capacity|Electricity|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass power plants with CCS. The cumulative capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/ CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Biomass|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass power plants with CCS. The cumulative capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/ CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Biomass|w/ CCS|2,GW, +Cumulative Capacity|Electricity|Biomass|w/ CCS|3,GW, +Cumulative Capacity|Electricity|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass power plants without CCS. The cumulative capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/o CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Biomass|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass power plants without CCS. The cumulative capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/o CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Biomass|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of biomass power plants without CCS. The cumulative capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/o CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Biomass|w/o CCS|3,GW, +Cumulative Capacity|Electricity|Coal,GW,Cumulative installed capacity (since 2005)of operating coal plants +Cumulative Capacity|Electricity|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal power plants with CCS. The cumulative capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/ CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of coal power plants with CCS. The cumulative capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/ CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/ CCS|2,GW,"Cumulative installed capacity (since 2005) of coal power plants with CCS. The cumulative capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/ CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/ CCS|3,GW, +Cumulative Capacity|Electricity|Coal|w/ CCS|4,GW, +Cumulative Capacity|Electricity|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/o CCS|3,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/o CCS|4,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Coal|w/o CCS|5,GW, +Cumulative Capacity|Electricity|Gas,GW,Cumulative installed capacity (since 2005)of operating gas plants +Cumulative Capacity|Electricity|Gas|w/ CCS,GW,"Cumulative installed capacity (since 2005) of gas power plants with CCS. The cumulative capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/ CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Gas|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of gas power plants with CCS. The cumulative capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/ CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Gas|w/ CCS|2,GW, +Cumulative Capacity|Electricity|Gas|w/ CCS|3,GW, +Cumulative Capacity|Electricity|Gas|w/o CCS,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Gas|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Gas|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Gas|w/o CCS|3,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Geothermal,GW,Cumulative installed geothermal electricity generation capacity +Cumulative Capacity|Electricity|Hydro,GW,"Cumulative installed capacity (since 2005) of hydropower plants. The cumulative capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Hydro|1, ..., Cumulative Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Hydro|1,GW,"Cumulative installed capacity (since 2005) of hydropower plants. The cumulative capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Hydro|1, ..., Cumulative Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Hydro|2,GW,"Cumulative installed capacity (since 2005) of hydropower plants. The cumulative capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Hydro|1, ..., Cumulative Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Nuclear,GW,"Cumulative installed capacity (since 2005) of nuclear power plants. The cumulative capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Nuclear|1, ..., Cumulative Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Nuclear|1,GW,"Cumulative installed capacity (since 2005) of nuclear power plants. The cumulative capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Nuclear|1, ..., Cumulative Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Nuclear|2,GW,"Cumulative installed capacity (since 2005) of nuclear power plants. The cumulative capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Nuclear|1, ..., Cumulative Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Oil,GW,Cumulative installed capacity (since 2005)of operating oil plants +Cumulative Capacity|Electricity|Oil|w/ CCS,GW,"Cumulative installed capacity (since 2005) of oil power plants with CCS. The cumulative capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/ CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Oil|w/o CCS,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Oil|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Oil|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Oil|w/o CCS|3,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Other,GW,Cumulative installed capacity (since 2005)of all others types of operating power plants +Cumulative Capacity|Electricity|Peak Demand,GW,peak (maximum) electricity load +Cumulative Capacity|Electricity|Solar,GW,Cumulative installed capacity (since 2005)of all operating solar facilities (both CSP and PV) +Cumulative Capacity|Electricity|Solar|CSP,GW,"Cumulative installed capacity (since 2005) of concentrated solar power plants. The cumulative capacity of CSP plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Solar|CSP|1, ..., Cumulative Capacity|Electricity|Solar|CSP|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Solar|CSP|1,GW, +Cumulative Capacity|Electricity|Solar|CSP|2,GW, +Cumulative Capacity|Electricity|Solar|PV,GW,"Cumulative installed capacity (since 2005) of solar PV. The cumulative capacity of PV by technology type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Solar|PV|1, ..., Cumulative Capacity|Electricity|Solar|PV|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Storage,GW,Cumulative installed capacity (since 2005)of operating electricity storage +Cumulative Capacity|Electricity|Wind,GW,"Cumulative installed capacity (since 2005)of wind power plants (onshore + offshore). The installed (available) capacity of wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|1, ..., Capacity|Electricity|Wind|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Wind|Offshore,GW,"Cumulative installed capacity (since 2005) of offshore wind power plants. The cumulative capacity of offshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Wind|Offshore|1, ..., Cumulative Capacity|Electricity|Wind|Offshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Electricity|Wind|Onshore,GW,"Cumulative installed capacity (since 2005) of onshore wind power plants. The cumulative capacity of onshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Wind|Onshore|1, ..., Cumulative Capacity|Electricity|Wind|Onshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Gases,GW,Cumulative installed capacity (since 2005)of all gas generation plants. +Cumulative Capacity|Gases|Biomass,GW,Cumulative installed capacity (since 2005)of biomass to gas plants. +Cumulative Capacity|Gases|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass to gas plants with CCS. The cumulative capacity of CCS biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Biomass|w/ CCS|1, ..., Cumulative Capacity|Gases|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Gases|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass to gas plants without CCS. The cumulative capacity of biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Biomass|w/o CCS|1, ..., Cumulative Capacity|Gases|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Gases|Coal,GW,Cumulative installed capacity (since 2005)of coal to gas plants. +Cumulative Capacity|Gases|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal to gas plants with CCS. The cumulative capacity of CCS coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Coal|w/ CCS|1, ..., Cumulative Capacity|Gases|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Gases|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal to gas plants without CCS. The cumulative capacity of coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Coal|w/o CCS|1, ..., Cumulative Capacity|Gases|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Gases|Other,GW,Cumulative installed capacity (since 2005)of other gas production plants. +Cumulative Capacity|Hydrogen,GW,Cumulative installed capacity (since 2005)of all hydrogen generation plants. +Cumulative Capacity|Hydrogen|Biomass,GW,Cumulative installed capacity (since 2005)of biomass to hydrogen plants. +Cumulative Capacity|Hydrogen|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass to hydrogen plants with CCS. The cumulative capacity of CCS biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Biomass|w/ CCS|1, ..., Cumulative Capacity|Hydrogen|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Hydrogen|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass to hydrogen plants without CCS. The cumulative capacity of biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Biomass|w/o CCS|1, ..., Cumulative Capacity|Hydrogen|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Hydrogen|Coal,GW,Cumulative installed capacity (since 2005)of coal to hydrogen plants. +Cumulative Capacity|Hydrogen|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal to hydrogen plants with CCS. The cumulative capacity of CCS coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Coal|w/ CCS|1, ..., Cumulative Capacity|Hydrogen|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Hydrogen|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal to hydrogen plants without CCS. The cumulative capacity of coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Coal|w/o CCS|1, ..., Cumulative Capacity|Hydrogen|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Hydrogen|Electricity,GW,"Cumulative installed capacity (since 2005) of hydrogen-by-electrolysis plants. The cumulative capacity of hydrogen-by-electrolysis plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Electricity|1, ..., Cumulative Capacity|Hydrogen|Electricity|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Hydrogen|Gas,GW,Cumulative installed capacity (since 2005)of gas to hydrogen plants. +Cumulative Capacity|Hydrogen|Gas|w/ CCS,GW,"Cumulative installed capacity (since 2005) of gas to hydrogen plants with CCS. The cumulative capacity of CCS gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Gas|w/ CCS|1, ..., Cumulative Capacity|Hydrogen|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Hydrogen|Gas|w/o CCS,GW,"Cumulative installed capacity (since 2005) of gas to hydrogen plants without CCS. The cumulative capacity of gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Gas|w/o CCS|1, ..., Cumulative Capacity|Hydrogen|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Hydrogen|Other,GW,"Cumulative installed capacity (since 2005) of hydrogen plants from other sources (e.g. thermochemical production from nuclear or solar heat). The cumulative capacity of hydrogen plants from other sources by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Other|1, ..., Cumulative Capacity|Hydrogen|Other|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids,GW,"Cumulative installed refined liquids (e.g. oil products, fossil synfuels and biofuels) production capacity since the year 2005" +Cumulative Capacity|Liquids|Biomass,GW,Cumulative installed capacity (since 2005)of biomass to liquids plants. +Cumulative Capacity|Liquids|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants with CCS. The cumulative capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/ CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Biomass|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants with CCS. The cumulative capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/ CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Biomass|w/ CCS|2,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants with CCS. The cumulative capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/ CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants without CCS. The cumulative capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/o CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Biomass|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants without CCS. The cumulative capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/o CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Biomass|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants without CCS. The cumulative capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/o CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Coal,GW,Cumulative installed capacity (since 2005)of coal to liquids plants. +Cumulative Capacity|Liquids|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants with CCS. The cumulative capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/ CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Coal|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants with CCS. The cumulative capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/ CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Coal|w/ CCS|2,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants with CCS. The cumulative capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/ CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants without CCS. The cumulative capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/o CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Coal|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants without CCS. The cumulative capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/o CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Coal|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants without CCS. The cumulative capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/o CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Gas,GW,Cumulative installed capacity (since 2005)of gas to liquids plants. +Cumulative Capacity|Liquids|Gas|w/ CCS,GW,"Cumulative installed capacity (since 2005) of gas to liquids plants with CCS. The cumulative capacity of CCS gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Gas|w/ CCS|1, ..., Cumulative Capacity|Liquids|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Gas|w/o CCS,GW,"Cumulative installed capacity (since 2005) of gas to liquids plants without CCS. The cumulative capacity of gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Gas|w/o CCS|1, ..., Cumulative Capacity|Liquids|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Oil,GW,"Cumulative installed capacity (since 2005) of oil refining plants. The cumulative capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Oil|1, ..., Cumulative Capacity|Liquids|Oil|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Oil|w/ CCS,GW,"Cumulative installed capacity (since 2005)of oil refining plants with CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Oil|w/o CCS,GW,"Cumulative installed capacity (since 2005)of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Oil|w/o CCS|1,GW,"Cumulative installed capacity (since 2005)of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Oil|w/o CCS|2,GW,"Cumulative installed capacity (since 2005)of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " +Cumulative Capacity|Liquids|Other,GW,Cumulative installed capacity (since 2005)of other liquid production plants. +Debt Service,%,Debt service as a percentage of exports of goods and services +Diagnostics|MAGICC6|Carbon Flow|Air to Land|Gross,GtC/yr, +Diagnostics|MAGICC6|Carbon Flow|Air to Ocean,GtC/yr, +Diagnostics|MAGICC6|Carbon Flow|CH4 to CO2,GtC/yr, +Diagnostics|MAGICC6|Carbon Flow|Fossil,GtC/yr, +Diagnostics|MAGICC6|Carbon Flow|Land Use,GtC/yr, +Diagnostics|MAGICC6|Carbon Flow|Perma Frost,GtC/yr, +Diagnostics|MAGICC6|Carbon Pool|Atmosphere,GtC, +Diagnostics|MAGICC6|Concentration|CH4,ppb, +Diagnostics|MAGICC6|Concentration|CO2,ppm, +Diagnostics|MAGICC6|Concentration|N2O,ppb, +Diagnostics|MAGICC6|Forcing,W/m2, +Diagnostics|MAGICC6|Forcing|Aerosol,W/m2, +Diagnostics|MAGICC6|Forcing|Aerosol|BC and OC,W/m2, +Diagnostics|MAGICC6|Forcing|Aerosol|Cloud Indirect,W/m2, +Diagnostics|MAGICC6|Forcing|Aerosol|Nitrate Direct,W/m2, +Diagnostics|MAGICC6|Forcing|Aerosol|Other,W/m2, +Diagnostics|MAGICC6|Forcing|Aerosol|Sulfate Direct,W/m2, +Diagnostics|MAGICC6|Forcing|Albedo Change and Mineral Dust,W/m2, +Diagnostics|MAGICC6|Forcing|CH4,W/m2, +Diagnostics|MAGICC6|Forcing|CO2,W/m2, +Diagnostics|MAGICC6|Forcing|F-Gases,W/m2, +Diagnostics|MAGICC6|Forcing|Kyoto Gases,W/m2, +Diagnostics|MAGICC6|Forcing|Montreal Gases,W/m2, +Diagnostics|MAGICC6|Forcing|N2O,W/m2, +Diagnostics|MAGICC6|Forcing|Other,W/m2, +Diagnostics|MAGICC6|Forcing|Tropospheric Ozone,W/m2, +Diagnostics|MAGICC6|Harmonized Input|Emissions|BC,Mt BC/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|C2F6,kt C2F6/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|C6F14,kt C6F14/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|CH4,Mt CH4/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|CO,Mt CO/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|CO2|Fossil Fuels and Industry,Mt CO2/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|CO2|AFOLU,Mt CO2/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC125,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC134a,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC143a,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC227ea,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC23,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC245ca,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC32,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC43-10,kt HFC23/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|N2O,kt N2O/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|NH3,Mt NH3/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|NOx,Mt NO2/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|OC,Mt OC/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|PFC,kt CF4/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|SF6,kt SF6/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|Sulfur,Mt SO2/yr, +Diagnostics|MAGICC6|Harmonized Input|Emissions|VOC,Mt VOC/yr, +Diagnostics|MAGICC6|Temperature|Global Mean,°C, +Direct Risk|Asset Loss,billion US$2010/yr OR local currency/yr,"The risk of asset losses expressed in terms of their probability of +occurrence and destruction in monetary terms is modelled as a function of hazard +(frequency and intensity), the elements exposed to those hazards and their physical +sensitivity." +Efficiency|Electricity|Biomass|w/ CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS biomass power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Biomass|w/o CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented biomass power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Biomass|w/o CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented biomass power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Coal|w/ CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Coal|w/ CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Coal|w/o CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Coal|w/o CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Coal|w/o CCS|3,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Coal|w/o CCS|4,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Gas|w/ CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Gas|w/o CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Gas|w/o CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Gas|w/o CCS|3,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Geothermal,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented geothermal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Geothermal|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Hydro,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented hydropower technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Hydro|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented hydropower technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Hydro|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented hydropower technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Nuclear,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented nuclear power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Nuclear|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented nuclear power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Nuclear|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented nuclear power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Ocean,%,Conversion efficiency (electricity produced per unit of primary energy input) of operating ocean power plants +Efficiency|Electricity|Oil|w/ CCS,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Conversion efficiency (electricity produced per unit of primary energy input)s are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Conversion efficiency (electricity produced per unit of primary energy input)s as documented in the comments sheet). " +Efficiency|Electricity|Oil|w/o CCS,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants +Efficiency|Electricity|Oil|w/o CCS|1,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants +Efficiency|Electricity|Oil|w/o CCS|2,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants +Efficiency|Electricity|Oil|w/o CCS|3,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants +Efficiency|Electricity|Solar|CSP|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CSP technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Solar|CSP|2,%, +Efficiency|Electricity|Solar|PV,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented PV technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Wind|Offshore,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented wind power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Electricity|Wind|Onshore,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented wind power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Gases|Biomass|w/ CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented CCS biomass to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Gases|Biomass|w/o CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented biomass to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Gases|Coal|w/ CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented CCS coal to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/ CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Gases|Coal|w/o CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented coal to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/o CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Hydrogen|Biomass|w/ CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented CCS biomass to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Hydrogen|Biomass|w/o CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented biomass to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Hydrogen|Coal|w/ CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented CCS coal to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/ CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Hydrogen|Coal|w/o CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented coal to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/o CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Hydrogen|Electricity,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented hydrogen-by-electrolysis technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Electricity|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Hydrogen|Gas|w/ CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented CCS gas to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/ CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Hydrogen|Gas|w/o CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented gas to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/o CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Biomass|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Biomass|w/ CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Biomass|w/ CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Biomass|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Biomass|w/o CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Biomass|w/o CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Coal|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Coal|w/ CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Coal|w/ CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Coal|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Coal|w/o CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Coal|w/o CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Gas|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS GTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Gas|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented GTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Oil|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Oil|w/ CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Oil|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Oil|w/o CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Efficiency|Liquids|Oil|w/o CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Emissions|BC,Mt BC/yr, +Emissions|BC|AFOLU,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture and Biomass Burning,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture|Livestock,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture|Livestock|Manure Management,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture|Managed Soils,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture|Other,Mt BC/yr, +Emissions|BC|AFOLU|Agriculture|Rice,Mt BC/yr, +Emissions|BC|AFOLU|Biomass Burning,Mt BC/yr, +Emissions|BC|AFOLU|Land,Mt BC/yr, +Emissions|BC|AFOLU|Land|Cropland,Mt BC/yr, +Emissions|BC|AFOLU|Land|Forest,Mt BC/yr, +Emissions|BC|AFOLU|Land|Forest Burning,Mt BC/yr, +Emissions|BC|AFOLU|Land|Grassland Burning,Mt BC/yr, +Emissions|BC|AFOLU|Land|Grassland Pastures,Mt BC/yr, +Emissions|BC|AFOLU|Land|Other,Mt BC/yr, +Emissions|BC|AFOLU|Land|Other Land,Mt BC/yr, +Emissions|BC|AFOLU|Land|Settlements,Mt BC/yr, +Emissions|BC|AFOLU|Land|Wetlands,Mt BC/yr, +Emissions|BC|Energy,Mt BC/yr, +Emissions|BC|Energy|Combustion,Mt BC/yr, +Emissions|BC|Energy|Demand,Mt BC/yr, +Emissions|BC|Energy|Demand|AFOFI,Mt BC/yr, +Emissions|BC|Energy|Demand|Commercial,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Chemicals,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Construction,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Food and Tobacco,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Iron and Steel,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Machinery,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Mining,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Non-Ferrous Metals,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Non-Metallic Minerals,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Other,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Pulp and Paper,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Textile,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Transport Equipment,Mt BC/yr, +Emissions|BC|Energy|Demand|Industry|Wood Products,Mt BC/yr, +Emissions|BC|Energy|Demand|Other Sector,Mt BC/yr, +Emissions|BC|Energy|Demand|Residential,Mt BC/yr, +Emissions|BC|Energy|Demand|Residential and Commercial,Mt BC/yr, +Emissions|BC|Energy|Demand|Residential and Commercial and AFOFI,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Aviation,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Aviation|Domestic,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Aviation|International,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Other Sector,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Rail,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Road,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Shipping,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Shipping|Domestic,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Shipping|International,Mt BC/yr, +Emissions|BC|Energy|Demand|Transportation|Shipping|International|Loading,Mt BC/yr, +Emissions|BC|Energy|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Other,Mt BC/yr, +Emissions|BC|Energy|Supply,Mt BC/yr, +Emissions|BC|Energy|Supply|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Electricity,Mt BC/yr, +Emissions|BC|Energy|Supply|Electricity and Heat,Mt BC/yr, +Emissions|BC|Energy|Supply|Fuel Production and Transformation,Mt BC/yr, +Emissions|BC|Energy|Supply|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases and Liquids Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Biomass,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Biomass|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Biomass|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Coal,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Coal|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Coal|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Extraction,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Extraction|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Extraction|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Hydrogen,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Hydrogen|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Hydrogen|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Natural Gas,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Natural Gas|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Natural Gas|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Transportation,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Transportation|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Gases|Transportation|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Heat,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Biomass,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Biomass|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Biomass|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Coal,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Coal|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Coal|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Extraction,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Extraction|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Extraction|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Natural Gas,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Natural Gas|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Oil,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Oil|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Oil|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Transportation,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Transportation|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Liquids|Transportation|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Other,Mt BC/yr, +Emissions|BC|Energy|Supply|Other|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Other|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids and Other Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Biomass,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Biomass|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Biomass|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Coal,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Coal|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Coal|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Extraction,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Extraction|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Extraction|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Fugitive,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Transportation,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Transportation|Combustion,Mt BC/yr, +Emissions|BC|Energy|Supply|Solids|Transportation|Fugitive,Mt BC/yr, +Emissions|BC|Fossil Fuel Fires,Mt BC/yr, +Emissions|BC|Fossil Fuels and Industry,Mt BC/yr, +Emissions|BC|Industrial Processes,Mt BC/yr, +Emissions|BC|Industrial Processes|Chemicals,Mt BC/yr, +Emissions|BC|Industrial Processes|Electronics,Mt BC/yr, +Emissions|BC|Industrial Processes|Iron and Steel,Mt BC/yr, +Emissions|BC|Industrial Processes|Metals and Minerals,Mt BC/yr, +Emissions|BC|Industrial Processes|Metals and Minerals,Mt BC/yr, +Emissions|BC|Industrial Processes|Non-Ferrous Metals,Mt BC/yr, +Emissions|BC|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt BC/yr, +Emissions|BC|Industrial Processes|Non-Ferrous Metals|Other,Mt BC/yr, +Emissions|BC|Industrial Processes|Non-Metallic Minerals,Mt BC/yr, +Emissions|BC|Industrial Processes|Non-Metallic Minerals|Cement,Mt BC/yr, +Emissions|BC|Industrial Processes|Non-Metallic Minerals|Lime,Mt BC/yr, +Emissions|BC|Industrial Processes|Non-Metallic Minerals|Other,Mt BC/yr, +Emissions|BC|Industrial Processes|Other Sector,Mt BC/yr, +Emissions|BC|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt BC/yr, +Emissions|BC|Natural,Mt BC/yr, +Emissions|BC|Natural|Other,Mt BC/yr, +Emissions|BC|Natural|Volcanoes,Mt BC/yr, +Emissions|BC|Other,Mt BC/yr, +Emissions|BC|Product Use,Mt BC/yr, +Emissions|BC|Product Use|Non-Energy Use,Mt BC/yr, +Emissions|BC|Product Use|ODS Substitutes,Mt BC/yr, +Emissions|BC|Product Use|Solvents,Mt BC/yr, +Emissions|BC|Product Use|Solvents|Chemical Products,Mt BC/yr, +Emissions|BC|Product Use|Solvents|Degreasing,Mt BC/yr, +Emissions|BC|Product Use|Solvents|Other,Mt BC/yr, +Emissions|BC|Product Use|Solvents|Paint,Mt BC/yr, +Emissions|BC|Waste,Mt BC/yr, +Emissions|BC|Waste|Biological Treatment,Mt BC/yr, +Emissions|BC|Waste|Incineration,Mt BC/yr, +Emissions|BC|Waste|Other,Mt BC/yr, +Emissions|BC|Waste|Solid Waste Disposal,Mt BC/yr, +Emissions|BC|Waste|Wastewater Treatment,Mt BC/yr, +Emissions|C2F6,kt C2F6/yr,total emissions of C2F6 +Emissions|C6F14,kt C6F14/yr,total emissions of CF6F14 +Emissions|CF4,kt CF4/yr,total emissions of CF4 +Emissions|CH4,Mt CH4/yr, +Emissions|CH4|AFOLU,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture and Biomass Burning,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture|Livestock,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture|Managed Soils,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture|Other,Mt CH4/yr, +Emissions|CH4|AFOLU|Agriculture|Rice,Mt CH4/yr, +Emissions|CH4|AFOLU|Biomass Burning,Mt CH4/yr, +Emissions|CH4|AFOLU|Land,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Cropland,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Forest,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Forest Burning,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Grassland Burning,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Grassland Pastures,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Other,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Other Land,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Settlements,Mt CH4/yr, +Emissions|CH4|AFOLU|Land|Wetlands,Mt CH4/yr, +Emissions|CH4|Energy,Mt CH4/yr, +Emissions|CH4|Energy|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Demand,Mt CH4/yr, +Emissions|CH4|Energy|Demand|AFOFI,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Commercial,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Chemicals,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Construction,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Food and Tobacco,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Iron and Steel,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Machinery,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Mining,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Non-Ferrous Metals,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Non-Metallic Minerals,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Other,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Pulp and Paper,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Textile,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Transport Equipment,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Industry|Wood Products,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Other Sector,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Residential,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Residential and Commercial,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Residential and Commercial and AFOFI,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Aviation,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Aviation|Domestic,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Aviation|International,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Other Sector,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Rail,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Road,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Shipping,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Shipping|Domestic,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Shipping|International,Mt CH4/yr, +Emissions|CH4|Energy|Demand|Transportation|Shipping|International|Loading,Mt CH4/yr, +Emissions|CH4|Energy|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Other,Mt CH4/yr, +Emissions|CH4|Energy|Supply,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Electricity,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Electricity and Heat,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Fuel Production and Transformation,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases and Liquids Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Biomass,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Biomass|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Coal,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Coal|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Extraction,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Extraction|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Hydrogen,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Hydrogen|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Natural Gas,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Natural Gas|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Transportation,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Transportation|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Heat,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Biomass,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Biomass|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Coal,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Coal|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Extraction,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Extraction|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Natural Gas,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Oil,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Oil|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Oil|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Transportation,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Transportation|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Other,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Other|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Other|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids and Other Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Biomass,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Biomass|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Coal,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Coal|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Extraction,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Extraction|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Fugitive,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Transportation,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Transportation|Combustion,Mt CH4/yr, +Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive,Mt CH4/yr, +Emissions|CH4|Fossil Fuel Fires,Mt CH4/yr, +Emissions|CH4|Fossil Fuels and Industry,Mt CH4/yr, +Emissions|CH4|Industrial Processes,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Chemicals,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Electronics,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Iron and Steel,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Metals and Minerals,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Metals and Minerals,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Non-Ferrous Metals,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Non-Ferrous Metals|Other,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Non-Metallic Minerals,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Non-Metallic Minerals|Cement,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Non-Metallic Minerals|Lime,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Non-Metallic Minerals|Other,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Other Sector,Mt CH4/yr, +Emissions|CH4|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt CH4/yr, +Emissions|CH4|Natural,Mt CH4/yr, +Emissions|CH4|Natural|Other,Mt CH4/yr, +Emissions|CH4|Natural|Volcanoes,Mt CH4/yr, +Emissions|CH4|Other,Mt CH4/yr, +Emissions|CH4|Product Use,Mt CH4/yr, +Emissions|CH4|Product Use|Non-Energy Use,Mt CH4/yr, +Emissions|CH4|Product Use|ODS Substitutes,Mt CH4/yr, +Emissions|CH4|Product Use|Solvents,Mt CH4/yr, +Emissions|CH4|Product Use|Solvents|Chemical Products,Mt CH4/yr, +Emissions|CH4|Product Use|Solvents|Degreasing,Mt CH4/yr, +Emissions|CH4|Product Use|Solvents|Other,Mt CH4/yr, +Emissions|CH4|Product Use|Solvents|Paint,Mt CH4/yr, +Emissions|CH4|Waste,Mt CH4/yr, +Emissions|CH4|Waste|Biological Treatment,Mt CH4/yr, +Emissions|CH4|Waste|Incineration,Mt CH4/yr, +Emissions|CH4|Waste|Other,Mt CH4/yr, +Emissions|CH4|Waste|Solid Waste Disposal,Mt CH4/yr, +Emissions|CH4|Waste|Wastewater Treatment,Mt CH4/yr, +Emissions|CO,Mt CO/yr, +Emissions|CO|AFOLU,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture and Biomass Burning,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture|Livestock,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture|Livestock|Manure Management,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture|Managed Soils,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture|Other,Mt CO/yr, +Emissions|CO|AFOLU|Agriculture|Rice,Mt CO/yr, +Emissions|CO|AFOLU|Biomass Burning,Mt CO/yr, +Emissions|CO|AFOLU|Land,Mt CO/yr, +Emissions|CO|AFOLU|Land|Cropland,Mt CO/yr, +Emissions|CO|AFOLU|Land|Forest,Mt CO/yr, +Emissions|CO|AFOLU|Land|Forest Burning,Mt CO/yr, +Emissions|CO|AFOLU|Land|Grassland Burning,Mt CO/yr, +Emissions|CO|AFOLU|Land|Grassland Pastures,Mt CO/yr, +Emissions|CO|AFOLU|Land|Other,Mt CO/yr, +Emissions|CO|AFOLU|Land|Other Land,Mt CO/yr, +Emissions|CO|AFOLU|Land|Settlements,Mt CO/yr, +Emissions|CO|AFOLU|Land|Wetlands,Mt CO/yr, +Emissions|CO|Energy,Mt CO/yr, +Emissions|CO|Energy|Combustion,Mt CO/yr, +Emissions|CO|Energy|Demand,Mt CO/yr, +Emissions|CO|Energy|Demand|AFOFI,Mt CO/yr, +Emissions|CO|Energy|Demand|Commercial,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Chemicals,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Construction,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Food and Tobacco,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Iron and Steel,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Machinery,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Mining,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Non-Ferrous Metals,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Non-Metallic Minerals,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Other,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Pulp and Paper,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Textile,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Transport Equipment,Mt CO/yr, +Emissions|CO|Energy|Demand|Industry|Wood Products,Mt CO/yr, +Emissions|CO|Energy|Demand|Other Sector,Mt CO/yr, +Emissions|CO|Energy|Demand|Residential,Mt CO/yr, +Emissions|CO|Energy|Demand|Residential and Commercial,Mt CO/yr, +Emissions|CO|Energy|Demand|Residential and Commercial and AFOFI,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Aviation,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Aviation|Domestic,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Aviation|International,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Other Sector,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Rail,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Road,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Shipping,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Shipping|Domestic,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Shipping|International,Mt CO/yr, +Emissions|CO|Energy|Demand|Transportation|Shipping|International|Loading,Mt CO/yr, +Emissions|CO|Energy|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Other,Mt CO/yr, +Emissions|CO|Energy|Supply,Mt CO/yr, +Emissions|CO|Energy|Supply|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Electricity,Mt CO/yr, +Emissions|CO|Energy|Supply|Electricity and Heat,Mt CO/yr, +Emissions|CO|Energy|Supply|Fuel Production and Transformation,Mt CO/yr, +Emissions|CO|Energy|Supply|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases and Liquids Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Biomass,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Biomass|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Biomass|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Coal,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Coal|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Coal|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Extraction,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Extraction|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Extraction|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Hydrogen,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Hydrogen|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Hydrogen|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Natural Gas,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Natural Gas|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Natural Gas|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Transportation,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Transportation|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Gases|Transportation|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Heat,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Biomass,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Biomass|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Biomass|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Coal,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Coal|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Coal|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Extraction,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Extraction|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Extraction|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Natural Gas,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Natural Gas|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Oil,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Oil|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Oil|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Transportation,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Transportation|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Liquids|Transportation|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Other,Mt CO/yr, +Emissions|CO|Energy|Supply|Other|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Other|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids and Other Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Biomass,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Biomass|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Biomass|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Coal,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Coal|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Coal|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Extraction,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Extraction|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Extraction|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Fugitive,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Transportation,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Transportation|Combustion,Mt CO/yr, +Emissions|CO|Energy|Supply|Solids|Transportation|Fugitive,Mt CO/yr, +Emissions|CO|Fossil Fuel Fires,Mt CO/yr, +Emissions|CO|Fossil Fuels and Industry,Mt CO/yr, +Emissions|CO|Industrial Processes,Mt CO/yr, +Emissions|CO|Industrial Processes|Chemicals,Mt CO/yr, +Emissions|CO|Industrial Processes|Electronics,Mt CO/yr, +Emissions|CO|Industrial Processes|Iron and Steel,Mt CO/yr, +Emissions|CO|Industrial Processes|Metals and Minerals,Mt CO/yr, +Emissions|CO|Industrial Processes|Metals and Minerals,Mt CO/yr, +Emissions|CO|Industrial Processes|Non-Ferrous Metals,Mt CO/yr, +Emissions|CO|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt CO/yr, +Emissions|CO|Industrial Processes|Non-Ferrous Metals|Other,Mt CO/yr, +Emissions|CO|Industrial Processes|Non-Metallic Minerals,Mt CO/yr, +Emissions|CO|Industrial Processes|Non-Metallic Minerals|Cement,Mt CO/yr, +Emissions|CO|Industrial Processes|Non-Metallic Minerals|Lime,Mt CO/yr, +Emissions|CO|Industrial Processes|Non-Metallic Minerals|Other,Mt CO/yr, +Emissions|CO|Industrial Processes|Other Sector,Mt CO/yr, +Emissions|CO|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt CO/yr, +Emissions|CO|Natural,Mt CO/yr, +Emissions|CO|Natural|Other,Mt CO/yr, +Emissions|CO|Natural|Volcanoes,Mt CO/yr, +Emissions|CO|Other,Mt CO/yr, +Emissions|CO|Product Use,Mt CO/yr, +Emissions|CO|Product Use|Non-Energy Use,Mt CO/yr, +Emissions|CO|Product Use|ODS Substitutes,Mt CO/yr, +Emissions|CO|Product Use|Solvents,Mt CO/yr, +Emissions|CO|Product Use|Solvents|Chemical Products,Mt CO/yr, +Emissions|CO|Product Use|Solvents|Degreasing,Mt CO/yr, +Emissions|CO|Product Use|Solvents|Other,Mt CO/yr, +Emissions|CO|Product Use|Solvents|Paint,Mt CO/yr, +Emissions|CO|Waste,Mt CO/yr, +Emissions|CO|Waste|Biological Treatment,Mt CO/yr, +Emissions|CO|Waste|Incineration,Mt CO/yr, +Emissions|CO|Waste|Other,Mt CO/yr, +Emissions|CO|Waste|Solid Waste Disposal,Mt CO/yr, +Emissions|CO|Waste|Wastewater Treatment,Mt CO/yr, +Emissions|CO2,Mt CO2/yr, +Emissions|CO2|Difference|Statistical,Mt CO2/yr, +Emissions|CO2|Difference|Stock|Coal,Mt CO2/yr, +Emissions|CO2|Difference|Stock|Methanol,Mt CO2/yr, +Emissions|CO2|Difference|Stock|Fueloil,Mt CO2/yr, +Emissions|CO2|Difference|Stock|Lightoil,Mt CO2/yr, +Emissions|CO2|Difference|Stock|Crudeoil,Mt CO2/yr, +Emissions|CO2|Difference|Stock|LNG,Mt CO2/yr, +Emissions|CO2|Difference|Stock|Natural Gas,Mt CO2/yr, +Emissions|CO2|Difference|Stock|Activity|Coal,GWyr/yr, +Emissions|CO2|Difference|Stock|Activity|Methanol,GWyr/yr, +Emissions|CO2|Difference|Stock|Activity|Fueloil,GWyr/yr, +Emissions|CO2|Difference|Stock|Activity|Lightoil,GWyr/yr, +Emissions|CO2|Difference|Stock|Activity|Crudeoil,GWyr/yr, +Emissions|CO2|Difference|Stock|Activity|LNG,GWyr/yr, +Emissions|CO2|Difference|Stock|Activity|Natural Gas,GWyr/yr, +Emissions|CO2|AFOLU,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture and Biomass Burning,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture|Livestock,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture|Livestock|Manure Management,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture|Managed Soils,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture|Other,Mt CO2/yr, +Emissions|CO2|AFOLU|Agriculture|Rice,Mt CO2/yr, +Emissions|CO2|AFOLU|Biomass Burning,Mt CO2/yr, +Emissions|CO2|AFOLU|Land,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Cropland,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Forest,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Forest Burning,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Grassland Burning,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Grassland Pastures,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Other,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Other Land,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Settlements,Mt CO2/yr, +Emissions|CO2|AFOLU|Land|Wetlands,Mt CO2/yr, +Emissions|CO2|Carbon Capture and Storage,Mt CO2/yr, +Emissions|CO2|Carbon Capture and Storage|Biomass,Mt CO2/yr, +Emissions|CO2|Energy,Mt CO2/yr, +Emissions|CO2|Energy and Industrial Processes,Mt CO2/yr, +Emissions|CO2|Energy|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Demand,Mt CO2/yr, +Emissions|CO2|Energy|Demand|AFOFI,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Commercial,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Chemicals,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Construction,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Food and Tobacco,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Iron and Steel,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Machinery,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Mining,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Non-Ferrous Metals,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Non-Metallic Minerals,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Other,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Pulp and Paper,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Textile,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Transport Equipment,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Industry|Wood Products,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Other Sector,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Residential,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Residential and Commercial,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Residential and Commercial and AFOFI,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Aviation,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Aviation|Domestic,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Aviation|International,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Other Sector,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Rail,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Road,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Shipping,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Shipping|Domestic,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Shipping|International,Mt CO2/yr, +Emissions|CO2|Energy|Demand|Transportation|Shipping|International|Loading,Mt CO2/yr, +Emissions|CO2|Energy|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Other,Mt CO2/yr, +Emissions|CO2|Energy|Supply,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Electricity,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Electricity and Heat,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Fuel Production and Transformation,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases and Liquids Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Biomass,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Biomass|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Biomass|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Coal,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Coal|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Coal|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Extraction,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Extraction|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Extraction|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Hydrogen,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Hydrogen|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Hydrogen|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Natural Gas,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Natural Gas|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Natural Gas|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Transportation,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Transportation|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Gases|Transportation|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Heat,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Biomass,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Biomass|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Biomass|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Coal,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Coal|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Coal|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Extraction,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Extraction|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Extraction|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Natural Gas,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Natural Gas|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Oil,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Oil|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Oil|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Transportation,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Transportation|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Liquids|Transportation|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Other,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Other|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Other|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids and Other Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Biomass,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Biomass|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Biomass|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Coal,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Coal|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Coal|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Extraction,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Extraction|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Extraction|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Fugitive,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Transportation,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Transportation|Combustion,Mt CO2/yr, +Emissions|CO2|Energy|Supply|Solids|Transportation|Fugitive,Mt CO2/yr, +Emissions|CO2|Fossil Fuel Fires,Mt CO2/yr, +Emissions|CO2|Fossil Fuels and Industry,Mt CO2/yr, +Emissions|CO2|Industrial Processes,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Chemicals,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Electronics,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Iron and Steel,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Metals and Minerals,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Metals and Minerals,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Non-Ferrous Metals,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Non-Ferrous Metals|Other,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Non-Metallic Minerals,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Non-Metallic Minerals|Cement,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Non-Metallic Minerals|Lime,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Non-Metallic Minerals|Other,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Other Sector,Mt CO2/yr, +Emissions|CO2|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt CO2/yr, +Emissions|CO2|Natural,Mt CO2/yr, +Emissions|CO2|Natural|Other,Mt CO2/yr, +Emissions|CO2|Natural|Volcanoes,Mt CO2/yr, +Emissions|CO2|Other,Mt CO2/yr, +Emissions|CO2|Product Use,Mt CO2/yr, +Emissions|CO2|Product Use|Non-Energy Use,Mt CO2/yr, +Emissions|CO2|Product Use|ODS Substitutes,Mt CO2/yr, +Emissions|CO2|Product Use|Solvents,Mt CO2/yr, +Emissions|CO2|Product Use|Solvents|Chemical Products,Mt CO2/yr, +Emissions|CO2|Product Use|Solvents|Degreasing,Mt CO2/yr, +Emissions|CO2|Product Use|Solvents|Other,Mt CO2/yr, +Emissions|CO2|Product Use|Solvents|Paint,Mt CO2/yr, +Emissions|CO2|Waste,Mt CO2/yr, +Emissions|CO2|Waste|Biological Treatment,Mt CO2/yr, +Emissions|CO2|Waste|Incineration,Mt CO2/yr, +Emissions|CO2|Waste|Other,Mt CO2/yr, +Emissions|CO2|Waste|Solid Waste Disposal,Mt CO2/yr, +Emissions|CO2|Waste|Wastewater Treatment,Mt CO2/yr, +Emissions|F-Gases,Mt CO2-equiv/yr,"total F-gas emissions, including sulfur hexafluoride (SF6), hydrofluorocarbons (HFCs), perfluorocarbons (PFCs) (preferably use 100-year GWPs from AR4 for aggregation of different F-gases; in case other GWPs have been used, please document this on the 'comments' tab)" +Emissions|GHG|Allowance Allocation,Mt CO2-equiv/yr, +Emissions|GHG|International Trading System,Mt CO2-equiv/yr, +Emissions|HFC,kt HFC134a-equiv/yr,"total emissions of hydrofluorocarbons (HFCs), provided as aggregate HFC134a-equivalents" +Emissions|HFC|HFC125,kt HFC125/yr,total emissions of HFC125 +Emissions|HFC|HFC134a,kt HFC134a/yr,total emissions of HFC134a +Emissions|HFC|HFC143a,kt HFC143a/yr,total emissions of HFC143a +Emissions|HFC|HFC227ea,kt HFC227ea/yr,total emissions of HFC227ea +Emissions|HFC|HFC23,kt HFC23/yr,total emissions of HFC23 +Emissions|HFC|HFC245fa,kt HFC245fa/yr,total emissions of HFC245fa +Emissions|HFC|HFC32,kt HFC32/yr,total emissions of HFC32 +Emissions|HFC|HFC43-10,kt HFC43-10/yr,total emissions of HFC343-10 +Emissions|Kyoto Gases,Mt CO2-equiv/yr,"total Kyoto GHG emissions, including CO2, CH4, N2O and F-gases (preferably use 100-year GWPs from AR4 for aggregation of different gases; in case other GWPs have been used, please document this on the 'comments' tab)" +Emissions|N2O,kt N2O/yr, +Emissions|N2O|AFOLU,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture and Biomass Burning,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture|Livestock,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture|Livestock|Enteric Fermentation,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture|Livestock|Manure Management,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture|Managed Soils,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture|Other,kt N2O/yr, +Emissions|N2O|AFOLU|Agriculture|Rice,kt N2O/yr, +Emissions|N2O|AFOLU|Biomass Burning,kt N2O/yr, +Emissions|N2O|AFOLU|Land,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Cropland,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Forest,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Forest Burning,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Grassland Burning,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Grassland Pastures,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Other,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Other Land,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Settlements,kt N2O/yr, +Emissions|N2O|AFOLU|Land|Wetlands,kt N2O/yr, +Emissions|N2O|Energy,kt N2O/yr, +Emissions|N2O|Energy|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Demand,kt N2O/yr, +Emissions|N2O|Energy|Demand|AFOFI,kt N2O/yr, +Emissions|N2O|Energy|Demand|Commercial,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Chemicals,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Construction,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Food and Tobacco,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Iron and Steel,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Machinery,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Mining,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Non-Ferrous Metals,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Non-Metallic Minerals,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Other,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Pulp and Paper,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Textile,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Transport Equipment,kt N2O/yr, +Emissions|N2O|Energy|Demand|Industry|Wood Products,kt N2O/yr, +Emissions|N2O|Energy|Demand|Other Sector,kt N2O/yr, +Emissions|N2O|Energy|Demand|Residential,kt N2O/yr, +Emissions|N2O|Energy|Demand|Residential and Commercial,kt N2O/yr, +Emissions|N2O|Energy|Demand|Residential and Commercial and AFOFI,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Aviation,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Aviation|Domestic,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Aviation|International,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Other Sector,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Rail,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Rail and Domestic Shipping,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Road,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Road Rail and Domestic Shipping,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Shipping,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Shipping|Domestic,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Shipping|International,kt N2O/yr, +Emissions|N2O|Energy|Demand|Transportation|Shipping|International|Loading,kt N2O/yr, +Emissions|N2O|Energy|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Other,kt N2O/yr, +Emissions|N2O|Energy|Supply,kt N2O/yr, +Emissions|N2O|Energy|Supply|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Electricity,kt N2O/yr, +Emissions|N2O|Energy|Supply|Electricity and Heat,kt N2O/yr, +Emissions|N2O|Energy|Supply|Fuel Production and Transformation,kt N2O/yr, +Emissions|N2O|Energy|Supply|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases and Liquids Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Biomass,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Biomass|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Biomass|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Coal,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Coal|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Coal|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Extraction,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Extraction|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Extraction|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Hydrogen,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Hydrogen|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Hydrogen|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Natural Gas,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Natural Gas|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Natural Gas|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Transportation,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Transportation|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Gases|Transportation|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Heat,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Biomass,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Biomass|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Biomass|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Coal,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Coal|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Coal|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Extraction,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Extraction|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Extraction|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Natural Gas,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Natural Gas|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Natural Gas|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Oil,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Oil|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Oil|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Transportation,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Transportation|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Liquids|Transportation|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Other,kt N2O/yr, +Emissions|N2O|Energy|Supply|Other|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Other|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids and Other Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Biomass,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Biomass|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Biomass|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Coal,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Coal|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Coal|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Extraction,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Extraction|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Extraction|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Fugitive,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Transportation,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Transportation|Combustion,kt N2O/yr, +Emissions|N2O|Energy|Supply|Solids|Transportation|Fugitive,kt N2O/yr, +Emissions|N2O|Fossil Fuel Fires,kt N2O/yr, +Emissions|N2O|Fossil Fuels and Industry,kt N2O/yr, +Emissions|N2O|Industrial Processes,kt N2O/yr, +Emissions|N2O|Industrial Processes|Chemicals,kt N2O/yr, +Emissions|N2O|Industrial Processes|Electronics,kt N2O/yr, +Emissions|N2O|Industrial Processes|Iron and Steel,kt N2O/yr, +Emissions|N2O|Industrial Processes|Metals and Minerals,kt N2O/yr, +Emissions|N2O|Industrial Processes|Metals and Minerals,kt N2O/yr, +Emissions|N2O|Industrial Processes|Non-Ferrous Metals,kt N2O/yr, +Emissions|N2O|Industrial Processes|Non-Ferrous Metals|Aluminun,kt N2O/yr, +Emissions|N2O|Industrial Processes|Non-Ferrous Metals|Other,kt N2O/yr, +Emissions|N2O|Industrial Processes|Non-Metallic Minerals,kt N2O/yr, +Emissions|N2O|Industrial Processes|Non-Metallic Minerals|Cement,kt N2O/yr, +Emissions|N2O|Industrial Processes|Non-Metallic Minerals|Lime,kt N2O/yr, +Emissions|N2O|Industrial Processes|Non-Metallic Minerals|Other,kt N2O/yr, +Emissions|N2O|Industrial Processes|Other Sector,kt N2O/yr, +Emissions|N2O|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,kt N2O/yr, +Emissions|N2O|Natural,kt N2O/yr, +Emissions|N2O|Natural|Other,kt N2O/yr, +Emissions|N2O|Natural|Volcanoes,kt N2O/yr, +Emissions|N2O|Other,kt N2O/yr, +Emissions|N2O|Product Use,kt N2O/yr, +Emissions|N2O|Product Use|Non-Energy Use,kt N2O/yr, +Emissions|N2O|Product Use|ODS Substitutes,kt N2O/yr, +Emissions|N2O|Product Use|Solvents,kt N2O/yr, +Emissions|N2O|Product Use|Solvents|Chemical Products,kt N2O/yr, +Emissions|N2O|Product Use|Solvents|Degreasing,kt N2O/yr, +Emissions|N2O|Product Use|Solvents|Other,kt N2O/yr, +Emissions|N2O|Product Use|Solvents|Paint,kt N2O/yr, +Emissions|N2O|Waste,kt N2O/yr, +Emissions|N2O|Waste|Biological Treatment,kt N2O/yr, +Emissions|N2O|Waste|Incineration,kt N2O/yr, +Emissions|N2O|Waste|Other,kt N2O/yr, +Emissions|N2O|Waste|Solid Waste Disposal,kt N2O/yr, +Emissions|N2O|Waste|Wastewater Treatment,kt N2O/yr, +Emissions|NH3,Mt NH3/yr, +Emissions|NH3|AFOLU,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture and Biomass Burning,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture|Livestock,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture|Livestock|Manure Management,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture|Managed Soils,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture|Other,Mt NH3/yr, +Emissions|NH3|AFOLU|Agriculture|Rice,Mt NH3/yr, +Emissions|NH3|AFOLU|Biomass Burning,Mt NH3/yr, +Emissions|NH3|AFOLU|Land,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Cropland,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Forest,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Forest Burning,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Grassland Burning,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Grassland Pastures,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Other,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Other Land,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Settlements,Mt NH3/yr, +Emissions|NH3|AFOLU|Land|Wetlands,Mt NH3/yr, +Emissions|NH3|Energy,Mt NH3/yr, +Emissions|NH3|Energy|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Demand,Mt NH3/yr, +Emissions|NH3|Energy|Demand|AFOFI,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Commercial,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Chemicals,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Construction,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Food and Tobacco,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Iron and Steel,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Machinery,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Mining,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Non-Ferrous Metals,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Non-Metallic Minerals,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Other,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Pulp and Paper,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Textile,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Transport Equipment,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Industry|Wood Products,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Other Sector,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Residential,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Residential and Commercial,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Residential and Commercial and AFOFI,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Aviation,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Aviation|Domestic,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Aviation|International,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Other Sector,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Rail,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Road,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Shipping,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Shipping|Domestic,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Shipping|International,Mt NH3/yr, +Emissions|NH3|Energy|Demand|Transportation|Shipping|International|Loading,Mt NH3/yr, +Emissions|NH3|Energy|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Other,Mt NH3/yr, +Emissions|NH3|Energy|Supply,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Electricity,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Electricity and Heat,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Fuel Production and Transformation,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases and Liquids Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Biomass,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Biomass|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Biomass|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Coal,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Coal|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Coal|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Extraction,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Extraction|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Extraction|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Hydrogen,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Hydrogen|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Hydrogen|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Natural Gas,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Natural Gas|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Natural Gas|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Transportation,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Transportation|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Gases|Transportation|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Heat,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Biomass,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Biomass|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Biomass|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Coal,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Coal|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Coal|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Extraction,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Extraction|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Extraction|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Natural Gas,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Natural Gas|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Oil,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Oil|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Oil|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Transportation,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Transportation|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Liquids|Transportation|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Other,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Other|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Other|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids and Other Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Biomass,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Biomass|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Biomass|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Coal,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Coal|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Coal|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Extraction,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Extraction|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Extraction|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Fugitive,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Transportation,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Transportation|Combustion,Mt NH3/yr, +Emissions|NH3|Energy|Supply|Solids|Transportation|Fugitive,Mt NH3/yr, +Emissions|NH3|Fossil Fuel Fires,Mt NH3/yr, +Emissions|NH3|Fossil Fuels and Industry,Mt NH3/yr, +Emissions|NH3|Industrial Processes,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Chemicals,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Electronics,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Iron and Steel,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Metals and Minerals,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Metals and Minerals,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Non-Ferrous Metals,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Non-Ferrous Metals|Other,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Non-Metallic Minerals,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Non-Metallic Minerals|Cement,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Non-Metallic Minerals|Lime,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Non-Metallic Minerals|Other,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Other Sector,Mt NH3/yr, +Emissions|NH3|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt NH3/yr, +Emissions|NH3|Natural,Mt NH3/yr, +Emissions|NH3|Natural|Other,Mt NH3/yr, +Emissions|NH3|Natural|Volcanoes,Mt NH3/yr, +Emissions|NH3|Other,Mt NH3/yr, +Emissions|NH3|Product Use,Mt NH3/yr, +Emissions|NH3|Product Use|Non-Energy Use,Mt NH3/yr, +Emissions|NH3|Product Use|ODS Substitutes,Mt NH3/yr, +Emissions|NH3|Product Use|Solvents,Mt NH3/yr, +Emissions|NH3|Product Use|Solvents|Chemical Products,Mt NH3/yr, +Emissions|NH3|Product Use|Solvents|Degreasing,Mt NH3/yr, +Emissions|NH3|Product Use|Solvents|Other,Mt NH3/yr, +Emissions|NH3|Product Use|Solvents|Paint,Mt NH3/yr, +Emissions|NH3|Waste,Mt NH3/yr, +Emissions|NH3|Waste|Biological Treatment,Mt NH3/yr, +Emissions|NH3|Waste|Incineration,Mt NH3/yr, +Emissions|NH3|Waste|Other,Mt NH3/yr, +Emissions|NH3|Waste|Solid Waste Disposal,Mt NH3/yr, +Emissions|NH3|Waste|Wastewater Treatment,Mt NH3/yr, +Emissions|NOx,Mt NOx/yr, +Emissions|NOx|AFOLU,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture and Biomass Burning,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture|Livestock,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture|Livestock|Manure Management,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture|Managed Soils,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture|Other,Mt NOx/yr, +Emissions|NOx|AFOLU|Agriculture|Rice,Mt NOx/yr, +Emissions|NOx|AFOLU|Biomass Burning,Mt NOx/yr, +Emissions|NOx|AFOLU|Land,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Cropland,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Forest,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Forest Burning,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Grassland Burning,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Grassland Pastures,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Other,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Other Land,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Settlements,Mt NOx/yr, +Emissions|NOx|AFOLU|Land|Wetlands,Mt NOx/yr, +Emissions|NOx|Energy,Mt NOx/yr, +Emissions|NOx|Energy|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Demand,Mt NOx/yr, +Emissions|NOx|Energy|Demand|AFOFI,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Commercial,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Chemicals,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Construction,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Food and Tobacco,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Iron and Steel,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Machinery,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Mining,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Non-Ferrous Metals,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Non-Metallic Minerals,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Other,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Pulp and Paper,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Textile,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Transport Equipment,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Industry|Wood Products,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Other Sector,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Residential,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Residential and Commercial,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Residential and Commercial and AFOFI,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Aviation,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Aviation|Domestic,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Aviation|International,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Other Sector,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Rail,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Road,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Shipping,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Shipping|Domestic,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Shipping|International,Mt NOx/yr, +Emissions|NOx|Energy|Demand|Transportation|Shipping|International|Loading,Mt NOx/yr, +Emissions|NOx|Energy|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Other,Mt NOx/yr, +Emissions|NOx|Energy|Supply,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Electricity,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Electricity and Heat,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Fuel Production and Transformation,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases and Liquids Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Biomass,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Biomass|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Biomass|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Coal,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Coal|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Coal|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Extraction,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Extraction|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Extraction|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Hydrogen,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Hydrogen|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Hydrogen|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Natural Gas,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Natural Gas|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Natural Gas|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Transportation,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Transportation|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Gases|Transportation|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Heat,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Biomass,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Biomass|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Biomass|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Coal,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Coal|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Coal|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Extraction,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Extraction|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Extraction|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Natural Gas,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Natural Gas|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Oil,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Oil|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Oil|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Transportation,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Transportation|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Liquids|Transportation|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Other,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Other|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Other|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids and Other Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Biomass,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Biomass|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Biomass|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Coal,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Coal|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Coal|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Extraction,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Extraction|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Extraction|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Fugitive,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Transportation,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Transportation|Combustion,Mt NOx/yr, +Emissions|NOx|Energy|Supply|Solids|Transportation|Fugitive,Mt NOx/yr, +Emissions|NOx|Fossil Fuel Fires,Mt NOx/yr, +Emissions|NOx|Fossil Fuels and Industry,Mt NOx/yr, +Emissions|NOx|Industrial Processes,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Chemicals,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Electronics,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Iron and Steel,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Metals and Minerals,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Metals and Minerals,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Non-Ferrous Metals,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Non-Ferrous Metals|Other,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Non-Metallic Minerals,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Non-Metallic Minerals|Cement,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Non-Metallic Minerals|Lime,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Non-Metallic Minerals|Other,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Other Sector,Mt NOx/yr, +Emissions|NOx|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt NOx/yr, +Emissions|NOx|Natural,Mt NOx/yr, +Emissions|NOx|Natural|Other,Mt NOx/yr, +Emissions|NOx|Natural|Volcanoes,Mt NOx/yr, +Emissions|NOx|Other,Mt NOx/yr, +Emissions|NOx|Product Use,Mt NOx/yr, +Emissions|NOx|Product Use|Non-Energy Use,Mt NOx/yr, +Emissions|NOx|Product Use|ODS Substitutes,Mt NOx/yr, +Emissions|NOx|Product Use|Solvents,Mt NOx/yr, +Emissions|NOx|Product Use|Solvents|Chemical Products,Mt NOx/yr, +Emissions|NOx|Product Use|Solvents|Degreasing,Mt NOx/yr, +Emissions|NOx|Product Use|Solvents|Other,Mt NOx/yr, +Emissions|NOx|Product Use|Solvents|Paint,Mt NOx/yr, +Emissions|NOx|Waste,Mt NOx/yr, +Emissions|NOx|Waste|Biological Treatment,Mt NOx/yr, +Emissions|NOx|Waste|Incineration,Mt NOx/yr, +Emissions|NOx|Waste|Other,Mt NOx/yr, +Emissions|NOx|Waste|Solid Waste Disposal,Mt NOx/yr, +Emissions|NOx|Waste|Wastewater Treatment,Mt NOx/yr, +Emissions|OC,Mt OC/yr, +Emissions|OC|AFOLU,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture and Biomass Burning,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture|Livestock,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture|Livestock|Manure Management,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture|Managed Soils,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture|Other,Mt OC/yr, +Emissions|OC|AFOLU|Agriculture|Rice,Mt OC/yr, +Emissions|OC|AFOLU|Biomass Burning,Mt OC/yr, +Emissions|OC|AFOLU|Land,Mt OC/yr, +Emissions|OC|AFOLU|Land|Cropland,Mt OC/yr, +Emissions|OC|AFOLU|Land|Forest,Mt OC/yr, +Emissions|OC|AFOLU|Land|Forest Burning,Mt OC/yr, +Emissions|OC|AFOLU|Land|Grassland Burning,Mt OC/yr, +Emissions|OC|AFOLU|Land|Grassland Pastures,Mt OC/yr, +Emissions|OC|AFOLU|Land|Other,Mt OC/yr, +Emissions|OC|AFOLU|Land|Other Land,Mt OC/yr, +Emissions|OC|AFOLU|Land|Settlements,Mt OC/yr, +Emissions|OC|AFOLU|Land|Wetlands,Mt OC/yr, +Emissions|OC|Energy,Mt OC/yr, +Emissions|OC|Energy|Combustion,Mt OC/yr, +Emissions|OC|Energy|Demand,Mt OC/yr, +Emissions|OC|Energy|Demand|AFOFI,Mt OC/yr, +Emissions|OC|Energy|Demand|Commercial,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Chemicals,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Construction,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Food and Tobacco,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Iron and Steel,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Machinery,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Mining,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Non-Ferrous Metals,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Non-Metallic Minerals,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Other,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Pulp and Paper,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Textile,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Transport Equipment,Mt OC/yr, +Emissions|OC|Energy|Demand|Industry|Wood Products,Mt OC/yr, +Emissions|OC|Energy|Demand|Other Sector,Mt OC/yr, +Emissions|OC|Energy|Demand|Residential,Mt OC/yr, +Emissions|OC|Energy|Demand|Residential and Commercial,Mt OC/yr, +Emissions|OC|Energy|Demand|Residential and Commercial and AFOFI,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Aviation,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Aviation|Domestic,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Aviation|International,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Other Sector,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Rail,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Road,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Shipping,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Shipping|Domestic,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Shipping|International,Mt OC/yr, +Emissions|OC|Energy|Demand|Transportation|Shipping|International|Loading,Mt OC/yr, +Emissions|OC|Energy|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Other,Mt OC/yr, +Emissions|OC|Energy|Supply,Mt OC/yr, +Emissions|OC|Energy|Supply|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Electricity,Mt OC/yr, +Emissions|OC|Energy|Supply|Electricity and Heat,Mt OC/yr, +Emissions|OC|Energy|Supply|Fuel Production and Transformation,Mt OC/yr, +Emissions|OC|Energy|Supply|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases and Liquids Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Biomass,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Biomass|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Biomass|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Coal,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Coal|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Coal|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Extraction,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Extraction|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Extraction|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Hydrogen,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Hydrogen|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Hydrogen|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Natural Gas,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Natural Gas|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Natural Gas|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Transportation,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Transportation|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Gases|Transportation|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Heat,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Biomass,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Biomass|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Biomass|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Coal,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Coal|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Coal|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Extraction,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Extraction|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Extraction|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Natural Gas,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Natural Gas|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Oil,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Oil|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Oil|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Transportation,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Transportation|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Liquids|Transportation|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Other,Mt OC/yr, +Emissions|OC|Energy|Supply|Other|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Other|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids and Other Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Biomass,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Biomass|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Biomass|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Coal,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Coal|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Coal|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Extraction,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Extraction|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Extraction|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Fugitive,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Transportation,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Transportation|Combustion,Mt OC/yr, +Emissions|OC|Energy|Supply|Solids|Transportation|Fugitive,Mt OC/yr, +Emissions|OC|Fossil Fuel Fires,Mt OC/yr, +Emissions|OC|Fossil Fuels and Industry,Mt OC/yr, +Emissions|OC|Industrial Processes,Mt OC/yr, +Emissions|OC|Industrial Processes|Chemicals,Mt OC/yr, +Emissions|OC|Industrial Processes|Electronics,Mt OC/yr, +Emissions|OC|Industrial Processes|Iron and Steel,Mt OC/yr, +Emissions|OC|Industrial Processes|Metals and Minerals,Mt OC/yr, +Emissions|OC|Industrial Processes|Metals and Minerals,Mt OC/yr, +Emissions|OC|Industrial Processes|Non-Ferrous Metals,Mt OC/yr, +Emissions|OC|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt OC/yr, +Emissions|OC|Industrial Processes|Non-Ferrous Metals|Other,Mt OC/yr, +Emissions|OC|Industrial Processes|Non-Metallic Minerals,Mt OC/yr, +Emissions|OC|Industrial Processes|Non-Metallic Minerals|Cement,Mt OC/yr, +Emissions|OC|Industrial Processes|Non-Metallic Minerals|Lime,Mt OC/yr, +Emissions|OC|Industrial Processes|Non-Metallic Minerals|Other,Mt OC/yr, +Emissions|OC|Industrial Processes|Other Sector,Mt OC/yr, +Emissions|OC|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt OC/yr, +Emissions|OC|Natural,Mt OC/yr, +Emissions|OC|Natural|Other,Mt OC/yr, +Emissions|OC|Natural|Volcanoes,Mt OC/yr, +Emissions|OC|Other,Mt OC/yr, +Emissions|OC|Product Use,Mt OC/yr, +Emissions|OC|Product Use|Non-Energy Use,Mt OC/yr, +Emissions|OC|Product Use|ODS Substitutes,Mt OC/yr, +Emissions|OC|Product Use|Solvents,Mt OC/yr, +Emissions|OC|Product Use|Solvents|Chemical Products,Mt OC/yr, +Emissions|OC|Product Use|Solvents|Degreasing,Mt OC/yr, +Emissions|OC|Product Use|Solvents|Other,Mt OC/yr, +Emissions|OC|Product Use|Solvents|Paint,Mt OC/yr, +Emissions|OC|Waste,Mt OC/yr, +Emissions|OC|Waste|Biological Treatment,Mt OC/yr, +Emissions|OC|Waste|Incineration,Mt OC/yr, +Emissions|OC|Waste|Other,Mt OC/yr, +Emissions|OC|Waste|Solid Waste Disposal,Mt OC/yr, +Emissions|OC|Waste|Wastewater Treatment,Mt OC/yr, +Emissions|PFC,kt CF4-equiv/yr,"total emissions of perfluorocarbons (PFCs), provided as aggregate CF4-equivalents" +Emissions|SF6,kt SF6/yr,total emissions of sulfur hexafluoride (SF6) +Emissions|Sulfur,Mt SO2/yr, +Emissions|Sulfur|AFOLU,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture and Biomass Burning,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture|Livestock,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture|Livestock|Manure Management,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture|Managed Soils,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture|Other,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Agriculture|Rice,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Biomass Burning,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Cropland,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Forest,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Forest Burning,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Grassland Burning,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Grassland Pastures,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Other,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Other Land,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Settlements,Mt SO2/yr, +Emissions|Sulfur|AFOLU|Land|Wetlands,Mt SO2/yr, +Emissions|Sulfur|Energy,Mt SO2/yr, +Emissions|Sulfur|Energy|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|AFOFI,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Commercial,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Chemicals,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Construction,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Food and Tobacco,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Iron and Steel,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Machinery,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Mining,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Non-Ferrous Metals,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Non-Metallic Minerals,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Other,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Pulp and Paper,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Textile,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Transport Equipment,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Industry|Wood Products,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Other Sector,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Residential,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Residential and Commercial,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Residential and Commercial and AFOFI,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Aviation,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Aviation|Domestic,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Aviation|International,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Other Sector,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Rail,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Road,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Shipping,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Shipping|Domestic,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Shipping|International,Mt SO2/yr, +Emissions|Sulfur|Energy|Demand|Transportation|Shipping|International|Loading,Mt SO2/yr, +Emissions|Sulfur|Energy|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Other,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Electricity,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Electricity and Heat,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Fuel Production and Transformation,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases and Liquids Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Biomass,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Biomass|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Biomass|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Coal,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Coal|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Coal|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Extraction,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Extraction|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Extraction|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Hydrogen,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Hydrogen|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Hydrogen|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Natural Gas,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Natural Gas|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Natural Gas|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Transportation,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Transportation|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Gases|Transportation|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Heat,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Biomass,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Biomass|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Biomass|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Coal,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Coal|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Coal|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Extraction,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Extraction|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Extraction|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Natural Gas,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Natural Gas|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Oil,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Oil|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Oil|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Transportation,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Transportation|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Liquids|Transportation|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Other,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Other|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Other|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids and Other Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Biomass,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Biomass|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Biomass|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Coal,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Coal|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Coal|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Extraction,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Extraction|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Extraction|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Transportation,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Transportation|Combustion,Mt SO2/yr, +Emissions|Sulfur|Energy|Supply|Solids|Transportation|Fugitive,Mt SO2/yr, +Emissions|Sulfur|Fossil Fuel Fires,Mt SO2/yr, +Emissions|Sulfur|Fossil Fuels and Industry,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Chemicals,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Electronics,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Iron and Steel,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Metals and Minerals,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Metals and Minerals,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Non-Ferrous Metals,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Non-Ferrous Metals|Other,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals|Cement,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals|Lime,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals|Other,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Other Sector,Mt SO2/yr, +Emissions|Sulfur|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt SO2/yr, +Emissions|Sulfur|Natural,Mt SO2/yr, +Emissions|Sulfur|Natural|Other,Mt SO2/yr, +Emissions|Sulfur|Natural|Volcanoes,Mt SO2/yr, +Emissions|Sulfur|Other,Mt SO2/yr, +Emissions|Sulfur|Product Use,Mt SO2/yr, +Emissions|Sulfur|Product Use|Non-Energy Use,Mt SO2/yr, +Emissions|Sulfur|Product Use|ODS Substitutes,Mt SO2/yr, +Emissions|Sulfur|Product Use|Solvents,Mt SO2/yr, +Emissions|Sulfur|Product Use|Solvents|Chemical Products,Mt SO2/yr, +Emissions|Sulfur|Product Use|Solvents|Degreasing,Mt SO2/yr, +Emissions|Sulfur|Product Use|Solvents|Other,Mt SO2/yr, +Emissions|Sulfur|Product Use|Solvents|Paint,Mt SO2/yr, +Emissions|Sulfur|Waste,Mt SO2/yr, +Emissions|Sulfur|Waste|Biological Treatment,Mt SO2/yr, +Emissions|Sulfur|Waste|Incineration,Mt SO2/yr, +Emissions|Sulfur|Waste|Other,Mt SO2/yr, +Emissions|Sulfur|Waste|Solid Waste Disposal,Mt SO2/yr, +Emissions|Sulfur|Waste|Wastewater Treatment,Mt SO2/yr, +Emissions|VOC,Mt VOC/yr, +Emissions|VOC|AFOLU,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture and Biomass Burning,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture|Livestock,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture|Livestock|Manure Management,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture|Managed Soils,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture|Other,Mt VOC/yr, +Emissions|VOC|AFOLU|Agriculture|Rice,Mt VOC/yr, +Emissions|VOC|AFOLU|Biomass Burning,Mt VOC/yr, +Emissions|VOC|AFOLU|Land,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Cropland,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Forest,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Forest Burning,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Grassland Burning,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Grassland Pastures,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Other,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Other Land,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Settlements,Mt VOC/yr, +Emissions|VOC|AFOLU|Land|Wetlands,Mt VOC/yr, +Emissions|VOC|Energy,Mt VOC/yr, +Emissions|VOC|Energy|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Demand,Mt VOC/yr, +Emissions|VOC|Energy|Demand|AFOFI,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Commercial,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Chemicals,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Construction,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Food and Tobacco,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Iron and Steel,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Machinery,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Mining,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Non-Ferrous Metals,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Non-Metallic Minerals,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Other,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Pulp and Paper,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Textile,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Transport Equipment,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Industry|Wood Products,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Other Sector,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Residential,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Residential and Commercial,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Residential and Commercial and AFOFI,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Aviation,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Aviation|Domestic,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Aviation|International,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Other Sector,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Rail,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Road,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Shipping,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Shipping|Domestic,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Shipping|International,Mt VOC/yr, +Emissions|VOC|Energy|Demand|Transportation|Shipping|International|Loading,Mt VOC/yr, +Emissions|VOC|Energy|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Other,Mt VOC/yr, +Emissions|VOC|Energy|Supply,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Electricity,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Electricity and Heat,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Fuel Production and Transformation,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases and Liquids Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Biomass,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Biomass|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Biomass|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Coal,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Coal|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Coal|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Extraction,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Extraction|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Extraction|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Hydrogen,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Hydrogen|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Hydrogen|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Natural Gas,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Natural Gas|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Natural Gas|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Transportation,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Transportation|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Gases|Transportation|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Heat,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Biomass,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Biomass|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Biomass|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Coal,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Coal|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Coal|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Extraction,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Extraction|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Extraction|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Natural Gas,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Natural Gas|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Oil,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Oil|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Oil|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Transportation,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Transportation|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Liquids|Transportation|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Other,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Other|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Other|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids and Other Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Biomass,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Biomass|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Biomass|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Coal,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Coal|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Coal|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Extraction,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Extraction|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Extraction|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Fugitive,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Transportation,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Transportation|Combustion,Mt VOC/yr, +Emissions|VOC|Energy|Supply|Solids|Transportation|Fugitive,Mt VOC/yr, +Emissions|VOC|Fossil Fuel Fires,Mt VOC/yr, +Emissions|VOC|Fossil Fuels and Industry,Mt VOC/yr, +Emissions|VOC|Industrial Processes,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Chemicals,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Electronics,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Iron and Steel,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Metals and Minerals,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Metals and Minerals,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Non-Ferrous Metals,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Non-Ferrous Metals|Other,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Non-Metallic Minerals,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Non-Metallic Minerals|Cement,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Non-Metallic Minerals|Lime,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Non-Metallic Minerals|Other,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Other Sector,Mt VOC/yr, +Emissions|VOC|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt VOC/yr, +Emissions|VOC|Natural,Mt VOC/yr, +Emissions|VOC|Natural|Other,Mt VOC/yr, +Emissions|VOC|Natural|Volcanoes,Mt VOC/yr, +Emissions|VOC|Other,Mt VOC/yr, +Emissions|VOC|Product Use,Mt VOC/yr, +Emissions|VOC|Product Use|Non-Energy Use,Mt VOC/yr, +Emissions|VOC|Product Use|ODS Substitutes,Mt VOC/yr, +Emissions|VOC|Product Use|Solvents,Mt VOC/yr, +Emissions|VOC|Product Use|Solvents|Chemical Products,Mt VOC/yr, +Emissions|VOC|Product Use|Solvents|Degreasing,Mt VOC/yr, +Emissions|VOC|Product Use|Solvents|Other,Mt VOC/yr, +Emissions|VOC|Product Use|Solvents|Paint,Mt VOC/yr, +Emissions|VOC|Waste,Mt VOC/yr, +Emissions|VOC|Waste|Biological Treatment,Mt VOC/yr, +Emissions|VOC|Waste|Incineration,Mt VOC/yr, +Emissions|VOC|Waste|Other,Mt VOC/yr, +Emissions|VOC|Waste|Solid Waste Disposal,Mt VOC/yr, +Emissions|VOC|Waste|Wastewater Treatment,Mt VOC/yr, +Employment,million,Number of employed inhabitants (based on ILO classification) +Employment|Agriculture,Million,Number of employed inhabitants (payrolls) in agriculture (based on ILO classification) +Employment|Industry,Million,Number of employed inhabitants (payrolls) in industry (based on ILO classification) +Employment|Industry|Energy ,Million, +Employment|Industry|Energy Intensive,Million,Number of employed inhabitants (payrolls) in energy-intensive industry (based on ILO classification) +Employment|Industry|Manufacturing,Million, +Employment|Service,Million,Number of employed inhabitants (payrolls) in the service sector (based on ILO classification) +Energy Service|Commercial|Floor Space,bn m2/yr,energy service demand for conditioned floor space in commercial buildings +Energy Service|Residential and Commercial|Floor Space,bn m2/yr,energy service demand for conditioned floor space in buildings +Energy Service|Residential|Floor Space,bn m2/yr,energy service demand for conditioned floor space in residential buildings +Energy Service|Transportation|Freight,bn tkm/yr,energy service demand for freight transport +Energy Service|Transportation|Freight|Aviation,bn tkm/yr,energy service demand for freight transport on aircrafts +Energy Service|Transportation|Freight|International Shipping,bn tkm/yr, +Energy Service|Transportation|Freight|Navigation,bn tkm/yr,energy service demand for freight transport on domestic ships +Energy Service|Transportation|Freight|Other,bn tkm/yr,energy service demand for freight transport using other modes (please provide a definition of the modes in this category in the 'comments' tab) +Energy Service|Transportation|Freight|Railways,bn tkm/yr,energy service demand for freight transport on railways +Energy Service|Transportation|Freight|Road,bn tkm/yr,energy service demand for freight transport on roads +Energy Service|Transportation|Passenger,bn pkm/yr,energy service demand for passenger transport +Energy Service|Transportation|Passenger|Aviation,bn pkm/yr,energy service demand for passenger transport on aircrafts +Energy Service|Transportation|Passenger|Bicycling and Walking,bn pkm/yr, +Energy Service|Transportation|Passenger|Navigation,bn pkm/yr,energy service demand for passenger transport on domestic ships +Energy Service|Transportation|Passenger|Other,bn pkm/yr,energy service demand for passenger transport using other modes (please provide a definition of the modes in this category in the 'comments' tab) +Energy Service|Transportation|Passenger|Railways,bn pkm/yr,energy service demand for passenger transport on railways +Energy Service|Transportation|Passenger|Road,bn pkm/yr,energy service demand for passenger transport on roads +Energy Service|Transportation|Passenger|Road|2W and 3W,bn pkm/yr, +Energy Service|Transportation|Passenger|Road|Bus,bn pkm/yr, +Energy Service|Transportation|Passenger|Road|LDV,bn pkm/yr, +Expenditure|Energy|Fossil,billion US$2010/yr OR local currency,Fossil fuel expenditure +Expenditure|Government,billion US$2010/yr OR local currency,total government expenditure +Expenditure|Household,billion US$2010/yr OR local currency,Total household expenditure +Expenditure|Household|Energy,billion US$2010/yr OR local currency,expenditure of households for energy. +Expenditure|Household|Food,billion US$2010/yr OR local currency,expenditure of households for food. +Expenditure|Household|Industry,billion US$2010/yr OR local currency,expenditure of households for industrial goods. +Expenditure|household|Services,billion US$2010/yr OR local currency, +Expenditure|household|Services|health,billion US$2010/yr OR local currency, +Expenditure|Medical System|Incremental,billion US$2010/yr OR local currency,Incremental expenditure for the medical system +Expenditure|RnD,billion US$2010/yr OR local currency,expenditure on research and development +Export,billion US$2010/yr OR local currency,total exports measured in monetary quantities. +Export|Agriculture,billion US$2010/yr OR local currency,export of agricultural commodities measured in monetary units. +Export|Developing Country Share,%,Developing countries’ and least developed countries’ share of global exports +Export|Energy,billion US$2010/yr OR local currency,export of energy commodities measured in monetary units. +Export|Industry,billion US$2010/yr OR local currency,export of industrial (non-energy) commodities measured in monetary units. +Export|Industry|Energy,billion US$2010/yr OR local currency, +Export|Industry|Energy Intensive,billion US$2010/yr OR local currency, +Export|Industry|Manufacturing,billion US$2010/yr OR local currency, +Export|Other,billion US$2010/yr OR local currency,export of other commodities measured in monetary units (please provide a definition of the sources in this category in the 'comments' tab). +Fertilizer Use|Nitrogen,Tg N/yr,total nitrogen fertilizer use +Fertilizer Use|Phosphorus,Tg P/yr,total phosphorus fertilizer use +Fertilizer Use|Potassium,Tg K2O/yr,total potassium fertilizer use +Fertilizer|Nitrogen|Intensity,t N/ha/yr,nitrogen fertilizer inputs in tonnes per hectare per year (or similar) +Fertilizer|Phosphorus|Intensity,t P/ha/yr,phosphorus fertilizer inputs in tonnes per hectare per year (or similar) +Fertilizer|Potassium|Intensity,t K20/ha/yr,potassium fertilizer inputs in tonnes per hectare per year (or similar) +Final Energy,EJ/yr,"total final energy consumption by all end-use sectors and all fuels, excluding transmission/distribution losses" +Final Energy|Commercial,EJ/yr,final energy consumed in the commercial sector +Final Energy|Commercial|Electricity,EJ/yr,"final energy consumption by the commercial sector of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Commercial|Electricity|Solar,EJ/yr, +Final Energy|Commercial|Gases,EJ/yr,"final energy consumption by the commercial sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Commercial|Heat,EJ/yr,"final energy consumption by the commercial sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" +Final Energy|Commercial|Hydrogen,EJ/yr,final energy consumption by the commercial sector of hydrogen +Final Energy|Commercial|Liquids,EJ/yr,"final energy consumption by the commercial sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Commercial|Other,EJ/yr,final energy consumption by the commercial sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Commercial|Solids,EJ/yr,final energy solid fuel consumption by the commercial sector (including coal and solid biomass) +Final Energy|Commercial|Solids|Biomass,EJ/yr, +Final Energy|Commercial|Solids|Biomass|Traditional,EJ/yr, +Final Energy|Commercial|Solids|Coal,EJ/yr, +Final Energy|Commercial|Water|Desalination,TWh/yr,Energy consumption for desalination water +Final Energy|Commercial|Water|Groundwater Extraction,TWh/yr,Energy consumption for groundwater extraction +Final Energy|Commercial|Water|Surface Water Extraction,TWh/yr,Energy consumption for surface water extraction +Final Energy|Commercial|Water|Transfer,TWh/yr,Energy consumption for water transfers +Final Energy|Electricity,EJ/yr,"final energy consumption of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Electricity|Solar,EJ/yr, +Final Energy|Gases,EJ/yr,"final energy consumption of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Geothermal,EJ/yr,"final energy consumption of geothermal energy (e.g., from decentralized or small-scale geothermal heating systems) EXCLUDING geothermal heat pumps" +Final Energy|Heat,EJ/yr,"final energy consumption of heat (e.g., district heat, process heat, warm water), excluding transmission/distribution losses, excluding direct geothermal and solar heating" +Final Energy|Hydrogen,EJ/yr,"final energy consumption of hydrogen, excluding transmission/distribution losses" +Final Energy|Industry,EJ/yr,"final energy consumed by the industrial sector, including feedstocks, including agriculture and fishing" +Final Energy|Industry|Electricity,EJ/yr,"final energy consumption by the industrial sector of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Industry|Electricity|Solar,EJ/yr, +Final Energy|Industry|Gases,EJ/yr,"final energy consumption by the industrial sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Industry|Heat,EJ/yr,"final energy consumption by the industrial sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" +Final Energy|Industry|Hydrogen,EJ/yr,final energy consumption by the industrial sector of hydrogen +Final Energy|Industry|Liquids,EJ/yr,"final energy consumption by the industrial sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Industry|Liquids|Biomass,EJ/yr, +Final Energy|Industry|Liquids|Coal,EJ/yr, +Final Energy|Industry|Liquids|Gas,EJ/yr, +Final Energy|Industry|Liquids|Oil,EJ/yr, +Final Energy|Industry|Other,EJ/yr,final energy consumption by the industrial sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Industry|Solids,EJ/yr,final energy solid fuel consumption by the industrial sector (including coal and solid biomass) +Final Energy|Industry|Solids|Biomass,EJ/yr,"final energy consumption by the industrial sector of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" +Final Energy|Industry|Solids|Coal,EJ/yr,final energy coal consumption by the industrial sector +Final Energy|Liquids,EJ/yr,"final energy consumption of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Liquids|Biomass,EJ/yr, +Final Energy|Liquids|Coal,EJ/yr, +Final Energy|Liquids|Gas,EJ/yr, +Final Energy|Liquids|Oil,EJ/yr, +Final Energy|Non-Energy Use,EJ/yr, +Final Energy|Non-Energy Use|Biomass,EJ/yr, +Final Energy|Non-Energy Use|Coal,EJ/yr, +Final Energy|Non-Energy Use|Gas,EJ/yr, +Final Energy|Non-Energy Use|Oil,EJ/yr, +Final Energy|Other,EJ/yr,final energy consumption of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Other Sector,EJ/yr,total final energy consumption by other sectors +Final Energy|Other Sector|Electricity,EJ/yr,"final energy consumption by other sectors of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Other Sector|Electricity|Solar,EJ/yr, +Final Energy|Other Sector|Gases,EJ/yr,"final energy consumption by other sectors of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Other Sector|Heat,EJ/yr,"final energy consumption by other sectors of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" +Final Energy|Other Sector|Hydrogen,EJ/yr,final energy consumption by other sectors of hydrogen +Final Energy|Other Sector|Liquids,EJ/yr,"final energy consumption by other sectors of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Other Sector|Other,EJ/yr,final energy consumption by other sectors of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Other Sector|Solids,EJ/yr,final energy solid fuel consumption by other sectors (including coal and solid biomass) +Final Energy|Other Sector|Solids|Biomass,EJ/yr,"final energy consumption by other sectors of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" +Final Energy|Other Sector|Solids|Biomass|Traditional,EJ/yr,"final energy consumed by other sectors than industry, transportation, residential and commercial coming from biomass (traditional)" +Final Energy|Other Sector|Solids|Coal,EJ/yr,final energy coal consumption by other sectors +Final Energy|Residential,EJ/yr,final energy consumed in the residential sector +Final Energy|Residential and Commercial,EJ/yr,final energy consumed in the residential & commercial sector +Final Energy|Residential and Commercial|Electricity,EJ/yr,"final energy consumption by the residential & commercial sector of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Residential and Commercial|Electricity|Solar,EJ/yr, +Final Energy|Residential and Commercial|Gases,EJ/yr,"final energy consumption by the residential & commercial sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Residential and Commercial|Heat,EJ/yr,"final energy consumption by the residential & commercial sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" +Final Energy|Residential and Commercial|Hydrogen,EJ/yr,final energy consumption by the residential & commercial sector of hydrogen +Final Energy|Residential and Commercial|Liquids,EJ/yr,"final energy consumption by the residential & commercial sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Residential and Commercial|Liquids|Biomass,EJ/yr, +Final Energy|Residential and Commercial|Liquids|Coal,EJ/yr, +Final Energy|Residential and Commercial|Liquids|Gas,EJ/yr, +Final Energy|Residential and Commercial|Liquids|Oil,EJ/yr, +Final Energy|Residential and Commercial|Other,EJ/yr,final energy consumption by the residential & commercial sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Residential and Commercial|Solids,EJ/yr,final energy solid fuel consumption by the residential & commercial sector (including coal and solid biomass) +Final Energy|Residential and Commercial|Solids|Biomass,EJ/yr,"final energy consumption by the residential & commercial sector of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" +Final Energy|Residential and Commercial|Solids|Biomass|Traditional,EJ/yr,final energy consumed in the residential & commercial sector coming from biomass (traditional) +Final Energy|Residential and Commercial|Solids|Coal,EJ/yr,final energy coal consumption by the residential & commercial sector +Final Energy|Residential and Commercial|Space Heating,EJ/yr,final energy consumed for space heating in residential and commercial buildings +Final Energy|Residential|Electricity,EJ/yr,"final energy consumption by the residential sector of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Residential|Electricity|Solar,EJ/yr, +Final Energy|Residential|Gases,EJ/yr,"final energy consumption by the residential sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Residential|Heat,EJ/yr,"final energy consumption by the residential sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" +Final Energy|Residential|Hydrogen,EJ/yr,final energy consumption by the residential sector of hydrogen +Final Energy|Residential|Liquids,EJ/yr,"final energy consumption by the residential sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Residential|Other,EJ/yr,final energy consumption by the residential sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Residential|Solids,EJ/yr,final energy solid fuel consumption by the residential sector (including coal and solid biomass) +Final Energy|Residential|Solids|Biomass,EJ/yr, +Final Energy|Residential|Solids|Biomass|Traditional,EJ/yr, +Final Energy|Residential|Solids|Coal,EJ/yr, +Final Energy|Solar,EJ/yr,"final energy consumption of solar energy (e.g., from roof-top solar hot water collector systems)" +Final Energy|Solids,EJ/yr,final energy solid fuel consumption (including coal and solid biomass) +Final Energy|Solids|Biomass,EJ/yr,"final energy consumption of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" +Final Energy|Solids|Biomass|Traditional,EJ/yr,final energy consumption of traditional biomass +Final Energy|Solids|Coal,EJ/yr,final energy coal consumption +Final Energy|Transportation,EJ/yr,"final energy consumed in the transportation sector, including bunker fuels, excluding pipelines" +Final Energy|Transportation|Electricity,EJ/yr,"final energy consumption by the transportation sector of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Transportation|Freight,EJ/yr,final energy consumed for freight transportation +Final Energy|Transportation|Freight|Electricity,EJ/yr,"final energy consumption by the freight transportation sector of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Transportation|Freight|Gases,EJ/yr,"final energy consumption by the freight transportation sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Transportation|Freight|Hydrogen,EJ/yr,final energy consumption by the freight transportation sector of hydrogen +Final Energy|Transportation|Freight|Liquids,EJ/yr,"final energy consumption by the freight transportation sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Transportation|Freight|Liquids|Biomass,EJ/yr,final energy consumption by the freight transportation sector of liquid biofuels +Final Energy|Transportation|Freight|Liquids|Oil,EJ/yr,final energy consumption by the freight transportation sector of liquid oil products (from conventional & unconventional oil) +Final Energy|Transportation|Freight|Other,EJ/yr,final energy consumption by the freight transportation sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Transportation|Gases,EJ/yr,"final energy consumption by the transportation sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Transportation|Gases|Shipping,EJ/yr, +Final Energy|Transportation|Hydrogen,EJ/yr,final energy consumption by the transportation sector of hydrogen +Final Energy|Transportation|Hydrogen|Shipping,EJ/yr, +Final Energy|Transportation|Liquids,EJ/yr,"final energy consumption by the transportation sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Transportation|Liquids|Biomass,EJ/yr,final energy consumption by the transportation sector of liquid biofuels +Final Energy|Transportation|Liquids|Biomass|Shipping,EJ/yr, +Final Energy|Transportation|Liquids|Coal,EJ/yr,final energy consumption by the transportation sector of coal based liquids (coal-to-liquids) +Final Energy|Transportation|Liquids|Coal|Shipping,EJ/yr, +Final Energy|Transportation|Liquids|Gas,EJ/yr,final energy consumption by the transportation sector of natrual gas based liquids (gas-to-liquids) +Final Energy|Transportation|Liquids|Oil,EJ/yr,final energy consumption by the transportation sector of liquid oil products (from conventional & unconventional oil) +Final Energy|Transportation|Liquids|Oil|Shipping,EJ/yr, +Final Energy|Transportation|Liquids|Oil|Shipping|Fuel Oil,EJ/yr, +Final Energy|Transportation|Liquids|Oil|Shipping|Light Oil,EJ/yr, +Final Energy|Transportation|Other,EJ/yr,final energy consumption by the transportation sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Final Energy|Transportation|Passenger,EJ/yr,final energy consumed for passenger transportation +Final Energy|Transportation|Passenger|Electricity,EJ/yr,"final energy consumption by the passenger transportation sector of electricity (including on-site solar PV), excluding transmission/distribution losses" +Final Energy|Transportation|Passenger|Gases,EJ/yr,"final energy consumption by the passenger transportation sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" +Final Energy|Transportation|Passenger|Hydrogen,EJ/yr,final energy consumption by the passenger transportation sector of hydrogen +Final Energy|Transportation|Passenger|Liquids,EJ/yr,"final energy consumption by the passenger transportation sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Final Energy|Transportation|Passenger|Liquids|Biomass,EJ/yr,final energy consumption by the passenger transportation sector of liquid biofuels +Final Energy|Transportation|Passenger|Liquids|Oil,EJ/yr,final energy consumption by the passenger transportation sector of liquid oil products (from conventional & unconventional oil) +Final Energy|Transportation|Passenger|Other,EJ/yr,final energy consumption by the passenger transportation sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Fiscal Gap,billion US$2010/yr OR local currency/yr,"The potential fiscal gap, is assessed by simulating the risks to assets and fiscal resilience following stochastic disasters of different magnitudes." +Fiscal Resilience,billion US$2010/yr OR local currency/yr,"Fiscal resilience is defined as the access to domestic and external resources for absorbing asset risks (availability for budget diversion, access to domestic and international credit, availablitiy of insurance and other innovative financing instruments)." +Food Demand,kcal/cap/day,"all food demand in calories (conversion factor: 1 kcal = 4,1868 kJ)" +Food Demand|Crops,kcal/cap/day,crop related food demand in calories +Food Demand|Livestock,kcal/cap/day,livestock related food demand in calories +Food Energy Supply,EJ/yr,total calory food demand +Food Energy Supply|Livestock,EJ/yr,calory food demand from livestock products +Forcing,W/m2,"radiative forcing from all greenhouse gases and forcing agents, including contributions from albedo change, nitrate, and mineral dust" +Forcing|Aerosol,W/m2,total radiative forcing from aerosols +Forcing|Aerosol|BC,W/m2,total radiative forcing from black carbon +Forcing|Aerosol|Black and Organic Carbon,W/m2,total radiative forcing from black and organic carbon +Forcing|Aerosol|Cloud Indirect,W/m2,total radiative forcing from indirect effects of aerosols on clouds +Forcing|Aerosol|OC,W/m2,total radiative forcing from organic carbon +Forcing|Aerosol|Other,W/m2,total radiative forcing from aerosols not covered in the other categories (including aerosols from biomass burning) +Forcing|Aerosol|Sulfate Direct,W/m2,total radiative forcing from direct sufate effects +Forcing|Albedo Change and Mineral Dust,W/m2,total radiative forcing from albedo change and mineral dust +Forcing|CH4,W/m2,total radiative forcing from CH4 +Forcing|CO2,W/m2,total radiative forcing from CO2 +Forcing|F-Gases,W/m2,total radiative forcing from F-gases +Forcing|Kyoto Gases,W/m2,"radiative forcing of the six Kyoto gases (CO2, CH4, N2O, SF6, HFCs, PFCs)" +Forcing|Montreal Gases,W/m2,total radiative forcing from Montreal gases +Forcing|N2O,W/m2,total radiative forcing from N2O +Forcing|Other,W/m2,total radiative forcing from factors not covered in other categories (including stratospheric ozone and stratospheric water vapor) +Forcing|Tropospheric Ozone,W/m2,total radiative forcing from tropospheric ozone +Forestry Demand|Roundwood,million m3/yr,"forestry demand level for all roundwood (consumption, not production)" +Forestry Demand|Roundwood|Industrial Roundwood,million m3/yr,"forestry demand level for industrial roundwood (consumption, not production)" +Forestry Demand|Roundwood|Wood Fuel,million m3/yr,"forestry demand level for fuel wood roundwood (consumption, not production)" +Forestry Production|Forest Residues,million t DM/yr,"forestry production level of forest residue output (primary production, not consumption)" +Forestry Production|Roundwood,million m3/yr,"forestry production level for all roundwood (primary production, not consumption)" +Forestry Production|Roundwood|Industrial Roundwood,million m3/yr,"forestry production level for industrial roundwood (primary production, not consumption)" +Forestry Production|Roundwood|Wood Fuel,million m3/yr,"forestry production level for fuel wood roundwood (primary production, not consumption)" +Freshwater|Environmental Flow,km3/yr,water allocated to environmental flow in rivers and groundwater systems +GDP|MER,billion US$2010/yr OR local currency,GDP at market exchange rate +GDP|PPP,billion US$2010/yr OR local currency,GDP converted to International $ using purchasing power parity (PPP) +GLOBIOM|Emissions|Afforestation CO2 G4M,Mt CO2eq/yr, +GLOBIOM|Emissions|CH4 Emissions Total,Mt CO2eq/yr, +GLOBIOM|Emissions|CO2 Emissions,Mt CO2/yr, +GLOBIOM|Emissions|CO2 Emissions|BIO00,Mt CO2/yr, +GLOBIOM|Emissions|CO2 Emissions|BIO01,Mt CO2/yr, +GLOBIOM|Emissions|CO2 Emissions|BIO02,Mt CO2/yr, +GLOBIOM|Emissions|CO2 Emissions|BIO03,Mt CO2/yr, +GLOBIOM|Emissions|CO2 Emissions|BIO04,Mt CO2/yr, +GLOBIOM|Emissions|CO2 Emissions|BIO05,Mt CO2/yr, +GLOBIOM|Emissions|CO2 Emissions|BIO0N,Mt CO2/yr, +GLOBIOM|Emissions|Deforestation CO2 GLO,Mt CO2eq/yr, +GLOBIOM|Emissions|Deforestation CO2 G4M,Mt CO2eq/yr, +GLOBIOM|Emissions|Forest Management CO2 G4M,Mt CO2eq/yr, +GLOBIOM|Emissions|GHG Emissions Total,Mt CO2eq/yr, +GLOBIOM|Emissions|N20 Emissions Total,Mt CO2eq/yr, +GLOBIOM|Emissions|Olc CO2 Globiom,Mt CO2eq/yr, +GLOBIOM|Emissions|Total CO2 G4M,Mt CO2eq/yr, +GLOBIOM|Final Energy|Liquid Total,EJ/yr, +GLOBIOM|Primary Energy|Biomass,EJ/yr, +GLOBIOM|Primary Energy|Biomass|BIO00,EJ/yr, +GLOBIOM|Primary Energy|Biomass|BIO01,EJ/yr, +GLOBIOM|Primary Energy|Biomass|BIO02,EJ/yr, +GLOBIOM|Primary Energy|Biomass|BIO03,EJ/yr, +GLOBIOM|Primary Energy|Biomass|BIO04,EJ/yr, +GLOBIOM|Primary Energy|Biomass|BIO05,EJ/yr, +GLOBIOM|Primary Energy|Biomass|BIO0N,EJ/yr, +GLOBIOM|Primary Energy|Forest Biomass GLO,EJ/yr, +GLOBIOM|Primary Energy|Forest Biomass G4M,EJ/yr, +GLOBIOM|Primary Energy|Fuel Wood GLO,EJ/yr, +GLOBIOM|Primary Energy|Fuel Wood G4M,EJ/yr, +GLOBIOM|Primary Energy|Other Solid Non Commercial,EJ/yr, +GLOBIOM|Primary Energy|Plantation Biomass,EJ/yr, +GLOBIOM|Primary Energy|Sawmill Residues GLO,EJ/yr, +GLOBIOM|Primary Energy|Sawmill Residues G4M,EJ/yr, +GLOBIOM|Primary Energy|Solid Exogenous GLO,EJ/yr, +GLOBIOM|Primary Energy|Solid Exogenous G4M,EJ/yr, +GLOBIOM|Primary Energy|Solid Total GLO,EJ/yr, +GLOBIOM|Primary Energy|Solid Total G4M,EJ/yr, +GLOBIOM|Wood|Forest Harvest Deforestation G4M,Mm3, +GLOBIOM|Wood|Forest Harvest Forest Management G4M,Mm3, +GLOBIOM|Wood|Forest Harvest Total G4M,Mm3, +GLOBIOM|Wood|Plantation Harvest GLO,Mm3, +GLOBIOM|Wood|Timber Industry GLO,Mm3, +GLOBIOM|Wood|Timber Industry G4M,Mm3, +GLOBIOM|Land Cover|New Forest G4M,million ha, +GLOBIOM|Land Cover|Old Forest G4M,million ha, +Import,billion US$2010/yr OR local currency,total imports measured in monetary quantities. +Import|Agriculture,billion US$2010/yr OR local currency,import of agricultural commodities measured in monetary units. +Import|Energy,billion US$2010/yr OR local currency,import of energy commodities measured in monetary units. +Import|Industry,billion US$2010/yr OR local currency,import of industrial (non-energy) commodities measured in monetary units. +Import|Industry|Energy,billion US$2010/yr OR local currency, +Import|Industry|Energy Intensive,billion US$2010/yr OR local currency, +Import|Industry|Manufacturing,billion US$2010/yr OR local currency, +Import|Other,billion US$2010/yr OR local currency,import of other commodities measured in monetary units (please provide a definition of the sources in this category in the 'comments' tab). +Improvement|Efficiency|Irrigation,%/yr,improvements in irrigation water use efficiency per year +Indirect Risk|GDP Growth,%,"The consequences of a fiscal vulnerability and associated gaps on macroeconomic development +of the country are characterized with indicators, such as economic growth or the country’s external debt +position." +Indirect Risk|Public Debt,billion US$2010/yr OR local currency/yr,"The consequences of a fiscal vulnerability and associated gaps on macroeconomic development +of the country are characterized with indicators, such as economic growth or the country’s external debt +position." +Interest Rate|Real,%,Real interest rate or return on capital that is relevant for energy system investments +Investment,billion US$2010/yr OR local currency,"Total economy wide investments (macroecomic capital stock, energy system, R&D, ...) " +Investment|Energy Demand|Transportation|Freight|Road|HDT|EV,billion US$2010/yr OR local currency,"investments into new vehicle technologies in the transport sector (heavy-duty freight trucks: electric vehicle technologies, including all-electrics and plug-in hybrids)" +Investment|Energy Demand|Transportation|Freight|Road|HDT|FCV,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (heavy-duty freight trucks: fuel cell technologies running on hydrogen or another type of fuel) +Investment|Energy Demand|Transportation|Freight|Road|HDT|ICE,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (heavy-duty freight trucks: internal combustion engine technologies running on any type of liquid or gaseous fuel) +Investment|Energy Demand|Transportation|Passenger|Road|LDV|EV,billion US$2010/yr OR local currency,"investments into new vehicle technologies in the transport sector (light-duty cars and trucks: electric vehicle technologies, including all-electrics and plug-in hybrids)" +Investment|Energy Demand|Transportation|Passenger|Road|LDV|FCV,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (light-duty cars and trucks: fuel cell technologies running on hydrogen or another type of fuel) +Investment|Energy Demand|Transportation|Passenger|Road|LDV|ICE,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (light-duty cars and trucks: internal combustion engine technologies running on any type of liquid or gaseous fuel) +Investment|Energy Efficiency,billion US$2010/yr OR local currency,investments into the efficiency-increasing components of energy demand technologies +Investment|Energy Supply,billion US$2010/yr OR local currency,Investments into the energy supply system +Investment|Energy Supply|CO2 Transport and Storage,billion US$2010/yr OR local currency,investment in CO2 transport and storage (note that investment in the capturing equipment should be included along with the power plant technology) +Investment|Energy Supply|Electricity,billion US$2010/yr or local currency/yr,Investments into electricity generation and supply (including electricity storage and transmission & distribution) +Investment|Energy Supply|Electricity|Biomass,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Biomass|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Biomass|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Coal,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Coal|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Coal|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Electricity Storage,billion US$2010/yr OR local currency,"investments in electricity storage technologies (e.g., batteries, compressed air storage reservoirs, etc.)" +Investment|Energy Supply|Electricity|Fossil,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Gas,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Gas|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Gas|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Geothermal,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Hydro,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Non-Biomass Renewables,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Non-fossil,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Nuclear,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Ocean,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Oil,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Oil|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Oil|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Other,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Solar,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Solar|PV,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Solar|CSP,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Transmission and Distribution,billion US$2010/yr OR local currency,investments in transmission and distribution of power generation +Investment|Energy Supply|Electricity|Wind,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Wind|Onshore,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Electricity|Wind|Offshore,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Extraction|Bioenergy,billion US$2010/yr OR local currency,investments for extraction and production of bioenergy +Investment|Energy Supply|Extraction|Coal,billion US$2010/yr OR local currency,"investments for extraction and conversion of coal. These should include mining, shipping and ports" +Investment|Energy Supply|Extraction|Fossil,billion US$2010/yr OR local currency,investments for all types of fossil extraction +Investment|Energy Supply|Extraction|Gas,billion US$2010/yr OR local currency,"investments for extraction and conversion of natural gas. These should include upstream, LNG chain and transmission and distribution" +Investment|Energy Supply|Extraction|Gas|Conventional,billion US$2010/yr OR local currency, +Investment|Energy Supply|Extraction|Gas|Unconventional,billion US$2010/yr OR local currency, +Investment|Energy Supply|Extraction|Oil,billion US$2010/yr OR local currency,"investments for extraction and conversion of oil. These should include upstream, transport and refining" +Investment|Energy Supply|Extraction|Oil|Conventional,billion US$2010/yr OR local currency, +Investment|Energy Supply|Extraction|Oil|Unconventional,billion US$2010/yr OR local currency, +Investment|Energy Supply|Extraction|Uranium,billion US$2010/yr OR local currency,"investments for extraction and conversion of uranium. These should include mining, conversion and enrichment" +Investment|Energy Supply|Heat,billion US$2010/yr or local currency/yr,investments in heat generation facilities +Investment|Energy Supply|Hydrogen,billion US$2010/yr or local currency/yr,"investments for the production of hydrogen from all energy sources (fossil, biomass, electrolysis). For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Hydrogen|Fossil,billion US$2010/yr OR local currency,"investments for the production of hydrogen from the specified source. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Hydrogen|Other,billion US$2010/yr OR local currency,"investments for the production of hydrogen from the specified source. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Hydrogen|Renewable,billion US$2010/yr OR local currency,"investments for the production of hydrogen from the specified source. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Liquids,billion US$2010/yr or local currency/yr,"investments for the production of liquid fuels. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Liquids|Biomass,billion US$2010/yr OR local currency,"investments for the production of biofuels. These should not include the costs of the feedstock. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Liquids|Coal and Gas,billion US$2010/yr OR local currency,"investments for the production of fossil-based synfuels (coal and gas). For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Liquids|Oil,billion US$2010/yr OR local currency,"investments for the production of fossil fuels from oil refineries For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." +Investment|Energy Supply|Other,billion US$2010/yr OR local currency,investments in other types of energy conversion facilities +Investment|Energy Supply|Other|Liquids|Oil|Transmission and Distribution,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Liquids|Oil|Other,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Gases|Transmission and Distribution,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Gases|Production,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Gases|Other,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Solids|Coal|Transmission and Distribution,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Solids|Coal|Other,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Solids|Biomass|Transmission and Distribution,billion US$2010/yr or local currency/yr, +Investment|Energy Supply|Other|Other,billion US$2010/yr or local currency/yr, +Investment|Infrastructure,billion US$2010/yr OR local currency,investment into infrastrucutre +Investment|Infrastructure|industry|Green,billion US$2010/yr OR local currency,"investment into industrial infrastructure (all types of new factories, plants, manufacturing facilities, etc. that are more efficient and utilize clean energy, as well as retrofits of non-green infrastructure to be more efficient and use clean energy)" +Investment|Infrastructure|industry|Non-Green,billion US$2010/yr OR local currency,"investment into industrial infrastructure (all types of new factories, plants, manufacturing facilities, etc. that are not overly efficient and do not utilize clean energy, as well as retrofits of non-green infrastructure that are neither efficient nor use clean energy)" +Investment|Infrastructure|Residential and Commercial|Building Retrofits,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of existing buildings that have been retrofitted to become more energy efficient) +Investment|Infrastructure|Residential and Commercial|High-Efficiency Buildings,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of new buildings that are relatively high in their energy efficiency) +Investment|Infrastructure|Residential and Commercial|Low-Efficiency Buildings,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of new buildings that are relatively low in their energy efficiency) +Investment|Infrastructure|Residential and Commercial|Medium-Efficiency Buildings,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of new buildings that are relatively medium-range in their energy efficiency) +Investment|Infrastructure|Transport,billion US$2010/yr OR local currency,"investment into transport infrastructure - both newly constructed and maintenance of existing (all types: roads, bridges, ports, railways, refueling stations and charging infrastructure, etc.). Please specify in the comments section the type of infastructure that is being referred to here." +Investment|Infrastructure|Water|Cooling,billion US$2010/yr OR local currency,investment into water-related infrastructure (thermal cooling at energy and industrial facilities) +Investment|Infrastructure|Water|Irrigation,billion US$2010/yr OR local currency,"investment into water-related infrastructure (conveyance of water via canals, aqueducts, irrigation ditches, pumps, etc.)" +Investment|Infrastructure|Water|Other,billion US$2010/yr OR local currency,investment into water-related infrastructure (other than for thermal cooling and irrigation) +Investment|Medical System,billion US$2010/yr OR local currency,investment to medical system +Investment|RnD|Energy Supply,billion US$2010/yr or local currency/yr,"Investments into research and development, energy supply sector" +Land Cover,million ha,total land cover +Land Cover|Built-up Area,million ha,total built-up land associated with human settlement +Land Cover|Cropland,million ha,"total arable land, i.e. land in bioenergy crop, food, and feed/fodder crops, permant crops as well as other arable land (physical area)" +Land Cover|Cropland|Cereals,million ha,"land dedicated to cereal crops: wheat, rice and coarse grains (maize, corn, millet, sorghum, barley, oats, rye)" +Land Cover|Cropland|Double-cropped,million ha,area of land that is double-cropped (twice in a year) +Land Cover|Cropland|Energy Crops,million ha,"land dedicated to energy crops (e.g., switchgrass, miscanthus, fast-growing wood species)" +Land Cover|Cropland|Energy Crops|Irrigated,million ha,"irrigated land dedicated to energy crops (e.g., switchgrass, miscanthus, fast-growing wood species)" +Land Cover|Cropland|Irrigated,million ha,"irrigated arable land, i.e. land in non-forest bioenergy crop, food, and feed/fodder crops, as well as other arable land (cultivated area)" +Land Cover|Cropland|Rainfed,million ha,area of land that is rain-fed +Land Cover|Forest,million ha,managed and unmanaged forest area +Land Cover|Forest|Afforestation and Reforestation,million ha,Area for afforestation and reforestation +Land Cover|Forest|Forestry|Harvested Area,million ha,Forest area harvested +Land Cover|Forest|Managed,million ha,"managed forests producing commercial wood supply for timber or energy (note: woody energy crops reported under ""energy crops"")" +Land Cover|Forest|Natural Forest,million ha,Undisturbed natural forests and modified natural forests +Land Cover|Other Arable Land,million ha,"other arable land that is unmanaged (e.g., grassland, savannah, shrubland), excluding unmanaged forests that are arable" +Land Cover|Other Land,million ha,other land cover that does not fit into any other category (please provide a definition of the sources in this category in the 'comments' tab) +Land Cover|Pasture,million ha,"pasture land. All categories of pasture land - not only high quality rangeland. Based on FAO definition of ""permanent meadows and pastures""" +Land Cover|Water Ecosystems|Forests,"%, ha",Land-use coverage of water-related ecosystem: forests +Land Cover|Water Ecosystems|Glaciers,"%, ha",Land-use coverage of water-related ecosystem: glaciers +Land Cover|Water Ecosystems|Lakes,"%, ha",Land-use coverage of water-related ecosystem: lakes +Land Cover|Water Ecosystems|Mountains,"%, ha",Land-use coverage of water-related ecosystem: mountains +Land Cover|Water Ecosystems|Wetlands,"%, ha",Land-use coverage of water-related ecosystem: wetlands +Lifetime|Electricity|Biomass|w/ CCS|1,years,"Lifetime of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Lifetimes for each represented CCS biomass power technology by adding variables Lifetime|Electricity|Biomass|w/ CCS|2, ... Lifetime|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Biomass|w/o CCS|1,years,"Lifetime of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Lifetimes for each represented biomass power technology by adding variables Lifetime|Electricity|Biomass|w/o CCS|2, ... Lifetime|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Biomass|w/o CCS|2,years,"Lifetime of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Lifetimes for each represented biomass power technology by adding variables Lifetime|Electricity|Biomass|w/o CCS|2, ... Lifetime|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Coal|w/ CCS|1,years,"Lifetime of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Lifetimes for each represented CCS coal power technology by adding variables Lifetime|Electricity|Coal|w/ CCS|2, ... Lifetime|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Coal|w/ CCS|2,years,"Lifetime of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Lifetimes for each represented CCS coal power technology by adding variables Lifetime|Electricity|Coal|w/ CCS|2, ... Lifetime|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Coal|w/o CCS|1,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Coal|w/o CCS|2,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Coal|w/o CCS|3,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Coal|w/o CCS|4,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Gas|w/ CCS|1,years,"Lifetime of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Lifetimes for each represented CCS gas power technology by adding variables Lifetime|Electricity|Gas|w/ CCS|2, ... Lifetime|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Gas|w/o CCS|1,years,"Lifetime of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Lifetimes for each represented gas power technology by adding variables Lifetime|Electricity|Gas|w/o CCS|2, ... Lifetime|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Gas|w/o CCS|2,years,"Lifetime of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Lifetimes for each represented gas power technology by adding variables Lifetime|Electricity|Gas|w/o CCS|2, ... Lifetime|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Gas|w/o CCS|3,years,"Lifetime of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Lifetimes for each represented gas power technology by adding variables Lifetime|Electricity|Gas|w/o CCS|2, ... Lifetime|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Geothermal,years,"Lifetime of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Lifetimes for each represented geothermal power technology by adding variables Lifetime|Electricity|Geothermal|2, ... Lifetime|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Hydro,years,"Lifetime of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Lifetimes for each represented hydropower technology by adding variables Lifetime|Electricity|Hydro|2, ... Lifetime|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Hydro|1,years,"Lifetime of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Lifetimes for each represented hydropower technology by adding variables Lifetime|Electricity|Hydro|2, ... Lifetime|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Hydro|2,years,"Lifetime of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Lifetimes for each represented hydropower technology by adding variables Lifetime|Electricity|Hydro|2, ... Lifetime|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Nuclear,years,"Lifetime of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Lifetimes for each represented nuclear power technology by adding variables Lifetime|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Nuclear|1,years,"Lifetime of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Lifetimes for each represented nuclear power technology by adding variables Lifetime|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Nuclear|2,years,"Lifetime of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Lifetimes for each represented nuclear power technology by adding variables Lifetime|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Ocean,years,Lifetime of operating ocean power plants +Lifetime|Electricity|Oil|w/ CCS,years,"Lifetime of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Lifetimes are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Lifetimes as documented in the comments sheet). " +Lifetime|Electricity|Oil|w/o CCS,years,Lifetime of a newoil plants +Lifetime|Electricity|Oil|w/o CCS|1,years,Lifetime of a newoil plants +Lifetime|Electricity|Oil|w/o CCS|2,years,Lifetime of a newoil plants +Lifetime|Electricity|Oil|w/o CCS|3,years,Lifetime of a newoil plants +Lifetime|Electricity|Solar|CSP|1,years,"Lifetime of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Lifetimes for each represented CSP technology by adding variables Lifetime|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Solar|CSP|2,years, +Lifetime|Electricity|Solar|PV,years,"Lifetime of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Lifetimes for each represented PV technology by adding variables Lifetime|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Wind|Offshore,years,"Lifetime of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Lifetimes for each represented wind power technology by adding variables Lifetime|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Electricity|Wind|Onshore,years,"Lifetime of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Lifetimes for each represented wind power technology by adding variables Lifetime|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Gases|Biomass|w/ CCS,years,"Lifetime of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Lifetimes for each represented CCS biomass to gas technology by adding variables Lifetime|Gases|Biomass|w/ CCS|2, ... Lifetime|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Gases|Biomass|w/o CCS,years,"Lifetime of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Lifetimes for each represented biomass to gas technology by adding variables Lifetime|Gases|Biomass|w/o CCS|2, ... Lifetime|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Gases|Coal|w/ CCS,years,"Lifetime of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Lifetimes for each represented CCS coal to gas technology by adding variables Lifetime|Gases|Coal|w/ CCS|2, ... Lifetime|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Gases|Coal|w/o CCS,years,"Lifetime of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Lifetimes for each represented coal to gas technology by adding variables Lifetime|Gases|Coal|w/o CCS|2, ... Lifetime|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Hydrogen|Biomass|w/ CCS,years,"Lifetime of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Lifetimes for each represented CCS biomass to hydrogen technology by adding variables Lifetime|Hydrogen|Biomass|w/ CCS|2, ... Lifetime|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Hydrogen|Biomass|w/o CCS,years,"Lifetime of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Lifetimes for each represented biomass to hydrogen technology by adding variables Lifetime|Hydrogen|Biomass|w/o CCS|2, ... Lifetime|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Hydrogen|Coal|w/ CCS,years,"Lifetime of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Lifetimes for each represented CCS coal to hydrogen technology by adding variables Lifetime|Hydrogen|Coal|w/ CCS|2, ... Lifetime|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Hydrogen|Coal|w/o CCS,years,"Lifetime of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Lifetimes for each represented coal to hydrogen technology by adding variables Lifetime|Hydrogen|Coal|w/o CCS|2, ... Lifetime|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Hydrogen|Electricity,years,"Lifetime of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Lifetimes for each represented hydrogen-by-electrolysis technology by adding variables Lifetime|Hydrogen|Electricity|2, ... Lifetime|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Hydrogen|Gas|w/ CCS,years,"Lifetime of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Lifetimes for each represented CCS gas to hydrogen technology by adding variables Lifetime|Hydrogen|Gas|w/ CCS|2, ... Lifetime|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Hydrogen|Gas|w/o CCS,years,"Lifetime of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Lifetimes for each represented gas to hydrogen technology by adding variables Lifetime|Hydrogen|Gas|w/o CCS|2, ... Lifetime|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Biomass|w/ CCS,years,"Lifetime of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Lifetimes for each represented CCS BTL technology by adding variables Lifetime|Liquids|Biomass|w/ CCS|2, ... Lifetime|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Biomass|w/ CCS|1,years,"Lifetime of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Lifetimes for each represented CCS BTL technology by adding variables Lifetime|Liquids|Biomass|w/ CCS|2, ... Lifetime|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Biomass|w/ CCS|2,years,"Lifetime of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Lifetimes for each represented CCS BTL technology by adding variables Lifetime|Liquids|Biomass|w/ CCS|2, ... Lifetime|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Biomass|w/o CCS,years,"Lifetime of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Lifetimes for each represented BTL technology by adding variables Lifetime|Liquids|Biomass|w/o CCS|2, ... Lifetime|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Biomass|w/o CCS|1,years,"Lifetime of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Lifetimes for each represented BTL technology by adding variables Lifetime|Liquids|Biomass|w/o CCS|2, ... Lifetime|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Biomass|w/o CCS|2,years,"Lifetime of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Lifetimes for each represented BTL technology by adding variables Lifetime|Liquids|Biomass|w/o CCS|2, ... Lifetime|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Coal|w/ CCS,years,"Lifetime of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Lifetimes for each represented CCS CTL technology by adding variables Lifetime|Liquids|Coal|w/ CCS|2, ... Lifetime|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Coal|w/ CCS|1,years,"Lifetime of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Lifetimes for each represented CCS CTL technology by adding variables Lifetime|Liquids|Coal|w/ CCS|2, ... Lifetime|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Coal|w/ CCS|2,years,"Lifetime of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Lifetimes for each represented CCS CTL technology by adding variables Lifetime|Liquids|Coal|w/ CCS|2, ... Lifetime|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Coal|w/o CCS,years,"Lifetime of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Lifetimes for each represented CTL technology by adding variables Lifetime|Liquids|Coal|w/o CCS|2, ... Lifetime|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Coal|w/o CCS|1,years,"Lifetime of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Lifetimes for each represented CTL technology by adding variables Lifetime|Liquids|Coal|w/o CCS|2, ... Lifetime|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Coal|w/o CCS|2,years,"Lifetime of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Lifetimes for each represented CTL technology by adding variables Lifetime|Liquids|Coal|w/o CCS|2, ... Lifetime|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Gas|w/ CCS,years,"Lifetime of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Lifetimes for each represented CCS GTL technology by adding variables Lifetime|Liquids|Gas|w/ CCS|2, ... Lifetime|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Gas|w/o CCS,years,"Lifetime of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Lifetimes for each represented GTL technology by adding variables Lifetime|Liquids|Gas|w/o CCS|2, ... Lifetime|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Oil|w/ CCS,years,"Lifetime of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Oil|w/ CCS|1,years,"Lifetime of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Oil|w/o CCS,years,"Lifetime of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Oil|w/o CCS|1,years,"Lifetime of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Lifetime|Liquids|Oil|w/o CCS|2,years,"Lifetime of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Material Consumption|Domestic,Mt/year,Domestic material consumption +OM Cost|Fixed|Electricity|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS biomass power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Annual fixed operation & maintainance costs for each represented CCS coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Annual fixed operation & maintainance costs for each represented CCS coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Coal|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Coal|w/o CCS|4,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Gas|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Gas|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Gas|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Gas|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Geothermal,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented geothermal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Geothermal|2, ... Annual fixed operation & maintainance cost|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Hydro,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydropower technology by adding variables Annual fixed operation & maintainance cost|Electricity|Hydro|2, ... Annual fixed operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Hydro|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydropower technology by adding variables Annual fixed operation & maintainance cost|Electricity|Hydro|2, ... Annual fixed operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Hydro|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydropower technology by adding variables Annual fixed operation & maintainance cost|Electricity|Hydro|2, ... Annual fixed operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Nuclear,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Annual fixed operation & maintainance costs for each represented nuclear power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Nuclear|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Annual fixed operation & maintainance costs for each represented nuclear power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Nuclear|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Annual fixed operation & maintainance costs for each represented nuclear power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Ocean,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of operating ocean power plants +OM Cost|Fixed|Electricity|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Annual fixed operation & maintainance costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Annual fixed operation & maintainance costs as documented in the comments sheet). " +OM Cost|Fixed|Electricity|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants +OM Cost|Fixed|Electricity|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants +OM Cost|Fixed|Electricity|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants +OM Cost|Fixed|Electricity|Oil|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants +OM Cost|Fixed|Electricity|Solar|CSP|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Annual fixed operation & maintainance costs for each represented CSP technology by adding variables Annual fixed operation & maintainance cost|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Solar|CSP|2,US$2010/kW/yr OR local currency/kW/yr, +OM Cost|Fixed|Electricity|Solar|PV,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Annual fixed operation & maintainance costs for each represented PV technology by adding variables Annual fixed operation & maintainance cost|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Storage,US$2010/kW/yr OR local currency/kW/yr, +OM Cost|Fixed|Electricity|Wind|Offshore,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Annual fixed operation & maintainance costs for each represented wind power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Electricity|Wind|Onshore,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Annual fixed operation & maintainance costs for each represented wind power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Gases|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS biomass to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Gases|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Gases|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS coal to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Gases|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented coal to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Hydrogen|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS biomass to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Hydrogen|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Hydrogen|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS coal to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Hydrogen|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented coal to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Hydrogen|Electricity,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydrogen-by-electrolysis technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Electricity|2, ... Annual fixed operation & maintainance cost|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Hydrogen|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS gas to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Gas|w/ CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Hydrogen|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Biomass|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS GTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Gas|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented GTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Oil|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Fixed|Liquids|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS biomass power technology by adding variables Variable operation & maintainance cost|Electricity|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass power technology by adding variables Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass power technology by adding variables Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Variable operation & maintainance costs for each represented CCS coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Variable operation & maintainance costs for each represented CCS coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Coal|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Coal|w/o CCS|4,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Gas|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Gas|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Gas|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Gas|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Geothermal,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Variable operation & maintainance costs for each represented geothermal power technology by adding variables Variable operation & maintainance cost|Electricity|Geothermal|2, ... Variable operation & maintainance cost|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Hydro,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydropower technology by adding variables Variable operation & maintainance cost|Electricity|Hydro|2, ... Variable operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Hydro|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydropower technology by adding variables Variable operation & maintainance cost|Electricity|Hydro|2, ... Variable operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Hydro|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydropower technology by adding variables Variable operation & maintainance cost|Electricity|Hydro|2, ... Variable operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Nuclear,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Variable operation & maintainance costs for each represented nuclear power technology by adding variables Variable operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Nuclear|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Variable operation & maintainance costs for each represented nuclear power technology by adding variables Variable operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Nuclear|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Variable operation & maintainance costs for each represented nuclear power technology by adding variables Variable operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Ocean,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of operating ocean power plants +OM Cost|Variable|Electricity|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Variable operation & maintainance costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Variable operation & maintainance costs as documented in the comments sheet). " +OM Cost|Variable|Electricity|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants +OM Cost|Variable|Electricity|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants +OM Cost|Variable|Electricity|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants +OM Cost|Variable|Electricity|Oil|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants +OM Cost|Variable|Electricity|Solar|CSP|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Variable operation & maintainance costs for each represented CSP technology by adding variables Variable operation & maintainance cost|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Solar|CSP|2,US$2010/kW/yr OR local currency/kW/yr, +OM Cost|Variable|Electricity|Solar|PV,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Variable operation & maintainance costs for each represented PV technology by adding variables Variable operation & maintainance cost|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Storage,US$2010/kW/yr OR local currency/kW/yr, +OM Cost|Variable|Electricity|Wind|Offshore,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Variable operation & maintainance costs for each represented wind power technology by adding variables Variable operation & maintainance cost|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Electricity|Wind|Onshore,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Variable operation & maintainance costs for each represented wind power technology by adding variables Variable operation & maintainance cost|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Gases|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS biomass to gas technology by adding variables Variable operation & maintainance cost|Gases|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Gases|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass to gas technology by adding variables Variable operation & maintainance cost|Gases|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Gases|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS coal to gas technology by adding variables Variable operation & maintainance cost|Gases|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Gases|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented coal to gas technology by adding variables Variable operation & maintainance cost|Gases|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Hydrogen|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS biomass to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Hydrogen|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Hydrogen|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS coal to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Hydrogen|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented coal to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Hydrogen|Electricity,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydrogen-by-electrolysis technology by adding variables Variable operation & maintainance cost|Hydrogen|Electricity|2, ... Variable operation & maintainance cost|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Hydrogen|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS gas to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Gas|w/ CCS|2, ... Variable operation & maintainance cost|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Hydrogen|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Biomass|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS GTL technology by adding variables Variable operation & maintainance cost|Liquids|Gas|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented GTL technology by adding variables Variable operation & maintainance cost|Liquids|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Oil|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +OM Cost|Variable|Liquids|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " +Policy Cost|Additional Total Energy System Cost,billion US$2010/yr OR local currency/yr,additional energy system cost associated with the policy +Policy Cost|Area under MAC Curve,billion US$2010/yr OR local currency/yr,"total costs of the policy, i.e. the area under the Marginal Abatement Cost (MAC) curve" +Policy Cost|Consumption Loss,billion US$2010/yr OR local currency/yr,consumption loss in a policy scenario compared to the corresponding baseline (losses should be reported as positive numbers) +Policy Cost|Default for CAV,billion US$2010/yr OR local currency/yr,"total costs of the policy in the default metric (consumption losses for GE models, area under MAC curve for PE models if available) to be used for calculation of Cost over Abatement Value (CAV) indicator. Must be identical to the policy costs in one of the reported metrics. " +Policy Cost|Equivalent Variation,billion US$2010/yr OR local currency/yr,equivalent variation associated with the given policy +Policy Cost|GDP Loss,billion US$2010/yr OR local currency/yr,GDP loss in a policy scenario compared to the corresponding baseline (losses should be reported as positive numbers) +Policy Cost|Other,billion US$2010/yr OR local currency/yr,"any other indicator of policy cost (e.g., compensated variation). (please indicate what type of policy cost is measured on the 'comments' tab)" +Policy Cost|Welfare Change,billion US$2010/yr OR local currency,Policy cost for welfare change +Population,million,Total population +Population|Drinking Water Access,Million,Population with access to improved drinking water sources (by income level) +Population|Mobile Network Access,Million,population covered by a mobile network +Population|Risk of Hunger,Million,"Population at risk of hunger, calculated by multipling total population and prevalence of undernourishment which is computed from a probability distribution of daily dietary energy consumption and minimum dietary energy requirement." +Population|Road Access,Million,population living within 2 km of an all-season road +Population|Rural,million,Total population living in rural areas +Population|Sanitation Acces,Million,Population with access to improved sanitation (by income level) +Population|Urban,million,Total population living in urban areas +Population|Working Age,million,Total working age population (age 15-65 years) +Price|Agriculture|Corn|Index,Index (2005 = 1),price index of corn +Price|Agriculture|Non-Energy Crops and Livestock|Index,Index (2005 = 1),weighted average price index of non-energy crops and livestock products +Price|Agriculture|Non-Energy Crops|Index,Index (2005 = 1),weighted average price index of non-energy crops +Price|Agriculture|Soybean|Index,Index (2005 = 1),price index of soybean +Price|Agriculture|Wheat|Index,Index (2005 = 1),price index of wheat +Price|Carbon,US$2010/t CO2 or local currency/t CO2,price of carbon (for regional aggregrates the weighted price of carbon by subregion should be used) +Price|Final Energy|Residential|Electricity,US$2010/GJ or local currency/GJ,electricity price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy|Residential|Gases|Natural Gas,US$2010/GJ or local currency/GJ,natural gas price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy|Residential|Liquids|Biomass,US$2010/GJ or local currency/GJ,biofuel price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy|Residential|Liquids|Oil,US$2010/GJ or local currency/GJ,light fuel oil price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy|Residential|Solids|Biomass,US$2010/GJ or local currency/GJ,biomass price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy|Residential|Solids|Coal,US$2010/GJ or local currency/GJ,coal price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Primary Energy|Biomass,US$2010/GJ or local currency/GJ,biomass producer price +Price|Primary Energy|Coal,US$2010/GJ or local currency/GJ,coal price at the primary level (i.e. the spot price at the global or regional market) +Price|Primary Energy|Gas,US$2010/GJ or local currency/GJ,natural gas price at the primary level (i.e. the spot price at the global or regional market) +Price|Primary Energy|Oil,US$2010/GJ or local currency/GJ,crude oil price at the primary level (i.e. the spot price at the global or regional market) +Price|Secondary Energy|Electricity,US$2010/GJ or local currency/GJ,"electricity price at the secondary level, i.e. for large scale consumers (e.g. aluminum production). Prices should include the effect of carbon prices." +Price|Secondary Energy|Gases|Natural Gas,US$2010/GJ or local currency/GJ,"natural gas price at the secondary level, i.e. for large scale consumers (e.g. gas power plant). Prices should include the effect of carbon prices." +Price|Secondary Energy|Hydrogen,US$2010/GJ or local currency/GJ,hydrogen price at the secondary level. Prices should include the effect of carbon prices +Price|Secondary Energy|Liquids,US$2010/GJ or local currency/GJ,"liquid fuel price at the secondary level, i.e. petrol, diesel, or weighted average" +Price|Secondary Energy|Liquids|Biomass,US$2010/GJ or local currency/GJ,"biofuel price at the secondary level, i.e. for biofuel consumers" +Price|Secondary Energy|Liquids|Oil,US$2010/GJ or local currency/GJ,"light fuel oil price at the secondary level, i.e. for large scale consumers (e.g. oil power plant). Prices should include the effect of carbon prices." +Price|Secondary Energy|Solids|Biomass,US$2010/GJ or local currency/GJ,"biomass price at the secondary level, i.e. for large scale consumers (e.g. biomass power plant). Prices should include the effect of carbon prices." +Price|Secondary Energy|Solids|Coal,US$2010/GJ or local currency/GJ,"coal price at the secondary level, i.e. for large scale consumers (e.g. coal power plant). Prices should include the effect of carbon prices." +Price|Final Energy wo carbon price|Residential|Electricity,US$2010/GJ or local currency/GJ,electricity price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy wo carbon price|Residential|Gases|Natural Gas,US$2010/GJ or local currency/GJ,natural gas price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy wo carbon price|Residential|Liquids|Biomass,US$2010/GJ or local currency/GJ,biofuel price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy wo carbon price|Residential|Liquids|Oil,US$2010/GJ or local currency/GJ,light fuel oil price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy wo carbon price|Residential|Solids|Biomass,US$2010/GJ or local currency/GJ,biomass price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Final Energy wo carbon price|Residential|Solids|Coal,US$2010/GJ or local currency/GJ,coal price at the final level in the residential sector. Prices should include the effect of carbon prices. +Price|Primary Energy w carbon price|Biomass,US$2010/GJ or local currency/GJ,biomass producer price +Price|Primary Energy w carbon price|Coal,US$2010/GJ or local currency/GJ,coal price at the primary level (i.e. the spot price at the global or regional market) +Price|Primary Energy w carbon price|Gas,US$2010/GJ or local currency/GJ,natural gas price at the primary level (i.e. the spot price at the global or regional market) +Price|Primary Energy w carbon price|Oil,US$2010/GJ or local currency/GJ,crude oil price at the primary level (i.e. the spot price at the global or regional market) +Price|Secondary Energy w carbon price|Electricity,US$2010/GJ or local currency/GJ,"electricity price at the secondary level, i.e. for large scale consumers (e.g. aluminum production). Prices should include the effect of carbon prices." +Price|Secondary Energy w carbon price|Gases|Natural Gas,US$2010/GJ or local currency/GJ,"natural gas price at the secondary level, i.e. for large scale consumers (e.g. gas power plant). Prices should include the effect of carbon prices." +Price|Secondary Energy w carbon price|Hydrogen,US$2010/GJ or local currency/GJ,hydrogen price at the secondary level. Prices should include the effect of carbon prices +Price|Secondary Energy w carbon price|Liquids,US$2010/GJ or local currency/GJ,"liquid fuel price at the secondary level, i.e. petrol, diesel, or weighted average" +Price|Secondary Energy w carbon price|Liquids|Biomass,US$2010/GJ or local currency/GJ,"biofuel price at the secondary level, i.e. for biofuel consumers" +Price|Secondary Energy w carbon price|Liquids|Oil,US$2010/GJ or local currency/GJ,"light fuel oil price at the secondary level, i.e. for large scale consumers (e.g. oil power plant). Prices should include the effect of carbon prices." +Price|Secondary Energy w carbon price|Solids|Biomass,US$2010/GJ or local currency/GJ,"biomass price at the secondary level, i.e. for large scale consumers (e.g. biomass power plant). Prices should include the effect of carbon prices." +Price|Secondary Energy w carbon price|Solids|Coal,US$2010/GJ or local currency/GJ,"coal price at the secondary level, i.e. for large scale consumers (e.g. coal power plant). Prices should include the effect of carbon prices." +Primary Energy,EJ/yr,total primary energy consumption (direct equivalent) +Primary Energy|Biomass,EJ/yr,"primary energy consumption of purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass" +Primary Energy|Biomass|1st Generation,EJ/yr,"biomass primary energy from 1st generation biofuel crops (e.g., sugar cane, rapeseed oil, maize, sugar beet)" +Primary Energy|Biomass|Electricity,EJ/yr,"primary energy input to electricity generation of purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass" +Primary Energy|Biomass|Electricity|w/ CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy input to electricity generation used in combination with CCS" +Primary Energy|Biomass|Electricity|w/o CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy input to electricity generation without CCS" +Primary Energy|Biomass|Energy Crops,EJ/yr,biomass primary energy from purpose-grown bioenergy crops +Primary Energy|Biomass|Gases,EJ/yr, +Primary Energy|Biomass|Hydrogen,EJ/yr, +Primary Energy|Biomass|Liquids,EJ/yr, +Primary Energy|Biomass|Modern,EJ/yr,"modern biomass primary energy consumption, including purpose-grown bioenergy crops, crop and forestry residue bioenergy and municipal solid waste bioenergy" +Primary Energy|Biomass|Residues,EJ/yr,biomass primary energy from residues +Primary Energy|Biomass|Solids,EJ/yr, +Primary Energy|Biomass|Traditional,EJ/yr,traditional biomass primary energy consumption +Primary Energy|Biomass|w/ CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption used in combination with CCS" +Primary Energy|Biomass|w/o CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption without CCS" +Primary Energy|Coal,EJ/yr,coal primary energy consumption +Primary Energy|Coal|Electricity,EJ/yr,coal primary energy input to electricity generation +Primary Energy|Coal|Electricity|w/ CCS,EJ/yr,coal primary energy input to electricity generation used in combination with CCS +Primary Energy|Coal|Electricity|w/o CCS,EJ/yr,coal primary energy input to electricity generation without CCS +Primary Energy|Coal|Gases,EJ/yr, +Primary Energy|Coal|Hydrogen,EJ/yr, +Primary Energy|Coal|Liquids,EJ/yr, +Primary Energy|Coal|Solids,EJ/yr, +Primary Energy|Coal|w/ CCS,EJ/yr,coal primary energy consumption used in combination with CCS +Primary Energy|Coal|w/o CCS,EJ/yr,coal primary energy consumption without CCS +Primary Energy|Fossil,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption" +Primary Energy|Fossil|w/ CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption used in combination with CCS" +Primary Energy|Fossil|w/o CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption without CCS" +Primary Energy|Gas,EJ/yr,gas primary energy consumption +Primary Energy|Gas|Electricity,EJ/yr,gas primary energy input to electricity generation +Primary Energy|Gas|Electricity|w/ CCS,EJ/yr,gas primary energy input to electricity generation used in combination with CCS +Primary Energy|Gas|Electricity|w/o CCS,EJ/yr,gas primary energy input to electricity generation without CCS +Primary Energy|Gas|Gases,EJ/yr, +Primary Energy|Gas|Hydrogen,EJ/yr, +Primary Energy|Gas|Liquids,EJ/yr, +Primary Energy|Gas|Solids,EJ/yr, +Primary Energy|Gas|w/ CCS,EJ/yr,gas primary energy consumption used in combination with CCS +Primary Energy|Gas|w/o CCS,EJ/yr,gas primary energy consumption without CCS +Primary Energy|Geothermal,EJ/yr,total geothermal primary energy consumption +Primary Energy|Hydro,EJ/yr,total hydro primary energy consumption +Primary Energy|Non-Biomass Renewables,EJ/yr,"non-biomass renewable primary energy consumption (direct equivalent, includes hydro electricity, wind electricity, geothermal electricity and heat, solar electricity and heat and hydrogen, ocean energy)" +Primary Energy|Nuclear,EJ/yr,"nuclear primary energy consumption (direct equivalent, includes electricity, heat and hydrogen production from nuclear energy)" +Primary Energy|Ocean,EJ/yr,total ocean primary energy consumption +Primary Energy|Oil,EJ/yr,conventional & unconventional oil primary energy consumption +Primary Energy|Oil|Electricity,EJ/yr,conventional & unconventional oil primary energy input to electricity generation +Primary Energy|Oil|Electricity|w/ CCS,EJ/yr,conventional & unconventional oil primary energy input to electricity generation used in combination with CCS +Primary Energy|Oil|Electricity|w/o CCS,EJ/yr,conventional & unconventional oil primary energy input to electricity generation without CCS +Primary Energy|Oil|Gases,EJ/yr, +Primary Energy|Oil|Hydrogen,EJ/yr, +Primary Energy|Oil|Liquids,EJ/yr, +Primary Energy|Oil|Solids,EJ/yr, +Primary Energy|Oil|w/ CCS,EJ/yr,conventional & unconventional oil primary energy consumption used in combination with CCS +Primary Energy|Oil|w/o CCS,EJ/yr,conventional & unconventional oil primary energy consumption without CCS +Primary Energy|Other,EJ/yr,"primary energy consumption from sources that do not fit to any other category (direct equivalent, please provide a definition of the sources in this category in the 'comments' tab)" +Primary Energy|Secondary Energy Trade,EJ/yr,"trade in secondary energy carriers that cannot be unambiguoulsy mapped to one of the existing primary energy categories (e.g. electricity, hydrogen, fossil synfuels, negative means net exports)" +Primary Energy|Solar,EJ/yr,total solar primary energy consumption +Primary Energy|Wind,EJ/yr,total wind primary energy consumption +Primary Energy (substitution method),EJ/yr,total primary energy consumption (direct equivalent) +Primary Energy (substitution method)|Biomass,EJ/yr,"primary energy consumption of purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass" +Primary Energy (substitution method)|Biomass|w/ CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption used in combination with CCS" +Primary Energy (substitution method)|Biomass|w/o CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption without CCS" +Primary Energy (substitution method)|Coal,EJ/yr,coal primary energy consumption +Primary Energy (substitution method)|Coal|w/ CCS,EJ/yr,coal primary energy consumption used in combination with CCS +Primary Energy (substitution method)|Coal|w/o CCS,EJ/yr,coal primary energy consumption without CCS +Primary Energy (substitution method)|Fossil,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption" +Primary Energy (substitution method)|Fossil|w/ CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption used in combination with CCS" +Primary Energy (substitution method)|Fossil|w/o CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption without CCS" +Primary Energy (substitution method)|Gas,EJ/yr,gas primary energy consumption +Primary Energy (substitution method)|Gas|w/ CCS,EJ/yr,gas primary energy consumption used in combination with CCS +Primary Energy (substitution method)|Gas|w/o CCS,EJ/yr,gas primary energy consumption without CCS +Primary Energy (substitution method)|Geothermal,EJ/yr,total geothermal primary energy consumption +Primary Energy (substitution method)|Hydro,EJ/yr,total hydro primary energy consumption +Primary Energy (substitution method)|Non-Biomass Renewables,EJ/yr,"non-biomass renewable primary energy consumption (direct equivalent, includes hydro electricity, wind electricity, geothermal electricity and heat, solar electricity and heat and hydrogen, ocean energy)" +Primary Energy (substitution method)|Nuclear,EJ/yr,"nuclear primary energy consumption (direct equivalent, includes electricity, heat and hydrogen production from nuclear energy)" +Primary Energy (substitution method)|Ocean,EJ/yr,total ocean primary energy consumption +Primary Energy (substitution method)|Oil,EJ/yr,conventional & unconventional oil primary energy consumption +Primary Energy (substitution method)|Oil|w/ CCS,EJ/yr,conventional & unconventional oil primary energy consumption used in combination with CCS +Primary Energy (substitution method)|Oil|w/o CCS,EJ/yr,conventional & unconventional oil primary energy consumption without CCS +Primary Energy (substitution method)|Other,EJ/yr,"primary energy consumption from sources that do not fit to any other category (direct equivalent, please provide a definition of the sources in this category in the 'comments' tab)" +Primary Energy (substitution method)|Secondary Energy Trade,EJ/yr,"trade in secondary energy carriers that cannot be unambiguoulsy mapped to one of the existing primary energy categories (e.g. electricity, hydrogen, fossil synfuels, negative means net exports)" +Primary Energy (substitution method)|Solar,EJ/yr,total solar primary energy consumption +Primary Energy (substitution method)|Wind,EJ/yr,total wind primary energy consumption +Production|Cement,Mt/year, +Production|Chemicals,Mt/year, +Production|Non-ferrous metals,Mt/year, +Production|Pulp and Paper,Mt/year, +Production|Steel,Mt/year, +Reservoir Capacity|Electricity|Storage,GWh,"reservoir size of electricity storage technologies (e.g. pumped hydro, compressed air storage, flow batteries)" +Resource|Cumulative Extraction,ZJ, +Resource|Cumulative Extraction|Coal,ZJ, +Resource|Cumulative Extraction|Gas,ZJ, +Resource|Cumulative Extraction|Gas|Conventional,ZJ, +Resource|Cumulative Extraction|Gas|Unconventional,ZJ, +Resource|Cumulative Extraction|Oil,ZJ, +Resource|Cumulative Extraction|Oil|Conventional,ZJ, +Resource|Cumulative Extraction|Oil|Unconventional,ZJ, +Resource|Cumulative Extraction|Uranium,ktU, +Resource|Extraction,EJ/yr, +Resource|Extraction|Coal,EJ/yr, +Resource|Extraction|Gas,EJ/yr, +Resource|Extraction|Gas|Conventional,EJ/yr, +Resource|Extraction|Gas|Unconventional,EJ/yr, +Resource|Extraction|Oil,EJ/yr, +Resource|Extraction|Oil|Conventional,EJ/yr, +Resource|Extraction|Oil|Unconventional,EJ/yr, +Resource|Remaining,ZJ, +Resource|Remaining|Coal,ZJ, +Resource|Remaining|Gas,ZJ, +Resource|Remaining|Gas|Conventional,ZJ, +Resource|Remaining|Gas|Unconventional,ZJ, +Resource|Remaining|Oil,ZJ, +Resource|Remaining|Oil|Conventional,ZJ, +Resource|Remaining|Oil|Unconventional,ZJ, +Revenue|Government,billion US$2010/yr OR local currency,Government revenue +Revenue|Government|Tax,billion US$2010/yr OR local currency,Government revenue from taxes +Secondary Energy|Electricity,EJ/yr,total net electricity production +Secondary Energy|Electricity|Biomass,EJ/yr,"net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" +Secondary Energy|Electricity|Biomass|w/ CCS,EJ/yr,"net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" +Secondary Energy|Electricity|Biomass|w/o CCS,EJ/yr,"net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" +Secondary Energy|Electricity|Coal,EJ/yr,net electricity production from coal +Secondary Energy|Electricity|Coal|w/ CCS,EJ/yr,net electricity production from coal with a CO2 capture component +Secondary Energy|Electricity|Coal|w/o CCS,EJ/yr,net electricity production from coal with freely vented CO2 emissions +Secondary Energy|Electricity|Curtailment,EJ/yr,curtailment of electricity production due to oversupply from variable renewable sources (typically from wind and solar) +Secondary Energy|Electricity|Fossil,EJ/yr,"net electricity production from coal, gas, conventional and unconventional oil" +Secondary Energy|Electricity|Fossil|w/ CCS,EJ/yr,"net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" +Secondary Energy|Electricity|Fossil|w/o CCS,EJ/yr,"net electricity production from coal, gas, conventional and unconventional oil without CCS" +Secondary Energy|Electricity|Gas,EJ/yr,net electricity production from natural gas +Secondary Energy|Electricity|Gas|w/ CCS,EJ/yr,net electricity production from natural gas with a CO2 capture component +Secondary Energy|Electricity|Gas|w/o CCS,EJ/yr,net electricity production from natural gas with freely vented CO2 emissions +Secondary Energy|Electricity|Geothermal,EJ/yr,"net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" +Secondary Energy|Electricity|Hydro,EJ/yr,net hydroelectric production +Secondary Energy|Electricity|Non-Biomass Renewables,EJ/yr,"net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." +Secondary Energy|Electricity|Nuclear,EJ/yr,net electricity production from nuclear energy +Secondary Energy|Electricity|Ocean,EJ/yr,"net electricity production from all sources of ocean energy (e.g., tidal, wave, ocean thermal electricity generation)" +Secondary Energy|Electricity|Oil,EJ/yr,net electricity production from refined liquids +Secondary Energy|Electricity|Oil|w/ CCS,EJ/yr,net electricity production from refined liquids with a CO2 capture component +Secondary Energy|Electricity|Oil|w/o CCS,EJ/yr,net electricity production from refined liquids with freely vented CO2 emissions +Secondary Energy|Electricity|Other,EJ/yr,net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Secondary Energy|Electricity|Solar,EJ/yr,"net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" +Secondary Energy|Electricity|Solar|CSP,EJ/yr,net electricity production from concentrating solar power (CSP) +Secondary Energy|Electricity|Solar|PV,EJ/yr,net electricity production from solar photovoltaics (PV) +Secondary Energy|Electricity|Solar|PV|Curtailment,EJ/yr, +Secondary Energy|Electricity|Storage Losses,EJ/yr,losses from electricity storage +Secondary Energy|Electricity|Transmission Losses,EJ/yr,electricity losses from long-range high-voltage transmission +Secondary Energy|Electricity|Wind,EJ/yr,net electricity production from wind energy (on- and offshore) +Secondary Energy|Electricity|Wind|Offshore,EJ/yr,net electricity production from offshore wind energy +Secondary Energy|Electricity|Wind|Onshore,EJ/yr,net electricity production from onshore wind energy +Secondary Energy|Electricity|Wind|Curtailment,EJ/yr, +Secondary Energy|Gases,EJ/yr,"total production of gaseous fuels, including natural gas" +Secondary Energy|Gases|Biomass,EJ/yr,total production of biogas +Secondary Energy|Gases|Coal,EJ/yr,total production of coal gas from coal gasification +Secondary Energy|Gases|Natural Gas,EJ/yr,total production of natural gas +Secondary Energy|Gases|Other,EJ/yr,total production of gases from sources that do not fit any other category +Secondary Energy|Heat,EJ/yr,total centralized heat generation +Secondary Energy|Heat|Biomass,EJ/yr,centralized heat generation from biomass +Secondary Energy|Heat|Coal,EJ/yr,centralized heat generation from coal +Secondary Energy|Heat|Gas,EJ/yr,centralized heat generation from gases +Secondary Energy|Heat|Geothermal,EJ/yr,centralized heat generation from geothermal energy EXCLUDING geothermal heat pumps +Secondary Energy|Heat|Nuclear,EJ/yr,centralized heat generation from nuclear energy +Secondary Energy|Heat|Oil,EJ/yr,centralized heat generation from oil products +Secondary Energy|Heat|Other,EJ/yr,centralized heat generation from sources that do not fit any other category (please provide a definition of the sources in this category in the 'comments' tab) +Secondary Energy|Heat|Solar,EJ/yr,centralized heat generation from solar energy +Secondary Energy|Hydrogen,EJ/yr,total hydrogen production +Secondary Energy|Hydrogen|Biomass,EJ/yr,hydrogen production from biomass +Secondary Energy|Hydrogen|Biomass|w/ CCS,EJ/yr,hydrogen production from biomass with a CO2 capture component +Secondary Energy|Hydrogen|Biomass|w/o CCS,EJ/yr,hydrogen production from biomass with freely vented CO2 emissions +Secondary Energy|Hydrogen|Coal,EJ/yr,hydrogen production from coal +Secondary Energy|Hydrogen|Coal|w/ CCS,EJ/yr,hydrogen production from coal with a CO2 capture component +Secondary Energy|Hydrogen|Coal|w/o CCS,EJ/yr,hydrogen production from coal with freely vented CO2 emissions +Secondary Energy|Hydrogen|Electricity,EJ/yr,hydrogen production from electricity via electrolysis +Secondary Energy|Hydrogen|Fossil,EJ/yr,hydrogen production from fossil fuels +Secondary Energy|Hydrogen|Fossil|w/ CCS,EJ/yr,hydrogen production from fossil fuels with a CO2 capture component +Secondary Energy|Hydrogen|Fossil|w/o CCS,EJ/yr,hydrogen production from fossil fuels with freely vented CO2 emissions +Secondary Energy|Hydrogen|Gas,EJ/yr,hydrogen production from gas +Secondary Energy|Hydrogen|Gas|w/ CCS,EJ/yr,hydrogen production from natural gas with a CO2 capture component +Secondary Energy|Hydrogen|Gas|w/o CCS,EJ/yr,hydrogen production from natural gas with freely vented CO2 emissions +Secondary Energy|Hydrogen|Nuclear,EJ/yr,total hydrogen production from nuclear energy (e.g. thermochemical water splitting with nucelar heat) +Secondary Energy|Hydrogen|Oil,EJ/yr,hydrogen production from oil +Secondary Energy|Hydrogen|Other,EJ/yr,hydrogen production from other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Secondary Energy|Hydrogen|Solar,EJ/yr,total hydrogen production from solar energy (e.g. thermalchemical water splitting with solar heat) +Secondary Energy|Liquids,EJ/yr,"total production of refined liquid fuels from all energy sources (incl. oil products, synthetic fossil fuels from gas and coal, biofuels)" +Secondary Energy|Liquids|Biomass,EJ/yr,total liquid biofuels production +Secondary Energy|Liquids|Biomass|1st Generation,EJ/yr,"liquid biofuels production from 1st generation technologies, relying on e.g. corn, sugar, oil " +Secondary Energy|Liquids|Biomass|Energy Crops,EJ/yr,liquid biofuels production from energy crops +Secondary Energy|Liquids|Biomass|Other,EJ/yr,biofuel production from biomass that does not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Secondary Energy|Liquids|Biomass|Residues,EJ/yr,liquid biofuels production from residues (forest and agriculture) +Secondary Energy|Liquids|Biomass|w/ CCS,EJ/yr,total production of liquid biofuels from facilities with CCS +Secondary Energy|Liquids|Biomass|w/o CCS,EJ/yr,total production of liquid biofuels from facilities without CCS +Secondary Energy|Liquids|Coal,EJ/yr,total production of fossil liquid synfuels from coal-to-liquids (CTL) technologies +Secondary Energy|Liquids|Coal|w/ CCS,EJ/yr,total production of fossil liquid synfuels from coal-to-liquids (CTL) technologies with CCS +Secondary Energy|Liquids|Coal|w/o CCS,EJ/yr,total production of fossil liquid synfuels from coal-to-liquids (CTL) technologies without CCS +Secondary Energy|Liquids|Fossil,EJ/yr,total production of fossil liquid synfuels +Secondary Energy|Liquids|Fossil|w/ CCS,EJ/yr,total production of fossil liquid synfuels from facilities with CCS +Secondary Energy|Liquids|Fossil|w/o CCS,EJ/yr,total production of fossil liquid synfuels from facilities without CCS +Secondary Energy|Liquids|Gas,EJ/yr,total production of fossil liquid synfuels from gas-to-liquids (GTL) technologies +Secondary Energy|Liquids|Gas|w/ CCS,EJ/yr,total production of fossil liquid synfuels from gas-to-liquids (GTL) technologies with CCS +Secondary Energy|Liquids|Gas|w/o CCS,EJ/yr,total production of fossil liquid synfuels from gas-to-liquids (GTL) technologies without CCS +Secondary Energy|Liquids|Oil,EJ/yr,"total production of liquid fuels from petroleum, including both conventional and unconventional sources" +Secondary Energy|Liquids|Other,EJ/yr,total production of liquids from sources that do not fit any other category +Secondary Energy|Other Carrier,EJ/yr,generation of other secondary energy carriers that do not fit any other category (please provide a definition of other energy carrier in this category in the 'comments' tab) +Secondary Energy|Solids,EJ/yr,"solid secondary energy carriers (e.g., briquettes, coke, wood chips, wood pellets)" +Secondary Energy|Solids|Biomass,EJ/yr,"solid secondary energy carriers produced from biomass (e.g., commercial charcoal, wood chips, wood pellets). Tradional bioenergy use is excluded. " +Secondary Energy|Solids|Coal,EJ/yr,"solid secondary energy carriers produced from coal (e.g., briquettes, coke)" +Subsidies|Energy,billion US$2010/yr OR local currency, +Subsidies|Energy|Fossil,billion US$2010/yr OR local currency,Fossil fuel subsidies +Subsidies|Food,billion US$2010/yr OR local currency, +Tariffs|Average,%,Weighted trade tariff-average (regional and global indicator relevant) +Tariffs|Average|Imports,%,Average tariffs for imports (most relevant for developed countries) +Temperature|Global Mean,°C,change in global mean temperature relative to pre-industrial +Trade,billion US$2010/yr or local currency/yr,"net exports of all goods, at the global level these should add up to the trade losses only" +Trade|Emissions Allowances|Volume,Mt CO2-equiv/yr, +Trade|Emissions Allowances|Value,billion US$2010/yr, +Trade|Emissions|Value|Carbon|Absolute,billion US$2010/yr, +Trade|Emissions|Value|Carbon|Exports,billion US$2010/yr, +Trade|Emissions|Value|Carbon|Imports,billion US$2010/yr, +Trade|Emissions|Value|Carbon|Net Exports,billion US$2010/yr, +Trade|Emissions|Volume|Carbon|Absolute,Mt CO2-equiv/yr, +Trade|Emissions|Volume|Carbon|Exports,Mt CO2-equiv/yr, +Trade|Emissions|Volume|Carbon|Imports,Mt CO2-equiv/yr, +Trade|Emissions|Volume|Carbon|Net Exports,Mt CO2-equiv/yr, +Trade|Primary Energy|Biomass|Volume,EJ/yr,"net exports of solid, unprocessed biomass, at the global level these should add up to the trade losses only" +Trade|Primary Energy|Coal|Volume,EJ/yr,"net exports of coal, at the global level these should add up to the trade losses only" +Trade|Primary Energy|Gas|Volume,EJ/yr,"net exports of natural gas, at the global level these should add up to the trade losses only" +Trade|Primary Energy|Oil|Volume,EJ/yr,"net exports of crude oil, at the global level these should add up to the trade losses only" +Trade|Secondary Energy|Electricity|Volume,EJ/yr,"net exports of electricity, at the global level these should add up to the trade losses only" +Trade|Secondary Energy|Hydrogen|Volume,EJ/yr,"net exports of hydrogen, at the global level these should add up to the trade losses only" +Trade|Secondary Energy|Liquids|Biomass|Volume,EJ/yr,"net exports of liquid biofuels, at the global level these should add up to the trade losses only (for those models that are able to split solid and liquid bioenergy)" +Trade|Secondary Energy|Liquids|Coal|Volume,EJ/yr,"net exports of fossil liquid synfuels from coal-to-liquids (CTL) technologies, at the global level these should add up to the trade losses only" +Trade|Secondary Energy|Liquids|Gas|Volume,EJ/yr,"net exports of fossil liquid synfuels from gas-to-liquids (GTL) technologies, at the global level these should add up to the trade losses only" +Trade|Secondary Energy|Liquids|Oil|Volume,EJ/yr,"net exports of liquid fuels from petroleum including both conventional and unconventional sources, at the global level these should add up to the trade losses only" +Trade|Gross Export|Primary Energy|Biomass|Volume,EJ/yr, +Trade|Gross Export|Primary Energy|Coal|Volume,EJ/yr, +Trade|Gross Export|Primary Energy|Oil|Volume,EJ/yr, +Trade|Gross Export|Primary Energy|Gas|Volume,EJ/yr, +Trade|Gross Export|Secondary Energy|Electricity|Volume,EJ/yr, +Trade|Gross Export|Secondary Energy|Liquids|Biomass|Volume,EJ/yr, +Trade|Gross Export|Secondary Energy|Liquids|Coal|Volume,EJ/yr, +Trade|Gross Export|Secondary Energy|Liquids|Oil|Volume,EJ/yr, +Trade|Gross Import|Primary Energy|Biomass|Volume,EJ/yr, +Trade|Gross Import|Primary Energy|Coal|Volume,EJ/yr, +Trade|Gross Import|Primary Energy|Oil|Volume,EJ/yr, +Trade|Gross Import|Primary Energy|Gas|Volume,EJ/yr, +Trade|Gross Import|Secondary Energy|Electricity|Volume,EJ/yr, +Trade|Gross Import|Secondary Energy|Liquids|Biomass|Volume,EJ/yr, +Trade|Gross Import|Secondary Energy|Liquids|Coal|Volume,EJ/yr, +Trade|Gross Import|Secondary Energy|Liquids|Oil|Volume,EJ/yr, +Trade|Uranium|Mass,kt U/yr,"net exports of Uranium, at the global level these should add up to the trade losses only" +Unemployment,Million,Number of unemployed inhabitants (based on ILO classification) +Unemployment|Rate,%,Fraction of unemployed inhabitants (based on ILO classification) +Useful Energy|Input|Feedstocks,EJ/yr, +Useful Energy|Input|Industrial Thermal,EJ/yr, +Useful Energy|Input|Industrial Specific,EJ/yr, +Useful Energy|Input|RC Thermal,EJ/yr, +Useful Energy|Input|RC Specific,EJ/yr, +Useful Energy|Input|Transport,EJ/yr, +Useful Energy|Input|Shipping,EJ/yr, +Useful Energy|Input|Non-Commercial Biomass,EJ/yr, +Useful Energy|Feedstocks,EJ/yr, +Useful Energy|Industrial Thermal,EJ/yr, +Useful Energy|Industrial Specific,EJ/yr, +Useful Energy|RC Thermal,EJ/yr, +Useful Energy|RC Specific,EJ/yr, +Useful Energy|Transport,EJ/yr, +Useful Energy|Shipping,EJ/yr, +Useful Energy|Non-Commercial Biomass,EJ/yr, +Value Added|Agriculture,billion US$2010/yr OR local currency,value added of the agricultural sector +Value Added|Commercial,billion US$2010/yr OR local currency,value added of the commercial sector +Value Added|Industry,billion US$2010/yr OR local currency,value added of the industry sector +Value Added|Industry|Energy,billion US$2010/yr OR local currency, +Value Added|Industry|Energy Intensive,billion US$2010/yr OR local currency,value added of the energy-intensive industries. +Value Added|Industry|Manufacturing,billion US$2010/yr OR local currency, +Water Consumption,km3/yr,total water consumption +Water Consumption|Electricity,km3/yr,total water consumption for net electricity production +Water Consumption|Electricity|Biomass,km3/yr,"water consumption for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" +Water Consumption|Electricity|Biomass|w/ CCS,km3/yr,"water consumption for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" +Water Consumption|Electricity|Biomass|w/o CCS,km3/yr,"water consumption for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" +Water Consumption|Electricity|Coal,km3/yr,water consumption for net electricity production from coal +Water Consumption|Electricity|Coal|w/ CCS,km3/yr,water consumption for net electricity production from coal with a CO2 capture component +Water Consumption|Electricity|Coal|w/o CCS,km3/yr,water consumption for net electricity production from coal with freely vented CO2 emissions +Water Consumption|Electricity|Cooling Pond,km3/yr,water consumption for net electricity production using pond cooling +Water Consumption|Electricity|Dry Cooling,km3/yr,water consumption for net electricity production using dry cooling +Water Consumption|Electricity|Fossil,km3/yr,"water consumption for net electricity production from coal, gas, conventional and unconventional oil" +Water Consumption|Electricity|Fossil|w/ CCS,km3/yr,"water consumption for net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" +Water Consumption|Electricity|Fossil|w/o CCS,km3/yr,"water consumption for net electricity production from coal, gas, conventional and unconventional oil without CCS" +Water Consumption|Electricity|Gas,km3/yr,water consumption for net electricity production from natural gas +Water Consumption|Electricity|Gas|w/ CCS,km3/yr,water consumption for net electricity production from natural gas with a CO2 capture component +Water Consumption|Electricity|Gas|w/o CCS,km3/yr,water consumption for net electricity production from natural gas with freely vented CO2 emissions +Water Consumption|Electricity|Geothermal,km3/yr,"water consumption for net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" +Water Consumption|Electricity|Hydro,km3/yr,water consumption for net hydroelectric production +Water Consumption|Electricity|Non-Biomass Renewables,km3/yr,"water consumption for net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." +Water Consumption|Electricity|Nuclear,km3/yr,water consumption for net electricity production from nuclear energy +Water Consumption|Electricity|Oil,km3/yr,water consumption for net electricity production from refined liquids +Water Consumption|Electricity|Oil|w/ CCS,km3/yr,water consumption for net electricity production from refined liquids with a CO2 capture component +Water Consumption|Electricity|Oil|w/o CCS,km3/yr,water consumption for net electricity production from refined liquids with freely vented CO2 emissions +Water Consumption|Electricity|Once Through,km3/yr,water consumption for net electricity production using once through cooling +Water Consumption|Electricity|Other,km3/yr,water consumption for net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Water Consumption|Electricity|Sea Cooling,km3/yr,water consumption for net electricity production using sea water cooling +Water Consumption|Electricity|Solar,km3/yr,"water consumption for net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" +Water Consumption|Electricity|Solar|CSP,km3/yr,water consumption for net electricity production from concentrating solar power (CSP) +Water Consumption|Electricity|Solar|PV,km3/yr,water consumption for net electricity production from solar photovoltaics (PV) +Water Consumption|Electricity|Wet Tower,km3/yr,water consumption for net electricity production using wet tower cooling +Water Consumption|Electricity|Wind,km3/yr,water consumption for net electricity production from wind energy (on- and offshore) +Water Consumption|Extraction,km3/yr,total water consumption for extraction +Water Consumption|Extraction|Coal,km3/yr,water consumption for coal extraction +Water Consumption|Extraction|Gas,km3/yr,water consumption for gas extraction +Water Consumption|Extraction|Oil,km3/yr,water consumption for oil extraction +Water Consumption|Extraction|Uranium,km3/yr,water consumption for uranium extraction +Water Consumption|Gases,km3/yr,total water consumption for gas production +Water Consumption|Gases|Biomass,km3/yr,water consumption for gas production from biomass +Water Consumption|Gases|Coal,km3/yr,water consumption for gas production from coal +Water Consumption|Gases|Natural Gas,km3/yr,water consumption for gas production from natural gas +Water Consumption|Gases|Other,km3/yr,water consumption for gas production from other +Water Consumption|Heat,km3/yr,total water consumption for heat generation +Water Consumption|Heat|Biomass,km3/yr,water consumption for heat generation from biomass +Water Consumption|Heat|Coal,km3/yr,water consumption for heat generation from coal +Water Consumption|Heat|Gas,km3/yr,water consumption for heat generation from gas +Water Consumption|Heat|Geothermal,km3/yr,"water consumption for heat generation from from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" +Water Consumption|Heat|Nuclear,km3/yr,water consumption for heat generation from nuclear +Water Consumption|Heat|Oil,km3/yr,water consumption for heat generation from oil +Water Consumption|Heat|Other,km3/yr,water consumption for heat generation from other sources +Water Consumption|Heat|Solar,km3/yr,water consumption for heat generation from solar +Water Consumption|Hydrogen,km3/yr,total water consumption for hydrogen production +Water Consumption|Hydrogen|Biomass,km3/yr,water consumption for hydrogen production from biomass +Water Consumption|Hydrogen|Biomass|w/ CCS,km3/yr,water consumption from hydrogen production from biomass with a CO2 capture component +Water Consumption|Hydrogen|Biomass|w/o CCS,km3/yr,water consumption for hydrogen production from biomass with freely vented CO2 emissions +Water Consumption|Hydrogen|Coal,km3/yr,water consumption for hydrogen production from coal +Water Consumption|Hydrogen|Coal|w/ CCS,km3/yr,water consumption for hydrogen production from coal with a CO2 capture component +Water Consumption|Hydrogen|Coal|w/o CCS,km3/yr,water consumption for hydrogen production from coal with freely vented CO2 emissions +Water Consumption|Hydrogen|Electricity,km3/yr,water consumption for hydrogen production from electricity +Water Consumption|Hydrogen|Fossil,km3/yr,water consumption for hydrogen production from fossil fuels +Water Consumption|Hydrogen|Fossil|w/ CCS,km3/yr,water consumption for hydrogen production from fossil fuels with a CO2 capture component +Water Consumption|Hydrogen|Fossil|w/o CCS,km3/yr,water consumption for hydrogen production from fossil fuels with freely vented CO2 emissions +Water Consumption|Hydrogen|Gas,km3/yr,water consumption for hydrogen production from gas +Water Consumption|Hydrogen|Gas|w/ CCS,km3/yr,water consumption for hydrogen production from gas with a CO2 capture component +Water Consumption|Hydrogen|Gas|w/o CCS,km3/yr,water consumption for hydrogen production from gas with freely vented CO2 emissions +Water Consumption|Hydrogen|Oil,km3/yr,water consumption for hydrogen production from oil +Water Consumption|Hydrogen|Other,km3/yr,water consumption for hydrogen production from other sources +Water Consumption|Hydrogen|Solar,km3/yr,water consumption for hydrogen production from solar +Water Consumption|Industrial Water,km3/yr,water consumption for the industrial sector +Water Consumption|Irrigation,km3/yr,water consumption for the irrigation +Water Consumption|Liquids,km3/yr,"total water consumption for refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Water Consumption|Liquids|Biomass,km3/yr,water consumption for biofuel production +Water Consumption|Liquids|Biomass|w/ CCS,km3/yr,water consumption for biofuel production with a CO2 capture component +Water Consumption|Liquids|Biomass|w/o CCS,km3/yr,water consumption for biofuel production with freely vented CO2 emissions +Water Consumption|Liquids|Coal,km3/yr,water consumption for coal to liquid production +Water Consumption|Liquids|Coal|w/ CCS,km3/yr,water consumption for coal to liquid production with a CO2 capture component +Water Consumption|Liquids|Coal|w/o CCS,km3/yr,water consumption for coal to liquid production with freely vented CO2 emissions +Water Consumption|Liquids|Fossil,km3/yr,water consumption for fossil to liquid production from fossil fuels +Water Consumption|Liquids|Fossil|w/ CCS,km3/yr,water consumption for fossil to liquid production from fossil fuels with a CO2 capture component +Water Consumption|Liquids|Fossil|w/o CCS,km3/yr,water consumption for fossil to liquid production from fossil fuels with freely vented CO2 emissions +Water Consumption|Liquids|Gas,km3/yr,water consumption for gas to liquid production +Water Consumption|Liquids|Gas|w/ CCS,km3/yr,water consumption for gas to liquid production with a CO2 capture component +Water Consumption|Liquids|Gas|w/o CCS,km3/yr,water consumption for gas to liquid production with freely vented CO2 emissions +Water Consumption|Liquids|Oil,km3/yr,water consumption for oil production +Water Consumption|Livestock,km3/yr,water consumption for livestock +Water Consumption|Municipal Water,km3/yr,"water consumption for the municipal sector (e.g., houses, offices, municipal irrigation)" +Water Desalination,km3/yr,desalination water +Water Extraction|Brackish Water,km3/yr,water extracted from brackish groundwater resources +Water Extraction|Groundwater,km3/yr,water extracted from groundwater resources +Water Extraction|Seawater,km3/yr,water extracted from ocean and seawater resources (including tidal zones) +Water Extraction|Surface Water,km3/yr,"water extracted from surface water resources (rivers, lakes ...)" +Water Resource|Brackish Water,km3,anticipated volume of exploitable brackish groundwater resources +Water Resource|Groundwater,km3,anticipated volume of exploitable groundwater resources +Water Resource|Surface Water,km3,anticipated volume of exploitable surface water resources +Water Thermal Pollution|Electricity|Biomass,EJ/yr,"thermal water pollution from net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" +Water Thermal Pollution|Electricity|Biomass|w/ CCS,EJ/yr,"thermal water pollution from net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" +Water Thermal Pollution|Electricity|Biomass|w/o CCS,EJ/yr,"thermal water pollution from net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" +Water Thermal Pollution|Electricity|Coal,EJ/yr,thermal water pollution from net electricity production from coal +Water Thermal Pollution|Electricity|Coal|w/ CCS,EJ/yr,thermal water pollution from net electricity production from coal with a CO2 capture component +Water Thermal Pollution|Electricity|Coal|w/o CCS,EJ/yr,thermal water pollution from net electricity production from coal with freely vented CO2 emissions +Water Thermal Pollution|Electricity|Fossil,EJ/yr,"thermal water pollution from net electricity production from coal, gas, conventional and unconventional oil" +Water Thermal Pollution|Electricity|Fossil|w/ CCS,EJ/yr,"thermal water pollution from net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" +Water Thermal Pollution|Electricity|Fossil|w/o CCS,EJ/yr,"thermal water pollution from net electricity production from coal, gas, conventional and unconventional oil without CCS" +Water Thermal Pollution|Electricity|Gas,EJ/yr,thermal water pollution from net electricity production from natural gas +Water Thermal Pollution|Electricity|Gas|w/ CCS,EJ/yr,thermal water pollution from net electricity production from natural gas with a CO2 capture component +Water Thermal Pollution|Electricity|Gas|w/o CCS,EJ/yr,thermal water pollution from net electricity production from natural gas with freely vented CO2 emissions +Water Thermal Pollution|Electricity|Geothermal,EJ/yr,"thermal water pollution from net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" +Water Thermal Pollution|Electricity|Non-Biomass Renewables,EJ/yr,"thermal water pollution from net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." +Water Thermal Pollution|Electricity|Nuclear,EJ/yr,thermal water pollution from net electricity production from nuclear energy +Water Thermal Pollution|Electricity|Oil,EJ/yr,thermal water pollution from net electricity production from refined liquids +Water Thermal Pollution|Electricity|Oil|w/ CCS,EJ/yr,thermal water pollution from net electricity production from refined liquids with a CO2 capture component +Water Thermal Pollution|Electricity|Oil|w/o CCS,EJ/yr,thermal water pollution from net electricity production from refined liquids with freely vented CO2 emissions +Water Thermal Pollution|Electricity|Once Through,EJ/yr,thermal water pollution from net electricity production using once through cooling +Water Thermal Pollution|Electricity|Other,EJ/yr,thermal water pollution from net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Water Thermal Pollution|Electricity|Sea Cooling,EJ/yr,thermal water pollution from net electricity production using sea water cooling +Water Thermal Pollution|Electricity|Solar,EJ/yr,"thermal water pollution from net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" +Water Thermal Pollution|Electricity|Solar|CSP,EJ/yr,thermal water pollution from net electricity production from concentrating solar power (CSP) +Water Transfer,km3/yr,water imported/exported using conveyance infrastructure +Water Withdrawal,km3/yr,total water withdrawal +Water Withdrawal|Electricity,km3/yr,total water withdrawals for net electricity production +Water Withdrawal|Electricity|Biomass,km3/yr,"water withdrawals for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" +Water Withdrawal|Electricity|Biomass|w/ CCS,km3/yr,"water withdrawals for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" +Water Withdrawal|Electricity|Biomass|w/o CCS,km3/yr,"water withdrawals for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" +Water Withdrawal|Electricity|Coal,km3/yr,water withdrawals for net electricity production from coal +Water Withdrawal|Electricity|Coal|w/ CCS,km3/yr,water withdrawals for net electricity production from coal with a CO2 capture component +Water Withdrawal|Electricity|Coal|w/o CCS,km3/yr,water withdrawals for net electricity production from coal with freely vented CO2 emissions +Water Withdrawal|Electricity|Cooling Pond,km3/yr,water withdrawals for net electricity production using pond cooling +Water Withdrawal|Electricity|Dry Cooling,km3/yr,water withdrawals for net electricity production using dry cooling +Water Withdrawal|Electricity|Fossil,km3/yr,"water withdrawals for net electricity production from coal, gas, conventional and unconventional oil" +Water Withdrawal|Electricity|Fossil|w/ CCS,km3/yr,"water withdrawals for net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" +Water Withdrawal|Electricity|Fossil|w/o CCS,km3/yr,"water withdrawals for net electricity production from coal, gas, conventional and unconventional oil without CCS" +Water Withdrawal|Electricity|Gas,km3/yr,water withdrawals for net electricity production from natural gas +Water Withdrawal|Electricity|Gas|w/ CCS,km3/yr,water withdrawals for net electricity production from natural gas with a CO2 capture component +Water Withdrawal|Electricity|Gas|w/o CCS,km3/yr,water withdrawals for net electricity production from natural gas with freely vented CO2 emissions +Water Withdrawal|Electricity|Geothermal,km3/yr,"water withdrawals for net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" +Water Withdrawal|Electricity|Hydro,km3/yr,water withdrawals for net hydroelectric production +Water Withdrawal|Electricity|Non-Biomass Renewables,km3/yr,"water withdrawals for net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." +Water Withdrawal|Electricity|Nuclear,km3/yr,water withdrawals for net electricity production from nuclear energy +Water Withdrawal|Electricity|Ocean,km3/yr,"water withdrawals for net electricity production from all sources of ocean energy (e.g., tidal, wave, ocean thermal electricity production generation)" +Water Withdrawal|Electricity|Oil,km3/yr,water withdrawals for net electricity production from refined liquids +Water Withdrawal|Electricity|Oil|w/ CCS,km3/yr,water withdrawals for net electricity production from refined liquids with a CO2 capture component +Water Withdrawal|Electricity|Oil|w/o CCS,km3/yr,water withdrawals for net electricity production from refined liquids with freely vented CO2 emissions +Water Withdrawal|Electricity|Once Through,km3/yr,water withdrawals for net electricity production using once through cooling +Water Withdrawal|Electricity|Other,km3/yr,water withdrawals for net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) +Water Withdrawal|Electricity|Sea Cooling,km3/yr,water withdrawals for net electricity production using sea water cooling +Water Withdrawal|Electricity|Solar,km3/yr,"water withdrawals for net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" +Water Withdrawal|Electricity|Solar|CSP,km3/yr,water withdrawals for net electricity production from concentrating solar power (CSP) +Water Withdrawal|Electricity|Solar|PV,km3/yr,water withdrawals for net electricity production from solar photovoltaics (PV) +Water Withdrawal|Electricity|Wet Tower,km3/yr,water withdrawals for net electricity production using wet tower cooling +Water Withdrawal|Electricity|Wind,km3/yr,water withdrawals for net electricity production from wind energy (on- and offshore) +Water Withdrawal|Extraction,km3/yr,total water withdrawal for extraction +Water Withdrawal|Extraction|Coal,km3/yr,water withdrawal for coal extraction +Water Withdrawal|Extraction|Gas,km3/yr,water withdrawal for gas extraction +Water Withdrawal|Extraction|Oil,km3/yr,water withdrawal for oil extraction +Water Withdrawal|Extraction|Uranium,km3/yr,water withdrawal for uranium extraction +Water Withdrawal|Gases,km3/yr,total water withdrawal for gas production +Water Withdrawal|Gases|Biomass,km3/yr,water withdrawal for gas production from biomass +Water Withdrawal|Gases|Coal,km3/yr,water withdrawal for gas production from coal +Water Withdrawal|Gases|Natural Gas,km3/yr,water withdrawal for gas production from natural gas +Water Withdrawal|Gases|Other,km3/yr,water withdrawal for gas production from other +Water Withdrawal|Heat,km3/yr,total water withdrawal for heat generation +Water Withdrawal|Heat|Biomass,km3/yr,water withdrawal for heat generation from biomass +Water Withdrawal|Heat|Coal,km3/yr,water withdrawal for heat generation from coal +Water Withdrawal|Heat|Gas,km3/yr,water withdrawal for heat generation from gas +Water Withdrawal|Heat|Geothermal,km3/yr,"water withdrawal for heat generation from from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" +Water Withdrawal|Heat|Nuclear,km3/yr,water withdrawal for heat generation from nuclear +Water Withdrawal|Heat|Oil,km3/yr,water withdrawal for heat generation from oil +Water Withdrawal|Heat|Other,km3/yr,water withdrawal for heat generation from other sources +Water Withdrawal|Heat|Solar,km3/yr,water withdrawal for heat generation from solar +Water Withdrawal|Hydrogen,km3/yr,total water withdrawal for hydrogen production +Water Withdrawal|Hydrogen|Biomass,km3/yr,water withdrawal for hydrogen production from biomass +Water Withdrawal|Hydrogen|Biomass|w/ CCS,km3/yr,water withdrawal for hydrogen production from biomass with a CO2 capture component +Water Withdrawal|Hydrogen|Biomass|w/o CCS,km3/yr,water withdrawal for hydrogen production from biomass with freely vented CO2 emissions +Water Withdrawal|Hydrogen|Coal,km3/yr,water withdrawal for hydrogen production from coal +Water Withdrawal|Hydrogen|Coal|w/ CCS,km3/yr,water withdrawal for hydrogen production from coal with a CO2 capture component +Water Withdrawal|Hydrogen|Coal|w/o CCS,km3/yr,water withdrawal for hydrogen production from coal with freely vented CO2 emissions +Water Withdrawal|Hydrogen|Electricity,km3/yr,water withdrawal for hydrogen production from electricity +Water Withdrawal|Hydrogen|Fossil,km3/yr,water withdrawal for hydrogen production from fossil fuels +Water Withdrawal|Hydrogen|Fossil|w/ CCS,km3/yr,water withdrawal for hydrogen production from fossil fuels with a CO2 capture component +Water Withdrawal|Hydrogen|Fossil|w/o CCS,km3/yr,water withdrawal for hydrogen production from fossil fuels with freely vented CO2 emissions +Water Withdrawal|Hydrogen|Gas,km3/yr,water withdrawal for hydrogen production from gas +Water Withdrawal|Hydrogen|Gas|w/ CCS,km3/yr,water withdrawal for hydrogen production from gas with a CO2 capture component +Water Withdrawal|Hydrogen|Gas|w/o CCS,km3/yr,water withdrawal for hydrogen production from gas with freely vented CO2 emissions +Water Withdrawal|Hydrogen|Oil,km3/yr,water withdrawal for hydrogen production from oil +Water Withdrawal|Hydrogen|Other,km3/yr,water withdrawal for hydrogen production from other sources +Water Withdrawal|Hydrogen|Solar,km3/yr,water withdrawal for hydrogen production from solar +Water Withdrawal|Industrial Water,km3/yr,water withdrawals for the industrial sector (manufacturing sector if also reporting energy sector water use) +Water Withdrawal|Irrigation,km3/yr,water withdrawal for irrigation +Water Withdrawal|Liquids,km3/yr,"total water withdrawal for refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" +Water Withdrawal|Liquids|Biomass,km3/yr,water withdrawal for biofuel production +Water Withdrawal|Liquids|Biomass|w/ CCS,km3/yr,water withdrawal for biofuel production with a CO2 capture component +Water Withdrawal|Liquids|Biomass|w/o CCS,km3/yr,water withdrawal for biofuel production with freely vented CO2 emissions +Water Withdrawal|Liquids|Coal,km3/yr,water withdrawal for coal to liquid production +Water Withdrawal|Liquids|Coal|w/ CCS,km3/yr,water withdrawal for coal to liquid production with a CO2 capture component +Water Withdrawal|Liquids|Coal|w/o CCS,km3/yr,water withdrawal for coal to liquid production with freely vented CO2 emissions +Water Withdrawal|Liquids|Fossil,km3/yr,water withdrawal for fossil to liquid production from fossil fuels +Water Withdrawal|Liquids|Fossil|w/ CCS,km3/yr,water withdrawal for fossil to liquid production from fossil fuels with a CO2 capture component +Water Withdrawal|Liquids|Fossil|w/o CCS,km3/yr,water withdrawal for fossil to liquid production from fossil fuels with freely vented CO2 emissions +Water Withdrawal|Liquids|Gas,km3/yr,water withdrawal for gas to liquid production +Water Withdrawal|Liquids|Gas|w/ CCS,km3/yr,water withdrawal for gas to liquid production with a CO2 capture component +Water Withdrawal|Liquids|Gas|w/o CCS,km3/yr,water withdrawal for gas to liquid production with freely vented CO2 emissions +Water Withdrawal|Liquids|Oil,km3/yr,water withdrawal for oil production +Water Withdrawal|Livestock,km3/yr,water withdrawals for livestock +Water Withdrawal|Municipal Water,km3/yr,"water withdrawals for the municial sector (e.g., houses, offices, municipal irrigation)" +Yield|Cereal,t DM/ha/yr,yield of cereal production per until of area (used here as repreentative crop to measure yield assumptions) +Yield|Oilcrops,t DM/ha/yr,"aggregated yield of Oilcrops (e.g. soybean, rapeseed, groundnut, sunflower, oilpalm)" +Yield|Sugarcrops,t DM/ha/yr,"aggregated yield of Sugarcrops (e.g. sugarbeet, sugarcane)" From 1121c19c75a4f08888f9aab63ccfbbd6bf7cf7d7 Mon Sep 17 00:00:00 2001 From: FRICKO Oliver Date: Mon, 18 Oct 2021 09:01:10 +0200 Subject: [PATCH 136/220] Adapt and document syntax --- message_ix_models/report/__init__.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 95e7ea321a..f7a26b7d08 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -136,9 +136,6 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k return iamc_report_hackathon.report( mp=scenario.platform, scen=scenario, - model=scenario.model, - scenario=scenario.scenario, - out_dir=output_path, **legacy_args, ) From 1c8c6414a018bf1a49a316efdbeab91602022d75 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 18 Nov 2021 09:07:30 +0100 Subject: [PATCH 137/220] Raise log level for "report --dry-run" --- message_ix_models/report/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index f7a26b7d08..b64074bb4a 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -147,7 +147,7 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k log.info(f"Prepare to report {'(DRY RUN)' if dry_run else ''}") log.info(key) - log.debug(rep.describe(key)) + log.log(logging.INFO if dry_run else logging.DEBUG, rep.describe(key)) if dry_run: return From 15aa95752ea04904ac9eb0435094bfec409f0579 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 18 Nov 2021 09:08:20 +0100 Subject: [PATCH 138/220] Don't set "report --output" to cwd by default (allow None) --- message_ix_models/report/cli.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 558eb8a410..10aa9ddad8 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -31,7 +31,6 @@ "output_path", type=Path, help="Write output to file instead of console.", - default=Path.cwd(), ) @click.option( "--from-file", @@ -63,7 +62,7 @@ def cli(context, config_file, module, output_path, from_file, dry_run, key): raise FileNotFoundError(f"Reporting configuration --config={config}") # --output/-o: handle "~" - output_path = output_path.expanduser() + output_path = output_path.expanduser() if output_path else None # Load modules module = module or "" From dfb7b958feba8dc091f8499f92894850c5ff60f7 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 24 Nov 2021 19:45:49 +0100 Subject: [PATCH 139/220] Move as_quantity() to .reporting.util --- message_ix_models/report/util.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 9d9618592e..00e692b939 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,7 +1,10 @@ import logging +from typing import Union import pandas as pd +from genno import Quantity from genno.compat.pyam.util import collapse as genno_collapse +from iam_units import registry log = logging.getLogger(__name__) @@ -65,6 +68,18 @@ } +def as_quantity(info: Union[dict, str]) -> Quantity: + """Convert values from a :class:`dict` to Quantity.""" + if isinstance(info, str): + q = registry(info) + return Quantity(q.magnitude, units=q.units) + else: + data = info.copy() + dim = data.pop("_dim") + unit = data.pop("_unit") + return Quantity(pd.Series(data).rename_axis(dim), units=unit) + + def collapse(df: pd.DataFrame, var=[]) -> pd.DataFrame: """Callback for the `collapse` argument to :meth:`~.Reporter.convert_pyam`. From 86e1599fe59229695b82dedd90ba7046f62b673d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 26 Jan 2022 17:50:54 +0100 Subject: [PATCH 140/220] Use local_data_path() to direct reporting outputs --- message_ix_models/report/__init__.py | 9 +++++++-- message_ix_models/report/cli.py | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index b64074bb4a..350217dc09 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -7,7 +7,7 @@ import genno.config from genno.compat.pyam import iamc as handle_iamc from message_ix.reporting import Reporter -from message_ix_models.util import private_data_path +from message_ix_models.util import local_data_path, private_data_path from . import computations, util @@ -95,6 +95,8 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k (:mod:`.reporting`) and 'legacy' (:mod:`.tools.post_processing`) reporting codes. + .. todo:: accept a :class:`.Context` object instead of a large set of options. + Parameters ---------- scenario : Scenario @@ -161,6 +163,8 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k def prepare_reporter(scenario, config, key=None, output_path=None): """Prepare to report *key* from *scenario*. + .. todo:: accept a :class:`.Context` object instead of a growing set of options. + Parameters ---------- scenario : ixmp.Scenario @@ -211,7 +215,8 @@ def prepare_reporter(scenario, config, key=None, output_path=None): config.setdefault("output_path", output_path) # For genno.compat.plot # FIXME use a consistent set of names - config.setdefault("output_dir", output_path) + config.setdefault("output_dir", local_data_path("report")) + config["output_dir"].mkdir(exist_ok=True, parents=True) # Handle configuration rep.configure(**config, fail="raise" if scenario.has_solution() else logging.NOTSET) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 10aa9ddad8..f170056e95 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -5,7 +5,7 @@ import click import yaml -from message_ix_models.util import private_data_path +from message_ix_models.util import local_data_path, private_data_path from message_ix_models.util._logging import mark_time from message_data.reporting import register, report @@ -64,7 +64,7 @@ def cli(context, config_file, module, output_path, from_file, dry_run, key): # --output/-o: handle "~" output_path = output_path.expanduser() if output_path else None - # Load modules + # --module/-m: load extra reporting config from modules module = module or "" for name in filter(lambda n: len(n), module.split(",")): name = f"message_data.{name}.report" @@ -105,6 +105,7 @@ def cli(context, config_file, module, output_path, from_file, dry_run, key): else: # Single Scenario; identifiers were supplied to the top-level CLI context.output_path = output_path + context["report"] = dict(output_dir=local_data_path("report")) contexts.append(context) for ctx in contexts: From 6e12fc785d629ef5bd1f80f0a20b4c7c7bd234e6 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 17 Feb 2022 01:15:50 +0100 Subject: [PATCH 141/220] reporting.prepare_reporter() accepts a pre-populated Reporter --- message_ix_models/report/__init__.py | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 350217dc09..4b073312a7 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -2,11 +2,11 @@ from copy import deepcopy from functools import partial from pathlib import Path -from typing import Callable, List +from typing import Callable, List, Union import genno.config from genno.compat.pyam import iamc as handle_iamc -from message_ix.reporting import Reporter +from message_ix import Scenario, Reporter from message_ix_models.util import local_data_path, private_data_path from . import computations, util @@ -160,7 +160,13 @@ def report(scenario, key=None, config=None, output_path=None, dry_run=False, **k log.info(f"Result{msg}") -def prepare_reporter(scenario, config, key=None, output_path=None): +def prepare_reporter( + scenario_or_reporter: Union[Scenario, Reporter], + config, + key=None, + output_path=None, + callbacks=None, +): """Prepare to report *key* from *scenario*. .. todo:: accept a :class:`.Context` object instead of a growing set of options. @@ -189,8 +195,13 @@ def prepare_reporter(scenario, config, key=None, output_path=None): """ log.info("Prepare reporter") - # Create a Reporter for *scenario* - rep = Reporter.from_scenario(scenario) + if isinstance(scenario_or_reporter, Scenario): + # Create a Reporter for *scenario* + rep = Reporter.from_scenario(scenario_or_reporter) + has_solution = scenario_or_reporter.has_solution() + else: + rep = scenario_or_reporter + has_solution = True # Append the message_data computations rep.modules.append(computations) @@ -219,7 +230,7 @@ def prepare_reporter(scenario, config, key=None, output_path=None): config["output_dir"].mkdir(exist_ok=True, parents=True) # Handle configuration - rep.configure(**config, fail="raise" if scenario.has_solution() else logging.NOTSET) + rep.configure(**config, fail="raise" if has_solution else logging.NOTSET) for callback in CALLBACKS: callback(rep) From 86eeb1d43af37b9ccb13d8d78638f8042db6923c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 17 Feb 2022 01:16:08 +0100 Subject: [PATCH 142/220] Handle empty dict config in prepare_reporter() --- message_ix_models/report/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 4b073312a7..f07755b7b7 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -212,7 +212,7 @@ def prepare_reporter( # Deepcopy to avoid destructive operations below config = deepcopy(config) else: - config = private_data_path("report", "global.yaml") + config = dict(path=private_data_path("report", "global.yaml")) else: # A non-dict *config* argument must be a Path path = Path(config) From 0de3a42eb44dc6b00ebeeeb3d308478c832b9525 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 17 Feb 2022 01:16:37 +0100 Subject: [PATCH 143/220] Use extra callbacks supplied via an argument in prepare_reporter() --- message_ix_models/report/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index f07755b7b7..193b120913 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -232,7 +232,7 @@ def prepare_reporter( # Handle configuration rep.configure(**config, fail="raise" if has_solution else logging.NOTSET) - for callback in CALLBACKS: + for callback in CALLBACKS + (callbacks or []): callback(rep) if key: From 7c78e223e39f98781d98b0507f1fcd96c917869d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 17 Feb 2022 02:06:16 +0100 Subject: [PATCH 144/220] Remove callback argument to prepare_reporter() --- message_ix_models/report/__init__.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 193b120913..85ec8dd1fc 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -165,7 +165,6 @@ def prepare_reporter( config, key=None, output_path=None, - callbacks=None, ): """Prepare to report *key* from *scenario*. @@ -232,7 +231,7 @@ def prepare_reporter( # Handle configuration rep.configure(**config, fail="raise" if has_solution else logging.NOTSET) - for callback in CALLBACKS + (callbacks or []): + for callback in CALLBACKS: callback(rep) if key: From dfccdc80fc81ee2a964678feb789306c0052a600 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 3 Mar 2022 14:07:05 +0100 Subject: [PATCH 145/220] Guard against mypy errors in prepare_reporter() --- message_ix_models/report/__init__.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 85ec8dd1fc..02b7d51ba4 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -240,10 +240,9 @@ def prepare_reporter( if output_path and not output_path.is_dir(): # Add a new computation that writes *key* to the specified file - key = rep.add( - "cli-output", - (partial(rep.get_comp("write_report"), path=output_path), key), - ) + write_report = rep.get_comp("write_report") + assert write_report + key = rep.add("cli-output", (partial(write_report, path=output_path), key)) else: log.info(f"No key given; will use default: {repr(key)}") key = rep.default_key From 3cc8aa8dc0c25dc8e3e6134a0327b80a3ca71a75 Mon Sep 17 00:00:00 2001 From: Matthew Gidden Date: Thu, 24 Mar 2022 11:57:23 +0100 Subject: [PATCH 146/220] Update ENGAGE to v4.1.8 (#301) * Add raw globiom data for 37 regions * Add configuration file for different raw data files * Migrate first part of variables to config file * Adjust scripts to use config only; orig func. remain * Revise documentation and corresponding script * Complete initial update of syntax and documentations * Addjust workflow to allow regional-aggregation * Update of documentation to explain aggregation of regions * Adjust syntax to ensure R11 and R37 match * Add script to automate globiom feedback-run input compilation * Add csv to git lfs * Adjust reporting to new variable naming scheme * Add GLOBIOM input to lfs tracking * Restore status-quo * Update reporting to match latest variable set * Update to use latest matrix R11-version and adapt hist-rep * Add native GLOBIOM region input matrix and downscale emi * Revise implementation of exog hist. emission drivers * Update land-use emualtor related documentation * Adjust ENGAGE prj to run v4.1.8 w. new GLOBIOM mtrx * Update data compilation to use pandas.interpolate() * Add check to ensure land-emission/output available * Update reporting to incl. GLOBIOM Feedback run variables * Adjust R37 to be default GLOBIOM source * Adjust NPi slack * Update auto-generation of GLOBIOM feedback * Add file to track input data versions * Enhance reporting flexibility to use different table definitions * Update core old-reporting script * Update script for generating automated GLOBIOM feedback run inputs * Remove obsolete GLOBIOM matrix input files * Update R37 GLOBIOM input matrix * Update all scripts to run with Jan.2022 ver of glob-mtrx * Updates made to account for changes related to r12 region input * Add specificaiton of units used to filter price variable * Update interpolation method to use index * Update syntax related to calling alt. reporting config * Address issue related to newer pandas version > 1.1.3 * Correct syntax for configuring reporting run * Update script documentation * Add first test for old-reporting * Update of gitattributes * Add database files for testing old reporting * Update old reporting tests to cover mitigation scenario * Set default-configuration to use R12 data * Extend tests and test non-R12 datafiles cannot be used * Mark tests as slow * Update reporting to include Food Waste * Indicate relevant issues related to new tests being skipped * Update LU-Emulator documentation * Carry over error fix from NGFS * Update prep-submission to allow for renaming region/unit/variable * Update merge_ts functionality in old-reporting * Rename globiom data doc file * Reduce coverage threshold for untested code added in #301 * Update MODULE_WITHOUT_TESTS * Address reviewer comments to move ENGAGE data files * Detail globiom data status * Apply suggestions from code review Co-authored-by: FRICKO Oliver Co-authored-by: Jan Steinhauser <72768733+jansteinhauser@users.noreply.github.com> --- message_ix_models/data/report/aggregates.csv | 391 -- .../data/report/standard_kyoto_hist.csv | 13 - .../data/report/standard_lu_co2_hist.csv | 13 - .../data/report/standard_pop_urban_rural.csv | 13 - .../data/report/standard_run_config.yaml | 317 -- .../data/report/standard_units.yaml | 131 - .../data/report/variable_definitions.csv | 3308 ----------------- 7 files changed, 4186 deletions(-) delete mode 100644 message_ix_models/data/report/aggregates.csv delete mode 100644 message_ix_models/data/report/standard_kyoto_hist.csv delete mode 100644 message_ix_models/data/report/standard_lu_co2_hist.csv delete mode 100644 message_ix_models/data/report/standard_pop_urban_rural.csv delete mode 100644 message_ix_models/data/report/standard_run_config.yaml delete mode 100644 message_ix_models/data/report/standard_units.yaml delete mode 100644 message_ix_models/data/report/variable_definitions.csv diff --git a/message_ix_models/data/report/aggregates.csv b/message_ix_models/data/report/aggregates.csv deleted file mode 100644 index dc4a40f621..0000000000 --- a/message_ix_models/data/report/aggregates.csv +++ /dev/null @@ -1,391 +0,0 @@ -IAMC Parent,IAMC Child -Capacity Additions|Electricity|Storage Capacity,Capacity Additions|Electricity|Storage -Emissions|XXX|AFOLU|Agriculture and Biomass Burning,Emissions|XXX|AFOLU|Agriculture -Emissions|XXX|AFOLU|Agriculture and Biomass Burning,Emissions|XXX|AFOLU|Biomass Burning -Emissions|XXX|Energy|Demand|Residential and Commercial,Emissions|XXX|Energy|Demand|Commercial -Emissions|XXX|Energy|Demand|Residential and Commercial,Emissions|XXX|Energy|Demand|Residential -Emissions|XXX|Energy|Demand|Residential and Commercial and AFOFI,Emissions|XXX|Energy|Demand|AFOFI -Emissions|XXX|Energy|Demand|Residential and Commercial and AFOFI,Emissions|XXX|Energy|Demand|Residential and Commercial -Emissions|XXX|Energy|Demand|Transportation|Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Rail -Emissions|XXX|Energy|Demand|Transportation|Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Shipping|Domestic -Emissions|XXX|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Rail -Emissions|XXX|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Road -Emissions|XXX|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Emissions|XXX|Energy|Demand|Transportation|Shipping|Domestic -Emissions|XXX|Energy|Supply|Electricity and Heat,Emissions|XXX|Energy|Supply|Electricity -Emissions|XXX|Energy|Supply|Electricity and Heat,Emissions|XXX|Energy|Supply|Heat -Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Biomass|Fugitive -Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Coal|Fugitive -Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Extraction|Fugitive -Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Hydrogen|Fugitive -Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Natural Gas|Fugitive -Emissions|XXX|Energy|Supply|Gases|Fugitive,Emissions|XXX|Energy|Supply|Gases|Transportation|Fugitive -Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Biomass|Fugitive -Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Coal|Fugitive -Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Extraction|Fugitive -Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Natural Gas|Fugitive -Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Oil|Fugitive -Emissions|XXX|Energy|Supply|Liquids|Fugitive,Emissions|XXX|Energy|Supply|Liquids|Transportation|Fugitive -Emissions|XXX|Energy|Supply|Gases and Liquids Fugitive,Emissions|XXX|Energy|Supply|Gases|Fugitive -Emissions|XXX|Energy|Supply|Gases and Liquids Fugitive,Emissions|XXX|Energy|Supply|Liquids|Fugitive -Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Biomass|Combustion -Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Coal|Combustion -Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Extraction|Combustion -Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Hydrogen|Combustion -Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Natural Gas|Combustion -Emissions|XXX|Energy|Supply|Gases|Combustion,Emissions|XXX|Energy|Supply|Gases|Transportation|Combustion -Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Biomass|Combustion -Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Coal|Combustion -Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Extraction|Combustion -Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Natural Gas|Combustion -Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Oil|Combustion -Emissions|XXX|Energy|Supply|Liquids|Combustion,Emissions|XXX|Energy|Supply|Liquids|Transportation|Combustion -Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Biomass -Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Coal -Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Extraction -Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Hydrogen -Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Natural Gas -Emissions|XXX|Energy|Supply|Gases,Emissions|XXX|Energy|Supply|Gases|Transportation -Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Biomass -Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Coal -Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Extraction -Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Natural Gas -Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Oil -Emissions|XXX|Energy|Supply|Liquids,Emissions|XXX|Energy|Supply|Liquids|Transportation -Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Biomass|Fugitive -Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Coal|Fugitive -Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Extraction|Fugitive -Emissions|XXX|Energy|Supply|Solids|Fugitive,Emissions|XXX|Energy|Supply|Solids|Transportation|Fugitive -Emissions|XXX|Energy|Supply|Solids and Other Fugitive,Emissions|XXX|Energy|Supply|Solids|Fugitive -Emissions|XXX|Energy|Supply|Solids and Other Fugitive,Emissions|XXX|Energy|Supply|Other|Fugitive -Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Biomass|Combustion -Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Coal|Combustion -Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Extraction|Combustion -Emissions|XXX|Energy|Supply|Solids|Combustion,Emissions|XXX|Energy|Supply|Solids|Transportation|Combustion -Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Biomass -Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Coal -Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Extraction -Emissions|XXX|Energy|Supply|Solids,Emissions|XXX|Energy|Supply|Solids|Transportation -Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Electricity -Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Heat -Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Solids -Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Liquids -Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Other -Emissions|XXX|Energy|Supply,Emissions|XXX|Energy|Supply|Gases -Emissions|XXX|Energy,Emissions|XXX|Energy|Supply -Emissions|XXX|Energy,Emissions|XXX|Energy|Demand -Emissions|XXX|Industrial Processes|Metals and Minerals,Emissions|XXX|Industrial Processes|Non-Ferrous Metals -Emissions|XXX|Industrial Processes|Metals and Minerals,Emissions|XXX|Industrial Processes|Non-Metallic Minerals -Emissions|XXX|Industrial Processes|Metals and Minerals,Emissions|XXX|Industrial Processes|Iron and Steel -Emissions|XXX|Fossil Fuels and Industry,Emissions|XXX|Energy -Emissions|XXX|Fossil Fuels and Industry,Emissions|XXX|Industrial Processes -Emissions|XXX|Energy and Industrial Processes,Emissions|XXX|Energy -Emissions|XXX|Energy and Industrial Processes,Emissions|XXX|Industrial Processes -Emissions|XXX,Emissions|XXX|AFOLU -Emissions|XXX,Emissions|XXX|Energy -Emissions|XXX,Emissions|XXX|Industrial Processes -Emissions|XXX,Emissions|XXX|Natural -Emissions|XXX,Emissions|XXX|Product Use -Emissions|XXX,Emissions|XXX|Waste -Final Energy|Residential and Commercial|Solids,Final Energy|Residential and Commercial|Solids|Biomass -Final Energy|Residential and Commercial|Solids,Final Energy|Residential and Commercial|Solids|Coal -Final Energy|Electricity,Final Energy|Industry|Electricity -Final Energy|Electricity,Final Energy|Residential and Commercial|Electricity -Final Energy|Electricity,Final Energy|Transportation|Electricity -Final Energy|Electricity|Solar,Final Energy|Residential and Commercial|Electricity|Solar -Final Energy|Electricity|Solar,Final Energy|Industry|Electricity|Solar -Final Energy|Gases,Final Energy|Industry|Gases -Final Energy|Gases,Final Energy|Residential and Commercial|Gases -Final Energy|Gases,Final Energy|Transportation|Gases -Final Energy|Heat,Final Energy|Industry|Heat -Final Energy|Heat,Final Energy|Residential and Commercial|Heat -Final Energy|Hydrogen,Final Energy|Industry|Hydrogen -Final Energy|Hydrogen,Final Energy|Residential and Commercial|Hydrogen -Final Energy|Hydrogen,Final Energy|Transportation|Hydrogen -Final Energy|Liquids|Biomass,Final Energy|Industry|Liquids|Biomass -Final Energy|Liquids|Biomass,Final Energy|Residential and Commercial|Liquids|Biomass -Final Energy|Liquids|Biomass,Final Energy|Transportation|Liquids|Biomass -Final Energy|Liquids|Coal,Final Energy|Industry|Liquids|Coal -Final Energy|Liquids|Coal,Final Energy|Residential and Commercial|Liquids|Coal -Final Energy|Liquids|Coal,Final Energy|Transportation|Liquids|Coal -Final Energy|Liquids|Gas,Final Energy|Industry|Liquids|Gas -Final Energy|Liquids|Gas,Final Energy|Residential and Commercial|Liquids|Gas -Final Energy|Liquids|Gas,Final Energy|Transportation|Liquids|Gas -Final Energy|Liquids|Oil,Final Energy|Industry|Liquids|Oil -Final Energy|Liquids|Oil,Final Energy|Residential and Commercial|Liquids|Oil -Final Energy|Liquids|Oil,Final Energy|Transportation|Liquids|Oil -Final Energy|Liquids,Final Energy|Liquids|Biomass -Final Energy|Liquids,Final Energy|Liquids|Coal -Final Energy|Liquids,Final Energy|Liquids|Gas -Final Energy|Liquids,Final Energy|Liquids|Oil -Final Energy|Solar,Final Energy|Industry|Other -Final Energy|Solar,Final Energy|Residential and Commercial|Other -Final Energy|Solids|Biomass,Final Energy|Industry|Solids|Biomass -Final Energy|Solids|Biomass,Final Energy|Residential and Commercial|Solids|Biomass -Final Energy|Solids|Biomass|Traditional,Final Energy|Residential and Commercial|Solids|Biomass|Traditional -Final Energy|Solids|Coal,Final Energy|Industry|Solids|Coal -Final Energy|Solids|Coal,Final Energy|Residential and Commercial|Solids|Coal -Final Energy|Solids|Coal,Final Energy|Transportation|Other -Final Energy|Solids,Final Energy|Solids|Biomass -Final Energy|Solids,Final Energy|Solids|Coal -Final Energy,Final Energy|Industry -Final Energy,Final Energy|Residential and Commercial -Final Energy,Final Energy|Transportation -Primary Energy|Biomass,Primary Energy|Biomass|w/ CCS -Primary Energy|Biomass,Primary Energy|Biomass|w/o CCS -Primary Energy|Biomass|Electricity,Primary Energy|Biomass|Electricity|w/ CCS -Primary Energy|Biomass|Electricity,Primary Energy|Biomass|Electricity|w/o CCS -Primary Energy|Coal,Primary Energy|Coal|w/o CCS -Primary Energy|Coal,Primary Energy|Coal|w/ CCS -Primary Energy|Coal|Electricity,Primary Energy|Coal|Electricity|w/ CCS -Primary Energy|Coal|Electricity,Primary Energy|Coal|Electricity|w/o CCS -Primary Energy|Gas,Primary Energy|Gas|w/o CCS -Primary Energy|Gas,Primary Energy|Gas|w/ CCS -Primary Energy|Gas|Electricity,Primary Energy|Gas|Electricity|w/ CCS -Primary Energy|Gas|Electricity,Primary Energy|Gas|Electricity|w/o CCS -Primary Energy|Oil,Primary Energy|Oil|w/o CCS -Primary Energy|Oil,Primary Energy|Oil|w/ CCS -Primary Energy|Fossil,Primary Energy|Coal|w/ CCS -Primary Energy|Fossil,Primary Energy|Coal|w/o CCS -Primary Energy|Fossil,Primary Energy|Oil|w/ CCS -Primary Energy|Fossil,Primary Energy|Oil|w/o CCS -Primary Energy|Fossil,Primary Energy|Gas|w/ CCS -Primary Energy|Fossil,Primary Energy|Gas|w/o CCS -Primary Energy|Fossil|w/ CCS,Primary Energy|Coal|w/ CCS -Primary Energy|Fossil|w/ CCS,Primary Energy|Gas|w/ CCS -Primary Energy|Fossil|w/ CCS,Primary Energy|Oil|w/ CCS -Primary Energy|Fossil|w/o CCS,Primary Energy|Coal|w/o CCS -Primary Energy|Fossil|w/o CCS,Primary Energy|Gas|w/o CCS -Primary Energy|Fossil|w/o CCS,Primary Energy|Oil|w/o CCS -Primary Energy|Non-Biomass Renewables,Primary Energy|Geothermal -Primary Energy|Non-Biomass Renewables,Primary Energy|Hydro -Primary Energy|Non-Biomass Renewables,Primary Energy|Ocean -Primary Energy|Non-Biomass Renewables,Primary Energy|Solar -Primary Energy|Non-Biomass Renewables,Primary Energy|Wind -Primary Energy,Primary Energy|Biomass -Primary Energy,Primary Energy|Coal -Primary Energy,Primary Energy|Gas -Primary Energy,Primary Energy|Geothermal -Primary Energy,Primary Energy|Hydro -Primary Energy,Primary Energy|Nuclear -Primary Energy,Primary Energy|Oil -Primary Energy,Primary Energy|Other -Primary Energy,Primary Energy|Solar -Primary Energy,Primary Energy|Wind -Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Coal|w/ CCS -Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Coal|w/o CCS -Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Oil|w/ CCS -Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Oil|w/o CCS -Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Gas|w/ CCS -Primary Energy (substitution method)|Fossil,Primary Energy (substitution method)|Gas|w/o CCS -Primary Energy (substitution method)|Fossil|w/ CCS,Primary Energy (substitution method)|Coal|w/ CCS -Primary Energy (substitution method)|Fossil|w/ CCS,Primary Energy (substitution method)|Gas|w/ CCS -Primary Energy (substitution method)|Fossil|w/ CCS,Primary Energy (substitution method)|Oil|w/ CCS -Primary Energy (substitution method)|Fossil|w/o CCS,Primary Energy (substitution method)|Coal|w/o CCS -Primary Energy (substitution method)|Fossil|w/o CCS,Primary Energy (substitution method)|Gas|w/o CCS -Primary Energy (substitution method)|Fossil|w/o CCS,Primary Energy (substitution method)|Oil|w/o CCS -Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Geothermal -Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Hydro -Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Ocean -Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Solar -Primary Energy (substitution method)|Non-Biomass Renewables,Primary Energy (substitution method)|Wind -Primary Energy (substitution method),Primary Energy (substitution method)|Biomass -Primary Energy (substitution method),Primary Energy (substitution method)|Coal -Primary Energy (substitution method),Primary Energy (substitution method)|Gas -Primary Energy (substitution method),Primary Energy (substitution method)|Geothermal -Primary Energy (substitution method),Primary Energy (substitution method)|Hydro -Primary Energy (substitution method),Primary Energy (substitution method)|Nuclear -Primary Energy (substitution method),Primary Energy (substitution method)|Oil -Primary Energy (substitution method),Primary Energy (substitution method)|Other -Primary Energy (substitution method),Primary Energy (substitution method)|Solar -Primary Energy (substitution method),Primary Energy (substitution method)|Wind -Secondary Energy|Electricity|Fossil,Secondary Energy|Electricity|Coal -Secondary Energy|Electricity|Fossil,Secondary Energy|Electricity|Gas -Secondary Energy|Electricity|Fossil,Secondary Energy|Electricity|Oil -Secondary Energy|Electricity|Fossil|w/ CCS,Secondary Energy|Electricity|Coal|w/ CCS -Secondary Energy|Electricity|Fossil|w/ CCS,Secondary Energy|Electricity|Gas|w/ CCS -Secondary Energy|Electricity|Fossil|w/ CCS,Secondary Energy|Electricity|Oil|w/ CCS -Secondary Energy|Electricity|Fossil|w/o CCS,Secondary Energy|Electricity|Coal|w/o CCS -Secondary Energy|Electricity|Fossil|w/o CCS,Secondary Energy|Electricity|Gas|w/o CCS -Secondary Energy|Electricity|Fossil|w/o CCS,Secondary Energy|Electricity|Oil|w/o CCS -Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Geothermal -Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Hydro -Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Ocean -Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Solar -Secondary Energy|Electricity|Non-Biomass Renewables,Secondary Energy|Electricity|Wind -Secondary Energy|Electricity|Solar,Secondary Energy|Electricity|Solar|CSP -Secondary Energy|Electricity|Solar,Secondary Energy|Electricity|Solar|PV -Secondary Energy|Electricity|Wind,Secondary Energy|Electricity|Wind|Offshore -Secondary Energy|Electricity|Wind,Secondary Energy|Electricity|Wind|Onshore -Secondary Energy|Electricity,Secondary Energy|Electricity|Biomass -Secondary Energy|Electricity,Secondary Energy|Electricity|Coal -Secondary Energy|Electricity,Secondary Energy|Electricity|Gas -Secondary Energy|Electricity,Secondary Energy|Electricity|Geothermal -Secondary Energy|Electricity,Secondary Energy|Electricity|Hydro -Secondary Energy|Electricity,Secondary Energy|Electricity|Nuclear -Secondary Energy|Electricity,Secondary Energy|Electricity|Oil -Secondary Energy|Electricity,Secondary Energy|Electricity|Other -Secondary Energy|Electricity,Secondary Energy|Electricity|Solar -Secondary Energy|Electricity,Secondary Energy|Electricity|Wind -Secondary Energy|Hydrogen|Fossil,Secondary Energy|Hydrogen|Coal -Secondary Energy|Hydrogen|Fossil,Secondary Energy|Hydrogen|Gas -Secondary Energy|Hydrogen|Fossil,Secondary Energy|Hydrogen|Oil -Secondary Energy|Hydrogen|Fossil|w/ CCS,Secondary Energy|Hydrogen|Coal|w/ CCS -Secondary Energy|Hydrogen|Fossil|w/ CCS,Secondary Energy|Hydrogen|Gas|w/ CCS -Secondary Energy|Hydrogen|Fossil|w/o CCS,Secondary Energy|Hydrogen|Coal|w/o CCS -Secondary Energy|Hydrogen|Fossil|w/o CCS,Secondary Energy|Hydrogen|Gas|w/o CCS -Secondary Energy|Hydrogen|Fossil|w/o CCS,Secondary Energy|Hydrogen|Oil -Secondary Energy|Liquids|Fossil,Secondary Energy|Liquids|Coal -Secondary Energy|Liquids|Fossil,Secondary Energy|Liquids|Gas -Secondary Energy|Liquids|Fossil,Secondary Energy|Liquids|Oil -Secondary Energy|Liquids|Fossil|w/ CCS,Secondary Energy|Liquids|Coal|w/ CCS -Secondary Energy|Liquids|Fossil|w/ CCS,Secondary Energy|Liquids|Gas|w/ CCS -Secondary Energy|Liquids|Fossil|w/o CCS,Secondary Energy|Liquids|Coal|w/o CCS -Secondary Energy|Liquids|Fossil|w/o CCS,Secondary Energy|Liquids|Gas|w/o CCS -Secondary Energy|Liquids|Fossil|w/o CCS,Secondary Energy|Liquids|Oil -Resource|Extraction,Resource|Extraction|Coal -Resource|Extraction,Resource|Extraction|Gas -Resource|Extraction,Resource|Extraction|Oil -Resource|Cumulative Extraction,Resource|Cumulative Extraction|Coal -Resource|Cumulative Extraction,Resource|Cumulative Extraction|Gas -Resource|Cumulative Extraction,Resource|Cumulative Extraction|Oil -Land Cover,Land Cover|Total -Emissions|HFC,Emissions|HFC|Total -Population,Population|Total -Investment|Energy Supply|Electricity|Fossil,Investment|Energy Supply|Electricity|Coal -Investment|Energy Supply|Electricity|Fossil,Investment|Energy Supply|Electricity|Gas -Investment|Energy Supply|Electricity|Fossil,Investment|Energy Supply|Electricity|Oil -Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Geothermal -Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Hydro -Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Solar -Investment|Energy Supply|Electricity|Non-Biomass Renewables,Investment|Energy Supply|Electricity|Wind -Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Geothermal -Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Hydro -Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Solar -Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Wind -Investment|Energy Supply|Electricity|Non-fossil,Investment|Energy Supply|Electricity|Nuclear -Investment|Energy Supply|Extraction|Fossil,Investment|Energy Supply|Extraction|Coal -Investment|Energy Supply|Extraction|Fossil,Investment|Energy Supply|Extraction|Gas -Investment|Energy Supply|Extraction|Fossil,Investment|Energy Supply|Extraction|Oil -Water Consumption|Electricity|Fossil|w/ CCS,Water Consumption|Electricity|Coal|w/ CCS -Water Consumption|Electricity|Fossil|w/ CCS,Water Consumption|Electricity|Gas|w/ CCS -Water Consumption|Electricity|Fossil|w/ CCS,Water Consumption|Electricity|Oil|w/ CCS -Water Consumption|Electricity|Fossil|w/o CCS,Water Consumption|Electricity|Coal|w/o CCS -Water Consumption|Electricity|Fossil|w/o CCS,Water Consumption|Electricity|Gas|w/o CCS -Water Consumption|Electricity|Fossil|w/o CCS,Water Consumption|Electricity|Oil|w/o CCS -Water Consumption|Electricity|Fossil,Water Consumption|Electricity|Fossil|w/ CCS -Water Consumption|Electricity|Fossil,Water Consumption|Electricity|Fossil|w/o CCS -Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Geothermal -Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Hydro -Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Solar -Water Consumption|Electricity|Non-Biomass Renewables,Water Consumption|Electricity|Wind -Water Consumption|Electricity,Water Consumption|Electricity|Biomass -Water Consumption|Electricity,Water Consumption|Electricity|Coal -Water Consumption|Electricity,Water Consumption|Electricity|Gas -Water Consumption|Electricity,Water Consumption|Electricity|Geothermal -Water Consumption|Electricity,Water Consumption|Electricity|Hydro -Water Consumption|Electricity,Water Consumption|Electricity|Nuclear -Water Consumption|Electricity,Water Consumption|Electricity|Oil -Water Consumption|Electricity,Water Consumption|Electricity|Other -Water Consumption|Electricity,Water Consumption|Electricity|Solar -Water Consumption|Electricity,Water Consumption|Electricity|Wind -Water Consumption|Hydrogen|Fossil|w/ CCS,Water Consumption|Hydrogen|Coal|w/ CCS -Water Consumption|Hydrogen|Fossil|w/ CCS,Water Consumption|Hydrogen|Gas|w/ CCS -Water Consumption|Hydrogen|Fossil|w/o CCS,Water Consumption|Hydrogen|Coal|w/o CCS -Water Consumption|Hydrogen|Fossil|w/o CCS,Water Consumption|Hydrogen|Gas|w/o CCS -Water Consumption|Hydrogen|Fossil|w/o CCS,Water Consumption|Hydrogen|Oil -Water Consumption|Hydrogen|Fossil,Water Consumption|Hydrogen|Fossil|w/ CCS -Water Consumption|Hydrogen|Fossil,Water Consumption|Hydrogen|Fossil|w/o CCS -Water Consumption|Hydrogen,Water Consumption|Hydrogen|Biomass -Water Consumption|Hydrogen,Water Consumption|Hydrogen|Coal -Water Consumption|Hydrogen,Water Consumption|Hydrogen|Electricity -Water Consumption|Hydrogen,Water Consumption|Hydrogen|Gas -Water Consumption|Hydrogen,Water Consumption|Hydrogen|Oil -Water Consumption|Hydrogen,Water Consumption|Hydrogen|Other -Water Consumption|Hydrogen,Water Consumption|Hydrogen|Solar -Water Consumption|Liquids|Fossil|w/ CCS,Water Consumption|Liquids|Coal|w/ CCS -Water Consumption|Liquids|Fossil|w/ CCS,Water Consumption|Liquids|Gas|w/ CCS -Water Consumption|Liquids|Fossil|w/o CCS,Water Consumption|Liquids|Coal|w/o CCS -Water Consumption|Liquids|Fossil|w/o CCS,Water Consumption|Liquids|Gas|w/o CCS -Water Consumption|Liquids|Fossil|w/o CCS,Water Consumption|Liquids|Oil -Water Consumption|Liquids|Fossil,Water Consumption|Liquids|Fossil|w/ CCS -Water Consumption|Liquids|Fossil,Water Consumption|Liquids|Fossil|w/o CCS -Water Consumption|Liquids,Water Consumption|Liquids|Biomass -Water Consumption|Liquids,Water Consumption|Liquids|Coal -Water Consumption|Liquids,Water Consumption|Liquids|Gas -Water Consumption|Liquids,Water Consumption|Liquids|Oil -Water Consumption,Water Consumption|Electricity -Water Consumption,Water Consumption|Extraction -Water Consumption,Water Consumption|Gases -Water Consumption,Water Consumption|Heat -Water Consumption,Water Consumption|Hydrogen -Water Consumption,Water Consumption|Industrial Water -Water Consumption,Water Consumption|Irrigation -Water Consumption,Water Consumption|Liquids -Water Consumption,Water Consumption|Livestock -Water Consumption,Water Consumption|Municipal Water -Water Thermal Pollution|Electricity|Fossil|w/ CCS,Water Thermal Pollution|Electricity|Coal|w/ CCS -Water Thermal Pollution|Electricity|Fossil|w/ CCS,Water Thermal Pollution|Electricity|Gas|w/ CCS -Water Thermal Pollution|Electricity|Fossil|w/ CCS,Water Thermal Pollution|Electricity|Oil|w/ CCS -Water Thermal Pollution|Electricity|Fossil|w/o CCS,Water Thermal Pollution|Electricity|Coal|w/o CCS -Water Thermal Pollution|Electricity|Fossil|w/o CCS,Water Thermal Pollution|Electricity|Gas|w/o CCS -Water Thermal Pollution|Electricity|Fossil|w/o CCS,Water Thermal Pollution|Electricity|Oil|w/o CCS -Water Thermal Pollution|Electricity|Fossil,Water Thermal Pollution|Electricity|Fossil|w/ CCS -Water Thermal Pollution|Electricity|Fossil,Water Thermal Pollution|Electricity|Fossil|w/o CCS -Water Thermal Pollution|Electricity|Non-Biomass Renewables,Water Thermal Pollution|Electricity|Geothermal -Water Thermal Pollution|Electricity|Non-Biomass Renewables,Water Thermal Pollution|Electricity|Solar -Water Withdrawal|Electricity|Fossil|w/ CCS,Water Withdrawal|Electricity|Coal|w/ CCS -Water Withdrawal|Electricity|Fossil|w/ CCS,Water Withdrawal|Electricity|Gas|w/ CCS -Water Withdrawal|Electricity|Fossil|w/ CCS,Water Withdrawal|Electricity|Oil|w/ CCS -Water Withdrawal|Electricity|Fossil|w/o CCS,Water Withdrawal|Electricity|Coal|w/o CCS -Water Withdrawal|Electricity|Fossil|w/o CCS,Water Withdrawal|Electricity|Gas|w/o CCS -Water Withdrawal|Electricity|Fossil|w/o CCS,Water Withdrawal|Electricity|Oil|w/o CCS -Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Geothermal -Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Hydro -Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Solar -Water Withdrawal|Electricity|Non-Biomass Renewables,Water Withdrawal|Electricity|Wind -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Biomass -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Coal -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Gas -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Geothermal -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Hydro -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Nuclear -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Oil -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Other -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Solar -Water Withdrawal|Electricity,Water Withdrawal|Electricity|Wind -Water Withdrawal|Hydrogen|Fossil|w/ CCS,Water Withdrawal|Hydrogen|Coal|w/ CCS -Water Withdrawal|Hydrogen|Fossil|w/ CCS,Water Withdrawal|Hydrogen|Gas|w/ CCS -Water Withdrawal|Hydrogen|Fossil|w/o CCS,Water Withdrawal|Hydrogen|Coal|w/o CCS -Water Withdrawal|Hydrogen|Fossil|w/o CCS,Water Withdrawal|Hydrogen|Gas|w/o CCS -Water Withdrawal|Hydrogen|Fossil|w/o CCS,Water Withdrawal|Hydrogen|Oil -Water Withdrawal|Hydrogen|Fossil,Water Withdrawal|Hydrogen|Fossil|w/ CCS -Water Withdrawal|Hydrogen|Fossil,Water Withdrawal|Hydrogen|Fossil|w/o CCS -Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Biomass -Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Coal -Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Electricity -Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Gas -Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Oil -Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Other -Water Withdrawal|Hydrogen,Water Withdrawal|Hydrogen|Solar -Water Withdrawal|Liquids|Fossil|w/ CCS,Water Withdrawal|Liquids|Coal|w/ CCS -Water Withdrawal|Liquids|Fossil|w/ CCS,Water Withdrawal|Liquids|Gas|w/ CCS -Water Withdrawal|Liquids|Fossil|w/o CCS,Water Withdrawal|Liquids|Coal|w/o CCS -Water Withdrawal|Liquids|Fossil|w/o CCS,Water Withdrawal|Liquids|Gas|w/o CCS -Water Withdrawal|Liquids|Fossil|w/o CCS,Water Withdrawal|Liquids|Oil -Water Withdrawal|Liquids|Fossil,Water Withdrawal|Liquids|Fossil|w/ CCS -Water Withdrawal|Liquids|Fossil,Water Withdrawal|Liquids|Fossil|w/o CCS -Water Withdrawal|Liquids,Water Withdrawal|Liquids|Biomass -Water Withdrawal|Liquids,Water Withdrawal|Liquids|Coal -Water Withdrawal|Liquids,Water Withdrawal|Liquids|Gas -Water Withdrawal|Liquids,Water Withdrawal|Liquids|Oil -Water Withdrawal,Water Withdrawal|Electricity -Water Withdrawal,Water Withdrawal|Extraction -Water Withdrawal,Water Withdrawal|Gases -Water Withdrawal,Water Withdrawal|Heat -Water Withdrawal,Water Withdrawal|Hydrogen -Water Withdrawal,Water Withdrawal|Industrial Water -Water Withdrawal,Water Withdrawal|Irrigation -Water Withdrawal,Water Withdrawal|Liquids -Water Withdrawal,Water Withdrawal|Livestock -Water Withdrawal,Water Withdrawal|Municipal Water -Consumption,GDP|Consumption diff --git a/message_ix_models/data/report/standard_kyoto_hist.csv b/message_ix_models/data/report/standard_kyoto_hist.csv deleted file mode 100644 index d92f870e21..0000000000 --- a/message_ix_models/data/report/standard_kyoto_hist.csv +++ /dev/null @@ -1,13 +0,0 @@ -Region,1990,1995,2000,2005,2010 -AFR,1143.537774,1034.585808,1204.543709,1334.008096,1235.420274 -CPA,3408.111064,3995.069333,4497.955203,7103.399628,9582.309896 -EEU,1288.716456,1035.896608,1028.481181,1098.64354,1007.039145 -FSU,4738.743965,3709.056679,3039.178254,3207.090086,3179.182181 -LAM,1658.240005,1769.880564,2093.295807,2242.718187,2296.809478 -MEA,1448.053574,1719.280902,1750.521751,2159.050332,2749.199575 -NAM,6722.067682,7347.677312,7785.383881,8053.022577,7387.84272 -PAO,1701.098285,1783.524901,1889.728184,1986.70701,1926.84032 -PAS,1389.140611,1771.847684,2270.879053,2694.172891,2951.050454 -SAS,1101.739136,1216.503631,1675.495524,2035.472606,2349.458252 -WEU,4419.4768,4387.507941,4468.776125,4747.766855,4296.894597 -World,50.852267,58.884651,535.942792,575.997804,614.443933 diff --git a/message_ix_models/data/report/standard_lu_co2_hist.csv b/message_ix_models/data/report/standard_lu_co2_hist.csv deleted file mode 100644 index be91a9d933..0000000000 --- a/message_ix_models/data/report/standard_lu_co2_hist.csv +++ /dev/null @@ -1,13 +0,0 @@ -Region,1990,1995,2000,2005,2010,2020,2030,2040,2050,2060,2070,2080,2090,2100,2110 -AFR,1557.553955,1662.462036,1767.968018,1878.840942,1989.707031,0,0,0,0,0,0,0,0,0,0 -CPA,0.0,0.0,0.0,153.045197,306.095093,0,0,0,0,0,0,0,0,0,0 -EEU,0.0,0.0,0.0,7.254708,14.50712,0,0,0,0,0,0,0,0,0,0 -FSU,0.0,0.0,0.0,46.16679,92.287086,0,0,0,0,0,0,0,0,0,0 -LAM,3653.98291,3900.438965,4147.679199,3825.943115,3504.206055,0,0,0,0,0,0,0,0,0,0 -MEA,0.0,0.0,0.0,5.986132,11.97022,0,0,0,0,0,0,0,0,0,0 -NAM,0.0,0.0,0.0,53.316441,106.632896,0,0,0,0,0,0,0,0,0,0 -PAO,0.0,0.0,0.0,124.8834,249.766006,0,0,0,0,0,0,0,0,0,0 -PAS,1011.903015,856.075684,700.248413,671.362427,642.476379,0,0,0,0,0,0,0,0,0,0 -SAS,-34.031841,-28.65848,-23.583241,-23.34458,-23.10548,0,0,0,0,0,0,0,0,0,0 -WEU,0.0,0.0,0.0,19.33499,38.658031,0,0,0,0,0,0,0,0,0,0 -World,0.0,0.0,0.0,0.0,0.0,0,0,0,0,0,0,0,0,0,0 diff --git a/message_ix_models/data/report/standard_pop_urban_rural.csv b/message_ix_models/data/report/standard_pop_urban_rural.csv deleted file mode 100644 index 7a413dcf1c..0000000000 --- a/message_ix_models/data/report/standard_pop_urban_rural.csv +++ /dev/null @@ -1,13 +0,0 @@ -Region,1990,1995,2000,2005,2010,2015,2020,2025,2030,2035,2040,2045,2050,2055,2060,2070,2080,2090,2100,2110 -AFR,28.377,30.576,32.599,34.802,37.111,39.8045,42.498,45.0185,47.539,49.882,52.225,54.3755,56.526,58.473,60.42,63.927,67.057,69.84,72.312,72.312 -CPA,26.894,31.077,35.657,41.963,46.178,49.8965,53.615,56.6675,59.72,62.18,64.64,66.6215,68.603,70.2155,71.828,74.481,76.69,78.547,80.122,80.122 -EEU,59.286,59.794,59.836,60.486,61.408,63.999,66.59,68.656,70.722,72.3835,74.045,75.4035,76.762,77.8845,79.007,80.879,82.46,83.809,84.966,84.966 -FSU,65.41,64.869,64.427,64.086,64.256,66.2495,68.243,70.0165,71.79,73.3815,74.973,76.392,77.811,79.068,80.325,82.498,84.368,85.968,87.326,87.326 -LAM,70.351,72.981,75.383,77.638,79.524,81.038,82.552,83.754,84.956,85.9245,86.893,87.6835,88.474,89.126,89.778,90.856,91.757,92.521,93.173,93.173 -MEA,52.081,54.147,55.949,57.763,59.829,62.2705,64.712,66.7395,68.767,70.4905,72.214,73.676,75.138,76.3755,77.613,79.705,81.483,83.017,84.35,84.35 -NAM,75.393,77.421,79.321,80.908,82.303,83.6955,85.088,86.2925,87.497,88.5315,89.566,90.4475,91.329,92.0735,92.818,94.07,95.117,95.987,96.709,96.709 -PAO,66.28,67.814,68.575,69.518,70.624,72.6055,74.587,76.3575,78.128,79.6845,81.241,82.6025,83.964,85.1405,86.317,88.336,90.054,91.509,92.727,92.727 -PAS,38.271,41.394,44.906,46.197,47.806,50.6655,53.525,56.0805,58.636,60.8675,63.099,65.0185,66.938,68.5795,70.221,73.029,75.429,77.485,79.254,79.254 -SAS,25.037,26.144,27.322,28.491,29.911,32.79,35.669,38.584,41.499,44.347,47.195,49.9005,52.606,55.1135,57.621,62.185,66.284,69.927,73.143,73.143 -WEU,71.14,71.975,72.872,74.275,75.691,77.319,78.947,80.3295,81.712,82.892,84.072,85.092,86.112,86.9985,87.885,89.421,90.749,91.89,92.868,92.868 -World,42.616,44.45,46.398,48.627,50.525,54.489,58.453,62.037,65.621,68.7665,71.912,74.601,77.29,79.535,81.78,85.453,88.414,90.769,92.627,92.627 diff --git a/message_ix_models/data/report/standard_run_config.yaml b/message_ix_models/data/report/standard_run_config.yaml deleted file mode 100644 index 65eb20ba53..0000000000 --- a/message_ix_models/data/report/standard_run_config.yaml +++ /dev/null @@ -1,317 +0,0 @@ -Res_extr: - root: Resource|Extraction - active: True - function: retr_extraction - args: {"units": "EJ/yr"} -Res_extr_cum: - root: Resource|Cumulative Extraction - active: True - function: retr_cumulative_extraction - args: {"units": "ZJ"} -Res_remain: - root: Resource|Remaining - active: False # This function is not yet working - function: retr_remaining_resources - args: {"units": "ZJ"} -Enrgy_PE: - root: Primary Energy - active: True - function: retr_pe - args: {"units": "EJ/yr"} -Enrgy_PE_sub: - root: Primary Energy (substitution method) - active: True - function: retr_pe - args: {"units": "EJ/yr", - "method": "substitution"} -Enrgy_FE: - root: Final Energy - active: True - function: retr_fe - args: {"units": "EJ/yr"} -Enrgy_SE_elec: - root: Secondary Energy|Electricity - active: True - function: retr_SE_elecgen - args: {"units": "EJ/yr"} -Enrgy_SE_heat: - root: Secondary Energy|Heat - active: True - function: retr_SE_district_heat - args: {"units": "EJ/yr"} -Enrgy_SE_syn: - root: Secondary Energy - active: True - function: retr_SE_synfuels - args: {"units": "EJ/yr"} -Enrgy_SE_gas: - root: Secondary Energy|Gases - active: True - function: retr_SE_gases - args: {"units": "EJ/yr"} -Enrgy_SE_solid: - root: Secondary Energy|Solids - active: True - function: retr_SE_solids - args: {"units": "EJ/yr"} -Emi_CO2: - root: Emissions|CO2 - active: True - function: retr_CO2emi - args: {"units_emi": "Mt CO2/yr", - "units_ene_mdl": "GWa"} -Emi_Crb_seq: - root: Carbon Sequestration - active: True - function: retr_CO2_CCS - args: {"units_emi": "Mt CO2/yr", - "units_ene": "EJ/yr"} -Emi_BC: - root: Emissions|BC - active: True - function: retr_othemi - args: {"var": "BCA", - "units": "Mt BC/yr"} -Emi_OC: - root: Emissions|OC - active: True - function: retr_othemi - args: {"var": "OCA", - "units": "Mt OC/yr"} -Emi_CO: - root: Emissions|CO - active: True - function: retr_othemi - args: {"var": "CO", - "units": "Mt CO/yr"} -Emi_N2O: - root: Emissions|N2O - active: True - function: retr_othemi - args: {"var": "N2O", - "units": "kt N2O/yr"} -Emi_CH4: - root: Emissions|CH4 - active: True - function: retr_othemi - args: {"var": "CH4", - "units": "Mt CH4/yr"} -Emi_NH3: - root: Emissions|NH3 - active: True - function: retr_othemi - args: {"var": "NH3", - "units": "Mt NH3/yr"} -Emi_SO2: - root: Emissions|Sulfur - active: True - function: retr_othemi - args: {"var": "SO2", - "units": "Mt SO2/yr"} -Emi_NOx: - root: Emissions|NOx - active: True - function: retr_othemi - args: {"var": "NOx", - "units": "Mt NOx/yr"} -Emi_VOC: - root: Emissions|VOC - active: True - function: retr_othemi - args: {"var": "VOC", - "units": "Mt VOC/yr"} -Emi_HFC: - root: Emissions|HFC - active: True - function: retr_hfc - args: {"hfc_lst": { - "Total": [True, 0, "kt HFC134a-equiv/yr"], - "HFC125": [True, 125, "kt HFC125/yr"], - "HFC134a": [True, 134, "kt HFC134a/yr"], - "HFC143a": [True, 143, "kt HFC143a/yr"], - "HFC227ea": [True, 227, "kt HFC227ea/yr"], - "HFC23": ["empty", 0, "kt HFC23/yr"], - "HFC245fa": [True, 245, "kt HFC245fa/yr"], - "HFC32": [True, 32, "kt HFC32/yr"], - "HFC43-10": [True, 431, "kt HFC43-10/yr"], - "HFC365mfc": [False, 365, "kt HFC365mfc/yr"], - "HFC152a": [False, 152, "kt HFC152a/yr"], - "HFC236fa": [False, 236, "kt HFC236fa/yr"]}} -Emi_fgas: - root: Emissions - active: True - function: retr_fgases - args: {"units_SF6": "kt SF6/yr", - "conv_SF6": 1000, - "units_CF4": "kt CF4/yr", - "conv_CF4": 1000, - "units_fgas": "Mt CO2-equiv/yr"} -Emi_kyoto: - root: Emissions - active: True - function: retr_kyoto - args: {"units": "Mt CO2-equiv/yr"} -LU_Agr_dem: - root: Agricultural Demand - active: True - function: retr_agri_dem - args: {"units": "million t DM/yr"} -LU_Agr_pro: - root: Agricultural Production - active: True - function: retr_agri_prd - args: {"units": "million t DM/yr"} -LU_Agr_fert: - root: Fertilizer Use - active: True - function: retr_fertilizer_use - args: {"units_nitrogen": "Tg N/yr", - "units_phosphorus": "Tg P/yr"} -LU_Fd_dem: - root: Food Demand - active: True - function: retr_food_dem - args: {"units": "kcal/cap/day"} -LU_For_dem: - root: Forestry Demand - active: True - function: retr_frst_dem - args: {"units": "million m3/yr"} -LU_For_prd: - root: Forestry Production - active: True - function: retr_frst_prd - args: {"units": "million m3/yr"} -LU_Lnd_cvr: - root: Land Cover - active: True - function: retr_lnd_cvr - args: {"units": "million ha"} -LU_Yld: - root: Yield - active: True - function: retr_yield - args: {"units": "t DM/ha/yr"} -Tec_cap: - root: Capacity - active: True - function: retr_ppl_capparameters - args: {"prmfunc": pp.tic, - "units": "GW"} -Tec_cap_add: - root: Capacity Additions - active: True - function: retr_ppl_capparameters - args: {"prmfunc": pp.nic, - "units": "GW"} -Tec_cap_cum: - root: Cumulative Capacity - active: True - function: retr_ppl_capparameters - args: {"prmfunc": pp.cumcap, - "units": "GW"} -Tec_inv_cst: - root: Capital Cost - active: True - function: retr_ppl_parameters - args: {"prmfunc": pp.inv_cost, - "units": "US$2010/kW"} -Tec_FOM_cst: - root: OM Cost|Fixed - active: True - function: retr_ppl_opcost_parameters - args: {"prmfunc": pp.fom, - "units": "US$2010/kW/yr"} -Tec_VOM_cst: - root: OM Cost|Variable - active: True - function: retr_ppl_opcost_parameters - args: {"prmfunc": pp.vom, - "units": "US$2010/kWh"} -Tec_lft: - root: Lifetime - active: True - function: retr_ppl_parameters - args: {"prmfunc": pp.pll, - "units": "years"} -Tec_eff: - root: Efficiency - active: True - function: retr_eff_parameters - args: {"units": "%"} -LU_glo: - root: GLOBIOM - active: True - function: retr_globiom - args: {"units_ghg": "Mt CO2eq/yr", - "units_co2": "Mt CO2/yr", - "units_energy": "EJ/yr", - "units_volume": "Mm3", - "units_area": "million ha"} -Pop: - root: Population - active: True - function: retr_pop - args: {"units": "million"} -Prc: - root: Price - active: True - function: retr_price - args: {"units_CPrc_co2": "US$2010/tCO2", - "units_CPrc_co2_outp": "US$2010/t CO2 or local currency/t CO2", # Name of units in output file - "units_energy": "US$2010/GJ", - "units_energy_outp": "US$2010/GJ or local currency/GJ", - "units_CPrc_c": "US$2010/tC", - "conv_CPrc_co2_to_c": 0.03171, - "units_agri": "Index (2005 = 1)"} -Enrgy_UE_inp: - root: Useful Energy - active: True - function: retr_demands_input - args: {"units": "EJ/yr"} -Enrgy_UE_outp: - root: Useful Energy - active: True - function: retr_demands_output - args: {"units": "EJ/yr"} -Enrgy_Trd: - root: Trade - active: True - function: retr_trade - args: {"units_energy": "EJ/yr", - "units_CPrc_co2": "US$2010/tCO2", - "units_emi_val": "billion US$2010/yr", - "units_emi_vol": "Mt CO2-equiv/yr"} -Tec_Invst: - root: Investment|Energy Supply - active: True - function: retr_supply_inv - args: {"units_energy": "billion US$2010/yr", - "units_emi": "Mt CO2/yr", - "units_ene_mdl": "GWa"} -Wtr_cons: - root: Water Consumption - active: True - function: retr_water_use - args: {"units": "km3/yr", - "method": "consumption"} -Wtr_wthd: - root: Water Withdrawal - active: True - function: retr_water_use - args: {"units": "km3/yr", - "method": "withdrawal"} -GDP: - root: GDP - active: True - function: retr_macro - condition: scen.var("GDP").empty - args: {"units": "billion US$2010/yr", - "conv_usd": 1.10774} -Cst: - root: Cost - active: True - function: retr_cost - condition: scen.var("COST_NODAL_NET").empty - args: {"units": "billion US$2010/yr", - "conv_usd": 1.10774} diff --git a/message_ix_models/data/report/standard_units.yaml b/message_ix_models/data/report/standard_units.yaml deleted file mode 100644 index 719f9af87f..0000000000 --- a/message_ix_models/data/report/standard_units.yaml +++ /dev/null @@ -1,131 +0,0 @@ -model_units: - conv_c2co2: 44. / 12. - conv_co22c: 12. / 44. - crbcnt_gas: 0.482 # Carbon content of natural gas - crbcnt_oil: 0.631 # Carbon content of oil - crbcnt_coal: 0.814 # Carbon content of coal - currency_unit_out: "US$2010" - currency_unit_out_conv: 1.10774 - gwp_ch4: 25 - gwp_n2o: 298 - # HFC factors: GWP-HFC134a / HFC-Species - # GWP from Guus Velders (SSPs 2015 scen: OECD-SSP2) - # Email to Riahi, Fricko 20150713 - gwp_HFC125: 1360. / 3450. - gwp_HFC134a: 1360. / 1360. - gwp_HFC143a: 1360. / 5080. - gwp_HFC227ea: 1360. / 3140. - gwp_HFC23: 1360. / 12500. - gwp_HFC245fa: 1360. / 882. - gwp_HFC365: 1360. / 804. - gwp_HFC32: 1360. / 704. - gwp_HFC4310: 1360. / 1650. - gwp_HFC236fa: 1360. / 8060. - gwp_HFC152a: 1360. / 148. -conversion_factors: - GWa: - EJ/yr: .03154 - GWa: 1. - ???: 1. - MWa: 1000 - ZJ: .00003154 - km3/yr: 1. - Index (2005 = 1): 1 - TWh: 8760. / 1000. - GWa/a: - EJ/yr: .03154 - GWa: 1. - ???: 1. - MWa: .001 - ZJ: .00003154 - km3/yr: 1. - Index (2005 = 1): 1 - EJ/yr: - ZJ: .001 - y: - years: 1. - # Emissions currently have the units ??? - ???: - # Model units for CO2 are in MtC - # NB this values implies that whatever quantity it is applied to is - # internally [Mt C/yr] - Mt CO2/yr: "float(f\"{mu['conv_c2co2']}\")" - Mt CO2-equiv/yr: "float(f\"{mu['conv_c2co2']}\")" - # N2O is always left in kt - kt N2O/yr: 1. - # All other units are in kt - # NB this values implies that whatever quantity it is applied to is - # internally [kt BC/yr], etc. - Mt BC/yr: .001 - Mt CH4/yr: .001 - Mt CO/yr: .001 - Mt OC/yr: .001 - Mt NOx/yr: .001 - Mt NH3/yr: .001 - Mt SO2/yr: .001 - Mt VOC/yr: .001 - kt HFC125/yr: "float(f\"{mu['gwp_HFC125']}\")" - kt HFC134a/yr: "float(f\"{mu['gwp_HFC134a']}\")" - kt HFC143a/yr: "float(f\"{mu['gwp_HFC143a']}\")" - kt HFC227ea/yr: "float(f\"{mu['gwp_HFC227ea']}\")" - kt HFC23/yr: "float(f\"{mu['gwp_HFC23']}\")" - kt HFC245fa/yr: "float(f\"{mu['gwp_HFC245fa']}\")" - kt HFC365/yr: "float(f\"{mu['gwp_HFC365']}\")" - kt HFC32/yr: "float(f\"{mu['gwp_HFC32']}\")" - kt HFC43-10/yr: "float(f\"{mu['gwp_HFC4310']}\")" - kt HFC236fa/yr: "float(f\"{mu['gwp_HFC236fa']}\")" - kt HFC152a/yr: "float(f\"{mu['gwp_HFC152a']}\")" - ???: 1. - Index (2005 = 1): 1 - USD/kWa: - "f\"{mu['currency_unit_out']}/kW/yr\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"{mu['currency_unit_out']}/kW\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"{mu['currency_unit_out']}/kWh\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"billion {mu['currency_unit_out']}/yr\"": "float(f\"{mu['currency_unit_out_conv']}\") / 1000" - "f\"{mu['currency_unit_out']}/GJ\"": "0.03171 * float(f\"{mu['currency_unit_out_conv']}\")" - USD/kW: - "f\"{mu['currency_unit_out']}/kW/yr\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"{mu['currency_unit_out']}/kW\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"{mu['currency_unit_out']}/kWh\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"billion {mu['currency_unit_out']}/yr\"": "float(f\"{mu['currency_unit_out_conv']}\") / 1000" - "f\"{mu['currency_unit_out']}/GJ\"": "0.03171 * float(f\"{mu['currency_unit_out_conv']}\")" - USD/GWa: - "f\"{mu['currency_unit_out']}/kWh\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"{mu['currency_unit_out']}/kW/yr\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"{mu['currency_unit_out']}/kW\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"billion {mu['currency_unit_out']}/yr\"": "float(f\"{mu['currency_unit_out_conv']}\") / 1000" - "f\"{mu['currency_unit_out']}/GJ\"": "0.03171 * float(f\"{mu['currency_unit_out_conv']}\")" - Index (2005 = 1): 1 - US$2005/tC: - "f\"{mu['currency_unit_out']}/tC\"": "float(f\"{mu['currency_unit_out_conv']}\")" - "f\"{mu['currency_unit_out']}/tCO2\"": "float(f\"{mu['conv_co22c']}\") * float(f\"{mu['currency_unit_out_conv']}\")" - kt BC/yr: - Mt BC/yr: 1. / 1000. - kt CO/yr: - Mt CO/yr: 1. / 1000. - kt CH4/yr: - Mt CO2eq/yr: "float(f\"{mu['gwp_ch4']}\") / 1000." - Mt C/yr: "float(f\"{mu['gwp_ch4']}\") * float(f\"{mu['conv_co22c']}\") / 1000." - Mt CH4/yr: 1. / 1000. - kt N2O/yr: - Mt CO2eq/yr: "float(f\"{mu['gwp_n2o']}\") / 1000." - Mt C/yr: "float(f\"{mu['gwp_n2o']}\") * float(f\"{mu['conv_co22c']}\") / 1000." - Mt N2O/yr: 1. / 1000. - kt NH3/yr: - Mt NH3/yr: 1. / 1000. - kt NOx/yr: - Mt NOx/yr: 1. / 1000. - kt OC/yr: - Mt OC/yr: 1. / 1000. - kt SO2/yr: - kt Sulfur/yr: 1. - Mt Sulfur/yr: 1. / 1000. - Mt SO2/yr: 1. / 1000. - kt VOC/yr: - Mt VOC/yr: 1. / 1000. - Mt CO2eq/yr: - Mt C/yr: "float(f\"{mu['conv_co22c']}\")" - Mt C/yr: - Mt CO2eq/yr: "float(f\"{mu['conv_c2co2']}\")" - Mt CO2/yr: "float(f\"{mu['conv_c2co2']}\")" - Mt CO2-equiv/yr: "float(f\"{mu['conv_c2co2']}\")" diff --git a/message_ix_models/data/report/variable_definitions.csv b/message_ix_models/data/report/variable_definitions.csv deleted file mode 100644 index fed45ae863..0000000000 --- a/message_ix_models/data/report/variable_definitions.csv +++ /dev/null @@ -1,3308 +0,0 @@ -Variable,Unit,Definition -Agricultural Demand,million t DM/yr,"total demand for food, non-food and feed products (crops and livestock) and bioenergy crops (1st & 2nd generation)" -Agricultural Demand|Energy,million t DM/yr,"agricultural demand level for all bioenergy (consumption, not production)" -Agricultural Demand|Energy|Crops,million t DM/yr,demand for modern primary energy crops (1st and 2nd generation) -Agricultural Demand|Energy|Crops|1st generation,million t DM/yr,demand for modern primary 1st generation energy crops -Agricultural Demand|Energy|Crops|2nd generation,million t DM/yr,demand for modern primary 2nd generation energy crops -Agricultural Demand|Energy|Residues,million t DM/yr,demand of agricultural residues for modern bioenergy production -Agricultural Demand|Non-Energy,million t DM/yr,"total demand for food, non-food and feed products (crops and livestock)" -Agricultural Demand|Non-Energy|Crops,million t DM/yr,"total demand for food, non-food and feed products (crops)" -Agricultural Demand|Non-Energy|Crops|Feed,million t DM/yr,total demand for feed (crops) -Agricultural Demand|Non-Energy|Crops|Food,million t DM/yr,total demand for food (crops) -Agricultural Demand|Non-Energy|Crops|Other,million t DM/yr,total demand for non-food and non-feed (crops) -Agricultural Demand|Non-Energy|Livestock,million t DM/yr,total demand for livestock products -Agricultural Demand|Non-Energy|Livestock|Food,million t DM/yr,total demand for food livestock products -Agricultural Demand|Non-Energy|Livestock|Other,million t DM/yr,total demand for non-food livestock products -Agricultural Production,million t DM/yr,"total production of food, non-food and feed products (crops and livestock) and bioenergy crops (1st & 2nd generation)" -Agricultural Production|Energy,million t DM/yr,total bioenergy-related agricultural production (including waste and residues) -Agricultural Production|Energy|Crops,million t DM/yr,production for modern primary energy crops (1st and 2nd generation) -Agricultural Production|Energy|Crops|1st generation,million t DM/yr,production for modern primary 1st generation energy crops -Agricultural Production|Energy|Crops|2nd generation,million t DM/yr,production for modern primary 2nd generation energy crops -Agricultural Production|Energy|Residues,million t DM/yr,production of agricultural residues for modern bioenergy production -Agricultural Production|Non-Energy,million t DM/yr,"total production for food, non-food and feed products (crops and livestock)" -Agricultural Production|Non-Energy|Crops,million t DM/yr,"total production for food, non-food and feed products (crops)" -Agricultural Production|Non-Energy|Crops|Feed,million t DM/yr,total production for feed (crops) -Agricultural Production|Non-Energy|Crops|Food,million t DM/yr,total production for food (crops) -Agricultural Production|Non-Energy|Crops|Other,million t DM/yr,total production for non-food and non-feed (crops) -Agricultural Production|Non-Energy|Livestock,million t DM/yr,total production for livestock products -Agricultural Production|Non-Energy|Livestock|Food,million t DM/yr,total production for food livestock products -Agricultural Production|Non-Energy|Livestock|Other,million t DM/yr,total production for non-food livestock products -Capacity Additions|Electricity,GW/yr,Newly installed capacity of all operating power plants -Capacity Additions|Electricity|Biomass,GW/yr,Newly installed capacity of operating biomass plants -Capacity Additions|Electricity|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Biomass|w/ CCS|1,GW/yr,"Newly installed capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Biomass|w/ CCS|2,GW/yr, -Capacity Additions|Electricity|Biomass|w/ CCS|3,GW/yr, -Capacity Additions|Electricity|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Biomass|w/o CCS|1,GW/yr,"Newly installed capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Biomass|w/o CCS|2,GW/yr,"Newly installed capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Biomass|w/o CCS|3,GW/yr, -Capacity Additions|Electricity|Coal,GW/yr,Newly installed capacity of operating coal plants -Capacity Additions|Electricity|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/ CCS|1,GW/yr,"Newly installed capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/ CCS|2,GW/yr,"Newly installed capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/ CCS|3,GW/yr, -Capacity Additions|Electricity|Coal|w/ CCS|4,GW/yr, -Capacity Additions|Electricity|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/o CCS|1,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/o CCS|2,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/o CCS|3,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/o CCS|4,GW/yr,"Newly installed capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Coal|w/o CCS|5,GW/yr, -Capacity Additions|Electricity|Gas,GW/yr,Newly installed capacity of operating gas plants -Capacity Additions|Electricity|Gas|w/ CCS,GW/yr,"Newly installed capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Gas|w/ CCS|1,GW/yr,"Newly installed capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Gas|w/ CCS|2,GW/yr, -Capacity Additions|Electricity|Gas|w/ CCS|3,GW/yr, -Capacity Additions|Electricity|Gas|w/o CCS,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Gas|w/o CCS|1,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Gas|w/o CCS|2,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Gas|w/o CCS|3,GW/yr,"Newly installed capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Geothermal,GW/yr,Newly installed capacity of operating geothermal plants -Capacity Additions|Electricity|Hydro,GW/yr,"Newly installed capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Hydro|1,GW/yr,"Newly installed capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Hydro|2,GW/yr,"Newly installed capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Nuclear,GW/yr,"Newly installed capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Nuclear|1,GW/yr,"Newly installed capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Nuclear|2,GW/yr,"Newly installed capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Ocean,GW/yr,Newly installed capacity of operating ocean power plants -Capacity Additions|Electricity|Oil,GW/yr,Newly installed capacity of operating oil plants -Capacity Additions|Electricity|Oil|w/ CCS,GW/yr,"Newly installed capacity of oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Oil|w/o CCS,GW/yr,Newly installed capacity of operating oil plants -Capacity Additions|Electricity|Oil|w/o CCS|1,GW/yr,Newly installed capacity of operating oil plants -Capacity Additions|Electricity|Oil|w/o CCS|2,GW/yr,Newly installed capacity of operating oil plants -Capacity Additions|Electricity|Oil|w/o CCS|3,GW/yr,Newly installed capacity of operating oil plants -Capacity Additions|Electricity|Other,GW/yr,Newly installed capacity of all others types of operating power plants -Capacity Additions|Electricity|Peak Demand,GW/yr,peak (maximum) electricity load -Capacity Additions|Electricity|Solar,GW/yr,Newly installed capacity of all operating solar facilities (both CSP and PV) -Capacity Additions|Electricity|Solar|CSP,GW/yr,"Newly installed capacity of concentrating solar power (CSP). The installed (available) capacity of CSP by technology type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|CSP|1, ..., Capacity|Electricity|Solar|CSP|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Solar|CSP|1,GW/yr, -Capacity Additions|Electricity|Solar|CSP|2,GW/yr, -Capacity Additions|Electricity|Solar|PV,GW/yr,"Newly installed capacity of solar PV power plants. The installed (available) capacity of solar PV power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|PV|1, ..., Capacity|Electricity|Solar|PV|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Storage Capacity,GW/yr,Newly installed capacity of operating electricity storage -Capacity Additions|Electricity|Transmissions Grid,GW/yr, -Capacity Additions|Electricity|Wind,GW/yr,"Newly installed capacity of wind power plants (onshore + offshore). The installed (available) capacity of wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|1, ..., Capacity|Electricity|Wind|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Wind|Offshore,GW/yr,"Newly installed capacity of offshore wind power plants. The installed (available) capacity of offshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Offshore|1, ..., Capacity|Electricity|Wind|Offshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Electricity|Wind|Onshore,GW/yr,"Newly installed capacity of onshore wind power plants. The installed (available) capacity of onshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Onshore|1, ..., Capacity|Electricity|Wind|Onshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Gases,GW/yr,Newly installed capacity of all gas generation plants. -Capacity Additions|Gases|Biomass,GW/yr,Newly installed capacity of biomass to gas plants. -Capacity Additions|Gases|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass to gas plants with CCS. The installed (available) capacity of CCS biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/ CCS|1, ..., Capacity|Gases|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Gases|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass to gas plants without CCS. The installed (available) capacity of biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/o CCS|1, ..., Capacity|Gases|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Gases|Coal,GW/yr,Newly installed capacity of coal to gas plants. -Capacity Additions|Gases|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal to gas plants with CCS. The installed (available) capacity of CCS coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/ CCS|1, ..., Capacity|Gases|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Gases|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal to gas plants without CCS. The installed (available) capacity of coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/o CCS|1, ..., Capacity|Gases|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Gases|Other,GW/yr,Newly installed capacity of other gas production plants. -Capacity Additions|Hydrogen,GW/yr,Newly installed capacity of all hydrogen generation plants. -Capacity Additions|Hydrogen|Biomass,GW/yr,Newly installed capacity of biomass to hydrogen plants. -Capacity Additions|Hydrogen|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass to hydrogen plants with CCS. The installed (available) capacity of CCS biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/ CCS|1, ..., Capacity|Hydrogen|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Hydrogen|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass to hydrogen plants without CCS. The installed (available) capacity of biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/o CCS|1, ..., Capacity|Hydrogen|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Hydrogen|Coal,GW/yr,Newly installed capacity of coal to hydrogen plants. -Capacity Additions|Hydrogen|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal to hydrogen plants with CCS. The installed (available) capacity of CCS coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/ CCS|1, ..., Capacity|Hydrogen|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Hydrogen|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal to hydrogen plants without CCS. The installed (available) capacity of coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/o CCS|1, ..., Capacity|Hydrogen|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Hydrogen|Electricity,GW/yr,"Newly installed capacity of hydrogen-by-electrolysis plants. The installed (available) capacity of hydrogen-by-electrolysis plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Electricity|w/ CCS|1, ..., Capacity|Hydrogen|Electricity|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Hydrogen|Gas,GW/yr,Newly installed capacity of gas to hydrogen plants. -Capacity Additions|Hydrogen|Gas|w/ CCS,GW/yr,"Newly installed capacity of gas to hydrogen plants with CCS. The installed (available) capacity of CCS gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/ CCS|1, ..., Capacity|Hydrogen|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Hydrogen|Gas|w/o CCS,GW/yr,"Newly installed capacity of gas to hydrogen plants without CCS. The installed (available) capacity of gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/o CCS|1, ..., Capacity|Hydrogen|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Hydrogen|Other,GW/yr,Newly installed capacity of other hydrogen production plants. -Capacity Additions|Liquids,GW/yr,Newly installed capacity of liquefaction plants. -Capacity Additions|Liquids|Biomass,GW/yr,Newly installed capacity of biomass to liquids plants. -Capacity Additions|Liquids|Biomass|w/ CCS,GW/yr,"Newly installed capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Biomass|w/ CCS|1,GW/yr,"Newly installed capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Biomass|w/ CCS|2,GW/yr,"Newly installed capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Biomass|w/o CCS,GW/yr,"Newly installed capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Biomass|w/o CCS|1,GW/yr,"Newly installed capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Biomass|w/o CCS|2,GW/yr,"Newly installed capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Coal,GW/yr,Newly installed capacity of coal to liquids plants. -Capacity Additions|Liquids|Coal|w/ CCS,GW/yr,"Newly installed capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Coal|w/ CCS|1,GW/yr,"Newly installed capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Coal|w/ CCS|2,GW/yr,"Newly installed capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Coal|w/o CCS,GW/yr,"Newly installed capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Coal|w/o CCS|1,GW/yr,"Newly installed capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Coal|w/o CCS|2,GW/yr,"Newly installed capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Gas,GW/yr,Newly installed capacity of gas to liquids plants. -Capacity Additions|Liquids|Gas|w/ CCS,GW/yr,"Newly installed capacity of gas to liquids plants with CCS. The installed (available) capacity of CCS gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/ CCS|1, ..., Capacity|Liquids|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Gas|w/o CCS,GW/yr,"Newly installed capacity of gas to liquids plants without CCS. The installed (available) capacity of gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/o CCS|1, ..., Capacity|Liquids|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Oil,GW/yr,"Newly installed capacity of oil refining plants. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Oil|w/ CCS,GW/yr,"Newly installed capacity of oil refining plants with CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Oil|w/o CCS,GW/yr,"Newly installed capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Oil|w/o CCS|1,GW/yr,"Newly installed capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Oil|w/o CCS|2,GW/yr,"Newly installed capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity Additions|Liquids|Other,GW/yr,Newly installed capacity of other liquid production plants. -Capacity|Electricity,GW,Total installed (available) capacity of all operating power plants -Capacity|Electricity|Biomass,GW,Total installed (available) capacity of operating biomass plants -Capacity|Electricity|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Biomass|w/ CCS|1,GW,"Total installed (available) capacity of biomass power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/ CCS|1, ..., Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Biomass|w/ CCS|2,GW, -Capacity|Electricity|Biomass|w/ CCS|3,GW, -Capacity|Electricity|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Biomass|w/o CCS|1,GW,"Total installed (available) capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Biomass|w/o CCS|2,GW,"Total installed (available) capacity of biomass power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Biomass|w/o CCS|1, ..., Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Biomass|w/o CCS|3,GW, -Capacity|Electricity|Coal,GW,Total installed (available) capacity of operating coal plants -Capacity|Electricity|Coal|w/ CCS,GW,"Total installed (available) capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/ CCS|1,GW,"Total installed (available) capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/ CCS|2,GW,"Total installed (available) capacity of coal power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/ CCS|1, ..., Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/ CCS|3,GW, -Capacity|Electricity|Coal|w/ CCS|4,GW, -Capacity|Electricity|Coal|w/o CCS,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/o CCS|1,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/o CCS|2,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/o CCS|3,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/o CCS|4,GW,"Total installed (available) capacity of coal power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Coal|w/o CCS|1, ..., Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Coal|w/o CCS|5,GW, -Capacity|Electricity|Gas,GW,Total installed (available) capacity of operating gas plants -Capacity|Electricity|Gas|w/ CCS,GW,"Total installed (available) capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Gas|w/ CCS|1,GW,"Total installed (available) capacity of gas power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/ CCS|1, ..., Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Gas|w/ CCS|2,GW, -Capacity|Electricity|Gas|w/ CCS|3,GW, -Capacity|Electricity|Gas|w/o CCS,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Gas|w/o CCS|1,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Gas|w/o CCS|2,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Gas|w/o CCS|3,GW,"Total installed (available) capacity of gas power plants without CCS, including plants held in an operating reserve. The installed (available) capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Gas|w/o CCS|1, ..., Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Geothermal,GW,Total installed (available) capacity of operating geothermal plants -Capacity|Electricity|Hydro,GW,"Total installed (available) capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Hydro|1,GW,"Total installed (available) capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Hydro|2,GW,"Total installed (available) capacity of hydroppower plants. The installed (available) capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Hydro|1, ..., Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Nuclear,GW,"Total installed (available) capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Nuclear|1,GW,"Total installed (available) capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Nuclear|2,GW,"Total installed (available) capacity of nuclear power plants. The installed (available) capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Nuclear|1, ..., Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Ocean,GW,Total installed (available) capacity of operating ocean power plants -Capacity|Electricity|Oil,GW,Total installed (available) capacity of operating oil plants -Capacity|Electricity|Oil|w/ CCS,GW,"Total installed (available) capacity of oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Oil|w/o CCS,GW,Total installed (available) capacity of operating oil plants -Capacity|Electricity|Oil|w/o CCS|1,GW,Total installed (available) capacity of operating oil plants -Capacity|Electricity|Oil|w/o CCS|2,GW,Total installed (available) capacity of operating oil plants -Capacity|Electricity|Oil|w/o CCS|3,GW,Total installed (available) capacity of operating oil plants -Capacity|Electricity|Other,GW,Total installed (available) capacity of all others types of operating power plants -Capacity|Electricity|Peak Demand,GW,peak (maximum) electricity load -Capacity|Electricity|Solar,GW,Total installed (available) capacity of all operating solar facilities (both CSP and PV) -Capacity|Electricity|Solar|CSP,GW,"Total installed (available) capacity of concentrating solar power (CSP). The installed (available) capacity of CSP by technology type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|CSP|1, ..., Capacity|Electricity|Solar|CSP|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Solar|CSP|1,GW, -Capacity|Electricity|Solar|CSP|2,GW, -Capacity|Electricity|Solar|PV,GW,"Total installed (available) capacity of solar PV power plants. The installed (available) capacity of solar PV power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Solar|PV|1, ..., Capacity|Electricity|Solar|PV|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Storage,GW,Total installed (available) capacity of operating electricity storage -Capacity|Electricity|Storage Capacity,GWh, -Capacity|Electricity|Transmissions Grid,GWkm, -Capacity|Electricity|Wind,GW,"Total installed (available) capacity of wind power plants (onshore + offshore). The installed (available) capacity of wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|1, ..., Capacity|Electricity|Wind|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Wind|Offshore,GW,"Total installed (available) capacity of offshore wind power plants. The installed (available) capacity of offshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Offshore|1, ..., Capacity|Electricity|Wind|Offshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Electricity|Wind|Onshore,GW,"Total installed (available) capacity of onshore wind power plants. The installed (available) capacity of onshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|Onshore|1, ..., Capacity|Electricity|Wind|Onshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Gases,GW,Total installed (available) capacity of all gas generation plants. -Capacity|Gases|Biomass,GW,Total installed (available) capacity of biomass to gas plants. -Capacity|Gases|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass to gas plants with CCS. The installed (available) capacity of CCS biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/ CCS|1, ..., Capacity|Gases|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Gases|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass to gas plants without CCS. The installed (available) capacity of biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Biomass|w/o CCS|1, ..., Capacity|Gases|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Gases|Coal,GW,Total installed (available) capacity of coal to gas plants. -Capacity|Gases|Coal|w/ CCS,GW,"Total installed (available) capacity of coal to gas plants with CCS. The installed (available) capacity of CCS coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/ CCS|1, ..., Capacity|Gases|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Gases|Coal|w/o CCS,GW,"Total installed (available) capacity of coal to gas plants without CCS. The installed (available) capacity of coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Gases|Coal|w/o CCS|1, ..., Capacity|Gases|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Gases|Other,GW,Total installed (available) capacity of other gas production plants. -Capacity|Hydrogen,GW,Total installed (available) capacity of all hydrogen generation plants. -Capacity|Hydrogen|Biomass,GW,Total installed (available) capacity of biomass to hydrogen plants. -Capacity|Hydrogen|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass to hydrogen plants with CCS. The installed (available) capacity of CCS biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/ CCS|1, ..., Capacity|Hydrogen|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Hydrogen|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass to hydrogen plants without CCS. The installed (available) capacity of biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Biomass|w/o CCS|1, ..., Capacity|Hydrogen|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Hydrogen|Coal,GW,Total installed (available) capacity of coal to hydrogen plants. -Capacity|Hydrogen|Coal|w/ CCS,GW,"Total installed (available) capacity of coal to hydrogen plants with CCS. The installed (available) capacity of CCS coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/ CCS|1, ..., Capacity|Hydrogen|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Hydrogen|Coal|w/o CCS,GW,"Total installed (available) capacity of coal to hydrogen plants without CCS. The installed (available) capacity of coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Coal|w/o CCS|1, ..., Capacity|Hydrogen|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Hydrogen|Electricity,GW,"Total installed (available) capacity of hydrogen-by-electrolysis plants. The installed (available) capacity of hydrogen-by-electrolysis plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Electricity|w/ CCS|1, ..., Capacity|Hydrogen|Electricity|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Hydrogen|Gas,GW,Total installed (available) capacity of gas to hydrogen plants. -Capacity|Hydrogen|Gas|w/ CCS,GW,"Total installed (available) capacity of gas to hydrogen plants with CCS. The installed (available) capacity of CCS gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/ CCS|1, ..., Capacity|Hydrogen|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Hydrogen|Gas|w/o CCS,GW,"Total installed (available) capacity of gas to hydrogen plants without CCS. The installed (available) capacity of gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Hydrogen|Gas|w/o CCS|1, ..., Capacity|Hydrogen|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Hydrogen|Other,GW,Total installed (available) capacity of other hydrogen production plants. -Capacity|Liquids,GW,Total installed (available) capacity of liquefaction plants. -Capacity|Liquids|Biomass,GW,Total installed (available) capacity of biomass to liquids plants. -Capacity|Liquids|Biomass|w/ CCS,GW,"Total installed (available) capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Biomass|w/ CCS|1,GW,"Total installed (available) capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Biomass|w/ CCS|2,GW,"Total installed (available) capacity of biomass to liquids plants with CCS. The installed (available) capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/ CCS|1, ..., Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Biomass|w/o CCS,GW,"Total installed (available) capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Biomass|w/o CCS|1,GW,"Total installed (available) capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Biomass|w/o CCS|2,GW,"Total installed (available) capacity of biomass to liquids plants without CCS. The installed (available) capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Biomass|w/o CCS|1, ..., Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Coal,GW,Total installed (available) capacity of coal to liquids plants. -Capacity|Liquids|Coal|w/ CCS,GW,"Total installed (available) capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Coal|w/ CCS|1,GW,"Total installed (available) capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Coal|w/ CCS|2,GW,"Total installed (available) capacity of coal to liquids plants with CCS. The installed (available) capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/ CCS|1, ..., Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Coal|w/o CCS,GW,"Total installed (available) capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Coal|w/o CCS|1,GW,"Total installed (available) capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Coal|w/o CCS|2,GW,"Total installed (available) capacity of coal to liquids plants without CCS. The installed (available) capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Coal|w/o CCS|1, ..., Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Gas,GW,Total installed (available) capacity of gas to liquids plants. -Capacity|Liquids|Gas|w/ CCS,GW,"Total installed (available) capacity of gas to liquids plants with CCS. The installed (available) capacity of CCS gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/ CCS|1, ..., Capacity|Liquids|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Gas|w/o CCS,GW,"Total installed (available) capacity of gas to liquids plants without CCS. The installed (available) capacity of gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Gas|w/o CCS|1, ..., Capacity|Liquids|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Oil,GW,"Total installed (available) capacity of oil refining plants. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Oil|w/ CCS,GW,"Total installed (available) capacity of oil refining plants with CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Oil|w/o CCS,GW,"Total installed (available) capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Oil|w/o CCS|1,GW,"Total installed (available) capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Oil|w/o CCS|2,GW,"Total installed (available) capacity of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capacity|Liquids|Other,GW,Total installed (available) capacity of other liquid production plants. -Capital Cost|Electricity|Biomass|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report capital costs for each represented CCS biomass power technology by adding variables Capital Cost|Electricity|Biomass|w/ CCS|2, ... Capital Cost|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Biomass|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report capital costs for each represented biomass power technology by adding variables Capital Cost|Electricity|Biomass|w/o CCS|2, ... Capital Cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Biomass|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report capital costs for each represented biomass power technology by adding variables Capital Cost|Electricity|Biomass|w/o CCS|2, ... Capital Cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Coal|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report capital costs for each represented CCS coal power technology by adding variables Capital Cost|Electricity|Coal|w/ CCS|2, ... Capital Cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Coal|w/ CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report capital costs for each represented CCS coal power technology by adding variables Capital Cost|Electricity|Coal|w/ CCS|2, ... Capital Cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Coal|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Coal|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Coal|w/o CCS|3,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Coal|w/o CCS|4,US$2010/kW OR local currency/kW,"Capital cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report capital costs for each represented coal power technology by adding variables Capital Cost|Electricity|Coal|w/o CCS|2, ... Capital Cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Gas|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report capital costs for each represented CCS gas power technology by adding variables Capital Cost|Electricity|Gas|w/ CCS|2, ... Capital Cost|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Gas|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report capital costs for each represented gas power technology by adding variables Capital Cost|Electricity|Gas|w/o CCS|2, ... Capital Cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Gas|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report capital costs for each represented gas power technology by adding variables Capital Cost|Electricity|Gas|w/o CCS|2, ... Capital Cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Gas|w/o CCS|3,US$2010/kW OR local currency/kW,"Capital cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report capital costs for each represented gas power technology by adding variables Capital Cost|Electricity|Gas|w/o CCS|2, ... Capital Cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Geothermal,US$2010/kW OR local currency/kW,"Capital cost of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report capital costs for each represented geothermal power technology by adding variables Capital Cost|Electricity|Geothermal|2, ... Capital Cost|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Hydro,US$2010/kW OR local currency/kW,"Capital cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report capital costs for each represented hydropower technology by adding variables Capital Cost|Electricity|Hydro|2, ... Capital Cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Hydro|1,US$2010/kW OR local currency/kW,"Capital cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report capital costs for each represented hydropower technology by adding variables Capital Cost|Electricity|Hydro|2, ... Capital Cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Hydro|2,US$2010/kW OR local currency/kW,"Capital cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report capital costs for each represented hydropower technology by adding variables Capital Cost|Electricity|Hydro|2, ... Capital Cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Nuclear,US$2010/kW OR local currency/kW,"Capital cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report capital costs for each represented nuclear power technology by adding variables Capital Cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Nuclear|1,US$2010/kW OR local currency/kW,"Capital cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report capital costs for each represented nuclear power technology by adding variables Capital Cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Nuclear|2,US$2010/kW OR local currency/kW,"Capital cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report capital costs for each represented nuclear power technology by adding variables Capital Cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Ocean,US$2010/kW OR local currency/kW,Capital cost of operating ocean power plants -Capital Cost|Electricity|Oil|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Capital Cost|Electricity|Oil|w/o CCS,US$2010/kW OR local currency/kW,Capital cost of a newoil plants -Capital Cost|Electricity|Oil|w/o CCS|1,US$2010/kW OR local currency/kW,Capital cost of a newoil plants -Capital Cost|Electricity|Oil|w/o CCS|2,US$2010/kW OR local currency/kW,Capital cost of a newoil plants -Capital Cost|Electricity|Oil|w/o CCS|3,US$2010/kW OR local currency/kW,Capital cost of a newoil plants -Capital Cost|Electricity|Solar|CSP|1,US$2010/kW OR local currency/kW,"Capital cost of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report capital costs for each represented CSP technology by adding variables Capital Cost|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Solar|CSP|2,US$2010/kW OR local currency/kW, -Capital Cost|Electricity|Solar|PV,US$2010/kW OR local currency/kW,"Capital cost of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report capital costs for each represented PV technology by adding variables Capital Cost|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Wind|Offshore,US$2010/kW OR local currency/kW,"Capital cost of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report capital costs for each represented wind power technology by adding variables Capital Cost|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Electricity|Wind|Onshore,US$2010/kW OR local currency/kW,"Capital cost of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report capital costs for each represented wind power technology by adding variables Capital Cost|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Gases|Biomass|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report capital costs for each represented CCS biomass to gas technology by adding variables Capital Cost|Gases|Biomass|w/ CCS|2, ... Capital Cost|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Gases|Biomass|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report capital costs for each represented biomass to gas technology by adding variables Capital Cost|Gases|Biomass|w/o CCS|2, ... Capital Cost|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Gases|Coal|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report capital costs for each represented CCS coal to gas technology by adding variables Capital Cost|Gases|Coal|w/ CCS|2, ... Capital Cost|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Gases|Coal|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report capital costs for each represented coal to gas technology by adding variables Capital Cost|Gases|Coal|w/o CCS|2, ... Capital Cost|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Hydrogen|Biomass|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report capital costs for each represented CCS biomass to hydrogen technology by adding variables Capital Cost|Hydrogen|Biomass|w/ CCS|2, ... Capital Cost|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Hydrogen|Biomass|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report capital costs for each represented biomass to hydrogen technology by adding variables Capital Cost|Hydrogen|Biomass|w/o CCS|2, ... Capital Cost|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Hydrogen|Coal|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report capital costs for each represented CCS coal to hydrogen technology by adding variables Capital Cost|Hydrogen|Coal|w/ CCS|2, ... Capital Cost|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Hydrogen|Coal|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report capital costs for each represented coal to hydrogen technology by adding variables Capital Cost|Hydrogen|Coal|w/o CCS|2, ... Capital Cost|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Hydrogen|Electricity,US$2010/kW OR local currency/kW,"Capital cost of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report capital costs for each represented hydrogen-by-electrolysis technology by adding variables Capital Cost|Hydrogen|Electricity|2, ... Capital Cost|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Hydrogen|Gas|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report capital costs for each represented CCS gas to hydrogen technology by adding variables Capital Cost|Hydrogen|Gas|w/ CCS|2, ... Capital Cost|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Hydrogen|Gas|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report capital costs for each represented gas to hydrogen technology by adding variables Capital Cost|Hydrogen|Gas|w/o CCS|2, ... Capital Cost|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Biomass|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report capital costs for each represented CCS BTL technology by adding variables Capital Cost|Liquids|Biomass|w/ CCS|2, ... Capital Cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Biomass|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report capital costs for each represented CCS BTL technology by adding variables Capital Cost|Liquids|Biomass|w/ CCS|2, ... Capital Cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Biomass|w/ CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report capital costs for each represented CCS BTL technology by adding variables Capital Cost|Liquids|Biomass|w/ CCS|2, ... Capital Cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Biomass|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report capital costs for each represented BTL technology by adding variables Capital Cost|Liquids|Biomass|w/o CCS|2, ... Capital Cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Biomass|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report capital costs for each represented BTL technology by adding variables Capital Cost|Liquids|Biomass|w/o CCS|2, ... Capital Cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Biomass|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report capital costs for each represented BTL technology by adding variables Capital Cost|Liquids|Biomass|w/o CCS|2, ... Capital Cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Coal|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report capital costs for each represented CCS CTL technology by adding variables Capital Cost|Liquids|Coal|w/ CCS|2, ... Capital Cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Coal|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report capital costs for each represented CCS CTL technology by adding variables Capital Cost|Liquids|Coal|w/ CCS|2, ... Capital Cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Coal|w/ CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report capital costs for each represented CCS CTL technology by adding variables Capital Cost|Liquids|Coal|w/ CCS|2, ... Capital Cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Coal|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report capital costs for each represented CTL technology by adding variables Capital Cost|Liquids|Coal|w/o CCS|2, ... Capital Cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Coal|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report capital costs for each represented CTL technology by adding variables Capital Cost|Liquids|Coal|w/o CCS|2, ... Capital Cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Coal|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report capital costs for each represented CTL technology by adding variables Capital Cost|Liquids|Coal|w/o CCS|2, ... Capital Cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Gas|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report capital costs for each represented CCS GTL technology by adding variables Capital Cost|Liquids|Gas|w/ CCS|2, ... Capital Cost|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Gas|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report capital costs for each represented GTL technology by adding variables Capital Cost|Liquids|Gas|w/o CCS|2, ... Capital Cost|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Oil|w/ CCS,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Oil|w/ CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Oil|w/o CCS,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Oil|w/o CCS|1,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Cost|Liquids|Oil|w/o CCS|2,US$2010/kW OR local currency/kW,"Capital cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report capital costs for each represented refinery technology by adding variables Capital Cost|Liquids|Oil|2, ... Capital Cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Capital Formation,billion US$2010/yr OR local currency,net additions to the physical capital stock -Capital Stock,billion US$2010/yr or local currency/yr,Macroeconomic capital stock -Carbon Sequestration|CCS,Mt CO2/yr,"total carbon dioxide emissions captured and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass|Energy|Demand|Industry,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in industry (IPCC category 1A2) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass|Energy|Supply,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass|Energy|Supply|Electricity,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in electricity production (part of IPCC category 1A1a) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass|Energy|Supply|Gases,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in gaseous fuel production, excl. hydrogen (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass|Energy|Supply|Hydrogen,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in hydrogen production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass|Energy|Supply|Liquids,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in liquid fuel production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Biomass|Energy|Supply|Other,Mt CO2/yr,"total carbon dioxide emissions captured from bioenergy use in other energy supply (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil|Energy|Demand|Industry,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in industry (IPCC category 1A2) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil|Energy|Supply,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in energy supply (IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil|Energy|Supply|Electricity,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in electricity production (part of IPCC category 1A1a) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil|Energy|Supply|Gases,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in gaseous fuel production, excl. hydrogen (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil|Energy|Supply|Hydrogen,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in hydrogen production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil|Energy|Supply|Liquids,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in liquid fuel production (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Fossil|Energy|Supply|Other,Mt CO2/yr,"total carbon dioxide emissions captured from fossil fuel use in other energy supply (part of IPCC category 1A) and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|CCS|Industrial Processes,Mt CO2/yr,"total carbon dioxide emissions captured from industrial processes (e.g., cement production, but not from fossil fuel burning) use and stored in geological deposits (e.g. in depleted oil and gas fields, unmined coal seams, saline aquifers) and the deep ocean, stored amounts should be reported as positive numbers" -Carbon Sequestration|Direct Air Capture,Mt CO2/yr,total carbon dioxide sequestered through direct air capture -Carbon Sequestration|Enhanced Weathering,Mt CO2/yr,total carbon dioxide sequestered through enhanced weathering -Carbon Sequestration|Land Use,Mt CO2/yr,"total carbon dioxide sequestered through land-based sinks (e.g., afforestation, soil carbon enhancement, biochar)" -Carbon Sequestration|Land Use|Afforestation,Mt CO2/yr,total carbon dioxide sequestered through afforestation -Carbon Sequestration|Land Use|Biochar,Mt CO2/yr,total carbon dioxide sequestered through biochar -Carbon Sequestration|Land Use|Soil Carbon Management,Mt CO2/yr,total carbon dioxide sequestered through soil carbon management techniques -Carbon Sequestration|Other,Mt CO2/yr,total carbon dioxide sequestered through other techniques (please provide a definition of other sources in this category in the 'comments' tab) -Concentration|CH4,ppb,atmospheric concentration of methane -Concentration|CO2,ppm,atmospheric concentration of carbon dioxide -Concentration|N2O,ppb,atmospheric concentration of nitrous oxide -Consumption,billion US$2010/yr,"total consumption of all goods, by all consumers in a region" -Cost|Cost Nodal Net,billion US$2010/yr, -Cumulative Capacity|Electricity,GW,Cumulative installed capacity (since 2005)of all operating power plants -Cumulative Capacity|Electricity|Biomass,GW,Cumulative installed capacity (since 2005)of operating biomass plants -Cumulative Capacity|Electricity|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass power plants with CCS. The cumulative capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/ CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Biomass|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass power plants with CCS. The cumulative capacity of CCS biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/ CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Biomass|w/ CCS|2,GW, -Cumulative Capacity|Electricity|Biomass|w/ CCS|3,GW, -Cumulative Capacity|Electricity|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass power plants without CCS. The cumulative capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/o CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Biomass|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass power plants without CCS. The cumulative capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/o CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Biomass|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of biomass power plants without CCS. The cumulative capacity of biomass power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Biomass|w/o CCS|1, ..., Cumulative Capacity|Electricity|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Biomass|w/o CCS|3,GW, -Cumulative Capacity|Electricity|Coal,GW,Cumulative installed capacity (since 2005)of operating coal plants -Cumulative Capacity|Electricity|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal power plants with CCS. The cumulative capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/ CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of coal power plants with CCS. The cumulative capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/ CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/ CCS|2,GW,"Cumulative installed capacity (since 2005) of coal power plants with CCS. The cumulative capacity of CCS coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/ CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/ CCS|3,GW, -Cumulative Capacity|Electricity|Coal|w/ CCS|4,GW, -Cumulative Capacity|Electricity|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/o CCS|3,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/o CCS|4,GW,"Cumulative installed capacity (since 2005) of coal power plants without CCS. The cumulative capacity of coal power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Coal|w/o CCS|1, ..., Cumulative Capacity|Electricity|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Coal|w/o CCS|5,GW, -Cumulative Capacity|Electricity|Gas,GW,Cumulative installed capacity (since 2005)of operating gas plants -Cumulative Capacity|Electricity|Gas|w/ CCS,GW,"Cumulative installed capacity (since 2005) of gas power plants with CCS. The cumulative capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/ CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Gas|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of gas power plants with CCS. The cumulative capacity of CCS gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/ CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Gas|w/ CCS|2,GW, -Cumulative Capacity|Electricity|Gas|w/ CCS|3,GW, -Cumulative Capacity|Electricity|Gas|w/o CCS,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Gas|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Gas|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Gas|w/o CCS|3,GW,"Cumulative installed capacity (since 2005) of gas power plants without CCS. The cumulative capacity of gas power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Gas|w/o CCS|1, ..., Cumulative Capacity|Electricity|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Geothermal,GW,Cumulative installed geothermal electricity generation capacity -Cumulative Capacity|Electricity|Hydro,GW,"Cumulative installed capacity (since 2005) of hydropower plants. The cumulative capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Hydro|1, ..., Cumulative Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Hydro|1,GW,"Cumulative installed capacity (since 2005) of hydropower plants. The cumulative capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Hydro|1, ..., Cumulative Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Hydro|2,GW,"Cumulative installed capacity (since 2005) of hydropower plants. The cumulative capacity of hydropower plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Hydro|1, ..., Cumulative Capacity|Electricity|Hydro|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Nuclear,GW,"Cumulative installed capacity (since 2005) of nuclear power plants. The cumulative capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Nuclear|1, ..., Cumulative Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Nuclear|1,GW,"Cumulative installed capacity (since 2005) of nuclear power plants. The cumulative capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Nuclear|1, ..., Cumulative Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Nuclear|2,GW,"Cumulative installed capacity (since 2005) of nuclear power plants. The cumulative capacity of nuclear power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Nuclear|1, ..., Cumulative Capacity|Electricity|Nuclear|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Oil,GW,Cumulative installed capacity (since 2005)of operating oil plants -Cumulative Capacity|Electricity|Oil|w/ CCS,GW,"Cumulative installed capacity (since 2005) of oil power plants with CCS. The cumulative capacity of CCS oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/ CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Oil|w/o CCS,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Oil|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Oil|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Oil|w/o CCS|3,GW,"Cumulative installed capacity (since 2005) of oil power plants without CCS. The cumulative capacity of oil power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Oil|w/o CCS|1, ..., Cumulative Capacity|Electricity|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Other,GW,Cumulative installed capacity (since 2005)of all others types of operating power plants -Cumulative Capacity|Electricity|Peak Demand,GW,peak (maximum) electricity load -Cumulative Capacity|Electricity|Solar,GW,Cumulative installed capacity (since 2005)of all operating solar facilities (both CSP and PV) -Cumulative Capacity|Electricity|Solar|CSP,GW,"Cumulative installed capacity (since 2005) of concentrated solar power plants. The cumulative capacity of CSP plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Solar|CSP|1, ..., Cumulative Capacity|Electricity|Solar|CSP|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Solar|CSP|1,GW, -Cumulative Capacity|Electricity|Solar|CSP|2,GW, -Cumulative Capacity|Electricity|Solar|PV,GW,"Cumulative installed capacity (since 2005) of solar PV. The cumulative capacity of PV by technology type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Solar|PV|1, ..., Cumulative Capacity|Electricity|Solar|PV|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Storage,GW,Cumulative installed capacity (since 2005)of operating electricity storage -Cumulative Capacity|Electricity|Wind,GW,"Cumulative installed capacity (since 2005)of wind power plants (onshore + offshore). The installed (available) capacity of wind power plants by plant type for which capital costs are reported should be reported by adding variables Capacity|Electricity|Wind|1, ..., Capacity|Electricity|Wind|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Wind|Offshore,GW,"Cumulative installed capacity (since 2005) of offshore wind power plants. The cumulative capacity of offshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Wind|Offshore|1, ..., Cumulative Capacity|Electricity|Wind|Offshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Electricity|Wind|Onshore,GW,"Cumulative installed capacity (since 2005) of onshore wind power plants. The cumulative capacity of onshore wind power plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Electricity|Wind|Onshore|1, ..., Cumulative Capacity|Electricity|Wind|Onshore|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Gases,GW,Cumulative installed capacity (since 2005)of all gas generation plants. -Cumulative Capacity|Gases|Biomass,GW,Cumulative installed capacity (since 2005)of biomass to gas plants. -Cumulative Capacity|Gases|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass to gas plants with CCS. The cumulative capacity of CCS biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Biomass|w/ CCS|1, ..., Cumulative Capacity|Gases|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Gases|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass to gas plants without CCS. The cumulative capacity of biomass to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Biomass|w/o CCS|1, ..., Cumulative Capacity|Gases|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Gases|Coal,GW,Cumulative installed capacity (since 2005)of coal to gas plants. -Cumulative Capacity|Gases|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal to gas plants with CCS. The cumulative capacity of CCS coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Coal|w/ CCS|1, ..., Cumulative Capacity|Gases|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Gases|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal to gas plants without CCS. The cumulative capacity of coal to gas plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Gases|Coal|w/o CCS|1, ..., Cumulative Capacity|Gases|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Gases|Other,GW,Cumulative installed capacity (since 2005)of other gas production plants. -Cumulative Capacity|Hydrogen,GW,Cumulative installed capacity (since 2005)of all hydrogen generation plants. -Cumulative Capacity|Hydrogen|Biomass,GW,Cumulative installed capacity (since 2005)of biomass to hydrogen plants. -Cumulative Capacity|Hydrogen|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass to hydrogen plants with CCS. The cumulative capacity of CCS biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Biomass|w/ CCS|1, ..., Cumulative Capacity|Hydrogen|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Hydrogen|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass to hydrogen plants without CCS. The cumulative capacity of biomass to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Biomass|w/o CCS|1, ..., Cumulative Capacity|Hydrogen|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Hydrogen|Coal,GW,Cumulative installed capacity (since 2005)of coal to hydrogen plants. -Cumulative Capacity|Hydrogen|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal to hydrogen plants with CCS. The cumulative capacity of CCS coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Coal|w/ CCS|1, ..., Cumulative Capacity|Hydrogen|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Hydrogen|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal to hydrogen plants without CCS. The cumulative capacity of coal to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Coal|w/o CCS|1, ..., Cumulative Capacity|Hydrogen|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Hydrogen|Electricity,GW,"Cumulative installed capacity (since 2005) of hydrogen-by-electrolysis plants. The cumulative capacity of hydrogen-by-electrolysis plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Electricity|1, ..., Cumulative Capacity|Hydrogen|Electricity|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Hydrogen|Gas,GW,Cumulative installed capacity (since 2005)of gas to hydrogen plants. -Cumulative Capacity|Hydrogen|Gas|w/ CCS,GW,"Cumulative installed capacity (since 2005) of gas to hydrogen plants with CCS. The cumulative capacity of CCS gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Gas|w/ CCS|1, ..., Cumulative Capacity|Hydrogen|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Hydrogen|Gas|w/o CCS,GW,"Cumulative installed capacity (since 2005) of gas to hydrogen plants without CCS. The cumulative capacity of gas to hydrogen plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Gas|w/o CCS|1, ..., Cumulative Capacity|Hydrogen|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Hydrogen|Other,GW,"Cumulative installed capacity (since 2005) of hydrogen plants from other sources (e.g. thermochemical production from nuclear or solar heat). The cumulative capacity of hydrogen plants from other sources by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Hydrogen|Other|1, ..., Cumulative Capacity|Hydrogen|Other|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids,GW,"Cumulative installed refined liquids (e.g. oil products, fossil synfuels and biofuels) production capacity since the year 2005" -Cumulative Capacity|Liquids|Biomass,GW,Cumulative installed capacity (since 2005)of biomass to liquids plants. -Cumulative Capacity|Liquids|Biomass|w/ CCS,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants with CCS. The cumulative capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/ CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Biomass|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants with CCS. The cumulative capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/ CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Biomass|w/ CCS|2,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants with CCS. The cumulative capacity of CCS biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/ CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Biomass|w/o CCS,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants without CCS. The cumulative capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/o CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Biomass|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants without CCS. The cumulative capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/o CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Biomass|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of biomass to liquids plants without CCS. The cumulative capacity of biomass to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Biomass|w/o CCS|1, ..., Cumulative Capacity|Liquids|Biomass|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Coal,GW,Cumulative installed capacity (since 2005)of coal to liquids plants. -Cumulative Capacity|Liquids|Coal|w/ CCS,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants with CCS. The cumulative capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/ CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Coal|w/ CCS|1,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants with CCS. The cumulative capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/ CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Coal|w/ CCS|2,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants with CCS. The cumulative capacity of CCS coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/ CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Coal|w/o CCS,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants without CCS. The cumulative capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/o CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Coal|w/o CCS|1,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants without CCS. The cumulative capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/o CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Coal|w/o CCS|2,GW,"Cumulative installed capacity (since 2005) of coal to liquids plants without CCS. The cumulative capacity of coal to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Coal|w/o CCS|1, ..., Cumulative Capacity|Liquids|Coal|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Gas,GW,Cumulative installed capacity (since 2005)of gas to liquids plants. -Cumulative Capacity|Liquids|Gas|w/ CCS,GW,"Cumulative installed capacity (since 2005) of gas to liquids plants with CCS. The cumulative capacity of CCS gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Gas|w/ CCS|1, ..., Cumulative Capacity|Liquids|Gas|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Gas|w/o CCS,GW,"Cumulative installed capacity (since 2005) of gas to liquids plants without CCS. The cumulative capacity of gas to liquids plants by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Gas|w/o CCS|1, ..., Cumulative Capacity|Liquids|Gas|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Oil,GW,"Cumulative installed capacity (since 2005) of oil refining plants. The cumulative capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Cumulative Capacity|Liquids|Oil|1, ..., Cumulative Capacity|Liquids|Oil|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Oil|w/ CCS,GW,"Cumulative installed capacity (since 2005)of oil refining plants with CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/ CCS|1, ..., Capacity|Liquids|Oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Oil|w/o CCS,GW,"Cumulative installed capacity (since 2005)of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Oil|w/o CCS|1,GW,"Cumulative installed capacity (since 2005)of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Oil|w/o CCS|2,GW,"Cumulative installed capacity (since 2005)of oil refining plants without CCS. The installed (available) capacity of oil refineries by plant type for which capital costs are reported should be reported by adding variables Capacity|Liquids|Oil|w/o CCS|1, ..., Capacity|Liquids|Oil|w/o CCS|N (matching the assignment of plant types to technologies in the reporting of capital costs as documented in the comments sheet). " -Cumulative Capacity|Liquids|Other,GW,Cumulative installed capacity (since 2005)of other liquid production plants. -Debt Service,%,Debt service as a percentage of exports of goods and services -Diagnostics|MAGICC6|Carbon Flow|Air to Land|Gross,GtC/yr, -Diagnostics|MAGICC6|Carbon Flow|Air to Ocean,GtC/yr, -Diagnostics|MAGICC6|Carbon Flow|CH4 to CO2,GtC/yr, -Diagnostics|MAGICC6|Carbon Flow|Fossil,GtC/yr, -Diagnostics|MAGICC6|Carbon Flow|Land Use,GtC/yr, -Diagnostics|MAGICC6|Carbon Flow|Perma Frost,GtC/yr, -Diagnostics|MAGICC6|Carbon Pool|Atmosphere,GtC, -Diagnostics|MAGICC6|Concentration|CH4,ppb, -Diagnostics|MAGICC6|Concentration|CO2,ppm, -Diagnostics|MAGICC6|Concentration|N2O,ppb, -Diagnostics|MAGICC6|Forcing,W/m2, -Diagnostics|MAGICC6|Forcing|Aerosol,W/m2, -Diagnostics|MAGICC6|Forcing|Aerosol|BC and OC,W/m2, -Diagnostics|MAGICC6|Forcing|Aerosol|Cloud Indirect,W/m2, -Diagnostics|MAGICC6|Forcing|Aerosol|Nitrate Direct,W/m2, -Diagnostics|MAGICC6|Forcing|Aerosol|Other,W/m2, -Diagnostics|MAGICC6|Forcing|Aerosol|Sulfate Direct,W/m2, -Diagnostics|MAGICC6|Forcing|Albedo Change and Mineral Dust,W/m2, -Diagnostics|MAGICC6|Forcing|CH4,W/m2, -Diagnostics|MAGICC6|Forcing|CO2,W/m2, -Diagnostics|MAGICC6|Forcing|F-Gases,W/m2, -Diagnostics|MAGICC6|Forcing|Kyoto Gases,W/m2, -Diagnostics|MAGICC6|Forcing|Montreal Gases,W/m2, -Diagnostics|MAGICC6|Forcing|N2O,W/m2, -Diagnostics|MAGICC6|Forcing|Other,W/m2, -Diagnostics|MAGICC6|Forcing|Tropospheric Ozone,W/m2, -Diagnostics|MAGICC6|Harmonized Input|Emissions|BC,Mt BC/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|C2F6,kt C2F6/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|C6F14,kt C6F14/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|CH4,Mt CH4/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|CO,Mt CO/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|CO2|Fossil Fuels and Industry,Mt CO2/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|CO2|AFOLU,Mt CO2/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC125,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC134a,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC143a,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC227ea,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC23,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC245ca,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC32,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|HFC|HFC43-10,kt HFC23/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|N2O,kt N2O/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|NH3,Mt NH3/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|NOx,Mt NO2/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|OC,Mt OC/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|PFC,kt CF4/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|SF6,kt SF6/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|Sulfur,Mt SO2/yr, -Diagnostics|MAGICC6|Harmonized Input|Emissions|VOC,Mt VOC/yr, -Diagnostics|MAGICC6|Temperature|Global Mean,°C, -Direct Risk|Asset Loss,billion US$2010/yr OR local currency/yr,"The risk of asset losses expressed in terms of their probability of -occurrence and destruction in monetary terms is modelled as a function of hazard -(frequency and intensity), the elements exposed to those hazards and their physical -sensitivity." -Efficiency|Electricity|Biomass|w/ CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS biomass power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Biomass|w/o CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented biomass power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Biomass|w/o CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented biomass power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Coal|w/ CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Coal|w/ CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Coal|w/o CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Coal|w/o CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Coal|w/o CCS|3,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Coal|w/o CCS|4,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented coal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Gas|w/ CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CCS gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/ CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Gas|w/o CCS|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Gas|w/o CCS|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Gas|w/o CCS|3,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented gas power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Geothermal,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented geothermal power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Geothermal|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Hydro,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented hydropower technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Hydro|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented hydropower technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Hydro|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented hydropower technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|2, ... Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Nuclear,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented nuclear power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Nuclear|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented nuclear power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Nuclear|2,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented nuclear power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Ocean,%,Conversion efficiency (electricity produced per unit of primary energy input) of operating ocean power plants -Efficiency|Electricity|Oil|w/ CCS,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Conversion efficiency (electricity produced per unit of primary energy input)s are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Conversion efficiency (electricity produced per unit of primary energy input)s as documented in the comments sheet). " -Efficiency|Electricity|Oil|w/o CCS,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants -Efficiency|Electricity|Oil|w/o CCS|1,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants -Efficiency|Electricity|Oil|w/o CCS|2,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants -Efficiency|Electricity|Oil|w/o CCS|3,%,Conversion efficiency (electricity produced per unit of primary energy input) of a newoil plants -Efficiency|Electricity|Solar|CSP|1,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented CSP technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Solar|CSP|2,%, -Efficiency|Electricity|Solar|PV,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented PV technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Wind|Offshore,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented wind power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Electricity|Wind|Onshore,%,"Conversion efficiency (electricity produced per unit of primary energy input) of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Conversion efficiency (electricity produced per unit of primary energy input)s for each represented wind power technology by adding variables Conversion efficiency (electricity produced per unit of primary energy input)|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Gases|Biomass|w/ CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented CCS biomass to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Gases|Biomass|w/o CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented biomass to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Gases|Coal|w/ CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented CCS coal to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/ CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Gases|Coal|w/o CCS,%,"Conversion efficiency (energy content of gases produced per unit of primary energy input) of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Conversion efficiency (energy content of gases produced per unit of primary energy input)s for each represented coal to gas technology by adding variables Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/o CCS|2, ... Conversion efficiency (energy content of gases produced per unit of primary energy input)|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Hydrogen|Biomass|w/ CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented CCS biomass to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Hydrogen|Biomass|w/o CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented biomass to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Hydrogen|Coal|w/ CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented CCS coal to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/ CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Hydrogen|Coal|w/o CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented coal to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/o CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Hydrogen|Electricity,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented hydrogen-by-electrolysis technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Electricity|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Hydrogen|Gas|w/ CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented CCS gas to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/ CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Hydrogen|Gas|w/o CCS,%,"Conversion efficiency (energy content of hydrogen produced per unit of electricity input) of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Conversion efficiency (energy content of hydrogen produced per unit of electricity input)s for each represented gas to hydrogen technology by adding variables Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/o CCS|2, ... Conversion efficiency (energy content of hydrogen produced per unit of electricity input)|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Biomass|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Biomass|w/ CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Biomass|w/ CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Biomass|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Biomass|w/o CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Biomass|w/o CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented BTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Coal|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Coal|w/ CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Coal|w/ CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Coal|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Coal|w/o CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Coal|w/o CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Gas|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented CCS GTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/ CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Gas|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented GTL technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/o CCS|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Oil|w/ CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Oil|w/ CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Oil|w/o CCS,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Oil|w/o CCS|1,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Efficiency|Liquids|Oil|w/o CCS|2,%,"Conversion efficiency (energy content of liquids produced per unit of primary energy input) of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Conversion efficiency (energy content of liquids produced per unit of primary energy input)s for each represented refinery technology by adding variables Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|2, ... Conversion efficiency (energy content of liquids produced per unit of primary energy input)|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Emissions|BC,Mt BC/yr, -Emissions|BC|AFOLU,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture and Biomass Burning,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture|Livestock,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture|Livestock|Manure Management,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture|Managed Soils,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture|Other,Mt BC/yr, -Emissions|BC|AFOLU|Agriculture|Rice,Mt BC/yr, -Emissions|BC|AFOLU|Biomass Burning,Mt BC/yr, -Emissions|BC|AFOLU|Land,Mt BC/yr, -Emissions|BC|AFOLU|Land|Cropland,Mt BC/yr, -Emissions|BC|AFOLU|Land|Forest,Mt BC/yr, -Emissions|BC|AFOLU|Land|Forest Burning,Mt BC/yr, -Emissions|BC|AFOLU|Land|Grassland Burning,Mt BC/yr, -Emissions|BC|AFOLU|Land|Grassland Pastures,Mt BC/yr, -Emissions|BC|AFOLU|Land|Other,Mt BC/yr, -Emissions|BC|AFOLU|Land|Other Land,Mt BC/yr, -Emissions|BC|AFOLU|Land|Settlements,Mt BC/yr, -Emissions|BC|AFOLU|Land|Wetlands,Mt BC/yr, -Emissions|BC|Energy,Mt BC/yr, -Emissions|BC|Energy|Combustion,Mt BC/yr, -Emissions|BC|Energy|Demand,Mt BC/yr, -Emissions|BC|Energy|Demand|AFOFI,Mt BC/yr, -Emissions|BC|Energy|Demand|Commercial,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Chemicals,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Construction,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Food and Tobacco,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Iron and Steel,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Machinery,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Mining,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Non-Ferrous Metals,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Non-Metallic Minerals,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Other,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Pulp and Paper,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Textile,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Transport Equipment,Mt BC/yr, -Emissions|BC|Energy|Demand|Industry|Wood Products,Mt BC/yr, -Emissions|BC|Energy|Demand|Other Sector,Mt BC/yr, -Emissions|BC|Energy|Demand|Residential,Mt BC/yr, -Emissions|BC|Energy|Demand|Residential and Commercial,Mt BC/yr, -Emissions|BC|Energy|Demand|Residential and Commercial and AFOFI,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Aviation,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Aviation|Domestic,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Aviation|International,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Other Sector,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Rail,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Road,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Shipping,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Shipping|Domestic,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Shipping|International,Mt BC/yr, -Emissions|BC|Energy|Demand|Transportation|Shipping|International|Loading,Mt BC/yr, -Emissions|BC|Energy|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Other,Mt BC/yr, -Emissions|BC|Energy|Supply,Mt BC/yr, -Emissions|BC|Energy|Supply|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Electricity,Mt BC/yr, -Emissions|BC|Energy|Supply|Electricity and Heat,Mt BC/yr, -Emissions|BC|Energy|Supply|Fuel Production and Transformation,Mt BC/yr, -Emissions|BC|Energy|Supply|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases and Liquids Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Biomass,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Biomass|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Biomass|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Coal,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Coal|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Coal|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Extraction,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Extraction|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Extraction|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Hydrogen,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Hydrogen|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Hydrogen|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Natural Gas,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Natural Gas|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Natural Gas|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Transportation,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Transportation|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Gases|Transportation|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Heat,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Biomass,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Biomass|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Biomass|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Coal,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Coal|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Coal|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Extraction,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Extraction|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Extraction|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Natural Gas,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Natural Gas|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Oil,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Oil|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Oil|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Transportation,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Transportation|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Liquids|Transportation|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Other,Mt BC/yr, -Emissions|BC|Energy|Supply|Other|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Other|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids and Other Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Biomass,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Biomass|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Biomass|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Coal,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Coal|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Coal|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Extraction,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Extraction|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Extraction|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Fugitive,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Transportation,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Transportation|Combustion,Mt BC/yr, -Emissions|BC|Energy|Supply|Solids|Transportation|Fugitive,Mt BC/yr, -Emissions|BC|Fossil Fuel Fires,Mt BC/yr, -Emissions|BC|Fossil Fuels and Industry,Mt BC/yr, -Emissions|BC|Industrial Processes,Mt BC/yr, -Emissions|BC|Industrial Processes|Chemicals,Mt BC/yr, -Emissions|BC|Industrial Processes|Electronics,Mt BC/yr, -Emissions|BC|Industrial Processes|Iron and Steel,Mt BC/yr, -Emissions|BC|Industrial Processes|Metals and Minerals,Mt BC/yr, -Emissions|BC|Industrial Processes|Metals and Minerals,Mt BC/yr, -Emissions|BC|Industrial Processes|Non-Ferrous Metals,Mt BC/yr, -Emissions|BC|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt BC/yr, -Emissions|BC|Industrial Processes|Non-Ferrous Metals|Other,Mt BC/yr, -Emissions|BC|Industrial Processes|Non-Metallic Minerals,Mt BC/yr, -Emissions|BC|Industrial Processes|Non-Metallic Minerals|Cement,Mt BC/yr, -Emissions|BC|Industrial Processes|Non-Metallic Minerals|Lime,Mt BC/yr, -Emissions|BC|Industrial Processes|Non-Metallic Minerals|Other,Mt BC/yr, -Emissions|BC|Industrial Processes|Other Sector,Mt BC/yr, -Emissions|BC|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt BC/yr, -Emissions|BC|Natural,Mt BC/yr, -Emissions|BC|Natural|Other,Mt BC/yr, -Emissions|BC|Natural|Volcanoes,Mt BC/yr, -Emissions|BC|Other,Mt BC/yr, -Emissions|BC|Product Use,Mt BC/yr, -Emissions|BC|Product Use|Non-Energy Use,Mt BC/yr, -Emissions|BC|Product Use|ODS Substitutes,Mt BC/yr, -Emissions|BC|Product Use|Solvents,Mt BC/yr, -Emissions|BC|Product Use|Solvents|Chemical Products,Mt BC/yr, -Emissions|BC|Product Use|Solvents|Degreasing,Mt BC/yr, -Emissions|BC|Product Use|Solvents|Other,Mt BC/yr, -Emissions|BC|Product Use|Solvents|Paint,Mt BC/yr, -Emissions|BC|Waste,Mt BC/yr, -Emissions|BC|Waste|Biological Treatment,Mt BC/yr, -Emissions|BC|Waste|Incineration,Mt BC/yr, -Emissions|BC|Waste|Other,Mt BC/yr, -Emissions|BC|Waste|Solid Waste Disposal,Mt BC/yr, -Emissions|BC|Waste|Wastewater Treatment,Mt BC/yr, -Emissions|C2F6,kt C2F6/yr,total emissions of C2F6 -Emissions|C6F14,kt C6F14/yr,total emissions of CF6F14 -Emissions|CF4,kt CF4/yr,total emissions of CF4 -Emissions|CH4,Mt CH4/yr, -Emissions|CH4|AFOLU,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture and Biomass Burning,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture|Livestock,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture|Livestock|Manure Management,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture|Managed Soils,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture|Other,Mt CH4/yr, -Emissions|CH4|AFOLU|Agriculture|Rice,Mt CH4/yr, -Emissions|CH4|AFOLU|Biomass Burning,Mt CH4/yr, -Emissions|CH4|AFOLU|Land,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Cropland,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Forest,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Forest Burning,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Grassland Burning,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Grassland Pastures,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Other,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Other Land,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Settlements,Mt CH4/yr, -Emissions|CH4|AFOLU|Land|Wetlands,Mt CH4/yr, -Emissions|CH4|Energy,Mt CH4/yr, -Emissions|CH4|Energy|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Demand,Mt CH4/yr, -Emissions|CH4|Energy|Demand|AFOFI,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Commercial,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Chemicals,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Construction,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Food and Tobacco,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Iron and Steel,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Machinery,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Mining,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Non-Ferrous Metals,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Non-Metallic Minerals,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Other,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Pulp and Paper,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Textile,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Transport Equipment,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Industry|Wood Products,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Other Sector,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Residential,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Residential and Commercial,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Residential and Commercial and AFOFI,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Aviation,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Aviation|Domestic,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Aviation|International,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Other Sector,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Rail,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Road,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Shipping,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Shipping|Domestic,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Shipping|International,Mt CH4/yr, -Emissions|CH4|Energy|Demand|Transportation|Shipping|International|Loading,Mt CH4/yr, -Emissions|CH4|Energy|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Other,Mt CH4/yr, -Emissions|CH4|Energy|Supply,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Electricity,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Electricity and Heat,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Fuel Production and Transformation,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases and Liquids Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Biomass,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Biomass|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Coal,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Coal|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Coal|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Extraction,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Extraction|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Extraction|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Hydrogen,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Hydrogen|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Hydrogen|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Natural Gas,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Natural Gas|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Transportation,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Transportation|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Gases|Transportation|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Heat,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Biomass,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Biomass|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Biomass|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Coal,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Coal|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Coal|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Extraction,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Extraction|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Extraction|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Natural Gas,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Oil,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Oil|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Oil|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Transportation,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Transportation|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Liquids|Transportation|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Other,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Other|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Other|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids and Other Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Biomass,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Biomass|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Coal,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Coal|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Extraction,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Extraction|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Extraction|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Fugitive,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Transportation,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Transportation|Combustion,Mt CH4/yr, -Emissions|CH4|Energy|Supply|Solids|Transportation|Fugitive,Mt CH4/yr, -Emissions|CH4|Fossil Fuel Fires,Mt CH4/yr, -Emissions|CH4|Fossil Fuels and Industry,Mt CH4/yr, -Emissions|CH4|Industrial Processes,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Chemicals,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Electronics,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Iron and Steel,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Metals and Minerals,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Metals and Minerals,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Non-Ferrous Metals,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Non-Ferrous Metals|Other,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Non-Metallic Minerals,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Non-Metallic Minerals|Cement,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Non-Metallic Minerals|Lime,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Non-Metallic Minerals|Other,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Other Sector,Mt CH4/yr, -Emissions|CH4|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt CH4/yr, -Emissions|CH4|Natural,Mt CH4/yr, -Emissions|CH4|Natural|Other,Mt CH4/yr, -Emissions|CH4|Natural|Volcanoes,Mt CH4/yr, -Emissions|CH4|Other,Mt CH4/yr, -Emissions|CH4|Product Use,Mt CH4/yr, -Emissions|CH4|Product Use|Non-Energy Use,Mt CH4/yr, -Emissions|CH4|Product Use|ODS Substitutes,Mt CH4/yr, -Emissions|CH4|Product Use|Solvents,Mt CH4/yr, -Emissions|CH4|Product Use|Solvents|Chemical Products,Mt CH4/yr, -Emissions|CH4|Product Use|Solvents|Degreasing,Mt CH4/yr, -Emissions|CH4|Product Use|Solvents|Other,Mt CH4/yr, -Emissions|CH4|Product Use|Solvents|Paint,Mt CH4/yr, -Emissions|CH4|Waste,Mt CH4/yr, -Emissions|CH4|Waste|Biological Treatment,Mt CH4/yr, -Emissions|CH4|Waste|Incineration,Mt CH4/yr, -Emissions|CH4|Waste|Other,Mt CH4/yr, -Emissions|CH4|Waste|Solid Waste Disposal,Mt CH4/yr, -Emissions|CH4|Waste|Wastewater Treatment,Mt CH4/yr, -Emissions|CO,Mt CO/yr, -Emissions|CO|AFOLU,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture and Biomass Burning,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture|Livestock,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture|Livestock|Manure Management,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture|Managed Soils,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture|Other,Mt CO/yr, -Emissions|CO|AFOLU|Agriculture|Rice,Mt CO/yr, -Emissions|CO|AFOLU|Biomass Burning,Mt CO/yr, -Emissions|CO|AFOLU|Land,Mt CO/yr, -Emissions|CO|AFOLU|Land|Cropland,Mt CO/yr, -Emissions|CO|AFOLU|Land|Forest,Mt CO/yr, -Emissions|CO|AFOLU|Land|Forest Burning,Mt CO/yr, -Emissions|CO|AFOLU|Land|Grassland Burning,Mt CO/yr, -Emissions|CO|AFOLU|Land|Grassland Pastures,Mt CO/yr, -Emissions|CO|AFOLU|Land|Other,Mt CO/yr, -Emissions|CO|AFOLU|Land|Other Land,Mt CO/yr, -Emissions|CO|AFOLU|Land|Settlements,Mt CO/yr, -Emissions|CO|AFOLU|Land|Wetlands,Mt CO/yr, -Emissions|CO|Energy,Mt CO/yr, -Emissions|CO|Energy|Combustion,Mt CO/yr, -Emissions|CO|Energy|Demand,Mt CO/yr, -Emissions|CO|Energy|Demand|AFOFI,Mt CO/yr, -Emissions|CO|Energy|Demand|Commercial,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Chemicals,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Construction,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Food and Tobacco,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Iron and Steel,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Machinery,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Mining,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Non-Ferrous Metals,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Non-Metallic Minerals,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Other,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Pulp and Paper,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Textile,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Transport Equipment,Mt CO/yr, -Emissions|CO|Energy|Demand|Industry|Wood Products,Mt CO/yr, -Emissions|CO|Energy|Demand|Other Sector,Mt CO/yr, -Emissions|CO|Energy|Demand|Residential,Mt CO/yr, -Emissions|CO|Energy|Demand|Residential and Commercial,Mt CO/yr, -Emissions|CO|Energy|Demand|Residential and Commercial and AFOFI,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Aviation,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Aviation|Domestic,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Aviation|International,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Other Sector,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Rail,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Road,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Shipping,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Shipping|Domestic,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Shipping|International,Mt CO/yr, -Emissions|CO|Energy|Demand|Transportation|Shipping|International|Loading,Mt CO/yr, -Emissions|CO|Energy|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Other,Mt CO/yr, -Emissions|CO|Energy|Supply,Mt CO/yr, -Emissions|CO|Energy|Supply|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Electricity,Mt CO/yr, -Emissions|CO|Energy|Supply|Electricity and Heat,Mt CO/yr, -Emissions|CO|Energy|Supply|Fuel Production and Transformation,Mt CO/yr, -Emissions|CO|Energy|Supply|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases and Liquids Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Biomass,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Biomass|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Biomass|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Coal,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Coal|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Coal|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Extraction,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Extraction|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Extraction|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Hydrogen,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Hydrogen|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Hydrogen|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Natural Gas,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Natural Gas|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Natural Gas|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Transportation,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Transportation|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Gases|Transportation|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Heat,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Biomass,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Biomass|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Biomass|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Coal,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Coal|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Coal|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Extraction,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Extraction|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Extraction|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Natural Gas,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Natural Gas|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Oil,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Oil|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Oil|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Transportation,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Transportation|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Liquids|Transportation|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Other,Mt CO/yr, -Emissions|CO|Energy|Supply|Other|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Other|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids and Other Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Biomass,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Biomass|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Biomass|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Coal,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Coal|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Coal|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Extraction,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Extraction|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Extraction|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Fugitive,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Transportation,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Transportation|Combustion,Mt CO/yr, -Emissions|CO|Energy|Supply|Solids|Transportation|Fugitive,Mt CO/yr, -Emissions|CO|Fossil Fuel Fires,Mt CO/yr, -Emissions|CO|Fossil Fuels and Industry,Mt CO/yr, -Emissions|CO|Industrial Processes,Mt CO/yr, -Emissions|CO|Industrial Processes|Chemicals,Mt CO/yr, -Emissions|CO|Industrial Processes|Electronics,Mt CO/yr, -Emissions|CO|Industrial Processes|Iron and Steel,Mt CO/yr, -Emissions|CO|Industrial Processes|Metals and Minerals,Mt CO/yr, -Emissions|CO|Industrial Processes|Metals and Minerals,Mt CO/yr, -Emissions|CO|Industrial Processes|Non-Ferrous Metals,Mt CO/yr, -Emissions|CO|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt CO/yr, -Emissions|CO|Industrial Processes|Non-Ferrous Metals|Other,Mt CO/yr, -Emissions|CO|Industrial Processes|Non-Metallic Minerals,Mt CO/yr, -Emissions|CO|Industrial Processes|Non-Metallic Minerals|Cement,Mt CO/yr, -Emissions|CO|Industrial Processes|Non-Metallic Minerals|Lime,Mt CO/yr, -Emissions|CO|Industrial Processes|Non-Metallic Minerals|Other,Mt CO/yr, -Emissions|CO|Industrial Processes|Other Sector,Mt CO/yr, -Emissions|CO|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt CO/yr, -Emissions|CO|Natural,Mt CO/yr, -Emissions|CO|Natural|Other,Mt CO/yr, -Emissions|CO|Natural|Volcanoes,Mt CO/yr, -Emissions|CO|Other,Mt CO/yr, -Emissions|CO|Product Use,Mt CO/yr, -Emissions|CO|Product Use|Non-Energy Use,Mt CO/yr, -Emissions|CO|Product Use|ODS Substitutes,Mt CO/yr, -Emissions|CO|Product Use|Solvents,Mt CO/yr, -Emissions|CO|Product Use|Solvents|Chemical Products,Mt CO/yr, -Emissions|CO|Product Use|Solvents|Degreasing,Mt CO/yr, -Emissions|CO|Product Use|Solvents|Other,Mt CO/yr, -Emissions|CO|Product Use|Solvents|Paint,Mt CO/yr, -Emissions|CO|Waste,Mt CO/yr, -Emissions|CO|Waste|Biological Treatment,Mt CO/yr, -Emissions|CO|Waste|Incineration,Mt CO/yr, -Emissions|CO|Waste|Other,Mt CO/yr, -Emissions|CO|Waste|Solid Waste Disposal,Mt CO/yr, -Emissions|CO|Waste|Wastewater Treatment,Mt CO/yr, -Emissions|CO2,Mt CO2/yr, -Emissions|CO2|Difference|Statistical,Mt CO2/yr, -Emissions|CO2|Difference|Stock|Coal,Mt CO2/yr, -Emissions|CO2|Difference|Stock|Methanol,Mt CO2/yr, -Emissions|CO2|Difference|Stock|Fueloil,Mt CO2/yr, -Emissions|CO2|Difference|Stock|Lightoil,Mt CO2/yr, -Emissions|CO2|Difference|Stock|Crudeoil,Mt CO2/yr, -Emissions|CO2|Difference|Stock|LNG,Mt CO2/yr, -Emissions|CO2|Difference|Stock|Natural Gas,Mt CO2/yr, -Emissions|CO2|Difference|Stock|Activity|Coal,GWyr/yr, -Emissions|CO2|Difference|Stock|Activity|Methanol,GWyr/yr, -Emissions|CO2|Difference|Stock|Activity|Fueloil,GWyr/yr, -Emissions|CO2|Difference|Stock|Activity|Lightoil,GWyr/yr, -Emissions|CO2|Difference|Stock|Activity|Crudeoil,GWyr/yr, -Emissions|CO2|Difference|Stock|Activity|LNG,GWyr/yr, -Emissions|CO2|Difference|Stock|Activity|Natural Gas,GWyr/yr, -Emissions|CO2|AFOLU,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture and Biomass Burning,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture|Livestock,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture|Livestock|Manure Management,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture|Managed Soils,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture|Other,Mt CO2/yr, -Emissions|CO2|AFOLU|Agriculture|Rice,Mt CO2/yr, -Emissions|CO2|AFOLU|Biomass Burning,Mt CO2/yr, -Emissions|CO2|AFOLU|Land,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Cropland,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Forest,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Forest Burning,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Grassland Burning,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Grassland Pastures,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Other,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Other Land,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Settlements,Mt CO2/yr, -Emissions|CO2|AFOLU|Land|Wetlands,Mt CO2/yr, -Emissions|CO2|Carbon Capture and Storage,Mt CO2/yr, -Emissions|CO2|Carbon Capture and Storage|Biomass,Mt CO2/yr, -Emissions|CO2|Energy,Mt CO2/yr, -Emissions|CO2|Energy and Industrial Processes,Mt CO2/yr, -Emissions|CO2|Energy|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Demand,Mt CO2/yr, -Emissions|CO2|Energy|Demand|AFOFI,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Commercial,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Chemicals,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Construction,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Food and Tobacco,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Iron and Steel,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Machinery,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Mining,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Non-Ferrous Metals,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Non-Metallic Minerals,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Other,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Pulp and Paper,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Textile,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Transport Equipment,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Industry|Wood Products,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Other Sector,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Residential,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Residential and Commercial,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Residential and Commercial and AFOFI,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Aviation,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Aviation|Domestic,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Aviation|International,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Other Sector,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Rail,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Road,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Shipping,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Shipping|Domestic,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Shipping|International,Mt CO2/yr, -Emissions|CO2|Energy|Demand|Transportation|Shipping|International|Loading,Mt CO2/yr, -Emissions|CO2|Energy|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Other,Mt CO2/yr, -Emissions|CO2|Energy|Supply,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Electricity,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Electricity and Heat,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Fuel Production and Transformation,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases and Liquids Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Biomass,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Biomass|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Biomass|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Coal,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Coal|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Coal|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Extraction,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Extraction|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Extraction|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Hydrogen,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Hydrogen|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Hydrogen|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Natural Gas,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Natural Gas|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Natural Gas|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Transportation,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Transportation|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Gases|Transportation|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Heat,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Biomass,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Biomass|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Biomass|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Coal,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Coal|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Coal|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Extraction,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Extraction|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Extraction|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Natural Gas,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Natural Gas|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Oil,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Oil|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Oil|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Transportation,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Transportation|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Liquids|Transportation|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Other,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Other|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Other|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids and Other Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Biomass,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Biomass|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Biomass|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Coal,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Coal|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Coal|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Extraction,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Extraction|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Extraction|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Fugitive,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Transportation,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Transportation|Combustion,Mt CO2/yr, -Emissions|CO2|Energy|Supply|Solids|Transportation|Fugitive,Mt CO2/yr, -Emissions|CO2|Fossil Fuel Fires,Mt CO2/yr, -Emissions|CO2|Fossil Fuels and Industry,Mt CO2/yr, -Emissions|CO2|Industrial Processes,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Chemicals,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Electronics,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Iron and Steel,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Metals and Minerals,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Metals and Minerals,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Non-Ferrous Metals,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Non-Ferrous Metals|Other,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Non-Metallic Minerals,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Non-Metallic Minerals|Cement,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Non-Metallic Minerals|Lime,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Non-Metallic Minerals|Other,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Other Sector,Mt CO2/yr, -Emissions|CO2|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt CO2/yr, -Emissions|CO2|Natural,Mt CO2/yr, -Emissions|CO2|Natural|Other,Mt CO2/yr, -Emissions|CO2|Natural|Volcanoes,Mt CO2/yr, -Emissions|CO2|Other,Mt CO2/yr, -Emissions|CO2|Product Use,Mt CO2/yr, -Emissions|CO2|Product Use|Non-Energy Use,Mt CO2/yr, -Emissions|CO2|Product Use|ODS Substitutes,Mt CO2/yr, -Emissions|CO2|Product Use|Solvents,Mt CO2/yr, -Emissions|CO2|Product Use|Solvents|Chemical Products,Mt CO2/yr, -Emissions|CO2|Product Use|Solvents|Degreasing,Mt CO2/yr, -Emissions|CO2|Product Use|Solvents|Other,Mt CO2/yr, -Emissions|CO2|Product Use|Solvents|Paint,Mt CO2/yr, -Emissions|CO2|Waste,Mt CO2/yr, -Emissions|CO2|Waste|Biological Treatment,Mt CO2/yr, -Emissions|CO2|Waste|Incineration,Mt CO2/yr, -Emissions|CO2|Waste|Other,Mt CO2/yr, -Emissions|CO2|Waste|Solid Waste Disposal,Mt CO2/yr, -Emissions|CO2|Waste|Wastewater Treatment,Mt CO2/yr, -Emissions|F-Gases,Mt CO2-equiv/yr,"total F-gas emissions, including sulfur hexafluoride (SF6), hydrofluorocarbons (HFCs), perfluorocarbons (PFCs) (preferably use 100-year GWPs from AR4 for aggregation of different F-gases; in case other GWPs have been used, please document this on the 'comments' tab)" -Emissions|GHG|Allowance Allocation,Mt CO2-equiv/yr, -Emissions|GHG|International Trading System,Mt CO2-equiv/yr, -Emissions|HFC,kt HFC134a-equiv/yr,"total emissions of hydrofluorocarbons (HFCs), provided as aggregate HFC134a-equivalents" -Emissions|HFC|HFC125,kt HFC125/yr,total emissions of HFC125 -Emissions|HFC|HFC134a,kt HFC134a/yr,total emissions of HFC134a -Emissions|HFC|HFC143a,kt HFC143a/yr,total emissions of HFC143a -Emissions|HFC|HFC227ea,kt HFC227ea/yr,total emissions of HFC227ea -Emissions|HFC|HFC23,kt HFC23/yr,total emissions of HFC23 -Emissions|HFC|HFC245fa,kt HFC245fa/yr,total emissions of HFC245fa -Emissions|HFC|HFC32,kt HFC32/yr,total emissions of HFC32 -Emissions|HFC|HFC43-10,kt HFC43-10/yr,total emissions of HFC343-10 -Emissions|Kyoto Gases,Mt CO2-equiv/yr,"total Kyoto GHG emissions, including CO2, CH4, N2O and F-gases (preferably use 100-year GWPs from AR4 for aggregation of different gases; in case other GWPs have been used, please document this on the 'comments' tab)" -Emissions|N2O,kt N2O/yr, -Emissions|N2O|AFOLU,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture and Biomass Burning,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture|Livestock,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture|Livestock|Enteric Fermentation,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture|Livestock|Manure Management,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture|Managed Soils,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture|Other,kt N2O/yr, -Emissions|N2O|AFOLU|Agriculture|Rice,kt N2O/yr, -Emissions|N2O|AFOLU|Biomass Burning,kt N2O/yr, -Emissions|N2O|AFOLU|Land,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Cropland,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Forest,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Forest Burning,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Grassland Burning,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Grassland Pastures,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Other,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Other Land,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Settlements,kt N2O/yr, -Emissions|N2O|AFOLU|Land|Wetlands,kt N2O/yr, -Emissions|N2O|Energy,kt N2O/yr, -Emissions|N2O|Energy|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Demand,kt N2O/yr, -Emissions|N2O|Energy|Demand|AFOFI,kt N2O/yr, -Emissions|N2O|Energy|Demand|Commercial,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Chemicals,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Construction,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Food and Tobacco,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Iron and Steel,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Machinery,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Mining,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Non-Ferrous Metals,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Non-Metallic Minerals,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Other,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Pulp and Paper,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Textile,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Transport Equipment,kt N2O/yr, -Emissions|N2O|Energy|Demand|Industry|Wood Products,kt N2O/yr, -Emissions|N2O|Energy|Demand|Other Sector,kt N2O/yr, -Emissions|N2O|Energy|Demand|Residential,kt N2O/yr, -Emissions|N2O|Energy|Demand|Residential and Commercial,kt N2O/yr, -Emissions|N2O|Energy|Demand|Residential and Commercial and AFOFI,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Aviation,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Aviation|Domestic,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Aviation|International,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Other Sector,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Rail,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Rail and Domestic Shipping,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Road,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Road Rail and Domestic Shipping,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Shipping,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Shipping|Domestic,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Shipping|International,kt N2O/yr, -Emissions|N2O|Energy|Demand|Transportation|Shipping|International|Loading,kt N2O/yr, -Emissions|N2O|Energy|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Other,kt N2O/yr, -Emissions|N2O|Energy|Supply,kt N2O/yr, -Emissions|N2O|Energy|Supply|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Electricity,kt N2O/yr, -Emissions|N2O|Energy|Supply|Electricity and Heat,kt N2O/yr, -Emissions|N2O|Energy|Supply|Fuel Production and Transformation,kt N2O/yr, -Emissions|N2O|Energy|Supply|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases and Liquids Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Biomass,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Biomass|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Biomass|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Coal,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Coal|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Coal|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Extraction,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Extraction|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Extraction|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Hydrogen,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Hydrogen|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Hydrogen|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Natural Gas,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Natural Gas|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Natural Gas|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Transportation,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Transportation|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Gases|Transportation|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Heat,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Biomass,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Biomass|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Biomass|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Coal,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Coal|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Coal|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Extraction,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Extraction|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Extraction|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Natural Gas,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Natural Gas|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Natural Gas|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Oil,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Oil|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Oil|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Transportation,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Transportation|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Liquids|Transportation|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Other,kt N2O/yr, -Emissions|N2O|Energy|Supply|Other|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Other|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids and Other Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Biomass,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Biomass|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Biomass|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Coal,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Coal|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Coal|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Extraction,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Extraction|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Extraction|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Fugitive,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Transportation,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Transportation|Combustion,kt N2O/yr, -Emissions|N2O|Energy|Supply|Solids|Transportation|Fugitive,kt N2O/yr, -Emissions|N2O|Fossil Fuel Fires,kt N2O/yr, -Emissions|N2O|Fossil Fuels and Industry,kt N2O/yr, -Emissions|N2O|Industrial Processes,kt N2O/yr, -Emissions|N2O|Industrial Processes|Chemicals,kt N2O/yr, -Emissions|N2O|Industrial Processes|Electronics,kt N2O/yr, -Emissions|N2O|Industrial Processes|Iron and Steel,kt N2O/yr, -Emissions|N2O|Industrial Processes|Metals and Minerals,kt N2O/yr, -Emissions|N2O|Industrial Processes|Metals and Minerals,kt N2O/yr, -Emissions|N2O|Industrial Processes|Non-Ferrous Metals,kt N2O/yr, -Emissions|N2O|Industrial Processes|Non-Ferrous Metals|Aluminun,kt N2O/yr, -Emissions|N2O|Industrial Processes|Non-Ferrous Metals|Other,kt N2O/yr, -Emissions|N2O|Industrial Processes|Non-Metallic Minerals,kt N2O/yr, -Emissions|N2O|Industrial Processes|Non-Metallic Minerals|Cement,kt N2O/yr, -Emissions|N2O|Industrial Processes|Non-Metallic Minerals|Lime,kt N2O/yr, -Emissions|N2O|Industrial Processes|Non-Metallic Minerals|Other,kt N2O/yr, -Emissions|N2O|Industrial Processes|Other Sector,kt N2O/yr, -Emissions|N2O|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,kt N2O/yr, -Emissions|N2O|Natural,kt N2O/yr, -Emissions|N2O|Natural|Other,kt N2O/yr, -Emissions|N2O|Natural|Volcanoes,kt N2O/yr, -Emissions|N2O|Other,kt N2O/yr, -Emissions|N2O|Product Use,kt N2O/yr, -Emissions|N2O|Product Use|Non-Energy Use,kt N2O/yr, -Emissions|N2O|Product Use|ODS Substitutes,kt N2O/yr, -Emissions|N2O|Product Use|Solvents,kt N2O/yr, -Emissions|N2O|Product Use|Solvents|Chemical Products,kt N2O/yr, -Emissions|N2O|Product Use|Solvents|Degreasing,kt N2O/yr, -Emissions|N2O|Product Use|Solvents|Other,kt N2O/yr, -Emissions|N2O|Product Use|Solvents|Paint,kt N2O/yr, -Emissions|N2O|Waste,kt N2O/yr, -Emissions|N2O|Waste|Biological Treatment,kt N2O/yr, -Emissions|N2O|Waste|Incineration,kt N2O/yr, -Emissions|N2O|Waste|Other,kt N2O/yr, -Emissions|N2O|Waste|Solid Waste Disposal,kt N2O/yr, -Emissions|N2O|Waste|Wastewater Treatment,kt N2O/yr, -Emissions|NH3,Mt NH3/yr, -Emissions|NH3|AFOLU,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture and Biomass Burning,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture|Livestock,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture|Livestock|Manure Management,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture|Managed Soils,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture|Other,Mt NH3/yr, -Emissions|NH3|AFOLU|Agriculture|Rice,Mt NH3/yr, -Emissions|NH3|AFOLU|Biomass Burning,Mt NH3/yr, -Emissions|NH3|AFOLU|Land,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Cropland,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Forest,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Forest Burning,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Grassland Burning,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Grassland Pastures,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Other,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Other Land,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Settlements,Mt NH3/yr, -Emissions|NH3|AFOLU|Land|Wetlands,Mt NH3/yr, -Emissions|NH3|Energy,Mt NH3/yr, -Emissions|NH3|Energy|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Demand,Mt NH3/yr, -Emissions|NH3|Energy|Demand|AFOFI,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Commercial,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Chemicals,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Construction,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Food and Tobacco,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Iron and Steel,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Machinery,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Mining,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Non-Ferrous Metals,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Non-Metallic Minerals,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Other,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Pulp and Paper,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Textile,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Transport Equipment,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Industry|Wood Products,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Other Sector,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Residential,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Residential and Commercial,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Residential and Commercial and AFOFI,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Aviation,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Aviation|Domestic,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Aviation|International,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Other Sector,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Rail,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Road,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Shipping,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Shipping|Domestic,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Shipping|International,Mt NH3/yr, -Emissions|NH3|Energy|Demand|Transportation|Shipping|International|Loading,Mt NH3/yr, -Emissions|NH3|Energy|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Other,Mt NH3/yr, -Emissions|NH3|Energy|Supply,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Electricity,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Electricity and Heat,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Fuel Production and Transformation,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases and Liquids Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Biomass,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Biomass|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Biomass|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Coal,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Coal|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Coal|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Extraction,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Extraction|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Extraction|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Hydrogen,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Hydrogen|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Hydrogen|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Natural Gas,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Natural Gas|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Natural Gas|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Transportation,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Transportation|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Gases|Transportation|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Heat,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Biomass,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Biomass|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Biomass|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Coal,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Coal|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Coal|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Extraction,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Extraction|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Extraction|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Natural Gas,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Natural Gas|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Oil,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Oil|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Oil|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Transportation,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Transportation|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Liquids|Transportation|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Other,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Other|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Other|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids and Other Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Biomass,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Biomass|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Biomass|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Coal,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Coal|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Coal|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Extraction,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Extraction|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Extraction|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Fugitive,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Transportation,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Transportation|Combustion,Mt NH3/yr, -Emissions|NH3|Energy|Supply|Solids|Transportation|Fugitive,Mt NH3/yr, -Emissions|NH3|Fossil Fuel Fires,Mt NH3/yr, -Emissions|NH3|Fossil Fuels and Industry,Mt NH3/yr, -Emissions|NH3|Industrial Processes,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Chemicals,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Electronics,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Iron and Steel,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Metals and Minerals,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Metals and Minerals,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Non-Ferrous Metals,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Non-Ferrous Metals|Other,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Non-Metallic Minerals,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Non-Metallic Minerals|Cement,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Non-Metallic Minerals|Lime,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Non-Metallic Minerals|Other,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Other Sector,Mt NH3/yr, -Emissions|NH3|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt NH3/yr, -Emissions|NH3|Natural,Mt NH3/yr, -Emissions|NH3|Natural|Other,Mt NH3/yr, -Emissions|NH3|Natural|Volcanoes,Mt NH3/yr, -Emissions|NH3|Other,Mt NH3/yr, -Emissions|NH3|Product Use,Mt NH3/yr, -Emissions|NH3|Product Use|Non-Energy Use,Mt NH3/yr, -Emissions|NH3|Product Use|ODS Substitutes,Mt NH3/yr, -Emissions|NH3|Product Use|Solvents,Mt NH3/yr, -Emissions|NH3|Product Use|Solvents|Chemical Products,Mt NH3/yr, -Emissions|NH3|Product Use|Solvents|Degreasing,Mt NH3/yr, -Emissions|NH3|Product Use|Solvents|Other,Mt NH3/yr, -Emissions|NH3|Product Use|Solvents|Paint,Mt NH3/yr, -Emissions|NH3|Waste,Mt NH3/yr, -Emissions|NH3|Waste|Biological Treatment,Mt NH3/yr, -Emissions|NH3|Waste|Incineration,Mt NH3/yr, -Emissions|NH3|Waste|Other,Mt NH3/yr, -Emissions|NH3|Waste|Solid Waste Disposal,Mt NH3/yr, -Emissions|NH3|Waste|Wastewater Treatment,Mt NH3/yr, -Emissions|NOx,Mt NOx/yr, -Emissions|NOx|AFOLU,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture and Biomass Burning,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture|Livestock,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture|Livestock|Manure Management,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture|Managed Soils,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture|Other,Mt NOx/yr, -Emissions|NOx|AFOLU|Agriculture|Rice,Mt NOx/yr, -Emissions|NOx|AFOLU|Biomass Burning,Mt NOx/yr, -Emissions|NOx|AFOLU|Land,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Cropland,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Forest,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Forest Burning,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Grassland Burning,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Grassland Pastures,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Other,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Other Land,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Settlements,Mt NOx/yr, -Emissions|NOx|AFOLU|Land|Wetlands,Mt NOx/yr, -Emissions|NOx|Energy,Mt NOx/yr, -Emissions|NOx|Energy|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Demand,Mt NOx/yr, -Emissions|NOx|Energy|Demand|AFOFI,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Commercial,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Chemicals,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Construction,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Food and Tobacco,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Iron and Steel,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Machinery,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Mining,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Non-Ferrous Metals,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Non-Metallic Minerals,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Other,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Pulp and Paper,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Textile,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Transport Equipment,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Industry|Wood Products,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Other Sector,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Residential,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Residential and Commercial,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Residential and Commercial and AFOFI,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Aviation,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Aviation|Domestic,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Aviation|International,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Other Sector,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Rail,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Road,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Shipping,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Shipping|Domestic,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Shipping|International,Mt NOx/yr, -Emissions|NOx|Energy|Demand|Transportation|Shipping|International|Loading,Mt NOx/yr, -Emissions|NOx|Energy|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Other,Mt NOx/yr, -Emissions|NOx|Energy|Supply,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Electricity,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Electricity and Heat,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Fuel Production and Transformation,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases and Liquids Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Biomass,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Biomass|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Biomass|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Coal,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Coal|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Coal|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Extraction,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Extraction|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Extraction|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Hydrogen,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Hydrogen|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Hydrogen|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Natural Gas,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Natural Gas|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Natural Gas|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Transportation,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Transportation|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Gases|Transportation|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Heat,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Biomass,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Biomass|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Biomass|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Coal,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Coal|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Coal|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Extraction,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Extraction|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Extraction|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Natural Gas,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Natural Gas|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Oil,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Oil|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Oil|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Transportation,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Transportation|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Liquids|Transportation|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Other,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Other|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Other|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids and Other Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Biomass,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Biomass|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Biomass|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Coal,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Coal|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Coal|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Extraction,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Extraction|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Extraction|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Fugitive,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Transportation,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Transportation|Combustion,Mt NOx/yr, -Emissions|NOx|Energy|Supply|Solids|Transportation|Fugitive,Mt NOx/yr, -Emissions|NOx|Fossil Fuel Fires,Mt NOx/yr, -Emissions|NOx|Fossil Fuels and Industry,Mt NOx/yr, -Emissions|NOx|Industrial Processes,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Chemicals,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Electronics,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Iron and Steel,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Metals and Minerals,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Metals and Minerals,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Non-Ferrous Metals,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Non-Ferrous Metals|Other,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Non-Metallic Minerals,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Non-Metallic Minerals|Cement,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Non-Metallic Minerals|Lime,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Non-Metallic Minerals|Other,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Other Sector,Mt NOx/yr, -Emissions|NOx|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt NOx/yr, -Emissions|NOx|Natural,Mt NOx/yr, -Emissions|NOx|Natural|Other,Mt NOx/yr, -Emissions|NOx|Natural|Volcanoes,Mt NOx/yr, -Emissions|NOx|Other,Mt NOx/yr, -Emissions|NOx|Product Use,Mt NOx/yr, -Emissions|NOx|Product Use|Non-Energy Use,Mt NOx/yr, -Emissions|NOx|Product Use|ODS Substitutes,Mt NOx/yr, -Emissions|NOx|Product Use|Solvents,Mt NOx/yr, -Emissions|NOx|Product Use|Solvents|Chemical Products,Mt NOx/yr, -Emissions|NOx|Product Use|Solvents|Degreasing,Mt NOx/yr, -Emissions|NOx|Product Use|Solvents|Other,Mt NOx/yr, -Emissions|NOx|Product Use|Solvents|Paint,Mt NOx/yr, -Emissions|NOx|Waste,Mt NOx/yr, -Emissions|NOx|Waste|Biological Treatment,Mt NOx/yr, -Emissions|NOx|Waste|Incineration,Mt NOx/yr, -Emissions|NOx|Waste|Other,Mt NOx/yr, -Emissions|NOx|Waste|Solid Waste Disposal,Mt NOx/yr, -Emissions|NOx|Waste|Wastewater Treatment,Mt NOx/yr, -Emissions|OC,Mt OC/yr, -Emissions|OC|AFOLU,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture and Biomass Burning,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture|Livestock,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture|Livestock|Manure Management,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture|Managed Soils,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture|Other,Mt OC/yr, -Emissions|OC|AFOLU|Agriculture|Rice,Mt OC/yr, -Emissions|OC|AFOLU|Biomass Burning,Mt OC/yr, -Emissions|OC|AFOLU|Land,Mt OC/yr, -Emissions|OC|AFOLU|Land|Cropland,Mt OC/yr, -Emissions|OC|AFOLU|Land|Forest,Mt OC/yr, -Emissions|OC|AFOLU|Land|Forest Burning,Mt OC/yr, -Emissions|OC|AFOLU|Land|Grassland Burning,Mt OC/yr, -Emissions|OC|AFOLU|Land|Grassland Pastures,Mt OC/yr, -Emissions|OC|AFOLU|Land|Other,Mt OC/yr, -Emissions|OC|AFOLU|Land|Other Land,Mt OC/yr, -Emissions|OC|AFOLU|Land|Settlements,Mt OC/yr, -Emissions|OC|AFOLU|Land|Wetlands,Mt OC/yr, -Emissions|OC|Energy,Mt OC/yr, -Emissions|OC|Energy|Combustion,Mt OC/yr, -Emissions|OC|Energy|Demand,Mt OC/yr, -Emissions|OC|Energy|Demand|AFOFI,Mt OC/yr, -Emissions|OC|Energy|Demand|Commercial,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Chemicals,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Construction,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Food and Tobacco,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Iron and Steel,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Machinery,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Mining,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Non-Ferrous Metals,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Non-Metallic Minerals,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Other,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Pulp and Paper,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Textile,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Transport Equipment,Mt OC/yr, -Emissions|OC|Energy|Demand|Industry|Wood Products,Mt OC/yr, -Emissions|OC|Energy|Demand|Other Sector,Mt OC/yr, -Emissions|OC|Energy|Demand|Residential,Mt OC/yr, -Emissions|OC|Energy|Demand|Residential and Commercial,Mt OC/yr, -Emissions|OC|Energy|Demand|Residential and Commercial and AFOFI,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Aviation,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Aviation|Domestic,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Aviation|International,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Other Sector,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Rail,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Road,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Shipping,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Shipping|Domestic,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Shipping|International,Mt OC/yr, -Emissions|OC|Energy|Demand|Transportation|Shipping|International|Loading,Mt OC/yr, -Emissions|OC|Energy|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Other,Mt OC/yr, -Emissions|OC|Energy|Supply,Mt OC/yr, -Emissions|OC|Energy|Supply|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Electricity,Mt OC/yr, -Emissions|OC|Energy|Supply|Electricity and Heat,Mt OC/yr, -Emissions|OC|Energy|Supply|Fuel Production and Transformation,Mt OC/yr, -Emissions|OC|Energy|Supply|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases and Liquids Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Biomass,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Biomass|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Biomass|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Coal,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Coal|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Coal|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Extraction,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Extraction|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Extraction|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Hydrogen,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Hydrogen|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Hydrogen|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Natural Gas,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Natural Gas|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Natural Gas|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Transportation,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Transportation|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Gases|Transportation|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Heat,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Biomass,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Biomass|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Biomass|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Coal,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Coal|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Coal|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Extraction,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Extraction|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Extraction|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Natural Gas,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Natural Gas|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Oil,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Oil|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Oil|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Transportation,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Transportation|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Liquids|Transportation|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Other,Mt OC/yr, -Emissions|OC|Energy|Supply|Other|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Other|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids and Other Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Biomass,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Biomass|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Biomass|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Coal,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Coal|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Coal|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Extraction,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Extraction|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Extraction|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Fugitive,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Transportation,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Transportation|Combustion,Mt OC/yr, -Emissions|OC|Energy|Supply|Solids|Transportation|Fugitive,Mt OC/yr, -Emissions|OC|Fossil Fuel Fires,Mt OC/yr, -Emissions|OC|Fossil Fuels and Industry,Mt OC/yr, -Emissions|OC|Industrial Processes,Mt OC/yr, -Emissions|OC|Industrial Processes|Chemicals,Mt OC/yr, -Emissions|OC|Industrial Processes|Electronics,Mt OC/yr, -Emissions|OC|Industrial Processes|Iron and Steel,Mt OC/yr, -Emissions|OC|Industrial Processes|Metals and Minerals,Mt OC/yr, -Emissions|OC|Industrial Processes|Metals and Minerals,Mt OC/yr, -Emissions|OC|Industrial Processes|Non-Ferrous Metals,Mt OC/yr, -Emissions|OC|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt OC/yr, -Emissions|OC|Industrial Processes|Non-Ferrous Metals|Other,Mt OC/yr, -Emissions|OC|Industrial Processes|Non-Metallic Minerals,Mt OC/yr, -Emissions|OC|Industrial Processes|Non-Metallic Minerals|Cement,Mt OC/yr, -Emissions|OC|Industrial Processes|Non-Metallic Minerals|Lime,Mt OC/yr, -Emissions|OC|Industrial Processes|Non-Metallic Minerals|Other,Mt OC/yr, -Emissions|OC|Industrial Processes|Other Sector,Mt OC/yr, -Emissions|OC|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt OC/yr, -Emissions|OC|Natural,Mt OC/yr, -Emissions|OC|Natural|Other,Mt OC/yr, -Emissions|OC|Natural|Volcanoes,Mt OC/yr, -Emissions|OC|Other,Mt OC/yr, -Emissions|OC|Product Use,Mt OC/yr, -Emissions|OC|Product Use|Non-Energy Use,Mt OC/yr, -Emissions|OC|Product Use|ODS Substitutes,Mt OC/yr, -Emissions|OC|Product Use|Solvents,Mt OC/yr, -Emissions|OC|Product Use|Solvents|Chemical Products,Mt OC/yr, -Emissions|OC|Product Use|Solvents|Degreasing,Mt OC/yr, -Emissions|OC|Product Use|Solvents|Other,Mt OC/yr, -Emissions|OC|Product Use|Solvents|Paint,Mt OC/yr, -Emissions|OC|Waste,Mt OC/yr, -Emissions|OC|Waste|Biological Treatment,Mt OC/yr, -Emissions|OC|Waste|Incineration,Mt OC/yr, -Emissions|OC|Waste|Other,Mt OC/yr, -Emissions|OC|Waste|Solid Waste Disposal,Mt OC/yr, -Emissions|OC|Waste|Wastewater Treatment,Mt OC/yr, -Emissions|PFC,kt CF4-equiv/yr,"total emissions of perfluorocarbons (PFCs), provided as aggregate CF4-equivalents" -Emissions|SF6,kt SF6/yr,total emissions of sulfur hexafluoride (SF6) -Emissions|Sulfur,Mt SO2/yr, -Emissions|Sulfur|AFOLU,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture and Biomass Burning,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture|Livestock,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture|Livestock|Manure Management,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture|Managed Soils,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture|Other,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Agriculture|Rice,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Biomass Burning,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Cropland,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Forest,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Forest Burning,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Grassland Burning,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Grassland Pastures,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Other,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Other Land,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Settlements,Mt SO2/yr, -Emissions|Sulfur|AFOLU|Land|Wetlands,Mt SO2/yr, -Emissions|Sulfur|Energy,Mt SO2/yr, -Emissions|Sulfur|Energy|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|AFOFI,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Commercial,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Chemicals,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Construction,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Food and Tobacco,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Iron and Steel,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Machinery,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Mining,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Non-Ferrous Metals,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Non-Metallic Minerals,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Other,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Pulp and Paper,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Textile,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Transport Equipment,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Industry|Wood Products,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Other Sector,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Residential,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Residential and Commercial,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Residential and Commercial and AFOFI,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Aviation,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Aviation|Domestic,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Aviation|International,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Other Sector,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Rail,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Road,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Shipping,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Shipping|Domestic,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Shipping|International,Mt SO2/yr, -Emissions|Sulfur|Energy|Demand|Transportation|Shipping|International|Loading,Mt SO2/yr, -Emissions|Sulfur|Energy|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Other,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Electricity,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Electricity and Heat,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Fuel Production and Transformation,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases and Liquids Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Biomass,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Biomass|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Biomass|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Coal,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Coal|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Coal|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Extraction,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Extraction|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Extraction|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Hydrogen,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Hydrogen|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Hydrogen|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Natural Gas,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Natural Gas|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Natural Gas|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Transportation,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Transportation|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Gases|Transportation|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Heat,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Biomass,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Biomass|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Biomass|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Coal,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Coal|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Coal|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Extraction,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Extraction|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Extraction|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Natural Gas,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Natural Gas|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Oil,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Oil|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Oil|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Transportation,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Transportation|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Liquids|Transportation|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Other,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Other|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Other|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids and Other Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Biomass,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Biomass|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Biomass|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Coal,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Coal|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Coal|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Extraction,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Extraction|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Extraction|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Transportation,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Transportation|Combustion,Mt SO2/yr, -Emissions|Sulfur|Energy|Supply|Solids|Transportation|Fugitive,Mt SO2/yr, -Emissions|Sulfur|Fossil Fuel Fires,Mt SO2/yr, -Emissions|Sulfur|Fossil Fuels and Industry,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Chemicals,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Electronics,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Iron and Steel,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Metals and Minerals,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Metals and Minerals,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Non-Ferrous Metals,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Non-Ferrous Metals|Other,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals|Cement,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals|Lime,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Non-Metallic Minerals|Other,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Other Sector,Mt SO2/yr, -Emissions|Sulfur|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt SO2/yr, -Emissions|Sulfur|Natural,Mt SO2/yr, -Emissions|Sulfur|Natural|Other,Mt SO2/yr, -Emissions|Sulfur|Natural|Volcanoes,Mt SO2/yr, -Emissions|Sulfur|Other,Mt SO2/yr, -Emissions|Sulfur|Product Use,Mt SO2/yr, -Emissions|Sulfur|Product Use|Non-Energy Use,Mt SO2/yr, -Emissions|Sulfur|Product Use|ODS Substitutes,Mt SO2/yr, -Emissions|Sulfur|Product Use|Solvents,Mt SO2/yr, -Emissions|Sulfur|Product Use|Solvents|Chemical Products,Mt SO2/yr, -Emissions|Sulfur|Product Use|Solvents|Degreasing,Mt SO2/yr, -Emissions|Sulfur|Product Use|Solvents|Other,Mt SO2/yr, -Emissions|Sulfur|Product Use|Solvents|Paint,Mt SO2/yr, -Emissions|Sulfur|Waste,Mt SO2/yr, -Emissions|Sulfur|Waste|Biological Treatment,Mt SO2/yr, -Emissions|Sulfur|Waste|Incineration,Mt SO2/yr, -Emissions|Sulfur|Waste|Other,Mt SO2/yr, -Emissions|Sulfur|Waste|Solid Waste Disposal,Mt SO2/yr, -Emissions|Sulfur|Waste|Wastewater Treatment,Mt SO2/yr, -Emissions|VOC,Mt VOC/yr, -Emissions|VOC|AFOLU,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture and Biomass Burning,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture|Livestock,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture|Livestock|Enteric Fermentation,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture|Livestock|Manure Management,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture|Managed Soils,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture|Other,Mt VOC/yr, -Emissions|VOC|AFOLU|Agriculture|Rice,Mt VOC/yr, -Emissions|VOC|AFOLU|Biomass Burning,Mt VOC/yr, -Emissions|VOC|AFOLU|Land,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Cropland,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Forest,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Forest Burning,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Grassland Burning,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Grassland Pastures,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Other,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Other Land,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Settlements,Mt VOC/yr, -Emissions|VOC|AFOLU|Land|Wetlands,Mt VOC/yr, -Emissions|VOC|Energy,Mt VOC/yr, -Emissions|VOC|Energy|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Demand,Mt VOC/yr, -Emissions|VOC|Energy|Demand|AFOFI,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Commercial,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Chemicals,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Construction,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Food and Tobacco,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Iron and Steel,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Machinery,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Mining,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Non-Ferrous Metals,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Non-Metallic Minerals,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Other,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Pulp and Paper,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Textile,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Transport Equipment,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Industry|Wood Products,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Other Sector,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Residential,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Residential and Commercial,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Residential and Commercial and AFOFI,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Aviation,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Aviation|Domestic,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Aviation|International,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Other Sector,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Rail,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Rail and Domestic Shipping,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Road,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Road Rail and Domestic Shipping,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Shipping,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Shipping|Domestic,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Shipping|International,Mt VOC/yr, -Emissions|VOC|Energy|Demand|Transportation|Shipping|International|Loading,Mt VOC/yr, -Emissions|VOC|Energy|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Other,Mt VOC/yr, -Emissions|VOC|Energy|Supply,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Electricity,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Electricity and Heat,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Fuel Production and Transformation,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases and Liquids Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Biomass,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Biomass|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Biomass|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Coal,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Coal|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Coal|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Extraction,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Extraction|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Extraction|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Hydrogen,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Hydrogen|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Hydrogen|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Natural Gas,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Natural Gas|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Natural Gas|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Transportation,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Transportation|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Gases|Transportation|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Heat,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Biomass,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Biomass|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Biomass|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Coal,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Coal|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Coal|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Extraction,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Extraction|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Extraction|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Natural Gas,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Natural Gas|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Natural Gas|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Oil,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Oil|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Oil|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Transportation,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Transportation|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Liquids|Transportation|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Other,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Other|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Other|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids and Other Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Biomass,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Biomass|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Biomass|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Coal,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Coal|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Coal|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Extraction,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Extraction|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Extraction|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Fugitive,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Transportation,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Transportation|Combustion,Mt VOC/yr, -Emissions|VOC|Energy|Supply|Solids|Transportation|Fugitive,Mt VOC/yr, -Emissions|VOC|Fossil Fuel Fires,Mt VOC/yr, -Emissions|VOC|Fossil Fuels and Industry,Mt VOC/yr, -Emissions|VOC|Industrial Processes,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Chemicals,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Electronics,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Iron and Steel,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Metals and Minerals,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Metals and Minerals,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Non-Ferrous Metals,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Non-Ferrous Metals|Aluminun,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Non-Ferrous Metals|Other,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Non-Metallic Minerals,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Non-Metallic Minerals|Cement,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Non-Metallic Minerals|Lime,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Non-Metallic Minerals|Other,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Other Sector,Mt VOC/yr, -Emissions|VOC|Industrial Processes|Pulp and Paper and Food and Beverage and Wood,Mt VOC/yr, -Emissions|VOC|Natural,Mt VOC/yr, -Emissions|VOC|Natural|Other,Mt VOC/yr, -Emissions|VOC|Natural|Volcanoes,Mt VOC/yr, -Emissions|VOC|Other,Mt VOC/yr, -Emissions|VOC|Product Use,Mt VOC/yr, -Emissions|VOC|Product Use|Non-Energy Use,Mt VOC/yr, -Emissions|VOC|Product Use|ODS Substitutes,Mt VOC/yr, -Emissions|VOC|Product Use|Solvents,Mt VOC/yr, -Emissions|VOC|Product Use|Solvents|Chemical Products,Mt VOC/yr, -Emissions|VOC|Product Use|Solvents|Degreasing,Mt VOC/yr, -Emissions|VOC|Product Use|Solvents|Other,Mt VOC/yr, -Emissions|VOC|Product Use|Solvents|Paint,Mt VOC/yr, -Emissions|VOC|Waste,Mt VOC/yr, -Emissions|VOC|Waste|Biological Treatment,Mt VOC/yr, -Emissions|VOC|Waste|Incineration,Mt VOC/yr, -Emissions|VOC|Waste|Other,Mt VOC/yr, -Emissions|VOC|Waste|Solid Waste Disposal,Mt VOC/yr, -Emissions|VOC|Waste|Wastewater Treatment,Mt VOC/yr, -Employment,million,Number of employed inhabitants (based on ILO classification) -Employment|Agriculture,Million,Number of employed inhabitants (payrolls) in agriculture (based on ILO classification) -Employment|Industry,Million,Number of employed inhabitants (payrolls) in industry (based on ILO classification) -Employment|Industry|Energy ,Million, -Employment|Industry|Energy Intensive,Million,Number of employed inhabitants (payrolls) in energy-intensive industry (based on ILO classification) -Employment|Industry|Manufacturing,Million, -Employment|Service,Million,Number of employed inhabitants (payrolls) in the service sector (based on ILO classification) -Energy Service|Commercial|Floor Space,bn m2/yr,energy service demand for conditioned floor space in commercial buildings -Energy Service|Residential and Commercial|Floor Space,bn m2/yr,energy service demand for conditioned floor space in buildings -Energy Service|Residential|Floor Space,bn m2/yr,energy service demand for conditioned floor space in residential buildings -Energy Service|Transportation|Freight,bn tkm/yr,energy service demand for freight transport -Energy Service|Transportation|Freight|Aviation,bn tkm/yr,energy service demand for freight transport on aircrafts -Energy Service|Transportation|Freight|International Shipping,bn tkm/yr, -Energy Service|Transportation|Freight|Navigation,bn tkm/yr,energy service demand for freight transport on domestic ships -Energy Service|Transportation|Freight|Other,bn tkm/yr,energy service demand for freight transport using other modes (please provide a definition of the modes in this category in the 'comments' tab) -Energy Service|Transportation|Freight|Railways,bn tkm/yr,energy service demand for freight transport on railways -Energy Service|Transportation|Freight|Road,bn tkm/yr,energy service demand for freight transport on roads -Energy Service|Transportation|Passenger,bn pkm/yr,energy service demand for passenger transport -Energy Service|Transportation|Passenger|Aviation,bn pkm/yr,energy service demand for passenger transport on aircrafts -Energy Service|Transportation|Passenger|Bicycling and Walking,bn pkm/yr, -Energy Service|Transportation|Passenger|Navigation,bn pkm/yr,energy service demand for passenger transport on domestic ships -Energy Service|Transportation|Passenger|Other,bn pkm/yr,energy service demand for passenger transport using other modes (please provide a definition of the modes in this category in the 'comments' tab) -Energy Service|Transportation|Passenger|Railways,bn pkm/yr,energy service demand for passenger transport on railways -Energy Service|Transportation|Passenger|Road,bn pkm/yr,energy service demand for passenger transport on roads -Energy Service|Transportation|Passenger|Road|2W and 3W,bn pkm/yr, -Energy Service|Transportation|Passenger|Road|Bus,bn pkm/yr, -Energy Service|Transportation|Passenger|Road|LDV,bn pkm/yr, -Expenditure|Energy|Fossil,billion US$2010/yr OR local currency,Fossil fuel expenditure -Expenditure|Government,billion US$2010/yr OR local currency,total government expenditure -Expenditure|Household,billion US$2010/yr OR local currency,Total household expenditure -Expenditure|Household|Energy,billion US$2010/yr OR local currency,expenditure of households for energy. -Expenditure|Household|Food,billion US$2010/yr OR local currency,expenditure of households for food. -Expenditure|Household|Industry,billion US$2010/yr OR local currency,expenditure of households for industrial goods. -Expenditure|household|Services,billion US$2010/yr OR local currency, -Expenditure|household|Services|health,billion US$2010/yr OR local currency, -Expenditure|Medical System|Incremental,billion US$2010/yr OR local currency,Incremental expenditure for the medical system -Expenditure|RnD,billion US$2010/yr OR local currency,expenditure on research and development -Export,billion US$2010/yr OR local currency,total exports measured in monetary quantities. -Export|Agriculture,billion US$2010/yr OR local currency,export of agricultural commodities measured in monetary units. -Export|Developing Country Share,%,Developing countries’ and least developed countries’ share of global exports -Export|Energy,billion US$2010/yr OR local currency,export of energy commodities measured in monetary units. -Export|Industry,billion US$2010/yr OR local currency,export of industrial (non-energy) commodities measured in monetary units. -Export|Industry|Energy,billion US$2010/yr OR local currency, -Export|Industry|Energy Intensive,billion US$2010/yr OR local currency, -Export|Industry|Manufacturing,billion US$2010/yr OR local currency, -Export|Other,billion US$2010/yr OR local currency,export of other commodities measured in monetary units (please provide a definition of the sources in this category in the 'comments' tab). -Fertilizer Use|Nitrogen,Tg N/yr,total nitrogen fertilizer use -Fertilizer Use|Phosphorus,Tg P/yr,total phosphorus fertilizer use -Fertilizer Use|Potassium,Tg K2O/yr,total potassium fertilizer use -Fertilizer|Nitrogen|Intensity,t N/ha/yr,nitrogen fertilizer inputs in tonnes per hectare per year (or similar) -Fertilizer|Phosphorus|Intensity,t P/ha/yr,phosphorus fertilizer inputs in tonnes per hectare per year (or similar) -Fertilizer|Potassium|Intensity,t K20/ha/yr,potassium fertilizer inputs in tonnes per hectare per year (or similar) -Final Energy,EJ/yr,"total final energy consumption by all end-use sectors and all fuels, excluding transmission/distribution losses" -Final Energy|Commercial,EJ/yr,final energy consumed in the commercial sector -Final Energy|Commercial|Electricity,EJ/yr,"final energy consumption by the commercial sector of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Commercial|Electricity|Solar,EJ/yr, -Final Energy|Commercial|Gases,EJ/yr,"final energy consumption by the commercial sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Commercial|Heat,EJ/yr,"final energy consumption by the commercial sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" -Final Energy|Commercial|Hydrogen,EJ/yr,final energy consumption by the commercial sector of hydrogen -Final Energy|Commercial|Liquids,EJ/yr,"final energy consumption by the commercial sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Commercial|Other,EJ/yr,final energy consumption by the commercial sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Commercial|Solids,EJ/yr,final energy solid fuel consumption by the commercial sector (including coal and solid biomass) -Final Energy|Commercial|Solids|Biomass,EJ/yr, -Final Energy|Commercial|Solids|Biomass|Traditional,EJ/yr, -Final Energy|Commercial|Solids|Coal,EJ/yr, -Final Energy|Commercial|Water|Desalination,TWh/yr,Energy consumption for desalination water -Final Energy|Commercial|Water|Groundwater Extraction,TWh/yr,Energy consumption for groundwater extraction -Final Energy|Commercial|Water|Surface Water Extraction,TWh/yr,Energy consumption for surface water extraction -Final Energy|Commercial|Water|Transfer,TWh/yr,Energy consumption for water transfers -Final Energy|Electricity,EJ/yr,"final energy consumption of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Electricity|Solar,EJ/yr, -Final Energy|Gases,EJ/yr,"final energy consumption of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Geothermal,EJ/yr,"final energy consumption of geothermal energy (e.g., from decentralized or small-scale geothermal heating systems) EXCLUDING geothermal heat pumps" -Final Energy|Heat,EJ/yr,"final energy consumption of heat (e.g., district heat, process heat, warm water), excluding transmission/distribution losses, excluding direct geothermal and solar heating" -Final Energy|Hydrogen,EJ/yr,"final energy consumption of hydrogen, excluding transmission/distribution losses" -Final Energy|Industry,EJ/yr,"final energy consumed by the industrial sector, including feedstocks, including agriculture and fishing" -Final Energy|Industry|Electricity,EJ/yr,"final energy consumption by the industrial sector of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Industry|Electricity|Solar,EJ/yr, -Final Energy|Industry|Gases,EJ/yr,"final energy consumption by the industrial sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Industry|Heat,EJ/yr,"final energy consumption by the industrial sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" -Final Energy|Industry|Hydrogen,EJ/yr,final energy consumption by the industrial sector of hydrogen -Final Energy|Industry|Liquids,EJ/yr,"final energy consumption by the industrial sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Industry|Liquids|Biomass,EJ/yr, -Final Energy|Industry|Liquids|Coal,EJ/yr, -Final Energy|Industry|Liquids|Gas,EJ/yr, -Final Energy|Industry|Liquids|Oil,EJ/yr, -Final Energy|Industry|Other,EJ/yr,final energy consumption by the industrial sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Industry|Solids,EJ/yr,final energy solid fuel consumption by the industrial sector (including coal and solid biomass) -Final Energy|Industry|Solids|Biomass,EJ/yr,"final energy consumption by the industrial sector of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" -Final Energy|Industry|Solids|Coal,EJ/yr,final energy coal consumption by the industrial sector -Final Energy|Liquids,EJ/yr,"final energy consumption of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Liquids|Biomass,EJ/yr, -Final Energy|Liquids|Coal,EJ/yr, -Final Energy|Liquids|Gas,EJ/yr, -Final Energy|Liquids|Oil,EJ/yr, -Final Energy|Non-Energy Use,EJ/yr, -Final Energy|Non-Energy Use|Biomass,EJ/yr, -Final Energy|Non-Energy Use|Coal,EJ/yr, -Final Energy|Non-Energy Use|Gas,EJ/yr, -Final Energy|Non-Energy Use|Oil,EJ/yr, -Final Energy|Other,EJ/yr,final energy consumption of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Other Sector,EJ/yr,total final energy consumption by other sectors -Final Energy|Other Sector|Electricity,EJ/yr,"final energy consumption by other sectors of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Other Sector|Electricity|Solar,EJ/yr, -Final Energy|Other Sector|Gases,EJ/yr,"final energy consumption by other sectors of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Other Sector|Heat,EJ/yr,"final energy consumption by other sectors of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" -Final Energy|Other Sector|Hydrogen,EJ/yr,final energy consumption by other sectors of hydrogen -Final Energy|Other Sector|Liquids,EJ/yr,"final energy consumption by other sectors of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Other Sector|Other,EJ/yr,final energy consumption by other sectors of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Other Sector|Solids,EJ/yr,final energy solid fuel consumption by other sectors (including coal and solid biomass) -Final Energy|Other Sector|Solids|Biomass,EJ/yr,"final energy consumption by other sectors of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" -Final Energy|Other Sector|Solids|Biomass|Traditional,EJ/yr,"final energy consumed by other sectors than industry, transportation, residential and commercial coming from biomass (traditional)" -Final Energy|Other Sector|Solids|Coal,EJ/yr,final energy coal consumption by other sectors -Final Energy|Residential,EJ/yr,final energy consumed in the residential sector -Final Energy|Residential and Commercial,EJ/yr,final energy consumed in the residential & commercial sector -Final Energy|Residential and Commercial|Electricity,EJ/yr,"final energy consumption by the residential & commercial sector of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Residential and Commercial|Electricity|Solar,EJ/yr, -Final Energy|Residential and Commercial|Gases,EJ/yr,"final energy consumption by the residential & commercial sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Residential and Commercial|Heat,EJ/yr,"final energy consumption by the residential & commercial sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" -Final Energy|Residential and Commercial|Hydrogen,EJ/yr,final energy consumption by the residential & commercial sector of hydrogen -Final Energy|Residential and Commercial|Liquids,EJ/yr,"final energy consumption by the residential & commercial sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Residential and Commercial|Liquids|Biomass,EJ/yr, -Final Energy|Residential and Commercial|Liquids|Coal,EJ/yr, -Final Energy|Residential and Commercial|Liquids|Gas,EJ/yr, -Final Energy|Residential and Commercial|Liquids|Oil,EJ/yr, -Final Energy|Residential and Commercial|Other,EJ/yr,final energy consumption by the residential & commercial sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Residential and Commercial|Solids,EJ/yr,final energy solid fuel consumption by the residential & commercial sector (including coal and solid biomass) -Final Energy|Residential and Commercial|Solids|Biomass,EJ/yr,"final energy consumption by the residential & commercial sector of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" -Final Energy|Residential and Commercial|Solids|Biomass|Traditional,EJ/yr,final energy consumed in the residential & commercial sector coming from biomass (traditional) -Final Energy|Residential and Commercial|Solids|Coal,EJ/yr,final energy coal consumption by the residential & commercial sector -Final Energy|Residential and Commercial|Space Heating,EJ/yr,final energy consumed for space heating in residential and commercial buildings -Final Energy|Residential|Electricity,EJ/yr,"final energy consumption by the residential sector of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Residential|Electricity|Solar,EJ/yr, -Final Energy|Residential|Gases,EJ/yr,"final energy consumption by the residential sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Residential|Heat,EJ/yr,"final energy consumption by the residential sector of heat (e.g., district heat, process heat, solar heating and warm water), excluding transmission/distribution losses" -Final Energy|Residential|Hydrogen,EJ/yr,final energy consumption by the residential sector of hydrogen -Final Energy|Residential|Liquids,EJ/yr,"final energy consumption by the residential sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Residential|Other,EJ/yr,final energy consumption by the residential sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Residential|Solids,EJ/yr,final energy solid fuel consumption by the residential sector (including coal and solid biomass) -Final Energy|Residential|Solids|Biomass,EJ/yr, -Final Energy|Residential|Solids|Biomass|Traditional,EJ/yr, -Final Energy|Residential|Solids|Coal,EJ/yr, -Final Energy|Solar,EJ/yr,"final energy consumption of solar energy (e.g., from roof-top solar hot water collector systems)" -Final Energy|Solids,EJ/yr,final energy solid fuel consumption (including coal and solid biomass) -Final Energy|Solids|Biomass,EJ/yr,"final energy consumption of solid biomass (modern and traditional), excluding final energy consumption of bioliquids which are reported in the liquids category" -Final Energy|Solids|Biomass|Traditional,EJ/yr,final energy consumption of traditional biomass -Final Energy|Solids|Coal,EJ/yr,final energy coal consumption -Final Energy|Transportation,EJ/yr,"final energy consumed in the transportation sector, including bunker fuels, excluding pipelines" -Final Energy|Transportation|Electricity,EJ/yr,"final energy consumption by the transportation sector of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Transportation|Freight,EJ/yr,final energy consumed for freight transportation -Final Energy|Transportation|Freight|Electricity,EJ/yr,"final energy consumption by the freight transportation sector of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Transportation|Freight|Gases,EJ/yr,"final energy consumption by the freight transportation sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Transportation|Freight|Hydrogen,EJ/yr,final energy consumption by the freight transportation sector of hydrogen -Final Energy|Transportation|Freight|Liquids,EJ/yr,"final energy consumption by the freight transportation sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Transportation|Freight|Liquids|Biomass,EJ/yr,final energy consumption by the freight transportation sector of liquid biofuels -Final Energy|Transportation|Freight|Liquids|Oil,EJ/yr,final energy consumption by the freight transportation sector of liquid oil products (from conventional & unconventional oil) -Final Energy|Transportation|Freight|Other,EJ/yr,final energy consumption by the freight transportation sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Transportation|Gases,EJ/yr,"final energy consumption by the transportation sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Transportation|Gases|Shipping,EJ/yr, -Final Energy|Transportation|Hydrogen,EJ/yr,final energy consumption by the transportation sector of hydrogen -Final Energy|Transportation|Hydrogen|Shipping,EJ/yr, -Final Energy|Transportation|Liquids,EJ/yr,"final energy consumption by the transportation sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Transportation|Liquids|Biomass,EJ/yr,final energy consumption by the transportation sector of liquid biofuels -Final Energy|Transportation|Liquids|Biomass|Shipping,EJ/yr, -Final Energy|Transportation|Liquids|Coal,EJ/yr,final energy consumption by the transportation sector of coal based liquids (coal-to-liquids) -Final Energy|Transportation|Liquids|Coal|Shipping,EJ/yr, -Final Energy|Transportation|Liquids|Gas,EJ/yr,final energy consumption by the transportation sector of natrual gas based liquids (gas-to-liquids) -Final Energy|Transportation|Liquids|Oil,EJ/yr,final energy consumption by the transportation sector of liquid oil products (from conventional & unconventional oil) -Final Energy|Transportation|Liquids|Oil|Shipping,EJ/yr, -Final Energy|Transportation|Liquids|Oil|Shipping|Fuel Oil,EJ/yr, -Final Energy|Transportation|Liquids|Oil|Shipping|Light Oil,EJ/yr, -Final Energy|Transportation|Other,EJ/yr,final energy consumption by the transportation sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Final Energy|Transportation|Passenger,EJ/yr,final energy consumed for passenger transportation -Final Energy|Transportation|Passenger|Electricity,EJ/yr,"final energy consumption by the passenger transportation sector of electricity (including on-site solar PV), excluding transmission/distribution losses" -Final Energy|Transportation|Passenger|Gases,EJ/yr,"final energy consumption by the passenger transportation sector of gases (natural gas, biogas, coal-gas), excluding transmission/distribution losses" -Final Energy|Transportation|Passenger|Hydrogen,EJ/yr,final energy consumption by the passenger transportation sector of hydrogen -Final Energy|Transportation|Passenger|Liquids,EJ/yr,"final energy consumption by the passenger transportation sector of refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Final Energy|Transportation|Passenger|Liquids|Biomass,EJ/yr,final energy consumption by the passenger transportation sector of liquid biofuels -Final Energy|Transportation|Passenger|Liquids|Oil,EJ/yr,final energy consumption by the passenger transportation sector of liquid oil products (from conventional & unconventional oil) -Final Energy|Transportation|Passenger|Other,EJ/yr,final energy consumption by the passenger transportation sector of other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Fiscal Gap,billion US$2010/yr OR local currency/yr,"The potential fiscal gap, is assessed by simulating the risks to assets and fiscal resilience following stochastic disasters of different magnitudes." -Fiscal Resilience,billion US$2010/yr OR local currency/yr,"Fiscal resilience is defined as the access to domestic and external resources for absorbing asset risks (availability for budget diversion, access to domestic and international credit, availablitiy of insurance and other innovative financing instruments)." -Food Demand,kcal/cap/day,"all food demand in calories (conversion factor: 1 kcal = 4,1868 kJ)" -Food Demand|Crops,kcal/cap/day,crop related food demand in calories -Food Demand|Livestock,kcal/cap/day,livestock related food demand in calories -Food Energy Supply,EJ/yr,total calory food demand -Food Energy Supply|Livestock,EJ/yr,calory food demand from livestock products -Forcing,W/m2,"radiative forcing from all greenhouse gases and forcing agents, including contributions from albedo change, nitrate, and mineral dust" -Forcing|Aerosol,W/m2,total radiative forcing from aerosols -Forcing|Aerosol|BC,W/m2,total radiative forcing from black carbon -Forcing|Aerosol|Black and Organic Carbon,W/m2,total radiative forcing from black and organic carbon -Forcing|Aerosol|Cloud Indirect,W/m2,total radiative forcing from indirect effects of aerosols on clouds -Forcing|Aerosol|OC,W/m2,total radiative forcing from organic carbon -Forcing|Aerosol|Other,W/m2,total radiative forcing from aerosols not covered in the other categories (including aerosols from biomass burning) -Forcing|Aerosol|Sulfate Direct,W/m2,total radiative forcing from direct sufate effects -Forcing|Albedo Change and Mineral Dust,W/m2,total radiative forcing from albedo change and mineral dust -Forcing|CH4,W/m2,total radiative forcing from CH4 -Forcing|CO2,W/m2,total radiative forcing from CO2 -Forcing|F-Gases,W/m2,total radiative forcing from F-gases -Forcing|Kyoto Gases,W/m2,"radiative forcing of the six Kyoto gases (CO2, CH4, N2O, SF6, HFCs, PFCs)" -Forcing|Montreal Gases,W/m2,total radiative forcing from Montreal gases -Forcing|N2O,W/m2,total radiative forcing from N2O -Forcing|Other,W/m2,total radiative forcing from factors not covered in other categories (including stratospheric ozone and stratospheric water vapor) -Forcing|Tropospheric Ozone,W/m2,total radiative forcing from tropospheric ozone -Forestry Demand|Roundwood,million m3/yr,"forestry demand level for all roundwood (consumption, not production)" -Forestry Demand|Roundwood|Industrial Roundwood,million m3/yr,"forestry demand level for industrial roundwood (consumption, not production)" -Forestry Demand|Roundwood|Wood Fuel,million m3/yr,"forestry demand level for fuel wood roundwood (consumption, not production)" -Forestry Production|Forest Residues,million t DM/yr,"forestry production level of forest residue output (primary production, not consumption)" -Forestry Production|Roundwood,million m3/yr,"forestry production level for all roundwood (primary production, not consumption)" -Forestry Production|Roundwood|Industrial Roundwood,million m3/yr,"forestry production level for industrial roundwood (primary production, not consumption)" -Forestry Production|Roundwood|Wood Fuel,million m3/yr,"forestry production level for fuel wood roundwood (primary production, not consumption)" -Freshwater|Environmental Flow,km3/yr,water allocated to environmental flow in rivers and groundwater systems -GDP|MER,billion US$2010/yr OR local currency,GDP at market exchange rate -GDP|PPP,billion US$2010/yr OR local currency,GDP converted to International $ using purchasing power parity (PPP) -GLOBIOM|Emissions|Afforestation CO2 G4M,Mt CO2eq/yr, -GLOBIOM|Emissions|CH4 Emissions Total,Mt CO2eq/yr, -GLOBIOM|Emissions|CO2 Emissions,Mt CO2/yr, -GLOBIOM|Emissions|CO2 Emissions|BIO00,Mt CO2/yr, -GLOBIOM|Emissions|CO2 Emissions|BIO01,Mt CO2/yr, -GLOBIOM|Emissions|CO2 Emissions|BIO02,Mt CO2/yr, -GLOBIOM|Emissions|CO2 Emissions|BIO03,Mt CO2/yr, -GLOBIOM|Emissions|CO2 Emissions|BIO04,Mt CO2/yr, -GLOBIOM|Emissions|CO2 Emissions|BIO05,Mt CO2/yr, -GLOBIOM|Emissions|CO2 Emissions|BIO0N,Mt CO2/yr, -GLOBIOM|Emissions|Deforestation CO2 GLO,Mt CO2eq/yr, -GLOBIOM|Emissions|Deforestation CO2 G4M,Mt CO2eq/yr, -GLOBIOM|Emissions|Forest Management CO2 G4M,Mt CO2eq/yr, -GLOBIOM|Emissions|GHG Emissions Total,Mt CO2eq/yr, -GLOBIOM|Emissions|N20 Emissions Total,Mt CO2eq/yr, -GLOBIOM|Emissions|Olc CO2 Globiom,Mt CO2eq/yr, -GLOBIOM|Emissions|Total CO2 G4M,Mt CO2eq/yr, -GLOBIOM|Final Energy|Liquid Total,EJ/yr, -GLOBIOM|Primary Energy|Biomass,EJ/yr, -GLOBIOM|Primary Energy|Biomass|BIO00,EJ/yr, -GLOBIOM|Primary Energy|Biomass|BIO01,EJ/yr, -GLOBIOM|Primary Energy|Biomass|BIO02,EJ/yr, -GLOBIOM|Primary Energy|Biomass|BIO03,EJ/yr, -GLOBIOM|Primary Energy|Biomass|BIO04,EJ/yr, -GLOBIOM|Primary Energy|Biomass|BIO05,EJ/yr, -GLOBIOM|Primary Energy|Biomass|BIO0N,EJ/yr, -GLOBIOM|Primary Energy|Forest Biomass GLO,EJ/yr, -GLOBIOM|Primary Energy|Forest Biomass G4M,EJ/yr, -GLOBIOM|Primary Energy|Fuel Wood GLO,EJ/yr, -GLOBIOM|Primary Energy|Fuel Wood G4M,EJ/yr, -GLOBIOM|Primary Energy|Other Solid Non Commercial,EJ/yr, -GLOBIOM|Primary Energy|Plantation Biomass,EJ/yr, -GLOBIOM|Primary Energy|Sawmill Residues GLO,EJ/yr, -GLOBIOM|Primary Energy|Sawmill Residues G4M,EJ/yr, -GLOBIOM|Primary Energy|Solid Exogenous GLO,EJ/yr, -GLOBIOM|Primary Energy|Solid Exogenous G4M,EJ/yr, -GLOBIOM|Primary Energy|Solid Total GLO,EJ/yr, -GLOBIOM|Primary Energy|Solid Total G4M,EJ/yr, -GLOBIOM|Wood|Forest Harvest Deforestation G4M,Mm3, -GLOBIOM|Wood|Forest Harvest Forest Management G4M,Mm3, -GLOBIOM|Wood|Forest Harvest Total G4M,Mm3, -GLOBIOM|Wood|Plantation Harvest GLO,Mm3, -GLOBIOM|Wood|Timber Industry GLO,Mm3, -GLOBIOM|Wood|Timber Industry G4M,Mm3, -GLOBIOM|Land Cover|New Forest G4M,million ha, -GLOBIOM|Land Cover|Old Forest G4M,million ha, -Import,billion US$2010/yr OR local currency,total imports measured in monetary quantities. -Import|Agriculture,billion US$2010/yr OR local currency,import of agricultural commodities measured in monetary units. -Import|Energy,billion US$2010/yr OR local currency,import of energy commodities measured in monetary units. -Import|Industry,billion US$2010/yr OR local currency,import of industrial (non-energy) commodities measured in monetary units. -Import|Industry|Energy,billion US$2010/yr OR local currency, -Import|Industry|Energy Intensive,billion US$2010/yr OR local currency, -Import|Industry|Manufacturing,billion US$2010/yr OR local currency, -Import|Other,billion US$2010/yr OR local currency,import of other commodities measured in monetary units (please provide a definition of the sources in this category in the 'comments' tab). -Improvement|Efficiency|Irrigation,%/yr,improvements in irrigation water use efficiency per year -Indirect Risk|GDP Growth,%,"The consequences of a fiscal vulnerability and associated gaps on macroeconomic development -of the country are characterized with indicators, such as economic growth or the country’s external debt -position." -Indirect Risk|Public Debt,billion US$2010/yr OR local currency/yr,"The consequences of a fiscal vulnerability and associated gaps on macroeconomic development -of the country are characterized with indicators, such as economic growth or the country’s external debt -position." -Interest Rate|Real,%,Real interest rate or return on capital that is relevant for energy system investments -Investment,billion US$2010/yr OR local currency,"Total economy wide investments (macroecomic capital stock, energy system, R&D, ...) " -Investment|Energy Demand|Transportation|Freight|Road|HDT|EV,billion US$2010/yr OR local currency,"investments into new vehicle technologies in the transport sector (heavy-duty freight trucks: electric vehicle technologies, including all-electrics and plug-in hybrids)" -Investment|Energy Demand|Transportation|Freight|Road|HDT|FCV,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (heavy-duty freight trucks: fuel cell technologies running on hydrogen or another type of fuel) -Investment|Energy Demand|Transportation|Freight|Road|HDT|ICE,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (heavy-duty freight trucks: internal combustion engine technologies running on any type of liquid or gaseous fuel) -Investment|Energy Demand|Transportation|Passenger|Road|LDV|EV,billion US$2010/yr OR local currency,"investments into new vehicle technologies in the transport sector (light-duty cars and trucks: electric vehicle technologies, including all-electrics and plug-in hybrids)" -Investment|Energy Demand|Transportation|Passenger|Road|LDV|FCV,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (light-duty cars and trucks: fuel cell technologies running on hydrogen or another type of fuel) -Investment|Energy Demand|Transportation|Passenger|Road|LDV|ICE,billion US$2010/yr OR local currency,investments into new vehicle technologies in the transport sector (light-duty cars and trucks: internal combustion engine technologies running on any type of liquid or gaseous fuel) -Investment|Energy Efficiency,billion US$2010/yr OR local currency,investments into the efficiency-increasing components of energy demand technologies -Investment|Energy Supply,billion US$2010/yr OR local currency,Investments into the energy supply system -Investment|Energy Supply|CO2 Transport and Storage,billion US$2010/yr OR local currency,investment in CO2 transport and storage (note that investment in the capturing equipment should be included along with the power plant technology) -Investment|Energy Supply|Electricity,billion US$2010/yr or local currency/yr,Investments into electricity generation and supply (including electricity storage and transmission & distribution) -Investment|Energy Supply|Electricity|Biomass,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Biomass|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Biomass|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Coal,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Coal|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Coal|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Electricity Storage,billion US$2010/yr OR local currency,"investments in electricity storage technologies (e.g., batteries, compressed air storage reservoirs, etc.)" -Investment|Energy Supply|Electricity|Fossil,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Gas,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Gas|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Gas|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Geothermal,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Hydro,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Non-Biomass Renewables,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Non-fossil,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Nuclear,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Ocean,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Oil,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Oil|w/ CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Oil|w/o CCS,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Other,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Solar,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Solar|PV,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Solar|CSP,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Transmission and Distribution,billion US$2010/yr OR local currency,investments in transmission and distribution of power generation -Investment|Energy Supply|Electricity|Wind,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Wind|Onshore,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Electricity|Wind|Offshore,billion US$2010/yr OR local currency,"investments in new power generation for the specified power plant category. If the model features several sub-categories, the total investments should be reported. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Extraction|Bioenergy,billion US$2010/yr OR local currency,investments for extraction and production of bioenergy -Investment|Energy Supply|Extraction|Coal,billion US$2010/yr OR local currency,"investments for extraction and conversion of coal. These should include mining, shipping and ports" -Investment|Energy Supply|Extraction|Fossil,billion US$2010/yr OR local currency,investments for all types of fossil extraction -Investment|Energy Supply|Extraction|Gas,billion US$2010/yr OR local currency,"investments for extraction and conversion of natural gas. These should include upstream, LNG chain and transmission and distribution" -Investment|Energy Supply|Extraction|Gas|Conventional,billion US$2010/yr OR local currency, -Investment|Energy Supply|Extraction|Gas|Unconventional,billion US$2010/yr OR local currency, -Investment|Energy Supply|Extraction|Oil,billion US$2010/yr OR local currency,"investments for extraction and conversion of oil. These should include upstream, transport and refining" -Investment|Energy Supply|Extraction|Oil|Conventional,billion US$2010/yr OR local currency, -Investment|Energy Supply|Extraction|Oil|Unconventional,billion US$2010/yr OR local currency, -Investment|Energy Supply|Extraction|Uranium,billion US$2010/yr OR local currency,"investments for extraction and conversion of uranium. These should include mining, conversion and enrichment" -Investment|Energy Supply|Heat,billion US$2010/yr or local currency/yr,investments in heat generation facilities -Investment|Energy Supply|Hydrogen,billion US$2010/yr or local currency/yr,"investments for the production of hydrogen from all energy sources (fossil, biomass, electrolysis). For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Hydrogen|Fossil,billion US$2010/yr OR local currency,"investments for the production of hydrogen from the specified source. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Hydrogen|Other,billion US$2010/yr OR local currency,"investments for the production of hydrogen from the specified source. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Hydrogen|Renewable,billion US$2010/yr OR local currency,"investments for the production of hydrogen from the specified source. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Liquids,billion US$2010/yr or local currency/yr,"investments for the production of liquid fuels. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Liquids|Biomass,billion US$2010/yr OR local currency,"investments for the production of biofuels. These should not include the costs of the feedstock. For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Liquids|Coal and Gas,billion US$2010/yr OR local currency,"investments for the production of fossil-based synfuels (coal and gas). For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Liquids|Oil,billion US$2010/yr OR local currency,"investments for the production of fossil fuels from oil refineries For plants equipped with CCS, the investment in the capturing equipment should be included but not the one on transport and storage." -Investment|Energy Supply|Other,billion US$2010/yr OR local currency,investments in other types of energy conversion facilities -Investment|Energy Supply|Other|Liquids|Oil|Transmission and Distribution,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Liquids|Oil|Other,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Gases|Transmission and Distribution,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Gases|Production,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Gases|Other,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Solids|Coal|Transmission and Distribution,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Solids|Coal|Other,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Solids|Biomass|Transmission and Distribution,billion US$2010/yr or local currency/yr, -Investment|Energy Supply|Other|Other,billion US$2010/yr or local currency/yr, -Investment|Infrastructure,billion US$2010/yr OR local currency,investment into infrastrucutre -Investment|Infrastructure|industry|Green,billion US$2010/yr OR local currency,"investment into industrial infrastructure (all types of new factories, plants, manufacturing facilities, etc. that are more efficient and utilize clean energy, as well as retrofits of non-green infrastructure to be more efficient and use clean energy)" -Investment|Infrastructure|industry|Non-Green,billion US$2010/yr OR local currency,"investment into industrial infrastructure (all types of new factories, plants, manufacturing facilities, etc. that are not overly efficient and do not utilize clean energy, as well as retrofits of non-green infrastructure that are neither efficient nor use clean energy)" -Investment|Infrastructure|Residential and Commercial|Building Retrofits,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of existing buildings that have been retrofitted to become more energy efficient) -Investment|Infrastructure|Residential and Commercial|High-Efficiency Buildings,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of new buildings that are relatively high in their energy efficiency) -Investment|Infrastructure|Residential and Commercial|Low-Efficiency Buildings,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of new buildings that are relatively low in their energy efficiency) -Investment|Infrastructure|Residential and Commercial|Medium-Efficiency Buildings,billion US$2010/yr OR local currency,investment into residential and commercial buildings infrastructure (all types of new buildings that are relatively medium-range in their energy efficiency) -Investment|Infrastructure|Transport,billion US$2010/yr OR local currency,"investment into transport infrastructure - both newly constructed and maintenance of existing (all types: roads, bridges, ports, railways, refueling stations and charging infrastructure, etc.). Please specify in the comments section the type of infastructure that is being referred to here." -Investment|Infrastructure|Water|Cooling,billion US$2010/yr OR local currency,investment into water-related infrastructure (thermal cooling at energy and industrial facilities) -Investment|Infrastructure|Water|Irrigation,billion US$2010/yr OR local currency,"investment into water-related infrastructure (conveyance of water via canals, aqueducts, irrigation ditches, pumps, etc.)" -Investment|Infrastructure|Water|Other,billion US$2010/yr OR local currency,investment into water-related infrastructure (other than for thermal cooling and irrigation) -Investment|Medical System,billion US$2010/yr OR local currency,investment to medical system -Investment|RnD|Energy Supply,billion US$2010/yr or local currency/yr,"Investments into research and development, energy supply sector" -Land Cover,million ha,total land cover -Land Cover|Built-up Area,million ha,total built-up land associated with human settlement -Land Cover|Cropland,million ha,"total arable land, i.e. land in bioenergy crop, food, and feed/fodder crops, permant crops as well as other arable land (physical area)" -Land Cover|Cropland|Cereals,million ha,"land dedicated to cereal crops: wheat, rice and coarse grains (maize, corn, millet, sorghum, barley, oats, rye)" -Land Cover|Cropland|Double-cropped,million ha,area of land that is double-cropped (twice in a year) -Land Cover|Cropland|Energy Crops,million ha,"land dedicated to energy crops (e.g., switchgrass, miscanthus, fast-growing wood species)" -Land Cover|Cropland|Energy Crops|Irrigated,million ha,"irrigated land dedicated to energy crops (e.g., switchgrass, miscanthus, fast-growing wood species)" -Land Cover|Cropland|Irrigated,million ha,"irrigated arable land, i.e. land in non-forest bioenergy crop, food, and feed/fodder crops, as well as other arable land (cultivated area)" -Land Cover|Cropland|Rainfed,million ha,area of land that is rain-fed -Land Cover|Forest,million ha,managed and unmanaged forest area -Land Cover|Forest|Afforestation and Reforestation,million ha,Area for afforestation and reforestation -Land Cover|Forest|Forestry|Harvested Area,million ha,Forest area harvested -Land Cover|Forest|Managed,million ha,"managed forests producing commercial wood supply for timber or energy (note: woody energy crops reported under ""energy crops"")" -Land Cover|Forest|Natural Forest,million ha,Undisturbed natural forests and modified natural forests -Land Cover|Other Arable Land,million ha,"other arable land that is unmanaged (e.g., grassland, savannah, shrubland), excluding unmanaged forests that are arable" -Land Cover|Other Land,million ha,other land cover that does not fit into any other category (please provide a definition of the sources in this category in the 'comments' tab) -Land Cover|Pasture,million ha,"pasture land. All categories of pasture land - not only high quality rangeland. Based on FAO definition of ""permanent meadows and pastures""" -Land Cover|Water Ecosystems|Forests,"%, ha",Land-use coverage of water-related ecosystem: forests -Land Cover|Water Ecosystems|Glaciers,"%, ha",Land-use coverage of water-related ecosystem: glaciers -Land Cover|Water Ecosystems|Lakes,"%, ha",Land-use coverage of water-related ecosystem: lakes -Land Cover|Water Ecosystems|Mountains,"%, ha",Land-use coverage of water-related ecosystem: mountains -Land Cover|Water Ecosystems|Wetlands,"%, ha",Land-use coverage of water-related ecosystem: wetlands -Lifetime|Electricity|Biomass|w/ CCS|1,years,"Lifetime of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Lifetimes for each represented CCS biomass power technology by adding variables Lifetime|Electricity|Biomass|w/ CCS|2, ... Lifetime|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Biomass|w/o CCS|1,years,"Lifetime of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Lifetimes for each represented biomass power technology by adding variables Lifetime|Electricity|Biomass|w/o CCS|2, ... Lifetime|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Biomass|w/o CCS|2,years,"Lifetime of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Lifetimes for each represented biomass power technology by adding variables Lifetime|Electricity|Biomass|w/o CCS|2, ... Lifetime|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Coal|w/ CCS|1,years,"Lifetime of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Lifetimes for each represented CCS coal power technology by adding variables Lifetime|Electricity|Coal|w/ CCS|2, ... Lifetime|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Coal|w/ CCS|2,years,"Lifetime of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Lifetimes for each represented CCS coal power technology by adding variables Lifetime|Electricity|Coal|w/ CCS|2, ... Lifetime|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Coal|w/o CCS|1,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Coal|w/o CCS|2,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Coal|w/o CCS|3,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Coal|w/o CCS|4,years,"Lifetime of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Lifetimes for each represented coal power technology by adding variables Lifetime|Electricity|Coal|w/o CCS|2, ... Lifetime|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Gas|w/ CCS|1,years,"Lifetime of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Lifetimes for each represented CCS gas power technology by adding variables Lifetime|Electricity|Gas|w/ CCS|2, ... Lifetime|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Gas|w/o CCS|1,years,"Lifetime of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Lifetimes for each represented gas power technology by adding variables Lifetime|Electricity|Gas|w/o CCS|2, ... Lifetime|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Gas|w/o CCS|2,years,"Lifetime of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Lifetimes for each represented gas power technology by adding variables Lifetime|Electricity|Gas|w/o CCS|2, ... Lifetime|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Gas|w/o CCS|3,years,"Lifetime of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Lifetimes for each represented gas power technology by adding variables Lifetime|Electricity|Gas|w/o CCS|2, ... Lifetime|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Geothermal,years,"Lifetime of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Lifetimes for each represented geothermal power technology by adding variables Lifetime|Electricity|Geothermal|2, ... Lifetime|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Hydro,years,"Lifetime of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Lifetimes for each represented hydropower technology by adding variables Lifetime|Electricity|Hydro|2, ... Lifetime|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Hydro|1,years,"Lifetime of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Lifetimes for each represented hydropower technology by adding variables Lifetime|Electricity|Hydro|2, ... Lifetime|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Hydro|2,years,"Lifetime of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Lifetimes for each represented hydropower technology by adding variables Lifetime|Electricity|Hydro|2, ... Lifetime|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Nuclear,years,"Lifetime of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Lifetimes for each represented nuclear power technology by adding variables Lifetime|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Nuclear|1,years,"Lifetime of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Lifetimes for each represented nuclear power technology by adding variables Lifetime|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Nuclear|2,years,"Lifetime of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Lifetimes for each represented nuclear power technology by adding variables Lifetime|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Ocean,years,Lifetime of operating ocean power plants -Lifetime|Electricity|Oil|w/ CCS,years,"Lifetime of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Lifetimes are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Lifetimes as documented in the comments sheet). " -Lifetime|Electricity|Oil|w/o CCS,years,Lifetime of a newoil plants -Lifetime|Electricity|Oil|w/o CCS|1,years,Lifetime of a newoil plants -Lifetime|Electricity|Oil|w/o CCS|2,years,Lifetime of a newoil plants -Lifetime|Electricity|Oil|w/o CCS|3,years,Lifetime of a newoil plants -Lifetime|Electricity|Solar|CSP|1,years,"Lifetime of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Lifetimes for each represented CSP technology by adding variables Lifetime|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Solar|CSP|2,years, -Lifetime|Electricity|Solar|PV,years,"Lifetime of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Lifetimes for each represented PV technology by adding variables Lifetime|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Wind|Offshore,years,"Lifetime of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Lifetimes for each represented wind power technology by adding variables Lifetime|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Electricity|Wind|Onshore,years,"Lifetime of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Lifetimes for each represented wind power technology by adding variables Lifetime|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Gases|Biomass|w/ CCS,years,"Lifetime of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Lifetimes for each represented CCS biomass to gas technology by adding variables Lifetime|Gases|Biomass|w/ CCS|2, ... Lifetime|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Gases|Biomass|w/o CCS,years,"Lifetime of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Lifetimes for each represented biomass to gas technology by adding variables Lifetime|Gases|Biomass|w/o CCS|2, ... Lifetime|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Gases|Coal|w/ CCS,years,"Lifetime of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Lifetimes for each represented CCS coal to gas technology by adding variables Lifetime|Gases|Coal|w/ CCS|2, ... Lifetime|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Gases|Coal|w/o CCS,years,"Lifetime of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Lifetimes for each represented coal to gas technology by adding variables Lifetime|Gases|Coal|w/o CCS|2, ... Lifetime|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Hydrogen|Biomass|w/ CCS,years,"Lifetime of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Lifetimes for each represented CCS biomass to hydrogen technology by adding variables Lifetime|Hydrogen|Biomass|w/ CCS|2, ... Lifetime|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Hydrogen|Biomass|w/o CCS,years,"Lifetime of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Lifetimes for each represented biomass to hydrogen technology by adding variables Lifetime|Hydrogen|Biomass|w/o CCS|2, ... Lifetime|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Hydrogen|Coal|w/ CCS,years,"Lifetime of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Lifetimes for each represented CCS coal to hydrogen technology by adding variables Lifetime|Hydrogen|Coal|w/ CCS|2, ... Lifetime|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Hydrogen|Coal|w/o CCS,years,"Lifetime of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Lifetimes for each represented coal to hydrogen technology by adding variables Lifetime|Hydrogen|Coal|w/o CCS|2, ... Lifetime|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Hydrogen|Electricity,years,"Lifetime of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Lifetimes for each represented hydrogen-by-electrolysis technology by adding variables Lifetime|Hydrogen|Electricity|2, ... Lifetime|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Hydrogen|Gas|w/ CCS,years,"Lifetime of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Lifetimes for each represented CCS gas to hydrogen technology by adding variables Lifetime|Hydrogen|Gas|w/ CCS|2, ... Lifetime|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Hydrogen|Gas|w/o CCS,years,"Lifetime of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Lifetimes for each represented gas to hydrogen technology by adding variables Lifetime|Hydrogen|Gas|w/o CCS|2, ... Lifetime|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Biomass|w/ CCS,years,"Lifetime of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Lifetimes for each represented CCS BTL technology by adding variables Lifetime|Liquids|Biomass|w/ CCS|2, ... Lifetime|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Biomass|w/ CCS|1,years,"Lifetime of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Lifetimes for each represented CCS BTL technology by adding variables Lifetime|Liquids|Biomass|w/ CCS|2, ... Lifetime|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Biomass|w/ CCS|2,years,"Lifetime of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Lifetimes for each represented CCS BTL technology by adding variables Lifetime|Liquids|Biomass|w/ CCS|2, ... Lifetime|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Biomass|w/o CCS,years,"Lifetime of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Lifetimes for each represented BTL technology by adding variables Lifetime|Liquids|Biomass|w/o CCS|2, ... Lifetime|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Biomass|w/o CCS|1,years,"Lifetime of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Lifetimes for each represented BTL technology by adding variables Lifetime|Liquids|Biomass|w/o CCS|2, ... Lifetime|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Biomass|w/o CCS|2,years,"Lifetime of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Lifetimes for each represented BTL technology by adding variables Lifetime|Liquids|Biomass|w/o CCS|2, ... Lifetime|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Coal|w/ CCS,years,"Lifetime of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Lifetimes for each represented CCS CTL technology by adding variables Lifetime|Liquids|Coal|w/ CCS|2, ... Lifetime|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Coal|w/ CCS|1,years,"Lifetime of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Lifetimes for each represented CCS CTL technology by adding variables Lifetime|Liquids|Coal|w/ CCS|2, ... Lifetime|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Coal|w/ CCS|2,years,"Lifetime of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Lifetimes for each represented CCS CTL technology by adding variables Lifetime|Liquids|Coal|w/ CCS|2, ... Lifetime|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Coal|w/o CCS,years,"Lifetime of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Lifetimes for each represented CTL technology by adding variables Lifetime|Liquids|Coal|w/o CCS|2, ... Lifetime|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Coal|w/o CCS|1,years,"Lifetime of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Lifetimes for each represented CTL technology by adding variables Lifetime|Liquids|Coal|w/o CCS|2, ... Lifetime|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Coal|w/o CCS|2,years,"Lifetime of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Lifetimes for each represented CTL technology by adding variables Lifetime|Liquids|Coal|w/o CCS|2, ... Lifetime|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Gas|w/ CCS,years,"Lifetime of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Lifetimes for each represented CCS GTL technology by adding variables Lifetime|Liquids|Gas|w/ CCS|2, ... Lifetime|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Gas|w/o CCS,years,"Lifetime of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Lifetimes for each represented GTL technology by adding variables Lifetime|Liquids|Gas|w/o CCS|2, ... Lifetime|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Oil|w/ CCS,years,"Lifetime of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Oil|w/ CCS|1,years,"Lifetime of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Oil|w/o CCS,years,"Lifetime of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Oil|w/o CCS|1,years,"Lifetime of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Lifetime|Liquids|Oil|w/o CCS|2,years,"Lifetime of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Lifetimes for each represented refinery technology by adding variables Lifetime|Liquids|Oil|2, ... Lifetime|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Material Consumption|Domestic,Mt/year,Domestic material consumption -OM Cost|Fixed|Electricity|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS biomass power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Annual fixed operation & maintainance costs for each represented CCS coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Annual fixed operation & maintainance costs for each represented CCS coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Coal|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Coal|w/o CCS|4,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Annual fixed operation & maintainance costs for each represented coal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Gas|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/ CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Gas|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Gas|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Gas|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Geothermal,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented geothermal power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Geothermal|2, ... Annual fixed operation & maintainance cost|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Hydro,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydropower technology by adding variables Annual fixed operation & maintainance cost|Electricity|Hydro|2, ... Annual fixed operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Hydro|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydropower technology by adding variables Annual fixed operation & maintainance cost|Electricity|Hydro|2, ... Annual fixed operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Hydro|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydropower technology by adding variables Annual fixed operation & maintainance cost|Electricity|Hydro|2, ... Annual fixed operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Nuclear,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Annual fixed operation & maintainance costs for each represented nuclear power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Nuclear|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Annual fixed operation & maintainance costs for each represented nuclear power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Nuclear|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Annual fixed operation & maintainance costs for each represented nuclear power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Ocean,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of operating ocean power plants -OM Cost|Fixed|Electricity|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Annual fixed operation & maintainance costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Annual fixed operation & maintainance costs as documented in the comments sheet). " -OM Cost|Fixed|Electricity|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants -OM Cost|Fixed|Electricity|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants -OM Cost|Fixed|Electricity|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants -OM Cost|Fixed|Electricity|Oil|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,Annual fixed operation & maintainance cost of a newoil plants -OM Cost|Fixed|Electricity|Solar|CSP|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Annual fixed operation & maintainance costs for each represented CSP technology by adding variables Annual fixed operation & maintainance cost|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Solar|CSP|2,US$2010/kW/yr OR local currency/kW/yr, -OM Cost|Fixed|Electricity|Solar|PV,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Annual fixed operation & maintainance costs for each represented PV technology by adding variables Annual fixed operation & maintainance cost|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Storage,US$2010/kW/yr OR local currency/kW/yr, -OM Cost|Fixed|Electricity|Wind|Offshore,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Annual fixed operation & maintainance costs for each represented wind power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Electricity|Wind|Onshore,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Annual fixed operation & maintainance costs for each represented wind power technology by adding variables Annual fixed operation & maintainance cost|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Gases|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS biomass to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Gases|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Gases|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS coal to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Gases|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented coal to gas technology by adding variables Annual fixed operation & maintainance cost|Gases|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Hydrogen|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS biomass to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Hydrogen|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented biomass to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Hydrogen|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS coal to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Hydrogen|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented coal to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Hydrogen|Electricity,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented hydrogen-by-electrolysis technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Electricity|2, ... Annual fixed operation & maintainance cost|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Hydrogen|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS gas to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Gas|w/ CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Hydrogen|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented gas to hydrogen technology by adding variables Annual fixed operation & maintainance cost|Hydrogen|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Biomass|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented BTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented CCS GTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Gas|w/ CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented GTL technology by adding variables Annual fixed operation & maintainance cost|Liquids|Gas|w/o CCS|2, ... Annual fixed operation & maintainance cost|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Oil|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Fixed|Liquids|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Annual fixed operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Annual fixed operation & maintainance costs for each represented refinery technology by adding variables Annual fixed operation & maintainance cost|Liquids|Oil|2, ... Annual fixed operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass power plant with CCS. If more than one CCS biomass power technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS biomass power technology by adding variables Variable operation & maintainance cost|Electricity|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass power technology by adding variables Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass power plant w/o CCS. If more than one biomass power technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass power technology by adding variables Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Variable operation & maintainance costs for each represented CCS coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant with CCS. If more than one CCS coal power technology is modelled (e.g. subcritical PC with post-combustion capture, supercritical PC with post-combustion capture, supercritical PC with oxyfuel combustion and capture, IGCC with pre-combustion capture), modellers should report Variable operation & maintainance costs for each represented CCS coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Coal|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Coal|w/o CCS|4,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal power plant w/o CCS. If more than one coal power technology is modelled (e.g. subcritical PC, supercritical PC, IGCC), modellers should report Variable operation & maintainance costs for each represented coal power technology by adding variables Variable operation & maintainance cost|Electricity|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Gas|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant with CCS. If more than one CCS gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/ CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Gas|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Gas|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Gas|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas power plant w/o CCS. If more than one gas power technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas power technology by adding variables Variable operation & maintainance cost|Electricity|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Electricity|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Geothermal,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new geothermal power plant. If more than one geothermal power technology is modelled, modellers should report Variable operation & maintainance costs for each represented geothermal power technology by adding variables Variable operation & maintainance cost|Electricity|Geothermal|2, ... Variable operation & maintainance cost|Electricity|Geothermal|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Hydro,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydropower technology by adding variables Variable operation & maintainance cost|Electricity|Hydro|2, ... Variable operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Hydro|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydropower technology by adding variables Variable operation & maintainance cost|Electricity|Hydro|2, ... Variable operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Hydro|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydropower plant. If more than one hydropower technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydropower technology by adding variables Variable operation & maintainance cost|Electricity|Hydro|2, ... Variable operation & maintainance cost|Electricity|Hydro|N (with N = number of represented technologies). It is modeller's choice which hydropower technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Nuclear,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Variable operation & maintainance costs for each represented nuclear power technology by adding variables Variable operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Nuclear|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Variable operation & maintainance costs for each represented nuclear power technology by adding variables Variable operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Nuclear|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new nuclear power plants. If more than one nuclear power plant technology is modelled (e.g., Gen II, III, IV; LWR, thermal reactors with other moderator materials, fast breeders), modellers should report Variable operation & maintainance costs for each represented nuclear power technology by adding variables Variable operation & maintainance cost|Electricity|Nuclear|2, ... Capital|Cost|Electricity|Nuclear|N (with N = number of represented nuclear power technologies). It is modeller's choice which nuclear power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Ocean,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of operating ocean power plants -OM Cost|Variable|Electricity|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil power plants with CCS, including plants held in an operating reserve. The installed (available) capacity of CCS oil power plants by plant type for which Variable operation & maintainance costs are reported should be reported by adding variables Capacity|Electricity|oil|w/ CCS|1, ..., Capacity|Electricity|oil|w/ CCS|N (matching the assignment of plant types to technologies in the reporting of Variable operation & maintainance costs as documented in the comments sheet). " -OM Cost|Variable|Electricity|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants -OM Cost|Variable|Electricity|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants -OM Cost|Variable|Electricity|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants -OM Cost|Variable|Electricity|Oil|w/o CCS|3,US$2010/kW/yr OR local currency/kW/yr,Variable operation & maintainance cost of a newoil plants -OM Cost|Variable|Electricity|Solar|CSP|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new concentrated solar power plant. If more than one CSP technology is modelled (e.g., parabolic trough, solar power tower), modellers should report Variable operation & maintainance costs for each represented CSP technology by adding variables Variable operation & maintainance cost|Electricity|Solar|CSP|2, ... Capital|Cost|Electricity|Solar|CSP|N (with N = number of represented CSP technologies). It is modeller's choice which CSP technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Solar|CSP|2,US$2010/kW/yr OR local currency/kW/yr, -OM Cost|Variable|Electricity|Solar|PV,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new solar PV units. If more than one PV technology is modelled (e.g., centralized PV plant, distributed (rooftop) PV, crystalline SI PV, thin-film PV), modellers should report Variable operation & maintainance costs for each represented PV technology by adding variables Variable operation & maintainance cost|Electricity|Solar|PV|2, ... Capital|Cost|Electricity|Solar|PV|N (with N = number of represented PV technologies). It is modeller's choice which PV technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Storage,US$2010/kW/yr OR local currency/kW/yr, -OM Cost|Variable|Electricity|Wind|Offshore,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new offshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one offshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Variable operation & maintainance costs for each represented wind power technology by adding variables Variable operation & maintainance cost|Electricity|Wind|Offshore|2, ... Capital|Cost|Electricity|Wind|Offshore|N (with N = number of represented offshore wind power technologies). It is modeller's choice which offshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Electricity|Wind|Onshore,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new onshore wind power plants. This variable should only be filled, if wind power is separated into onshore and offshore. If more than one onshore wind power technology is modelled (e.g., wind power units with different hub height and capacity), modellers should report Variable operation & maintainance costs for each represented wind power technology by adding variables Variable operation & maintainance cost|Electricity|Wind|Onshore|2, ... Capital|Cost|Electricity|Wind|Onshore|N (with N = number of represented onshore wind power technologies). It is modeller's choice which onshore wind power technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Gases|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to gas plant with CCS. If more than one CCS biomass to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS biomass to gas technology by adding variables Variable operation & maintainance cost|Gases|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Gases|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Gases|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to gas plant w/o CCS. If more than one biomass to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass to gas technology by adding variables Variable operation & maintainance cost|Gases|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Gases|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Gases|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to gas plant with CCS. If more than one CCS coal to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS coal to gas technology by adding variables Variable operation & maintainance cost|Gases|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Gases|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Gases|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to gas plant w/o CCS. If more than one coal to gas technology is modelled, modellers should report Variable operation & maintainance costs for each represented coal to gas technology by adding variables Variable operation & maintainance cost|Gases|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Gases|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to gas technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Hydrogen|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to hydrogen plant with CCS. If more than one CCS biomass to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS biomass to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Hydrogen|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Hydrogen|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to hydrogen plant w/o CCS. If more than one biomass to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented biomass to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Hydrogen|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which biomass to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Hydrogen|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to hydrogen plant with CCS. If more than one CCS coal to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS coal to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Hydrogen|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Hydrogen|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to hydrogen plant w/o CCS. If more than one coal to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented coal to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Hydrogen|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which coal to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Hydrogen|Electricity,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new hydrogen-by-electrolysis plant. If more than hydrogen-by-electrolysis technology is modelled, modellers should report Variable operation & maintainance costs for each represented hydrogen-by-electrolysis technology by adding variables Variable operation & maintainance cost|Hydrogen|Electricity|2, ... Variable operation & maintainance cost|Hydrogen|Electricity|N (with N = number of represented technologies). It is modeller's choice which hydrogen-by-electrolysis technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Hydrogen|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to hydrogen plant with CCS. If more than one CCS gas to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS gas to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Gas|w/ CCS|2, ... Variable operation & maintainance cost|Hydrogen|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Hydrogen|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to hydrogen plant w/o CCS. If more than one gas to hydrogen technology is modelled, modellers should report Variable operation & maintainance costs for each represented gas to hydrogen technology by adding variables Variable operation & maintainance cost|Hydrogen|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Hydrogen|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which gas to hydrogen technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Biomass|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Biomass|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Biomass|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant with CCS. If more than one CCS BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Biomass|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Biomass|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Biomass|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new biomass to liquids plant w/o CCS. If more than one BTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented BTL technology by adding variables Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Biomass|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which BTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Coal|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Coal|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Coal|w/ CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant with CCS. If more than one CCS CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Coal|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Coal|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Coal|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new coal to liquids plant w/o CCS. If more than one CTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CTL technology by adding variables Variable operation & maintainance cost|Liquids|Coal|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Coal|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which CTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Gas|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to liquids plant with CCS. If more than one CCS GTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented CCS GTL technology by adding variables Variable operation & maintainance cost|Liquids|Gas|w/ CCS|2, ... Variable operation & maintainance cost|Liquids|Gas|w/ CCS|N (with N = number of represented technologies). It is modeller's choice which CCS GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Gas|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new gas to liquids plant w/o CCS. If more than one GTL technology is modelled, modellers should report Variable operation & maintainance costs for each represented GTL technology by adding variables Variable operation & maintainance cost|Liquids|Gas|w/o CCS|2, ... Variable operation & maintainance cost|Liquids|Gas|w/o CCS|N (with N = number of represented technologies). It is modeller's choice which GTL technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Oil|w/ CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Oil|w/ CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant w/o CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Oil|w/o CCS,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Oil|w/o CCS|1,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -OM Cost|Variable|Liquids|Oil|w/o CCS|2,US$2010/kW/yr OR local currency/kW/yr,"Variable operation & maintainance cost of a new oil refining plant with CCS. If more than one refinery technology is modelled, modellers should report Variable operation & maintainance costs for each represented refinery technology by adding variables Variable operation & maintainance cost|Liquids|Oil|2, ... Variable operation & maintainance cost|Liquids|Oil|N (with N = number of represented technologies). It is modeller's choice which refinery technologies to assign to type 1 (assigned to the variable without number suffix),2,...,N. The assignment should be documented in the comments sheet. " -Policy Cost|Additional Total Energy System Cost,billion US$2010/yr OR local currency/yr,additional energy system cost associated with the policy -Policy Cost|Area under MAC Curve,billion US$2010/yr OR local currency/yr,"total costs of the policy, i.e. the area under the Marginal Abatement Cost (MAC) curve" -Policy Cost|Consumption Loss,billion US$2010/yr OR local currency/yr,consumption loss in a policy scenario compared to the corresponding baseline (losses should be reported as positive numbers) -Policy Cost|Default for CAV,billion US$2010/yr OR local currency/yr,"total costs of the policy in the default metric (consumption losses for GE models, area under MAC curve for PE models if available) to be used for calculation of Cost over Abatement Value (CAV) indicator. Must be identical to the policy costs in one of the reported metrics. " -Policy Cost|Equivalent Variation,billion US$2010/yr OR local currency/yr,equivalent variation associated with the given policy -Policy Cost|GDP Loss,billion US$2010/yr OR local currency/yr,GDP loss in a policy scenario compared to the corresponding baseline (losses should be reported as positive numbers) -Policy Cost|Other,billion US$2010/yr OR local currency/yr,"any other indicator of policy cost (e.g., compensated variation). (please indicate what type of policy cost is measured on the 'comments' tab)" -Policy Cost|Welfare Change,billion US$2010/yr OR local currency,Policy cost for welfare change -Population,million,Total population -Population|Drinking Water Access,Million,Population with access to improved drinking water sources (by income level) -Population|Mobile Network Access,Million,population covered by a mobile network -Population|Risk of Hunger,Million,"Population at risk of hunger, calculated by multipling total population and prevalence of undernourishment which is computed from a probability distribution of daily dietary energy consumption and minimum dietary energy requirement." -Population|Road Access,Million,population living within 2 km of an all-season road -Population|Rural,million,Total population living in rural areas -Population|Sanitation Acces,Million,Population with access to improved sanitation (by income level) -Population|Urban,million,Total population living in urban areas -Population|Working Age,million,Total working age population (age 15-65 years) -Price|Agriculture|Corn|Index,Index (2005 = 1),price index of corn -Price|Agriculture|Non-Energy Crops and Livestock|Index,Index (2005 = 1),weighted average price index of non-energy crops and livestock products -Price|Agriculture|Non-Energy Crops|Index,Index (2005 = 1),weighted average price index of non-energy crops -Price|Agriculture|Soybean|Index,Index (2005 = 1),price index of soybean -Price|Agriculture|Wheat|Index,Index (2005 = 1),price index of wheat -Price|Carbon,US$2010/t CO2 or local currency/t CO2,price of carbon (for regional aggregrates the weighted price of carbon by subregion should be used) -Price|Final Energy|Residential|Electricity,US$2010/GJ or local currency/GJ,electricity price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy|Residential|Gases|Natural Gas,US$2010/GJ or local currency/GJ,natural gas price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy|Residential|Liquids|Biomass,US$2010/GJ or local currency/GJ,biofuel price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy|Residential|Liquids|Oil,US$2010/GJ or local currency/GJ,light fuel oil price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy|Residential|Solids|Biomass,US$2010/GJ or local currency/GJ,biomass price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy|Residential|Solids|Coal,US$2010/GJ or local currency/GJ,coal price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Primary Energy|Biomass,US$2010/GJ or local currency/GJ,biomass producer price -Price|Primary Energy|Coal,US$2010/GJ or local currency/GJ,coal price at the primary level (i.e. the spot price at the global or regional market) -Price|Primary Energy|Gas,US$2010/GJ or local currency/GJ,natural gas price at the primary level (i.e. the spot price at the global or regional market) -Price|Primary Energy|Oil,US$2010/GJ or local currency/GJ,crude oil price at the primary level (i.e. the spot price at the global or regional market) -Price|Secondary Energy|Electricity,US$2010/GJ or local currency/GJ,"electricity price at the secondary level, i.e. for large scale consumers (e.g. aluminum production). Prices should include the effect of carbon prices." -Price|Secondary Energy|Gases|Natural Gas,US$2010/GJ or local currency/GJ,"natural gas price at the secondary level, i.e. for large scale consumers (e.g. gas power plant). Prices should include the effect of carbon prices." -Price|Secondary Energy|Hydrogen,US$2010/GJ or local currency/GJ,hydrogen price at the secondary level. Prices should include the effect of carbon prices -Price|Secondary Energy|Liquids,US$2010/GJ or local currency/GJ,"liquid fuel price at the secondary level, i.e. petrol, diesel, or weighted average" -Price|Secondary Energy|Liquids|Biomass,US$2010/GJ or local currency/GJ,"biofuel price at the secondary level, i.e. for biofuel consumers" -Price|Secondary Energy|Liquids|Oil,US$2010/GJ or local currency/GJ,"light fuel oil price at the secondary level, i.e. for large scale consumers (e.g. oil power plant). Prices should include the effect of carbon prices." -Price|Secondary Energy|Solids|Biomass,US$2010/GJ or local currency/GJ,"biomass price at the secondary level, i.e. for large scale consumers (e.g. biomass power plant). Prices should include the effect of carbon prices." -Price|Secondary Energy|Solids|Coal,US$2010/GJ or local currency/GJ,"coal price at the secondary level, i.e. for large scale consumers (e.g. coal power plant). Prices should include the effect of carbon prices." -Price|Final Energy wo carbon price|Residential|Electricity,US$2010/GJ or local currency/GJ,electricity price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy wo carbon price|Residential|Gases|Natural Gas,US$2010/GJ or local currency/GJ,natural gas price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy wo carbon price|Residential|Liquids|Biomass,US$2010/GJ or local currency/GJ,biofuel price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy wo carbon price|Residential|Liquids|Oil,US$2010/GJ or local currency/GJ,light fuel oil price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy wo carbon price|Residential|Solids|Biomass,US$2010/GJ or local currency/GJ,biomass price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Final Energy wo carbon price|Residential|Solids|Coal,US$2010/GJ or local currency/GJ,coal price at the final level in the residential sector. Prices should include the effect of carbon prices. -Price|Primary Energy w carbon price|Biomass,US$2010/GJ or local currency/GJ,biomass producer price -Price|Primary Energy w carbon price|Coal,US$2010/GJ or local currency/GJ,coal price at the primary level (i.e. the spot price at the global or regional market) -Price|Primary Energy w carbon price|Gas,US$2010/GJ or local currency/GJ,natural gas price at the primary level (i.e. the spot price at the global or regional market) -Price|Primary Energy w carbon price|Oil,US$2010/GJ or local currency/GJ,crude oil price at the primary level (i.e. the spot price at the global or regional market) -Price|Secondary Energy w carbon price|Electricity,US$2010/GJ or local currency/GJ,"electricity price at the secondary level, i.e. for large scale consumers (e.g. aluminum production). Prices should include the effect of carbon prices." -Price|Secondary Energy w carbon price|Gases|Natural Gas,US$2010/GJ or local currency/GJ,"natural gas price at the secondary level, i.e. for large scale consumers (e.g. gas power plant). Prices should include the effect of carbon prices." -Price|Secondary Energy w carbon price|Hydrogen,US$2010/GJ or local currency/GJ,hydrogen price at the secondary level. Prices should include the effect of carbon prices -Price|Secondary Energy w carbon price|Liquids,US$2010/GJ or local currency/GJ,"liquid fuel price at the secondary level, i.e. petrol, diesel, or weighted average" -Price|Secondary Energy w carbon price|Liquids|Biomass,US$2010/GJ or local currency/GJ,"biofuel price at the secondary level, i.e. for biofuel consumers" -Price|Secondary Energy w carbon price|Liquids|Oil,US$2010/GJ or local currency/GJ,"light fuel oil price at the secondary level, i.e. for large scale consumers (e.g. oil power plant). Prices should include the effect of carbon prices." -Price|Secondary Energy w carbon price|Solids|Biomass,US$2010/GJ or local currency/GJ,"biomass price at the secondary level, i.e. for large scale consumers (e.g. biomass power plant). Prices should include the effect of carbon prices." -Price|Secondary Energy w carbon price|Solids|Coal,US$2010/GJ or local currency/GJ,"coal price at the secondary level, i.e. for large scale consumers (e.g. coal power plant). Prices should include the effect of carbon prices." -Primary Energy,EJ/yr,total primary energy consumption (direct equivalent) -Primary Energy|Biomass,EJ/yr,"primary energy consumption of purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass" -Primary Energy|Biomass|1st Generation,EJ/yr,"biomass primary energy from 1st generation biofuel crops (e.g., sugar cane, rapeseed oil, maize, sugar beet)" -Primary Energy|Biomass|Electricity,EJ/yr,"primary energy input to electricity generation of purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass" -Primary Energy|Biomass|Electricity|w/ CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy input to electricity generation used in combination with CCS" -Primary Energy|Biomass|Electricity|w/o CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy input to electricity generation without CCS" -Primary Energy|Biomass|Energy Crops,EJ/yr,biomass primary energy from purpose-grown bioenergy crops -Primary Energy|Biomass|Gases,EJ/yr, -Primary Energy|Biomass|Hydrogen,EJ/yr, -Primary Energy|Biomass|Liquids,EJ/yr, -Primary Energy|Biomass|Modern,EJ/yr,"modern biomass primary energy consumption, including purpose-grown bioenergy crops, crop and forestry residue bioenergy and municipal solid waste bioenergy" -Primary Energy|Biomass|Residues,EJ/yr,biomass primary energy from residues -Primary Energy|Biomass|Solids,EJ/yr, -Primary Energy|Biomass|Traditional,EJ/yr,traditional biomass primary energy consumption -Primary Energy|Biomass|w/ CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption used in combination with CCS" -Primary Energy|Biomass|w/o CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption without CCS" -Primary Energy|Coal,EJ/yr,coal primary energy consumption -Primary Energy|Coal|Electricity,EJ/yr,coal primary energy input to electricity generation -Primary Energy|Coal|Electricity|w/ CCS,EJ/yr,coal primary energy input to electricity generation used in combination with CCS -Primary Energy|Coal|Electricity|w/o CCS,EJ/yr,coal primary energy input to electricity generation without CCS -Primary Energy|Coal|Gases,EJ/yr, -Primary Energy|Coal|Hydrogen,EJ/yr, -Primary Energy|Coal|Liquids,EJ/yr, -Primary Energy|Coal|Solids,EJ/yr, -Primary Energy|Coal|w/ CCS,EJ/yr,coal primary energy consumption used in combination with CCS -Primary Energy|Coal|w/o CCS,EJ/yr,coal primary energy consumption without CCS -Primary Energy|Fossil,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption" -Primary Energy|Fossil|w/ CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption used in combination with CCS" -Primary Energy|Fossil|w/o CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption without CCS" -Primary Energy|Gas,EJ/yr,gas primary energy consumption -Primary Energy|Gas|Electricity,EJ/yr,gas primary energy input to electricity generation -Primary Energy|Gas|Electricity|w/ CCS,EJ/yr,gas primary energy input to electricity generation used in combination with CCS -Primary Energy|Gas|Electricity|w/o CCS,EJ/yr,gas primary energy input to electricity generation without CCS -Primary Energy|Gas|Gases,EJ/yr, -Primary Energy|Gas|Hydrogen,EJ/yr, -Primary Energy|Gas|Liquids,EJ/yr, -Primary Energy|Gas|Solids,EJ/yr, -Primary Energy|Gas|w/ CCS,EJ/yr,gas primary energy consumption used in combination with CCS -Primary Energy|Gas|w/o CCS,EJ/yr,gas primary energy consumption without CCS -Primary Energy|Geothermal,EJ/yr,total geothermal primary energy consumption -Primary Energy|Hydro,EJ/yr,total hydro primary energy consumption -Primary Energy|Non-Biomass Renewables,EJ/yr,"non-biomass renewable primary energy consumption (direct equivalent, includes hydro electricity, wind electricity, geothermal electricity and heat, solar electricity and heat and hydrogen, ocean energy)" -Primary Energy|Nuclear,EJ/yr,"nuclear primary energy consumption (direct equivalent, includes electricity, heat and hydrogen production from nuclear energy)" -Primary Energy|Ocean,EJ/yr,total ocean primary energy consumption -Primary Energy|Oil,EJ/yr,conventional & unconventional oil primary energy consumption -Primary Energy|Oil|Electricity,EJ/yr,conventional & unconventional oil primary energy input to electricity generation -Primary Energy|Oil|Electricity|w/ CCS,EJ/yr,conventional & unconventional oil primary energy input to electricity generation used in combination with CCS -Primary Energy|Oil|Electricity|w/o CCS,EJ/yr,conventional & unconventional oil primary energy input to electricity generation without CCS -Primary Energy|Oil|Gases,EJ/yr, -Primary Energy|Oil|Hydrogen,EJ/yr, -Primary Energy|Oil|Liquids,EJ/yr, -Primary Energy|Oil|Solids,EJ/yr, -Primary Energy|Oil|w/ CCS,EJ/yr,conventional & unconventional oil primary energy consumption used in combination with CCS -Primary Energy|Oil|w/o CCS,EJ/yr,conventional & unconventional oil primary energy consumption without CCS -Primary Energy|Other,EJ/yr,"primary energy consumption from sources that do not fit to any other category (direct equivalent, please provide a definition of the sources in this category in the 'comments' tab)" -Primary Energy|Secondary Energy Trade,EJ/yr,"trade in secondary energy carriers that cannot be unambiguoulsy mapped to one of the existing primary energy categories (e.g. electricity, hydrogen, fossil synfuels, negative means net exports)" -Primary Energy|Solar,EJ/yr,total solar primary energy consumption -Primary Energy|Wind,EJ/yr,total wind primary energy consumption -Primary Energy (substitution method),EJ/yr,total primary energy consumption (direct equivalent) -Primary Energy (substitution method)|Biomass,EJ/yr,"primary energy consumption of purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass" -Primary Energy (substitution method)|Biomass|w/ CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption used in combination with CCS" -Primary Energy (substitution method)|Biomass|w/o CCS,EJ/yr,"purpose-grown bioenergy crops, crop and forestry residue bioenergy, municipal solid waste bioenergy, traditional biomass primary energy consumption without CCS" -Primary Energy (substitution method)|Coal,EJ/yr,coal primary energy consumption -Primary Energy (substitution method)|Coal|w/ CCS,EJ/yr,coal primary energy consumption used in combination with CCS -Primary Energy (substitution method)|Coal|w/o CCS,EJ/yr,coal primary energy consumption without CCS -Primary Energy (substitution method)|Fossil,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption" -Primary Energy (substitution method)|Fossil|w/ CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption used in combination with CCS" -Primary Energy (substitution method)|Fossil|w/o CCS,EJ/yr,"coal, gas, conventional and unconventional oil primary energy consumption without CCS" -Primary Energy (substitution method)|Gas,EJ/yr,gas primary energy consumption -Primary Energy (substitution method)|Gas|w/ CCS,EJ/yr,gas primary energy consumption used in combination with CCS -Primary Energy (substitution method)|Gas|w/o CCS,EJ/yr,gas primary energy consumption without CCS -Primary Energy (substitution method)|Geothermal,EJ/yr,total geothermal primary energy consumption -Primary Energy (substitution method)|Hydro,EJ/yr,total hydro primary energy consumption -Primary Energy (substitution method)|Non-Biomass Renewables,EJ/yr,"non-biomass renewable primary energy consumption (direct equivalent, includes hydro electricity, wind electricity, geothermal electricity and heat, solar electricity and heat and hydrogen, ocean energy)" -Primary Energy (substitution method)|Nuclear,EJ/yr,"nuclear primary energy consumption (direct equivalent, includes electricity, heat and hydrogen production from nuclear energy)" -Primary Energy (substitution method)|Ocean,EJ/yr,total ocean primary energy consumption -Primary Energy (substitution method)|Oil,EJ/yr,conventional & unconventional oil primary energy consumption -Primary Energy (substitution method)|Oil|w/ CCS,EJ/yr,conventional & unconventional oil primary energy consumption used in combination with CCS -Primary Energy (substitution method)|Oil|w/o CCS,EJ/yr,conventional & unconventional oil primary energy consumption without CCS -Primary Energy (substitution method)|Other,EJ/yr,"primary energy consumption from sources that do not fit to any other category (direct equivalent, please provide a definition of the sources in this category in the 'comments' tab)" -Primary Energy (substitution method)|Secondary Energy Trade,EJ/yr,"trade in secondary energy carriers that cannot be unambiguoulsy mapped to one of the existing primary energy categories (e.g. electricity, hydrogen, fossil synfuels, negative means net exports)" -Primary Energy (substitution method)|Solar,EJ/yr,total solar primary energy consumption -Primary Energy (substitution method)|Wind,EJ/yr,total wind primary energy consumption -Production|Cement,Mt/year, -Production|Chemicals,Mt/year, -Production|Non-ferrous metals,Mt/year, -Production|Pulp and Paper,Mt/year, -Production|Steel,Mt/year, -Reservoir Capacity|Electricity|Storage,GWh,"reservoir size of electricity storage technologies (e.g. pumped hydro, compressed air storage, flow batteries)" -Resource|Cumulative Extraction,ZJ, -Resource|Cumulative Extraction|Coal,ZJ, -Resource|Cumulative Extraction|Gas,ZJ, -Resource|Cumulative Extraction|Gas|Conventional,ZJ, -Resource|Cumulative Extraction|Gas|Unconventional,ZJ, -Resource|Cumulative Extraction|Oil,ZJ, -Resource|Cumulative Extraction|Oil|Conventional,ZJ, -Resource|Cumulative Extraction|Oil|Unconventional,ZJ, -Resource|Cumulative Extraction|Uranium,ktU, -Resource|Extraction,EJ/yr, -Resource|Extraction|Coal,EJ/yr, -Resource|Extraction|Gas,EJ/yr, -Resource|Extraction|Gas|Conventional,EJ/yr, -Resource|Extraction|Gas|Unconventional,EJ/yr, -Resource|Extraction|Oil,EJ/yr, -Resource|Extraction|Oil|Conventional,EJ/yr, -Resource|Extraction|Oil|Unconventional,EJ/yr, -Resource|Remaining,ZJ, -Resource|Remaining|Coal,ZJ, -Resource|Remaining|Gas,ZJ, -Resource|Remaining|Gas|Conventional,ZJ, -Resource|Remaining|Gas|Unconventional,ZJ, -Resource|Remaining|Oil,ZJ, -Resource|Remaining|Oil|Conventional,ZJ, -Resource|Remaining|Oil|Unconventional,ZJ, -Revenue|Government,billion US$2010/yr OR local currency,Government revenue -Revenue|Government|Tax,billion US$2010/yr OR local currency,Government revenue from taxes -Secondary Energy|Electricity,EJ/yr,total net electricity production -Secondary Energy|Electricity|Biomass,EJ/yr,"net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" -Secondary Energy|Electricity|Biomass|w/ CCS,EJ/yr,"net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" -Secondary Energy|Electricity|Biomass|w/o CCS,EJ/yr,"net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" -Secondary Energy|Electricity|Coal,EJ/yr,net electricity production from coal -Secondary Energy|Electricity|Coal|w/ CCS,EJ/yr,net electricity production from coal with a CO2 capture component -Secondary Energy|Electricity|Coal|w/o CCS,EJ/yr,net electricity production from coal with freely vented CO2 emissions -Secondary Energy|Electricity|Curtailment,EJ/yr,curtailment of electricity production due to oversupply from variable renewable sources (typically from wind and solar) -Secondary Energy|Electricity|Fossil,EJ/yr,"net electricity production from coal, gas, conventional and unconventional oil" -Secondary Energy|Electricity|Fossil|w/ CCS,EJ/yr,"net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" -Secondary Energy|Electricity|Fossil|w/o CCS,EJ/yr,"net electricity production from coal, gas, conventional and unconventional oil without CCS" -Secondary Energy|Electricity|Gas,EJ/yr,net electricity production from natural gas -Secondary Energy|Electricity|Gas|w/ CCS,EJ/yr,net electricity production from natural gas with a CO2 capture component -Secondary Energy|Electricity|Gas|w/o CCS,EJ/yr,net electricity production from natural gas with freely vented CO2 emissions -Secondary Energy|Electricity|Geothermal,EJ/yr,"net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" -Secondary Energy|Electricity|Hydro,EJ/yr,net hydroelectric production -Secondary Energy|Electricity|Non-Biomass Renewables,EJ/yr,"net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." -Secondary Energy|Electricity|Nuclear,EJ/yr,net electricity production from nuclear energy -Secondary Energy|Electricity|Ocean,EJ/yr,"net electricity production from all sources of ocean energy (e.g., tidal, wave, ocean thermal electricity generation)" -Secondary Energy|Electricity|Oil,EJ/yr,net electricity production from refined liquids -Secondary Energy|Electricity|Oil|w/ CCS,EJ/yr,net electricity production from refined liquids with a CO2 capture component -Secondary Energy|Electricity|Oil|w/o CCS,EJ/yr,net electricity production from refined liquids with freely vented CO2 emissions -Secondary Energy|Electricity|Other,EJ/yr,net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Secondary Energy|Electricity|Solar,EJ/yr,"net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" -Secondary Energy|Electricity|Solar|CSP,EJ/yr,net electricity production from concentrating solar power (CSP) -Secondary Energy|Electricity|Solar|PV,EJ/yr,net electricity production from solar photovoltaics (PV) -Secondary Energy|Electricity|Solar|PV|Curtailment,EJ/yr, -Secondary Energy|Electricity|Storage Losses,EJ/yr,losses from electricity storage -Secondary Energy|Electricity|Transmission Losses,EJ/yr,electricity losses from long-range high-voltage transmission -Secondary Energy|Electricity|Wind,EJ/yr,net electricity production from wind energy (on- and offshore) -Secondary Energy|Electricity|Wind|Offshore,EJ/yr,net electricity production from offshore wind energy -Secondary Energy|Electricity|Wind|Onshore,EJ/yr,net electricity production from onshore wind energy -Secondary Energy|Electricity|Wind|Curtailment,EJ/yr, -Secondary Energy|Gases,EJ/yr,"total production of gaseous fuels, including natural gas" -Secondary Energy|Gases|Biomass,EJ/yr,total production of biogas -Secondary Energy|Gases|Coal,EJ/yr,total production of coal gas from coal gasification -Secondary Energy|Gases|Natural Gas,EJ/yr,total production of natural gas -Secondary Energy|Gases|Other,EJ/yr,total production of gases from sources that do not fit any other category -Secondary Energy|Heat,EJ/yr,total centralized heat generation -Secondary Energy|Heat|Biomass,EJ/yr,centralized heat generation from biomass -Secondary Energy|Heat|Coal,EJ/yr,centralized heat generation from coal -Secondary Energy|Heat|Gas,EJ/yr,centralized heat generation from gases -Secondary Energy|Heat|Geothermal,EJ/yr,centralized heat generation from geothermal energy EXCLUDING geothermal heat pumps -Secondary Energy|Heat|Nuclear,EJ/yr,centralized heat generation from nuclear energy -Secondary Energy|Heat|Oil,EJ/yr,centralized heat generation from oil products -Secondary Energy|Heat|Other,EJ/yr,centralized heat generation from sources that do not fit any other category (please provide a definition of the sources in this category in the 'comments' tab) -Secondary Energy|Heat|Solar,EJ/yr,centralized heat generation from solar energy -Secondary Energy|Hydrogen,EJ/yr,total hydrogen production -Secondary Energy|Hydrogen|Biomass,EJ/yr,hydrogen production from biomass -Secondary Energy|Hydrogen|Biomass|w/ CCS,EJ/yr,hydrogen production from biomass with a CO2 capture component -Secondary Energy|Hydrogen|Biomass|w/o CCS,EJ/yr,hydrogen production from biomass with freely vented CO2 emissions -Secondary Energy|Hydrogen|Coal,EJ/yr,hydrogen production from coal -Secondary Energy|Hydrogen|Coal|w/ CCS,EJ/yr,hydrogen production from coal with a CO2 capture component -Secondary Energy|Hydrogen|Coal|w/o CCS,EJ/yr,hydrogen production from coal with freely vented CO2 emissions -Secondary Energy|Hydrogen|Electricity,EJ/yr,hydrogen production from electricity via electrolysis -Secondary Energy|Hydrogen|Fossil,EJ/yr,hydrogen production from fossil fuels -Secondary Energy|Hydrogen|Fossil|w/ CCS,EJ/yr,hydrogen production from fossil fuels with a CO2 capture component -Secondary Energy|Hydrogen|Fossil|w/o CCS,EJ/yr,hydrogen production from fossil fuels with freely vented CO2 emissions -Secondary Energy|Hydrogen|Gas,EJ/yr,hydrogen production from gas -Secondary Energy|Hydrogen|Gas|w/ CCS,EJ/yr,hydrogen production from natural gas with a CO2 capture component -Secondary Energy|Hydrogen|Gas|w/o CCS,EJ/yr,hydrogen production from natural gas with freely vented CO2 emissions -Secondary Energy|Hydrogen|Nuclear,EJ/yr,total hydrogen production from nuclear energy (e.g. thermochemical water splitting with nucelar heat) -Secondary Energy|Hydrogen|Oil,EJ/yr,hydrogen production from oil -Secondary Energy|Hydrogen|Other,EJ/yr,hydrogen production from other sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Secondary Energy|Hydrogen|Solar,EJ/yr,total hydrogen production from solar energy (e.g. thermalchemical water splitting with solar heat) -Secondary Energy|Liquids,EJ/yr,"total production of refined liquid fuels from all energy sources (incl. oil products, synthetic fossil fuels from gas and coal, biofuels)" -Secondary Energy|Liquids|Biomass,EJ/yr,total liquid biofuels production -Secondary Energy|Liquids|Biomass|1st Generation,EJ/yr,"liquid biofuels production from 1st generation technologies, relying on e.g. corn, sugar, oil " -Secondary Energy|Liquids|Biomass|Energy Crops,EJ/yr,liquid biofuels production from energy crops -Secondary Energy|Liquids|Biomass|Other,EJ/yr,biofuel production from biomass that does not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Secondary Energy|Liquids|Biomass|Residues,EJ/yr,liquid biofuels production from residues (forest and agriculture) -Secondary Energy|Liquids|Biomass|w/ CCS,EJ/yr,total production of liquid biofuels from facilities with CCS -Secondary Energy|Liquids|Biomass|w/o CCS,EJ/yr,total production of liquid biofuels from facilities without CCS -Secondary Energy|Liquids|Coal,EJ/yr,total production of fossil liquid synfuels from coal-to-liquids (CTL) technologies -Secondary Energy|Liquids|Coal|w/ CCS,EJ/yr,total production of fossil liquid synfuels from coal-to-liquids (CTL) technologies with CCS -Secondary Energy|Liquids|Coal|w/o CCS,EJ/yr,total production of fossil liquid synfuels from coal-to-liquids (CTL) technologies without CCS -Secondary Energy|Liquids|Fossil,EJ/yr,total production of fossil liquid synfuels -Secondary Energy|Liquids|Fossil|w/ CCS,EJ/yr,total production of fossil liquid synfuels from facilities with CCS -Secondary Energy|Liquids|Fossil|w/o CCS,EJ/yr,total production of fossil liquid synfuels from facilities without CCS -Secondary Energy|Liquids|Gas,EJ/yr,total production of fossil liquid synfuels from gas-to-liquids (GTL) technologies -Secondary Energy|Liquids|Gas|w/ CCS,EJ/yr,total production of fossil liquid synfuels from gas-to-liquids (GTL) technologies with CCS -Secondary Energy|Liquids|Gas|w/o CCS,EJ/yr,total production of fossil liquid synfuels from gas-to-liquids (GTL) technologies without CCS -Secondary Energy|Liquids|Oil,EJ/yr,"total production of liquid fuels from petroleum, including both conventional and unconventional sources" -Secondary Energy|Liquids|Other,EJ/yr,total production of liquids from sources that do not fit any other category -Secondary Energy|Other Carrier,EJ/yr,generation of other secondary energy carriers that do not fit any other category (please provide a definition of other energy carrier in this category in the 'comments' tab) -Secondary Energy|Solids,EJ/yr,"solid secondary energy carriers (e.g., briquettes, coke, wood chips, wood pellets)" -Secondary Energy|Solids|Biomass,EJ/yr,"solid secondary energy carriers produced from biomass (e.g., commercial charcoal, wood chips, wood pellets). Tradional bioenergy use is excluded. " -Secondary Energy|Solids|Coal,EJ/yr,"solid secondary energy carriers produced from coal (e.g., briquettes, coke)" -Subsidies|Energy,billion US$2010/yr OR local currency, -Subsidies|Energy|Fossil,billion US$2010/yr OR local currency,Fossil fuel subsidies -Subsidies|Food,billion US$2010/yr OR local currency, -Tariffs|Average,%,Weighted trade tariff-average (regional and global indicator relevant) -Tariffs|Average|Imports,%,Average tariffs for imports (most relevant for developed countries) -Temperature|Global Mean,°C,change in global mean temperature relative to pre-industrial -Trade,billion US$2010/yr or local currency/yr,"net exports of all goods, at the global level these should add up to the trade losses only" -Trade|Emissions Allowances|Volume,Mt CO2-equiv/yr, -Trade|Emissions Allowances|Value,billion US$2010/yr, -Trade|Emissions|Value|Carbon|Absolute,billion US$2010/yr, -Trade|Emissions|Value|Carbon|Exports,billion US$2010/yr, -Trade|Emissions|Value|Carbon|Imports,billion US$2010/yr, -Trade|Emissions|Value|Carbon|Net Exports,billion US$2010/yr, -Trade|Emissions|Volume|Carbon|Absolute,Mt CO2-equiv/yr, -Trade|Emissions|Volume|Carbon|Exports,Mt CO2-equiv/yr, -Trade|Emissions|Volume|Carbon|Imports,Mt CO2-equiv/yr, -Trade|Emissions|Volume|Carbon|Net Exports,Mt CO2-equiv/yr, -Trade|Primary Energy|Biomass|Volume,EJ/yr,"net exports of solid, unprocessed biomass, at the global level these should add up to the trade losses only" -Trade|Primary Energy|Coal|Volume,EJ/yr,"net exports of coal, at the global level these should add up to the trade losses only" -Trade|Primary Energy|Gas|Volume,EJ/yr,"net exports of natural gas, at the global level these should add up to the trade losses only" -Trade|Primary Energy|Oil|Volume,EJ/yr,"net exports of crude oil, at the global level these should add up to the trade losses only" -Trade|Secondary Energy|Electricity|Volume,EJ/yr,"net exports of electricity, at the global level these should add up to the trade losses only" -Trade|Secondary Energy|Hydrogen|Volume,EJ/yr,"net exports of hydrogen, at the global level these should add up to the trade losses only" -Trade|Secondary Energy|Liquids|Biomass|Volume,EJ/yr,"net exports of liquid biofuels, at the global level these should add up to the trade losses only (for those models that are able to split solid and liquid bioenergy)" -Trade|Secondary Energy|Liquids|Coal|Volume,EJ/yr,"net exports of fossil liquid synfuels from coal-to-liquids (CTL) technologies, at the global level these should add up to the trade losses only" -Trade|Secondary Energy|Liquids|Gas|Volume,EJ/yr,"net exports of fossil liquid synfuels from gas-to-liquids (GTL) technologies, at the global level these should add up to the trade losses only" -Trade|Secondary Energy|Liquids|Oil|Volume,EJ/yr,"net exports of liquid fuels from petroleum including both conventional and unconventional sources, at the global level these should add up to the trade losses only" -Trade|Gross Export|Primary Energy|Biomass|Volume,EJ/yr, -Trade|Gross Export|Primary Energy|Coal|Volume,EJ/yr, -Trade|Gross Export|Primary Energy|Oil|Volume,EJ/yr, -Trade|Gross Export|Primary Energy|Gas|Volume,EJ/yr, -Trade|Gross Export|Secondary Energy|Electricity|Volume,EJ/yr, -Trade|Gross Export|Secondary Energy|Liquids|Biomass|Volume,EJ/yr, -Trade|Gross Export|Secondary Energy|Liquids|Coal|Volume,EJ/yr, -Trade|Gross Export|Secondary Energy|Liquids|Oil|Volume,EJ/yr, -Trade|Gross Import|Primary Energy|Biomass|Volume,EJ/yr, -Trade|Gross Import|Primary Energy|Coal|Volume,EJ/yr, -Trade|Gross Import|Primary Energy|Oil|Volume,EJ/yr, -Trade|Gross Import|Primary Energy|Gas|Volume,EJ/yr, -Trade|Gross Import|Secondary Energy|Electricity|Volume,EJ/yr, -Trade|Gross Import|Secondary Energy|Liquids|Biomass|Volume,EJ/yr, -Trade|Gross Import|Secondary Energy|Liquids|Coal|Volume,EJ/yr, -Trade|Gross Import|Secondary Energy|Liquids|Oil|Volume,EJ/yr, -Trade|Uranium|Mass,kt U/yr,"net exports of Uranium, at the global level these should add up to the trade losses only" -Unemployment,Million,Number of unemployed inhabitants (based on ILO classification) -Unemployment|Rate,%,Fraction of unemployed inhabitants (based on ILO classification) -Useful Energy|Input|Feedstocks,EJ/yr, -Useful Energy|Input|Industrial Thermal,EJ/yr, -Useful Energy|Input|Industrial Specific,EJ/yr, -Useful Energy|Input|RC Thermal,EJ/yr, -Useful Energy|Input|RC Specific,EJ/yr, -Useful Energy|Input|Transport,EJ/yr, -Useful Energy|Input|Shipping,EJ/yr, -Useful Energy|Input|Non-Commercial Biomass,EJ/yr, -Useful Energy|Feedstocks,EJ/yr, -Useful Energy|Industrial Thermal,EJ/yr, -Useful Energy|Industrial Specific,EJ/yr, -Useful Energy|RC Thermal,EJ/yr, -Useful Energy|RC Specific,EJ/yr, -Useful Energy|Transport,EJ/yr, -Useful Energy|Shipping,EJ/yr, -Useful Energy|Non-Commercial Biomass,EJ/yr, -Value Added|Agriculture,billion US$2010/yr OR local currency,value added of the agricultural sector -Value Added|Commercial,billion US$2010/yr OR local currency,value added of the commercial sector -Value Added|Industry,billion US$2010/yr OR local currency,value added of the industry sector -Value Added|Industry|Energy,billion US$2010/yr OR local currency, -Value Added|Industry|Energy Intensive,billion US$2010/yr OR local currency,value added of the energy-intensive industries. -Value Added|Industry|Manufacturing,billion US$2010/yr OR local currency, -Water Consumption,km3/yr,total water consumption -Water Consumption|Electricity,km3/yr,total water consumption for net electricity production -Water Consumption|Electricity|Biomass,km3/yr,"water consumption for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" -Water Consumption|Electricity|Biomass|w/ CCS,km3/yr,"water consumption for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" -Water Consumption|Electricity|Biomass|w/o CCS,km3/yr,"water consumption for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" -Water Consumption|Electricity|Coal,km3/yr,water consumption for net electricity production from coal -Water Consumption|Electricity|Coal|w/ CCS,km3/yr,water consumption for net electricity production from coal with a CO2 capture component -Water Consumption|Electricity|Coal|w/o CCS,km3/yr,water consumption for net electricity production from coal with freely vented CO2 emissions -Water Consumption|Electricity|Cooling Pond,km3/yr,water consumption for net electricity production using pond cooling -Water Consumption|Electricity|Dry Cooling,km3/yr,water consumption for net electricity production using dry cooling -Water Consumption|Electricity|Fossil,km3/yr,"water consumption for net electricity production from coal, gas, conventional and unconventional oil" -Water Consumption|Electricity|Fossil|w/ CCS,km3/yr,"water consumption for net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" -Water Consumption|Electricity|Fossil|w/o CCS,km3/yr,"water consumption for net electricity production from coal, gas, conventional and unconventional oil without CCS" -Water Consumption|Electricity|Gas,km3/yr,water consumption for net electricity production from natural gas -Water Consumption|Electricity|Gas|w/ CCS,km3/yr,water consumption for net electricity production from natural gas with a CO2 capture component -Water Consumption|Electricity|Gas|w/o CCS,km3/yr,water consumption for net electricity production from natural gas with freely vented CO2 emissions -Water Consumption|Electricity|Geothermal,km3/yr,"water consumption for net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" -Water Consumption|Electricity|Hydro,km3/yr,water consumption for net hydroelectric production -Water Consumption|Electricity|Non-Biomass Renewables,km3/yr,"water consumption for net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." -Water Consumption|Electricity|Nuclear,km3/yr,water consumption for net electricity production from nuclear energy -Water Consumption|Electricity|Oil,km3/yr,water consumption for net electricity production from refined liquids -Water Consumption|Electricity|Oil|w/ CCS,km3/yr,water consumption for net electricity production from refined liquids with a CO2 capture component -Water Consumption|Electricity|Oil|w/o CCS,km3/yr,water consumption for net electricity production from refined liquids with freely vented CO2 emissions -Water Consumption|Electricity|Once Through,km3/yr,water consumption for net electricity production using once through cooling -Water Consumption|Electricity|Other,km3/yr,water consumption for net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Water Consumption|Electricity|Sea Cooling,km3/yr,water consumption for net electricity production using sea water cooling -Water Consumption|Electricity|Solar,km3/yr,"water consumption for net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" -Water Consumption|Electricity|Solar|CSP,km3/yr,water consumption for net electricity production from concentrating solar power (CSP) -Water Consumption|Electricity|Solar|PV,km3/yr,water consumption for net electricity production from solar photovoltaics (PV) -Water Consumption|Electricity|Wet Tower,km3/yr,water consumption for net electricity production using wet tower cooling -Water Consumption|Electricity|Wind,km3/yr,water consumption for net electricity production from wind energy (on- and offshore) -Water Consumption|Extraction,km3/yr,total water consumption for extraction -Water Consumption|Extraction|Coal,km3/yr,water consumption for coal extraction -Water Consumption|Extraction|Gas,km3/yr,water consumption for gas extraction -Water Consumption|Extraction|Oil,km3/yr,water consumption for oil extraction -Water Consumption|Extraction|Uranium,km3/yr,water consumption for uranium extraction -Water Consumption|Gases,km3/yr,total water consumption for gas production -Water Consumption|Gases|Biomass,km3/yr,water consumption for gas production from biomass -Water Consumption|Gases|Coal,km3/yr,water consumption for gas production from coal -Water Consumption|Gases|Natural Gas,km3/yr,water consumption for gas production from natural gas -Water Consumption|Gases|Other,km3/yr,water consumption for gas production from other -Water Consumption|Heat,km3/yr,total water consumption for heat generation -Water Consumption|Heat|Biomass,km3/yr,water consumption for heat generation from biomass -Water Consumption|Heat|Coal,km3/yr,water consumption for heat generation from coal -Water Consumption|Heat|Gas,km3/yr,water consumption for heat generation from gas -Water Consumption|Heat|Geothermal,km3/yr,"water consumption for heat generation from from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" -Water Consumption|Heat|Nuclear,km3/yr,water consumption for heat generation from nuclear -Water Consumption|Heat|Oil,km3/yr,water consumption for heat generation from oil -Water Consumption|Heat|Other,km3/yr,water consumption for heat generation from other sources -Water Consumption|Heat|Solar,km3/yr,water consumption for heat generation from solar -Water Consumption|Hydrogen,km3/yr,total water consumption for hydrogen production -Water Consumption|Hydrogen|Biomass,km3/yr,water consumption for hydrogen production from biomass -Water Consumption|Hydrogen|Biomass|w/ CCS,km3/yr,water consumption from hydrogen production from biomass with a CO2 capture component -Water Consumption|Hydrogen|Biomass|w/o CCS,km3/yr,water consumption for hydrogen production from biomass with freely vented CO2 emissions -Water Consumption|Hydrogen|Coal,km3/yr,water consumption for hydrogen production from coal -Water Consumption|Hydrogen|Coal|w/ CCS,km3/yr,water consumption for hydrogen production from coal with a CO2 capture component -Water Consumption|Hydrogen|Coal|w/o CCS,km3/yr,water consumption for hydrogen production from coal with freely vented CO2 emissions -Water Consumption|Hydrogen|Electricity,km3/yr,water consumption for hydrogen production from electricity -Water Consumption|Hydrogen|Fossil,km3/yr,water consumption for hydrogen production from fossil fuels -Water Consumption|Hydrogen|Fossil|w/ CCS,km3/yr,water consumption for hydrogen production from fossil fuels with a CO2 capture component -Water Consumption|Hydrogen|Fossil|w/o CCS,km3/yr,water consumption for hydrogen production from fossil fuels with freely vented CO2 emissions -Water Consumption|Hydrogen|Gas,km3/yr,water consumption for hydrogen production from gas -Water Consumption|Hydrogen|Gas|w/ CCS,km3/yr,water consumption for hydrogen production from gas with a CO2 capture component -Water Consumption|Hydrogen|Gas|w/o CCS,km3/yr,water consumption for hydrogen production from gas with freely vented CO2 emissions -Water Consumption|Hydrogen|Oil,km3/yr,water consumption for hydrogen production from oil -Water Consumption|Hydrogen|Other,km3/yr,water consumption for hydrogen production from other sources -Water Consumption|Hydrogen|Solar,km3/yr,water consumption for hydrogen production from solar -Water Consumption|Industrial Water,km3/yr,water consumption for the industrial sector -Water Consumption|Irrigation,km3/yr,water consumption for the irrigation -Water Consumption|Liquids,km3/yr,"total water consumption for refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Water Consumption|Liquids|Biomass,km3/yr,water consumption for biofuel production -Water Consumption|Liquids|Biomass|w/ CCS,km3/yr,water consumption for biofuel production with a CO2 capture component -Water Consumption|Liquids|Biomass|w/o CCS,km3/yr,water consumption for biofuel production with freely vented CO2 emissions -Water Consumption|Liquids|Coal,km3/yr,water consumption for coal to liquid production -Water Consumption|Liquids|Coal|w/ CCS,km3/yr,water consumption for coal to liquid production with a CO2 capture component -Water Consumption|Liquids|Coal|w/o CCS,km3/yr,water consumption for coal to liquid production with freely vented CO2 emissions -Water Consumption|Liquids|Fossil,km3/yr,water consumption for fossil to liquid production from fossil fuels -Water Consumption|Liquids|Fossil|w/ CCS,km3/yr,water consumption for fossil to liquid production from fossil fuels with a CO2 capture component -Water Consumption|Liquids|Fossil|w/o CCS,km3/yr,water consumption for fossil to liquid production from fossil fuels with freely vented CO2 emissions -Water Consumption|Liquids|Gas,km3/yr,water consumption for gas to liquid production -Water Consumption|Liquids|Gas|w/ CCS,km3/yr,water consumption for gas to liquid production with a CO2 capture component -Water Consumption|Liquids|Gas|w/o CCS,km3/yr,water consumption for gas to liquid production with freely vented CO2 emissions -Water Consumption|Liquids|Oil,km3/yr,water consumption for oil production -Water Consumption|Livestock,km3/yr,water consumption for livestock -Water Consumption|Municipal Water,km3/yr,"water consumption for the municipal sector (e.g., houses, offices, municipal irrigation)" -Water Desalination,km3/yr,desalination water -Water Extraction|Brackish Water,km3/yr,water extracted from brackish groundwater resources -Water Extraction|Groundwater,km3/yr,water extracted from groundwater resources -Water Extraction|Seawater,km3/yr,water extracted from ocean and seawater resources (including tidal zones) -Water Extraction|Surface Water,km3/yr,"water extracted from surface water resources (rivers, lakes ...)" -Water Resource|Brackish Water,km3,anticipated volume of exploitable brackish groundwater resources -Water Resource|Groundwater,km3,anticipated volume of exploitable groundwater resources -Water Resource|Surface Water,km3,anticipated volume of exploitable surface water resources -Water Thermal Pollution|Electricity|Biomass,EJ/yr,"thermal water pollution from net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" -Water Thermal Pollution|Electricity|Biomass|w/ CCS,EJ/yr,"thermal water pollution from net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" -Water Thermal Pollution|Electricity|Biomass|w/o CCS,EJ/yr,"thermal water pollution from net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" -Water Thermal Pollution|Electricity|Coal,EJ/yr,thermal water pollution from net electricity production from coal -Water Thermal Pollution|Electricity|Coal|w/ CCS,EJ/yr,thermal water pollution from net electricity production from coal with a CO2 capture component -Water Thermal Pollution|Electricity|Coal|w/o CCS,EJ/yr,thermal water pollution from net electricity production from coal with freely vented CO2 emissions -Water Thermal Pollution|Electricity|Fossil,EJ/yr,"thermal water pollution from net electricity production from coal, gas, conventional and unconventional oil" -Water Thermal Pollution|Electricity|Fossil|w/ CCS,EJ/yr,"thermal water pollution from net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" -Water Thermal Pollution|Electricity|Fossil|w/o CCS,EJ/yr,"thermal water pollution from net electricity production from coal, gas, conventional and unconventional oil without CCS" -Water Thermal Pollution|Electricity|Gas,EJ/yr,thermal water pollution from net electricity production from natural gas -Water Thermal Pollution|Electricity|Gas|w/ CCS,EJ/yr,thermal water pollution from net electricity production from natural gas with a CO2 capture component -Water Thermal Pollution|Electricity|Gas|w/o CCS,EJ/yr,thermal water pollution from net electricity production from natural gas with freely vented CO2 emissions -Water Thermal Pollution|Electricity|Geothermal,EJ/yr,"thermal water pollution from net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" -Water Thermal Pollution|Electricity|Non-Biomass Renewables,EJ/yr,"thermal water pollution from net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." -Water Thermal Pollution|Electricity|Nuclear,EJ/yr,thermal water pollution from net electricity production from nuclear energy -Water Thermal Pollution|Electricity|Oil,EJ/yr,thermal water pollution from net electricity production from refined liquids -Water Thermal Pollution|Electricity|Oil|w/ CCS,EJ/yr,thermal water pollution from net electricity production from refined liquids with a CO2 capture component -Water Thermal Pollution|Electricity|Oil|w/o CCS,EJ/yr,thermal water pollution from net electricity production from refined liquids with freely vented CO2 emissions -Water Thermal Pollution|Electricity|Once Through,EJ/yr,thermal water pollution from net electricity production using once through cooling -Water Thermal Pollution|Electricity|Other,EJ/yr,thermal water pollution from net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Water Thermal Pollution|Electricity|Sea Cooling,EJ/yr,thermal water pollution from net electricity production using sea water cooling -Water Thermal Pollution|Electricity|Solar,EJ/yr,"thermal water pollution from net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" -Water Thermal Pollution|Electricity|Solar|CSP,EJ/yr,thermal water pollution from net electricity production from concentrating solar power (CSP) -Water Transfer,km3/yr,water imported/exported using conveyance infrastructure -Water Withdrawal,km3/yr,total water withdrawal -Water Withdrawal|Electricity,km3/yr,total water withdrawals for net electricity production -Water Withdrawal|Electricity|Biomass,km3/yr,"water withdrawals for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste, biogas" -Water Withdrawal|Electricity|Biomass|w/ CCS,km3/yr,"water withdrawals for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with a CO2 capture component" -Water Withdrawal|Electricity|Biomass|w/o CCS,km3/yr,"water withdrawals for net electricity production from municipal solid waste, purpose-grown biomass, crop residues, forest industry waste with freely vented CO2 emissions" -Water Withdrawal|Electricity|Coal,km3/yr,water withdrawals for net electricity production from coal -Water Withdrawal|Electricity|Coal|w/ CCS,km3/yr,water withdrawals for net electricity production from coal with a CO2 capture component -Water Withdrawal|Electricity|Coal|w/o CCS,km3/yr,water withdrawals for net electricity production from coal with freely vented CO2 emissions -Water Withdrawal|Electricity|Cooling Pond,km3/yr,water withdrawals for net electricity production using pond cooling -Water Withdrawal|Electricity|Dry Cooling,km3/yr,water withdrawals for net electricity production using dry cooling -Water Withdrawal|Electricity|Fossil,km3/yr,"water withdrawals for net electricity production from coal, gas, conventional and unconventional oil" -Water Withdrawal|Electricity|Fossil|w/ CCS,km3/yr,"water withdrawals for net electricity production from coal, gas, conventional and unconventional oil used in combination with CCS" -Water Withdrawal|Electricity|Fossil|w/o CCS,km3/yr,"water withdrawals for net electricity production from coal, gas, conventional and unconventional oil without CCS" -Water Withdrawal|Electricity|Gas,km3/yr,water withdrawals for net electricity production from natural gas -Water Withdrawal|Electricity|Gas|w/ CCS,km3/yr,water withdrawals for net electricity production from natural gas with a CO2 capture component -Water Withdrawal|Electricity|Gas|w/o CCS,km3/yr,water withdrawals for net electricity production from natural gas with freely vented CO2 emissions -Water Withdrawal|Electricity|Geothermal,km3/yr,"water withdrawals for net electricity production from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" -Water Withdrawal|Electricity|Hydro,km3/yr,water withdrawals for net hydroelectric production -Water Withdrawal|Electricity|Non-Biomass Renewables,km3/yr,"water withdrawals for net electricity production from hydro, wind, solar, geothermal, ocean, and other renewable sources (excluding bioenergy). This is a summary category for all the non-biomass renewables." -Water Withdrawal|Electricity|Nuclear,km3/yr,water withdrawals for net electricity production from nuclear energy -Water Withdrawal|Electricity|Ocean,km3/yr,"water withdrawals for net electricity production from all sources of ocean energy (e.g., tidal, wave, ocean thermal electricity production generation)" -Water Withdrawal|Electricity|Oil,km3/yr,water withdrawals for net electricity production from refined liquids -Water Withdrawal|Electricity|Oil|w/ CCS,km3/yr,water withdrawals for net electricity production from refined liquids with a CO2 capture component -Water Withdrawal|Electricity|Oil|w/o CCS,km3/yr,water withdrawals for net electricity production from refined liquids with freely vented CO2 emissions -Water Withdrawal|Electricity|Once Through,km3/yr,water withdrawals for net electricity production using once through cooling -Water Withdrawal|Electricity|Other,km3/yr,water withdrawals for net electricity production from sources that do not fit to any other category (please provide a definition of the sources in this category in the 'comments' tab) -Water Withdrawal|Electricity|Sea Cooling,km3/yr,water withdrawals for net electricity production using sea water cooling -Water Withdrawal|Electricity|Solar,km3/yr,"water withdrawals for net electricity production from all sources of solar energy (e.g., PV and concentrating solar power)" -Water Withdrawal|Electricity|Solar|CSP,km3/yr,water withdrawals for net electricity production from concentrating solar power (CSP) -Water Withdrawal|Electricity|Solar|PV,km3/yr,water withdrawals for net electricity production from solar photovoltaics (PV) -Water Withdrawal|Electricity|Wet Tower,km3/yr,water withdrawals for net electricity production using wet tower cooling -Water Withdrawal|Electricity|Wind,km3/yr,water withdrawals for net electricity production from wind energy (on- and offshore) -Water Withdrawal|Extraction,km3/yr,total water withdrawal for extraction -Water Withdrawal|Extraction|Coal,km3/yr,water withdrawal for coal extraction -Water Withdrawal|Extraction|Gas,km3/yr,water withdrawal for gas extraction -Water Withdrawal|Extraction|Oil,km3/yr,water withdrawal for oil extraction -Water Withdrawal|Extraction|Uranium,km3/yr,water withdrawal for uranium extraction -Water Withdrawal|Gases,km3/yr,total water withdrawal for gas production -Water Withdrawal|Gases|Biomass,km3/yr,water withdrawal for gas production from biomass -Water Withdrawal|Gases|Coal,km3/yr,water withdrawal for gas production from coal -Water Withdrawal|Gases|Natural Gas,km3/yr,water withdrawal for gas production from natural gas -Water Withdrawal|Gases|Other,km3/yr,water withdrawal for gas production from other -Water Withdrawal|Heat,km3/yr,total water withdrawal for heat generation -Water Withdrawal|Heat|Biomass,km3/yr,water withdrawal for heat generation from biomass -Water Withdrawal|Heat|Coal,km3/yr,water withdrawal for heat generation from coal -Water Withdrawal|Heat|Gas,km3/yr,water withdrawal for heat generation from gas -Water Withdrawal|Heat|Geothermal,km3/yr,"water withdrawal for heat generation from from all sources of geothermal energy (e.g., hydrothermal, enhanced geothermal systems)" -Water Withdrawal|Heat|Nuclear,km3/yr,water withdrawal for heat generation from nuclear -Water Withdrawal|Heat|Oil,km3/yr,water withdrawal for heat generation from oil -Water Withdrawal|Heat|Other,km3/yr,water withdrawal for heat generation from other sources -Water Withdrawal|Heat|Solar,km3/yr,water withdrawal for heat generation from solar -Water Withdrawal|Hydrogen,km3/yr,total water withdrawal for hydrogen production -Water Withdrawal|Hydrogen|Biomass,km3/yr,water withdrawal for hydrogen production from biomass -Water Withdrawal|Hydrogen|Biomass|w/ CCS,km3/yr,water withdrawal for hydrogen production from biomass with a CO2 capture component -Water Withdrawal|Hydrogen|Biomass|w/o CCS,km3/yr,water withdrawal for hydrogen production from biomass with freely vented CO2 emissions -Water Withdrawal|Hydrogen|Coal,km3/yr,water withdrawal for hydrogen production from coal -Water Withdrawal|Hydrogen|Coal|w/ CCS,km3/yr,water withdrawal for hydrogen production from coal with a CO2 capture component -Water Withdrawal|Hydrogen|Coal|w/o CCS,km3/yr,water withdrawal for hydrogen production from coal with freely vented CO2 emissions -Water Withdrawal|Hydrogen|Electricity,km3/yr,water withdrawal for hydrogen production from electricity -Water Withdrawal|Hydrogen|Fossil,km3/yr,water withdrawal for hydrogen production from fossil fuels -Water Withdrawal|Hydrogen|Fossil|w/ CCS,km3/yr,water withdrawal for hydrogen production from fossil fuels with a CO2 capture component -Water Withdrawal|Hydrogen|Fossil|w/o CCS,km3/yr,water withdrawal for hydrogen production from fossil fuels with freely vented CO2 emissions -Water Withdrawal|Hydrogen|Gas,km3/yr,water withdrawal for hydrogen production from gas -Water Withdrawal|Hydrogen|Gas|w/ CCS,km3/yr,water withdrawal for hydrogen production from gas with a CO2 capture component -Water Withdrawal|Hydrogen|Gas|w/o CCS,km3/yr,water withdrawal for hydrogen production from gas with freely vented CO2 emissions -Water Withdrawal|Hydrogen|Oil,km3/yr,water withdrawal for hydrogen production from oil -Water Withdrawal|Hydrogen|Other,km3/yr,water withdrawal for hydrogen production from other sources -Water Withdrawal|Hydrogen|Solar,km3/yr,water withdrawal for hydrogen production from solar -Water Withdrawal|Industrial Water,km3/yr,water withdrawals for the industrial sector (manufacturing sector if also reporting energy sector water use) -Water Withdrawal|Irrigation,km3/yr,water withdrawal for irrigation -Water Withdrawal|Liquids,km3/yr,"total water withdrawal for refined liquids (conventional & unconventional oil, biofuels, coal-to-liquids, gas-to-liquids)" -Water Withdrawal|Liquids|Biomass,km3/yr,water withdrawal for biofuel production -Water Withdrawal|Liquids|Biomass|w/ CCS,km3/yr,water withdrawal for biofuel production with a CO2 capture component -Water Withdrawal|Liquids|Biomass|w/o CCS,km3/yr,water withdrawal for biofuel production with freely vented CO2 emissions -Water Withdrawal|Liquids|Coal,km3/yr,water withdrawal for coal to liquid production -Water Withdrawal|Liquids|Coal|w/ CCS,km3/yr,water withdrawal for coal to liquid production with a CO2 capture component -Water Withdrawal|Liquids|Coal|w/o CCS,km3/yr,water withdrawal for coal to liquid production with freely vented CO2 emissions -Water Withdrawal|Liquids|Fossil,km3/yr,water withdrawal for fossil to liquid production from fossil fuels -Water Withdrawal|Liquids|Fossil|w/ CCS,km3/yr,water withdrawal for fossil to liquid production from fossil fuels with a CO2 capture component -Water Withdrawal|Liquids|Fossil|w/o CCS,km3/yr,water withdrawal for fossil to liquid production from fossil fuels with freely vented CO2 emissions -Water Withdrawal|Liquids|Gas,km3/yr,water withdrawal for gas to liquid production -Water Withdrawal|Liquids|Gas|w/ CCS,km3/yr,water withdrawal for gas to liquid production with a CO2 capture component -Water Withdrawal|Liquids|Gas|w/o CCS,km3/yr,water withdrawal for gas to liquid production with freely vented CO2 emissions -Water Withdrawal|Liquids|Oil,km3/yr,water withdrawal for oil production -Water Withdrawal|Livestock,km3/yr,water withdrawals for livestock -Water Withdrawal|Municipal Water,km3/yr,"water withdrawals for the municial sector (e.g., houses, offices, municipal irrigation)" -Yield|Cereal,t DM/ha/yr,yield of cereal production per until of area (used here as repreentative crop to measure yield assumptions) -Yield|Oilcrops,t DM/ha/yr,"aggregated yield of Oilcrops (e.g. soybean, rapeseed, groundnut, sunflower, oilpalm)" -Yield|Sugarcrops,t DM/ha/yr,"aggregated yield of Sugarcrops (e.g. sugarbeet, sugarcane)" From dfaa9b386877dfba309eb7d9ffd54d15919df690 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 31 Mar 2022 00:46:56 +0200 Subject: [PATCH 147/220] Move utilities for simulating solution data to .reporting.sim --- message_ix_models/report/sim.py | 120 ++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 message_ix_models/report/sim.py diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py new file mode 100644 index 0000000000..3bd4fe3853 --- /dev/null +++ b/message_ix_models/report/sim.py @@ -0,0 +1,120 @@ +from collections import ChainMap, defaultdict +from collections.abc import Mapping +from copy import deepcopy +from typing import Any, Dict, Tuple + +import pandas as pd +from dask.core import quote +from ixmp.reporting import RENAME_DIMS +from message_ix.models import MESSAGE_ITEMS +from message_ix.reporting import Key, KeyExistsError, Quantity, Reporter +from message_ix_models import ScenarioInfo +from pandas.api.types import is_scalar + + +# Shorthand for MESSAGE_VARS, below +def item(ix_type, idx_names): + return dict(ix_type=ix_type, idx_names=tuple(idx_names.split())) + + +# Copied from message_ix.models.MESSAGE_ITEMS, where these entries are commented because +# of JDBCBackend limitations. +# TODO read from that location once possible +MESSAGE_VARS = { + # Activity + "ACT": item("var", "nl t yv ya m h"), + # Maintained capacity + "CAP": item("var", "nl t yv ya"), + # New capacity + "CAP_NEW": item("var", "nl t yv"), + # Emissions + "EMISS": item("var", "n e type_tec y"), + # Extraction + "EXT": item("var", "n c g y"), + # Land scenario share + "LAND": item("var", "n land_scenario y"), + # Objective (scalar) + "OBJ": dict(ix_type="var", idx_names=[]), + # Price of emissions + "PRICE_COMMODITY": item("var", "n c l y h"), + # Price of emissions + "PRICE_EMISSION": item("var", "n e t y"), + # Relation (lhs) + "REL": item("var", "relation nr yr"), + # Stock + "STOCK": item("var", "n c l y"), +} + + +def simulate_qty(name: str, item_info: dict, **data_kw: Any) -> Tuple[Key, Quantity]: + """Return simulated data for item `name`.""" + # NB this is code lightly modified from make_df + + # Dimensions of the resulting quantity + dims = list( + map( + lambda d: RENAME_DIMS.get(d, d), + item_info.get("idx_names", []) or item_info.get("idx_sets", []), + ) + ) + + # Default values for every column + data: Mapping = ChainMap(data_kw, defaultdict(lambda: None)) + + # Arguments for pd.DataFrame constructor + args: Dict[str, Any] = dict(data={}) + + # Flag if all values in `data` are scalars + all_scalar = True + + for column in dims + ["value"]: + # Update flag + all_scalar &= is_scalar(data[column]) + # Store data + args["data"][column] = data[column] + + if all_scalar: + # All values are scalars, so the constructor requires an index to be passed + # explicitly. + args["index"] = [0] + + return Key(name, dims), Quantity( + pd.DataFrame(**args).set_index(dims) if len(dims) else pd.DataFrame(**args) + ) + + +def add_simulated_solution(rep: Reporter, info: ScenarioInfo, data: Dict = None): + """Add a simulated model solution to `rep`, given `info` and `data`.""" + # Populate the sets (from `info`, maybe empty) and pars (empty) + to_add = deepcopy(MESSAGE_ITEMS) + # Populate variables + to_add.update(MESSAGE_VARS) + # Populate MACRO items + to_add.update( + { + "GDP": item("var", "n y"), + "MERtoPPP": item("var", "n y"), + } + ) + + data = data or dict() + + for name, item_info in to_add.items(): + if item_info["ix_type"] == "set": + # Add the set elements + rep.add(RENAME_DIMS.get(name, name), quote(info.set[name])) + elif item_info["ix_type"] in ("par", "var"): + item_data = data.get(name, {}) + key, qty = simulate_qty(name, item_info, **item_data) + + if name in rep and not item_data: + continue # No data; don't overwrite existing task + + # log.debug(f"{key}\n{qty}") + rep.add(key, qty, sums=True, index=True) + + # Prepare the base MESSAGEix computations + try: + rep.add_tasks() + except KeyExistsError: + pass # `rep` was produced with Reporter.from_scenario() From 382fff37c755ffdb16ed20c06692ade9facf094e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 4 Apr 2022 15:44:25 +0200 Subject: [PATCH 148/220] Add .reporting.computations.make_output_path --- message_ix_models/report/computations.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index ca73ce5db6..2650f9bd4f 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -10,6 +10,11 @@ log = logging.getLogger(__name__) +def make_output_path(config, name): + """Return a path under the "output_dir" Path from the reporter configuration.""" + return config["output_dir"].joinpath(name) + + def gwp_factors(): """Use :mod:`iam_units` to generate a Quantity of GWP factors. From 2ea03972be53cff26bae58a8aa9ee8c597094bde Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 4 Apr 2022 15:46:11 +0200 Subject: [PATCH 149/220] Handle "var:" key in "iamc:" reporting config sections --- message_ix_models/report/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 02b7d51ba4..2816607db8 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -40,11 +40,12 @@ def iamc(c: Reporter, info): - The `y`, `ya`, and `yv` dimensions are mapped to the "year" column. - Use the MESSAGEix-GLOBIOM custom :func:`.util.collapse` callback to perform - renaming etc. while collapsing dimensions to the IAMC ones. + renaming etc. while collapsing dimensions to the IAMC ones. The "var" key from + the entry, if any, is passed to the `var` argument of that function. """ # Use message_data custom collapse() method info.setdefault("collapse", {}) - info["collapse"]["callback"] = util.collapse + info["collapse"]["callback"] = partial(util.collapse, var=info.pop("var", [])) # Add standard renames info.setdefault("rename", {}) From 06ff0dc6fbad06c091ba9c3344c7515090275ce9 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 20 Apr 2022 15:08:48 +0200 Subject: [PATCH 150/220] Adapt genno to some standard message_data reporting config --- message_ix_models/report/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 2816607db8..62f734fa23 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -23,11 +23,18 @@ # Add to the configuration keys stored by Reporter.configure(). genno.config.STORE.add("output_path") +genno.config.STORE.add("output_dir") #: List of callbacks for preparing the Reporter. CALLBACKS: List[Callable] = [] +# Ignore a section in global.yaml used to define YAML anchors +@genno.config.handles("_iamc formats") +def _(c: Reporter, info): + pass + + @genno.config.handles("iamc") def iamc(c: Reporter, info): """Handle one entry from the ``iamc:`` config section. From 2aeb9b01da1660bab4a20f63b7bde107469c6dc5 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 20 Apr 2022 15:10:07 +0200 Subject: [PATCH 151/220] Use "*" wildcards per genno 1.11 --- message_ix_models/data/report/global.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index 077b63be06..d883e4a318 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -674,7 +674,7 @@ general: # For secondary energy, only the 'main' output of technologies that produce # hydrogen -- key: out::h2 +- key: out:*:h2 comp: select inputs: [out] args: @@ -683,7 +683,7 @@ general: c: [hydrogen] # All other technologies not in out::h2 -- key: out::se_0 +- key: out:*:se_0 comp: select inputs: [out] args: @@ -725,7 +725,7 @@ general: # below. # Re-combine only the 'main' outputs of technologies for SE computations -- key: out::se_1 +- key: out:*:se_1 comp: concat inputs: - out::h2 From 8ad230cd506bb5630e5afe91abd7b14a030ab692 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 20 Apr 2022 15:17:25 +0200 Subject: [PATCH 152/220] Quiet genno logging in add_simulated_solution() --- message_ix_models/report/sim.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index 3bd4fe3853..6d73041ff4 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -1,3 +1,4 @@ +import logging from collections import ChainMap, defaultdict from collections.abc import Mapping from copy import deepcopy @@ -111,10 +112,15 @@ def add_simulated_solution(rep: Reporter, info: ScenarioInfo, data: Dict = None) continue # No data; don't overwrite existing task # log.debug(f"{key}\n{qty}") - rep.add(key, qty, sums=True, index=True) + rep.add(key, qty, sums=True) # Prepare the base MESSAGEix computations try: + gl = logging.getLogger("genno") + level = gl.getEffectiveLevel() + gl.setLevel(logging.ERROR + 1) rep.add_tasks() except KeyExistsError: pass # `rep` was produced with Reporter.from_scenario() + finally: + gl.setLevel(level) From a14a4d8a9c063b11171a556e870cb3996c6b8072 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 21 Apr 2022 14:47:49 +0200 Subject: [PATCH 153/220] Don't squash existing parameter data in add_simulated_solution() --- message_ix_models/report/sim.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index 6d73041ff4..95f48268fe 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -105,14 +105,23 @@ def add_simulated_solution(rep: Reporter, info: ScenarioInfo, data: Dict = None) # Add the set elements rep.add(RENAME_DIMS.get(name, name), quote(info.set[name])) elif item_info["ix_type"] in ("par", "var"): + # Retrieve an existing key for `name` + try: + full_key = rep.full_key(name) + except KeyError: + full_key = None # Not present in `rep` + + # Simulated data for name item_data = data.get(name, {}) - key, qty = simulate_qty(name, item_info, **item_data) - if name in rep and not item_data: - continue # No data; don't overwrite existing task + if full_key and not item_data: + # Don't overwrite existing task with empty data + continue - # log.debug(f"{key}\n{qty}") + # Store simulated data for this quantity + key, qty = simulate_qty(name, item_info, **item_data) rep.add(key, qty, sums=True) + # log.debug(f"{key}\n{qty}") # Prepare the base MESSAGEix computations try: From c40835314e4bb867d39fa0fb5c55496545cb0120 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 21 Apr 2022 16:23:28 +0200 Subject: [PATCH 154/220] Use silence_log in add_simulated_solution() --- message_ix_models/report/sim.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index 95f48268fe..7c0d7eb495 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -12,6 +12,8 @@ from message_ix_models import ScenarioInfo from pandas.api.types import is_scalar +from message_data.tools import silence_log + # Shorthand for MESSAGE_VARS, below def item(ix_type, idx_names): @@ -124,12 +126,8 @@ def add_simulated_solution(rep: Reporter, info: ScenarioInfo, data: Dict = None) # log.debug(f"{key}\n{qty}") # Prepare the base MESSAGEix computations - try: - gl = logging.getLogger("genno") - level = gl.getEffectiveLevel() - gl.setLevel(logging.ERROR + 1) - rep.add_tasks() - except KeyExistsError: - pass # `rep` was produced with Reporter.from_scenario() - finally: - gl.setLevel(level) + with silence_log("genno", logging.CRITICAL): + try: + rep.add_tasks() + except KeyExistsError: + pass # `rep` was produced with Reporter.from_scenario() From 5f3702b92901cf577191f715c66eed1aa78f6145 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 22 Apr 2022 12:07:47 +0200 Subject: [PATCH 155/220] Promote legacy reporting docs to nav menu; cross-link with others --- doc/api/report/index.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 7af5ecad23..7f18e1ed36 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -7,7 +7,11 @@ Reporting See also: - ``global.yaml``, the :doc:`reporting/default-config`. -- Documentation for :mod:`genno`, :mod:`ixmp.reporting`, and :mod:`message_ix.reporting`. +- Documentation for :mod:`genno` (:doc:`genno:index`), :mod:`ixmp.reporting`, and :mod:`message_ix.reporting`. +- :doc:`/reference/tools/post_processing`, still in use. +- Documentation for reporting specific to certain model variants: + + - :doc:`/reference/model/transport/report` - `“Reporting” project board `_ on GitHub for the initial development of these features. .. toctree:: From 63161957f922650f956a7c2db7051f204af0ffe6 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 6 May 2022 15:59:52 +0200 Subject: [PATCH 156/220] Check that simulated_qty() do not lack dimension labels --- message_ix_models/report/sim.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index 7c0d7eb495..77f72e0a06 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -81,9 +81,11 @@ def simulate_qty(name: str, item_info: dict, **data_kw: Any) -> Tuple[Key, Quant # explicitly. args["index"] = [0] - return Key(name, dims), Quantity( - pd.DataFrame(**args).set_index(dims) if len(dims) else pd.DataFrame(**args) - ) + data = pd.DataFrame(**args) + # Data must be entirely empty, or complete + assert not data.isna().any().any() or data.isna().all().all(), data + + return Key(name, dims), Quantity(data.set_index(dims) if len(dims) else data) def add_simulated_solution(rep: Reporter, info: ScenarioInfo, data: Dict = None): From f4b2d08dfec0e937fc76707287e79d3fde748b77 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 11 May 2022 23:11:30 +0200 Subject: [PATCH 157/220] Check for duplicate data in simulate_qty() --- message_ix_models/report/sim.py | 1 + 1 file changed, 1 insertion(+) diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index 77f72e0a06..9fa43bc1c9 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -84,6 +84,7 @@ def simulate_qty(name: str, item_info: dict, **data_kw: Any) -> Tuple[Key, Quant data = pd.DataFrame(**args) # Data must be entirely empty, or complete assert not data.isna().any().any() or data.isna().all().all(), data + assert not data.duplicated().any(), f"Duplicate data for simulated {repr(name)}" return Key(name, dims), Quantity(data.set_index(dims) if len(dims) else data) From 2200972247d6107e265ad7f7a1d360b5584b03fd Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 11 May 2022 23:35:09 +0200 Subject: [PATCH 158/220] Satisfy mypy for #337 --- message_ix_models/report/sim.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index 9fa43bc1c9..8f7fe58499 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -81,12 +81,12 @@ def simulate_qty(name: str, item_info: dict, **data_kw: Any) -> Tuple[Key, Quant # explicitly. args["index"] = [0] - data = pd.DataFrame(**args) + df = pd.DataFrame(**args) # Data must be entirely empty, or complete - assert not data.isna().any().any() or data.isna().all().all(), data - assert not data.duplicated().any(), f"Duplicate data for simulated {repr(name)}" + assert not df.isna().any().any() or df.isna().all().all(), data + assert not df.duplicated().any(), f"Duplicate data for simulated {repr(name)}" - return Key(name, dims), Quantity(data.set_index(dims) if len(dims) else data) + return Key(name, dims), Quantity(df.set_index(dims) if len(dims) else df) def add_simulated_solution(rep: Reporter, info: ScenarioInfo, data: Dict = None): From 416042a6b639b15de483c82f485f7d30816bcc49 Mon Sep 17 00:00:00 2001 From: OFR-IIASA Date: Wed, 15 Jun 2022 16:24:54 +0200 Subject: [PATCH 159/220] Update files/directories to reduce lint-check exclusions (#384) * Apply code style to * message_data/scenario_generation * message_data/tools/post_processing * message_data/tools/prep_submission.py * message_data/tools/utilities * message_data/model/cli and create * message_data/projects/cd_links * message_data/projects/engage * message_data/tests/tools * Apply isort to tests * Update pyproject.toml to remove message_data/model/cli and create * Remove isort exemptions for all tests * Remove isort exemptions for message_data/tools/*.py --- message_ix_models/tests/test_report.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 44fa4e4f96..2f7a669ea6 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -2,12 +2,11 @@ import pandas as pd import pandas.testing as pdt import pytest -from message_ix_models.util import private_data_path from message_ix_models import testing +from message_ix_models.util import private_data_path from message_data.reporting import prepare_reporter, util - # Minimal reporting configuration for testing MIN_CONFIG = { "units": { From d6b6ee949e4e4003ad0db37a2252655edace512f Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 30 May 2022 12:41:33 +0200 Subject: [PATCH 160/220] Use "::" in genno keys in data/report/global.yaml E.g. "foo:iamc" is ambiguous with a quantity named "foo" with the single dimension "iamc"; use instead "foo::iamc" where "iamc" is unambiguously a tag. --- message_ix_models/data/report/global.yaml | 82 +++++++++++------------ 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index d883e4a318..bfcf20c299 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -1043,65 +1043,65 @@ iamc: report: - key: pe test members: -# - Primary Energy|Biomass:iamc - - Primary Energy|Coal:iamc - - Primary Energy|Gas:iamc - - Primary Energy|Hydro:iamc - - Primary Energy|Nuclear:iamc - - Primary Energy|Solar:iamc - - Primary Energy|Wind:iamc +# - Primary Energy|Biomass::iamc + - Primary Energy|Coal::iamc + - Primary Energy|Gas::iamc + - Primary Energy|Hydro::iamc + - Primary Energy|Nuclear::iamc + - Primary Energy|Solar::iamc + - Primary Energy|Wind::iamc - key: gdp test members: - - GDP|MER:iamc - - GDP|PPP:iamc + - GDP|MER::iamc + - GDP|PPP::iamc - key: se test members: - - Secondary Energy:iamc - - Secondary Energy|Electricity|Fossil:iamc - - Secondary Energy|Electricity|Fossil|w/ CCS:iamc - - Secondary Energy|Electricity|Fossil|w/o CCS:iamc - - Secondary Energy|Gases:iamc - - Secondary Energy|Liquids:iamc - - Secondary Energy|Solids:iamc + - Secondary Energy::iamc + - Secondary Energy|Electricity|Fossil::iamc + - Secondary Energy|Electricity|Fossil|w/ CCS::iamc + - Secondary Energy|Electricity|Fossil|w/o CCS::iamc + - Secondary Energy|Gases::iamc + - Secondary Energy|Liquids::iamc + - Secondary Energy|Solids::iamc - key: emissions members: - - Emissions:iamc + - Emissions::iamc - key: CH4 emissions members: - - Emissions|CH4:iamc - - land_out CH4:iamc - # - Emissions|CH4|Fossil Fuels and Industry:iamc - # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive:iamc - # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive:iamc + - Emissions|CH4::iamc + - land_out CH4::iamc + # - Emissions|CH4|Fossil Fuels and Industry::iamc + # - Emissions|CH4|Energy|Supply|Gases|Biomass|Fugitive::iamc + # - Emissions|CH4|Energy|Supply|Gases|Natural Gas|Fugitive::iamc + # - Emissions|CH4|Energy|Supply|Solids|Biomass|Fugitive::iamc + # - Emissions|CH4|Energy|Supply|Solids|Coal|Fugitive::iamc - key: price test members: - - Price:iamc - - Price|Carbon:iamc + - Price::iamc + - Price|Carbon::iamc # commented: see above - # - Price w/o carbon:iamc + # - Price w/o carbon::iamc # TODO ensure these are covered by the preferred method, above, then remove # these - - Price (legacy)|Primary Energy wo carbon price|Biomass:iamc - - Price (legacy)|Primary Energy wo carbon price|Coal:iamc - - Price (legacy)|Primary Energy wo carbon price|Gas:iamc - - Price (legacy)|Primary Energy wo carbon price|Oil:iamc - - Price (legacy)|Secondary Energy wo carbon price|Electricity:iamc - - Price (legacy)|Secondary Energy wo carbon price|Hydrogen:iamc - - Price (legacy)|Secondary Energy wo carbon price|Liquids|Biomass:iamc - - Price (legacy)|Secondary Energy wo carbon price|Liquids|Oil:iamc + - Price (legacy)|Primary Energy wo carbon price|Biomass::iamc + - Price (legacy)|Primary Energy wo carbon price|Coal::iamc + - Price (legacy)|Primary Energy wo carbon price|Gas::iamc + - Price (legacy)|Primary Energy wo carbon price|Oil::iamc + - Price (legacy)|Secondary Energy wo carbon price|Electricity::iamc + - Price (legacy)|Secondary Energy wo carbon price|Hydrogen::iamc + - Price (legacy)|Secondary Energy wo carbon price|Liquids|Biomass::iamc + - Price (legacy)|Secondary Energy wo carbon price|Liquids|Oil::iamc # NB for "Price|Secondary Energy|Liquids|Oil", the legacy reporting inserts a # zero matrix. - - Price (legacy)|Final Energy wo carbon price|Residential|Electricity:iamc - - Price (legacy)|Final Energy wo carbon price|Residential|Gases|Natural Gas:iamc - - Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Biomass:iamc - - Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Oil:iamc - - Price (legacy)|Final Energy wo carbon price|Residential|Solids|Biomass:iamc - - Price (legacy)|Final Energy wo carbon price|Residential|Solids|Coal:iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Electricity::iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Gases|Natural Gas::iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Biomass::iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Liquids|Oil::iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Solids|Biomass::iamc + - Price (legacy)|Final Energy wo carbon price|Residential|Solids|Coal::iamc From 05dc7e2bf7330729772869bb3393eb5d66890456 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 30 May 2022 12:42:05 +0200 Subject: [PATCH 161/220] Only infer full set of dimensions in prepare_reporter() if none given --- message_ix_models/report/__init__.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 62f734fa23..453c5ad5ed 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -5,6 +5,7 @@ from typing import Callable, List, Union import genno.config +from genno import Key from genno.compat.pyam import iamc as handle_iamc from message_ix import Scenario, Reporter from message_ix_models.util import local_data_path, private_data_path @@ -243,8 +244,8 @@ def prepare_reporter( callback(rep) if key: - # If needed, get the full key for *quantity* - key = rep.infer_keys(key) + # If just a bare name like "ACT" is given, infer the full key + key = rep.infer_keys(key) if Key.bare_name(key) else key if output_path and not output_path.is_dir(): # Add a new computation that writes *key* to the specified file From a06d2b2ed41c4e9b0621b35d36d268dee81cbcd7 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 25 Jul 2022 23:47:40 +0200 Subject: [PATCH 162/220] Use Context to pass options to report(), prepare_reporter() - Simplify report() signature. - Document reporting settings/options. - Make same Context available to module callbacks. --- message_ix_models/report/__init__.py | 258 ++++++++++++++++----------- 1 file changed, 150 insertions(+), 108 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 453c5ad5ed..03ef3dc70c 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -2,15 +2,16 @@ from copy import deepcopy from functools import partial from pathlib import Path -from typing import Callable, List, Union +from typing import Callable, List, Optional, Tuple import genno.config +from dask.core import literal from genno import Key from genno.compat.pyam import iamc as handle_iamc -from message_ix import Scenario, Reporter +from message_ix import Reporter, Scenario +from message_ix_models import Context from message_ix_models.util import local_data_path, private_data_path - -from . import computations, util +from message_ix_models.util._logging import mark_time __all__ = [ @@ -97,164 +98,205 @@ def cb(rep: Reporter): CALLBACKS.append(callback) -def report(scenario, key=None, config=None, output_path=None, dry_run=False, **kwargs): - """Run complete reporting on *scenario* with output to *output_path*. +def report(context: Context): + """Run complete reporting on a :class:`.message_ix.Scenario`. - This function provides a common interface to call both the 'new' - (:mod:`.reporting`) and 'legacy' (:mod:`.tools.post_processing`) reporting - codes. + This function provides a single, common interface to call both the 'new' + (:mod:`.reporting`) and 'legacy' (:mod:`.tools.post_processing`) reporting codes. - .. todo:: accept a :class:`.Context` object instead of a large set of options. + The code responds to the following settings on `context`: - Parameters - ---------- - scenario : Scenario - Solved Scenario to be reported. - key : str or Key - Key of the report or quantity to be computed. Default: ``'default'``. - config : Path-like, optional - Path to reporting configuration file. Default: :file:`global.yaml`. - output_path : Path-like - Path to reporting - dry_run : bool, optional - Only show what would be done. - - Other parameters - ---------------- - path : Path-like - Deprecated alias for `output_path`. - legacy : dict - If given, the old-style reporting in - :mod:`.tools.post_processing.iamc_report_hackathon` is used, and - `legacy` is used as keyword arguments. - """ + .. list-table:: + :width: 100% + :widths: 25 25 50 + :header-rows: 1 - if "path" in kwargs: - log.warning("Deprecated: path= kwarg to report(); use output_path=") - if output_path: - raise RuntimeError( - f"Ambiguous: output_path={output_path}, path={kwargs['path']}" - ) - output_path = kwargs.pop("path") + * - Setting + - Type + - Description + * - scenario_info + - + - Identifies the (solved) scenario to be reported. + * - report/dry_run + - bool + - Only show what would be done. Default: :data:`False`. + * - report/legacy + - dict or None + - If given, the old-style reporting in :mod:`.iamc_report_hackathon` is used, + with `legacy` as keyword arguments. + + As well: - if "legacy" in kwargs: + - ``report/key`` is set to ``default``, if not set. + - ``report/config`` is set to :file:`report/globa.yaml`, if not set. + + """ + if "legacy" in context.report: log.info("Using legacy tools.post_processing.iamc_report_hackathon") from message_data.tools.post_processing import iamc_report_hackathon - legacy_args = dict(merge_hist=True) - legacy_args.update(**kwargs["legacy"]) + # Default settings + context.report["legacy"].setdefault("merge_hist", True) + + # Retrieve the Scenario and Platform + scenario = context.get_scenario() + mark_time() return iamc_report_hackathon.report( - mp=scenario.platform, - scen=scenario, - **legacy_args, + mp=scenario.platform, scen=scenario, **context.report["legacy"] ) # Default arguments - key = key or "default" - config = config or private_data_path("report", "global.yaml") + context.report.setdefault("key", "default") + context.report.setdefault("config", private_data_path("report", "global.yaml")) - rep, key = prepare_reporter(scenario, config, key, output_path) + rep, key = prepare_reporter(context) - log.info(f"Prepare to report {'(DRY RUN)' if dry_run else ''}") + log.info(f"Prepare to report {'(DRY RUN)' if context.dry_run else ''}") log.info(key) - log.log(logging.INFO if dry_run else logging.DEBUG, rep.describe(key)) + log.log( + logging.INFO if (context.dry_run or context.verbose) else logging.DEBUG, + "\n" + rep.describe(key), + ) + mark_time() - if dry_run: + if context.dry_run: return result = rep.get(key) - msg = f" written to {output_path}" if output_path else f":\n{result}" - log.info(f"Result{msg}") + # Display information about the result + op = rep.graph["config"]["output_path"] + log.info("Result" + (f" written to {op}" if op else f":\n{result}")) def prepare_reporter( - scenario_or_reporter: Union[Scenario, Reporter], - config, - key=None, - output_path=None, -): - """Prepare to report *key* from *scenario*. - - .. todo:: accept a :class:`.Context` object instead of a growing set of options. + context: Context, + scenario: Optional[Scenario] = None, + reporter: Optional[Reporter] = None, +) -> Tuple[Reporter, Key]: + """Return a :class:`.Reporter` and `key` prepared to report a :class:`.Scenario`. Parameters ---------- - scenario : ixmp.Scenario - Scenario containing a solution, to be reported. - config : os.Pathlike or dict-like - Reporting configuration path or dictionary. - key : str or ixmp.reporting.Key, optional - Quantity or node to compute. The computation is not triggered (i.e. - :meth:`get ` is not called); but the - corresponding, full-resolution Key, if any, is returned. - output_path : os.Pathlike, optional - If given, a computation ``cli-output`` is added to the Reporter which writes - `key` to this path. + context : Context + Containing settings in the ``report/*`` tree. + scenario : message_ix.Scenario, optional + Scenario to report. If not given, :meth:`.Context.get_scenario` is used to + retrieve a Scenario. + reporter : .Reporter, optional + Existing reporter to extend with computations. If not given, it is created + using :meth:`.Reporter.from_scenario`. + + The code responds to the following settings on `context`: + + .. list-table:: + :width: 100% + :widths: 25 25 50 + :header-rows: 1 + + * - Setting + - Type + - Description + * - scenario_info + - + - Identifies the (solved) scenario to be reported. + * - report/key + - str or :class:`ixmp.reporting.Key` + - Quantity or node to compute. The computation is not triggered (i.e. + :meth:`get ` is not called); but the + corresponding, full-resolution Key, if any, is returned. + * - report/config + - dict or Path-like or None + - If :class:`dict`, then this is passed to :meth:`.Reporter.configure`. If + Path-like, then this is the path to the reporting configuration file. If not + given, defaults to :file:`report/global.yaml`. + * - report/output_path + - Path-like, optional + - Path to write reporting outputs. If given, a computation ``cli-output`` is + added to the Reporter which writes ``report/key`` to this path. Returns ------- .Reporter - Reporter prepared with MESSAGE-GLOBIOM calculations. + Reporter prepared with MESSAGEix-GLOBIOM calculations; if `reporter` is given, + this is a reference to the same object. .Key - Same as `key`, but in full resolution, if any. - + Same as ``context.report["key"]`` if any, but in full resolution; else one of + ``default`` or ``cli-output`` according to the other settings. """ log.info("Prepare reporter") - if isinstance(scenario_or_reporter, Scenario): - # Create a Reporter for *scenario* - rep = Reporter.from_scenario(scenario_or_reporter) - has_solution = scenario_or_reporter.has_solution() - else: - rep = scenario_or_reporter + if reporter: + # Existing `Reporter` provided + rep = reporter has_solution = True + if scenario: + log.warning(f"{scenario = } argument ignored") + else: + # Retrieve the scenario + scenario = scenario or context.get_scenario() + # Create a new Reporter + rep = Reporter.from_scenario(scenario) + has_solution = scenario.has_solution() # Append the message_data computations - rep.modules.append(computations) - - # Apply configuration - if isinstance(config, dict): - if len(config): - # Deepcopy to avoid destructive operations below - config = deepcopy(config) - else: - config = dict(path=private_data_path("report", "global.yaml")) + rep.require_compat("message_data.reporting.computations") + rep.require_compat("message_data.tools.gdp_pop") + + # Handle `report/config` setting passed from calling code + context.report.setdefault("config", dict()) + if isinstance(context.report["config"], dict): + # Dictionary of existing settings; deepcopy to protect from destructive + # operations + config = deepcopy(context.report["config"]) else: - # A non-dict *config* argument must be a Path - path = Path(config) - if not path.exists() and not path.is_absolute(): - # Try to resolve relative to the data directory - path = private_data_path("report", path) - assert path.exists(), path - config = dict(path=path) - + # Otherwise, must be Path-like + config = dict(path=Path(context.report["config"])) + + # Check location of the reporting config file + p = config.get("path") + if p: + if not p.exists() and not p.is_absolute(): + # Try to resolve relative to the data/ directory + p = private_data_path("report", p) + assert p.exists(), p + config.update(path=p) + + # Set defaults # Directory for reporting output - config.setdefault("output_path", output_path) + default_output_dir = local_data_path("report") + config.setdefault( + "output_path", context.report.get("output_path", default_output_dir) + ) # For genno.compat.plot # FIXME use a consistent set of names - config.setdefault("output_dir", local_data_path("report")) + config.setdefault("output_dir", default_output_dir) config["output_dir"].mkdir(exist_ok=True, parents=True) - # Handle configuration + # Pass configuration to the reporter rep.configure(**config, fail="raise" if has_solution else logging.NOTSET) + # Apply callbacks for other modules which define additional reporting computations for callback in CALLBACKS: - callback(rep) + callback(rep, context) + key = context.report.setdefault("key", None) if key: # If just a bare name like "ACT" is given, infer the full key - key = rep.infer_keys(key) if Key.bare_name(key) else key + if Key.bare_name(key): + msg = f"for {key!r}" + key = rep.infer_keys(key) + log.info(f"Infer {key!r} {msg}") - if output_path and not output_path.is_dir(): + if config["output_path"] and not config["output_path"].is_dir(): # Add a new computation that writes *key* to the specified file - write_report = rep.get_comp("write_report") - assert write_report - key = rep.add("cli-output", (partial(write_report, path=output_path), key)) + key = rep.add( + "cli-output", "write_report", key, literal(config["output_path"]) + ) else: - log.info(f"No key given; will use default: {repr(key)}") key = rep.default_key + log.info(f"No key given; will use default: {key!r}") log.info("…done") From abbf4eea3b11ea921d7207cc4608d8411ac0da0e Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 25 Jul 2022 23:48:30 +0200 Subject: [PATCH 163/220] Simplify reporting CLI; use --dry-run via common_params() --- message_ix_models/report/cli.py | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index f170056e95..ca0e8d8283 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -7,6 +7,7 @@ import yaml from message_ix_models.util import local_data_path, private_data_path from message_ix_models.util._logging import mark_time +from message_ix_models.util.click import common_params from message_data.reporting import register, report @@ -14,7 +15,7 @@ @click.command(name="report") -@click.pass_obj +@common_params("dry_run") @click.option( "--config", "config_file", @@ -37,9 +38,9 @@ type=click.Path(exists=True, dir_okay=False), help="Report multiple Scenarios listed in FILE.", ) -@click.option("--dry-run", "-n", is_flag=True, help="Only show what would be done.") @click.argument("key", default="message:default") -def cli(context, config_file, module, output_path, from_file, dry_run, key): +@click.pass_obj +def cli(context, config_file, module, output_path, from_file, key, dry_run): """Postprocess results. KEY defaults to the comprehensive report 'message:default', but may alsobe the name @@ -70,7 +71,7 @@ def cli(context, config_file, module, output_path, from_file, dry_run, key): name = f"message_data.{name}.report" __import__(name) register(sys.modules[name].callback) - log.info(f"Registered reporting config from {name}") + log.info(f"Registered reporting from {name}") # Prepare a list of Context objects, each referring to one Scenario contexts = [] @@ -109,14 +110,7 @@ def cli(context, config_file, module, output_path, from_file, dry_run, key): contexts.append(context) for ctx in contexts: - # Load the Platform and Scenario - scenario = context.get_scenario() + # Update with common settings + context["report"].update(config=config, key=key) + report(ctx) mark_time() - - report( - scenario, - config=config, - key=key, - output_path=ctx.output_path, - dry_run=dry_run, - ) From f43702e7f1a240464380829e99366edf0896e062 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 25 Jul 2022 23:51:17 +0200 Subject: [PATCH 164/220] Adjust reporting tests to new signatures --- message_ix_models/report/__init__.py | 4 ++- message_ix_models/tests/test_report.py | 47 +++++++++++--------------- 2 files changed, 23 insertions(+), 28 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 03ef3dc70c..5e4c950eca 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -52,9 +52,11 @@ def iamc(c: Reporter, info): renaming etc. while collapsing dimensions to the IAMC ones. The "var" key from the entry, if any, is passed to the `var` argument of that function. """ + from message_data.reporting.util import collapse + # Use message_data custom collapse() method info.setdefault("collapse", {}) - info["collapse"]["callback"] = partial(util.collapse, var=info.pop("var", [])) + info["collapse"]["callback"] = partial(collapse, var=info.pop("var", [])) # Add standard renames info.setdefault("rename", {}) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 2f7a669ea6..19fdcadf09 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -3,7 +3,6 @@ import pandas.testing as pdt import pytest from message_ix_models import testing -from message_ix_models.util import private_data_path from message_data.reporting import prepare_reporter, util @@ -15,18 +14,13 @@ } -def test_report_bare_res(request, session_context): +def test_report_bare_res(request, test_context): """Prepare and run the standard MESSAGE-GLOBIOM reporting on a bare RES.""" - ctx = session_context - - scenario = testing.bare_res(request, ctx, solved=True) + scenario = testing.bare_res(request, test_context, solved=True) # Prepare the reporter - reporter, key = prepare_reporter( - scenario, - config=private_data_path("report", "global.yaml"), - key="message:default", - ) + test_context.report.update(config="global.yaml", key="message::default") + reporter, key = prepare_reporter(test_context, scenario) # Get the default report # NB commented because the bare RES currently contains no activity, so the @@ -67,45 +61,44 @@ def test_apply_units(request, test_context, regions): config = MIN_CONFIG.copy() # Prepare the reporter - reporter, key = prepare_reporter(bare_res, config=config, key=qty) + test_context.report.update(config=config, key=qty) + reporter, key = prepare_reporter(test_context, bare_res) # Add some data to the scenario inv_cost = DATA_INV_COST.copy() bare_res.remove_solution() - bare_res.check_out() - bare_res.add_par("inv_cost", inv_cost) - bare_res.commit("") + with bare_res.transact(): + bare_res.add_par("inv_cost", inv_cost) bare_res.solve() # Units are retrieved USD_2005 = reporter.unit_registry.Unit("USD_2005") - assert reporter.get(key).attrs["_unit"] == USD_2005 + assert USD_2005 == reporter.get(key).units # Add data with units that will be discarded inv_cost["unit"] = ["USD", "kg"] bare_res.remove_solution() - bare_res.check_out() - bare_res.add_par("inv_cost", inv_cost) + with bare_res.transact(): + bare_res.add_par("inv_cost", inv_cost) + bare_res.solve() # Units are discarded - assert str(reporter.get(key).attrs["_unit"]) == "dimensionless" + assert "dimensionless" == str(reporter.get(key).units) # Update configuration, re-create the reporter - config["units"]["apply"] = {"inv_cost": "USD"} - bare_res.commit("") - bare_res.solve() - reporter, key = prepare_reporter(bare_res, config=config, key=qty) + test_context.report["config"]["units"]["apply"] = {"inv_cost": "USD"} + reporter, key = prepare_reporter(test_context, bare_res) # Units are applied - assert str(reporter.get(key).attrs["_unit"]) == USD_2005 + assert USD_2005 == reporter.get(key).units # Update configuration, re-create the reporter - config.update(INV_COST_CONFIG) - reporter, key = prepare_reporter(bare_res, config=config, key=qty) + test_context.report["config"].update(INV_COST_CONFIG) + reporter, key = prepare_reporter(test_context, bare_res) # Units are converted - df = reporter.get("Investment Cost:iamc").as_pandas() - assert set(df["unit"]) == {"EUR_2005"} + df = reporter.get("Investment Cost::iamc").as_pandas() + assert ["EUR_2005"] == df["unit"].unique() @pytest.mark.parametrize( From 71f81e7ce62757fcb7b40e2de1ccde6e12ecf048 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 5 Aug 2022 12:59:59 +0200 Subject: [PATCH 165/220] Expand commodity mapping in .reporting.util.REPLACE_DIMS Per @GamzeUnlu95 suggestions --- message_ix_models/report/util.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 00e692b939..9903f1a7b9 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -21,7 +21,9 @@ "Crudeoil": "Oil", "Electr": "Electricity", "Ethanol": "Liquids|Biomass", + "Gas": "Gases", "Lightoil": "Liquids|Oil", + "Methanol": "Liquids|Coal", # in land_out, for CH4 emissions from GLOBIOM "Agri_Ch4": "GLOBIOM|Emissions|CH4 Emissions Total", }, From b43747243e728701aa3b72a9fae2a29e524434a0 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 16 Aug 2022 18:25:13 +0200 Subject: [PATCH 166/220] Use "message::default" as default key in report CLI --- message_ix_models/report/cli.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index ca0e8d8283..3156b12f54 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -38,13 +38,13 @@ type=click.Path(exists=True, dir_okay=False), help="Report multiple Scenarios listed in FILE.", ) -@click.argument("key", default="message:default") +@click.argument("key", default="message::default") @click.pass_obj def cli(context, config_file, module, output_path, from_file, key, dry_run): """Postprocess results. - KEY defaults to the comprehensive report 'message:default', but may alsobe the name - of a specific model quantity, e.g. 'output'. + KEY defaults to the comprehensive report 'message::default', but may also be the + name of a specific model quantity, e.g. 'output'. --config can give either the absolute path to a reporting configuration file, or the stem (i.e. name without .yaml extension) of a file in data/report. From a6af3a63adb09c7a7ca02ea5ab94f66e8daba2a4 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 19 Aug 2022 11:43:33 +0200 Subject: [PATCH 167/220] Move model_periods and usage from transport to general reporting --- message_ix_models/data/report/global.yaml | 5 ++++ message_ix_models/report/computations.py | 30 ++++++++++++++++++++--- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/message_ix_models/data/report/global.yaml b/message_ix_models/data/report/global.yaml index bfcf20c299..ed0999a5dd 100644 --- a/message_ix_models/data/report/global.yaml +++ b/message_ix_models/data/report/global.yaml @@ -558,6 +558,11 @@ combine: general: +# List of model periods only, excluding those before or after +- key: "y::model" + comp: model_periods + inputs: [ "y", "cat_year" ] + - key: Liquids:nl-ya comp: apply_units inputs: [liquids:nl-ya] diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 2650f9bd4f..a67d0e0040 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -1,6 +1,7 @@ """Atomic reporting computations for MESSAGEix-GLOBIOM.""" import itertools import logging +from typing import List from iam_units import convert_gwp from iam_units.emissions import SPECIES @@ -9,10 +10,12 @@ log = logging.getLogger(__name__) - -def make_output_path(config, name): - """Return a path under the "output_dir" Path from the reporter configuration.""" - return config["output_dir"].joinpath(name) +__all__ = [ + "gwp_factors", + "make_output_path", + "model_periods", + "share_curtailment", +] def gwp_factors(): @@ -49,6 +52,25 @@ def gwp_factors(): ) +def make_output_path(config, name): + """Return a path under the "output_dir" Path from the reporter configuration.""" + return config["output_dir"].joinpath(name) + + +def model_periods(y: List[int], cat_year: pd.DataFrame) -> List[int]: + """Return the elements of `y` beyond the firstmodelyear of `cat_year`. + + .. todo:: move upstream, to :mod:`message_ix`. + """ + return list( + filter( + lambda year: cat_year.query("type_year == 'firstmodelyear'")["year"].item() + <= year, + y, + ) + ) + + # commented: currently unused # def share_cogeneration(fraction, *parts): # """Deducts a *fraction* from the first of *parts*.""" From 73eff7b18390f98892a3bacd29f565423eb7c5a0 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 23 Aug 2022 09:54:16 +0200 Subject: [PATCH 168/220] Simplify prepare_reporter() --- message_ix_models/report/__init__.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 5e4c950eca..01b2c0ca01 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -258,12 +258,11 @@ def prepare_reporter( # Check location of the reporting config file p = config.get("path") - if p: - if not p.exists() and not p.is_absolute(): - # Try to resolve relative to the data/ directory - p = private_data_path("report", p) - assert p.exists(), p - config.update(path=p) + if p and not p.exists() and not p.is_absolute(): + # Try to resolve relative to the data/ directory + p = private_data_path("report", p) + assert p.exists(), p + config.update(path=p) # Set defaults # Directory for reporting output From 3f311eaee3b88e82d3d2ccfe69a0e57b5fd4d19c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 7 Sep 2022 12:27:27 +0200 Subject: [PATCH 169/220] Roll import of reporting callbacks into register() --- message_ix_models/report/__init__.py | 33 ++++++++++++++++++++++++---- message_ix_models/report/cli.py | 7 ++---- 2 files changed, 31 insertions(+), 9 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 01b2c0ca01..cc4909fb9e 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,8 +1,9 @@ import logging +import sys from copy import deepcopy from functools import partial from pathlib import Path -from typing import Callable, List, Optional, Tuple +from typing import Callable, List, Optional, Tuple, Union import genno.config from dask.core import literal @@ -73,31 +74,55 @@ def iamc(c: Reporter, info): handle_iamc(c, info) -def register(callback) -> None: +def register(name_or_callback: Union[Callable, str]) -> str: """Register a callback function for :meth:`prepare_reporter`. Each registered function is called by :meth:`prepare_reporter`, in order to add or modify reporting keys. Specific model variants and projects can register a callback to extend the reporting graph. - Callback functions must take one argument, the Reporter: + Callback functions must take two arguments: the Reporter, and a :class:`.Context`: .. code-block:: python from message_ix.reporting import Reporter + from message_ix_models import Context from message_data.reporting import register - def cb(rep: Reporter): + def cb(rep: Reporter, ctx: Context): # Modify `rep` by calling its methods ... pass register(cb) + + Parameters + ---------- + name_or_callback + If a string, this may be a submodule of :mod:`.message_data`, in which case the + function :func:`message_data.{name}.report.callback` is used. Or, it may be a + fully-resolved package/module name, in which case :func:`{name}.callback` is + used. If a callable (function), it is used directly. """ + if isinstance(name_or_callback, str): + # Resolve a string + try: + # …as a submodule of message_data + name = f"message_data.{name_or_callback}.report" + __import__(name) + except ImportError: + # …as a fully-resolved package/module name + name = name_or_callback + __import__(name) + callback = sys.modules[name].callback + else: + callback = name_or_callback + if callback in CALLBACKS: log.info(f"Already registered: {callback}") return CALLBACKS.append(callback) + return name def report(context: Context): diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 3156b12f54..95a5f27757 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -1,5 +1,4 @@ import logging -import sys from copy import copy from pathlib import Path @@ -67,10 +66,8 @@ def cli(context, config_file, module, output_path, from_file, key, dry_run): # --module/-m: load extra reporting config from modules module = module or "" - for name in filter(lambda n: len(n), module.split(",")): - name = f"message_data.{name}.report" - __import__(name) - register(sys.modules[name].callback) + for m in filter(len, module.split(",")): + name = register(m) log.info(f"Registered reporting from {name}") # Prepare a list of Context objects, each referring to one Scenario From 5db34be7ca18971edbaa042903e575c98dbe9fa6 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 7 Sep 2022 13:01:18 +0200 Subject: [PATCH 170/220] Invoke legacy reporting through "mix-models report" CLI --- message_ix_models/report/__init__.py | 43 +++++++++++++++++----------- message_ix_models/report/cli.py | 8 ++++-- 2 files changed, 33 insertions(+), 18 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index cc4909fb9e..64786e468b 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -6,6 +6,7 @@ from typing import Callable, List, Optional, Tuple, Union import genno.config +import yaml from dask.core import literal from genno import Key from genno.compat.pyam import iamc as handle_iamc @@ -158,24 +159,12 @@ def report(context: Context): - ``report/config`` is set to :file:`report/globa.yaml`, if not set. """ - if "legacy" in context.report: - log.info("Using legacy tools.post_processing.iamc_report_hackathon") - from message_data.tools.post_processing import iamc_report_hackathon - - # Default settings - context.report["legacy"].setdefault("merge_hist", True) - - # Retrieve the Scenario and Platform - scenario = context.get_scenario() - mark_time() - - return iamc_report_hackathon.report( - mp=scenario.platform, scen=scenario, **context.report["legacy"] - ) - # Default arguments - context.report.setdefault("key", "default") context.report.setdefault("config", private_data_path("report", "global.yaml")) + context.report.setdefault("key", "default") + + if context.report.get("legacy"): + return _invoke_legacy_reporting(context) rep, key = prepare_reporter(context) @@ -197,6 +186,28 @@ def report(context: Context): log.info("Result" + (f" written to {op}" if op else f":\n{result}")) +def _invoke_legacy_reporting(context): + log.info("Using legacy tools.post_processing.iamc_report_hackathon") + from message_data.tools.post_processing import iamc_report_hackathon + + # Read a configuration file and update the arguments + config = context.report.pop("config") + if isinstance(config, Path) and config.exists(): + with open(config, "r") as f: + context.report["legacy"] = yaml.safe_load(f) + + # Default settings + context.report["legacy"].setdefault("merge_hist", True) + + # Retrieve the Scenario and Platform + scenario = context.get_scenario() + mark_time() + + return iamc_report_hackathon.report( + mp=scenario.platform, scen=scenario, **context.report["legacy"] + ) + + def prepare_reporter( context: Context, scenario: Optional[Scenario] = None, diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 95a5f27757..3529371fd9 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -22,6 +22,7 @@ show_default=True, help="Path or stem for reporting config file.", ) +@click.option("--legacy", "-L", is_flag=True, help="Invoke legacy reporking.") @click.option( "--module", "-m", metavar="MODULES", help="Add extra reporting for MODULES." ) @@ -39,7 +40,7 @@ ) @click.argument("key", default="message::default") @click.pass_obj -def cli(context, config_file, module, output_path, from_file, key, dry_run): +def cli(context, config_file, legacy, module, output_path, from_file, key, dry_run): """Postprocess results. KEY defaults to the comprehensive report 'message::default', but may also be the @@ -70,6 +71,9 @@ def cli(context, config_file, module, output_path, from_file, key, dry_run): name = register(m) log.info(f"Registered reporting from {name}") + # Common settings to apply in all contexts + common = dict(config=config, key=key, legacy=legacy) + # Prepare a list of Context objects, each referring to one Scenario contexts = [] @@ -108,6 +112,6 @@ def cli(context, config_file, module, output_path, from_file, key, dry_run): for ctx in contexts: # Update with common settings - context["report"].update(config=config, key=key) + context["report"].update(common) report(ctx) mark_time() From 005fcb553b59e95882ed3b74cf3a2f84b5fc98e7 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 7 Sep 2022 13:12:31 +0200 Subject: [PATCH 171/220] Copy legacy reporting config files for materials from `material-R12-rebase` Full commit info: commit 4ae10cb560670143f717569a160e518f89b76fae (material-R12-rebase) Author: Paul Natsuo Kishimoto Date: Mon Sep 5 13:36:28 2022 +0200 Adjust key for message::default report --- message_ix_models/data/report/materials.yaml | 39 ++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 message_ix_models/data/report/materials.yaml diff --git a/message_ix_models/data/report/materials.yaml b/message_ix_models/data/report/materials.yaml new file mode 100644 index 0000000000..6d818a6470 --- /dev/null +++ b/message_ix_models/data/report/materials.yaml @@ -0,0 +1,39 @@ +# Legacy reporting config ("run config") for MESSAGEix-Materials + +report_config: + table_def: message_data.model.materials.report.tables + unit_yaml: materials_units.yaml + +run_tables: + LU_Agr_fert_int: + root: Fertilizer + active: False + function: retr_fertilizer_int + args: + units_nitrogen: t N/ha/yr + units_phosphorus: t P/ha/yr + + # Used with ENGAGE_SSP2_v417_tables.py, otherwise error + LU_glo: + root: GLOBIOM + active: False + function: retr_globiom + args: + units_ghg: Mt CO2eq/yr + units_co2: Mt CO2/yr + units_energy: EJ/yr + units_volume: Mm3 + units_area: million ha + + Glob_fdbk: + root: GLOBIOM Feedback + active: True + function: retr_globiom_feedback + args: + units_emi_CH4: Mt CH4/yr + units_emi_CO2: Mt CO2/yr + units_emi_N2O: kt N2O/yr + units_ene: EJ/yr + units_CPrc_co2: US$2005/tCO2 + units_CPrc_co2_outp: US$2005/t CO2 + units_gdp: billion US$2005/yr From 4929867670011cb0f5dbf27b275d9863d7888822 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 8 Sep 2022 15:33:27 +0200 Subject: [PATCH 172/220] Correct path to units file in report/materials.yaml --- message_ix_models/data/report/materials.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/data/report/materials.yaml b/message_ix_models/data/report/materials.yaml index 6d818a6470..b3000bdb60 100644 --- a/message_ix_models/data/report/materials.yaml +++ b/message_ix_models/data/report/materials.yaml @@ -1,8 +1,8 @@ # Legacy reporting config ("run config") for MESSAGEix-Materials report_config: - table_def: message_data.model.materials.report.tables - unit_yaml: materials_units.yaml + table_def: message_data.model.material.report.tables + unit_yaml: materials-units.yaml run_tables: LU_Agr_fert_int: From d5c147e79b6c45d1fda2f6a0e908540aa09965f0 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 13 Sep 2022 10:26:16 +0200 Subject: [PATCH 173/220] Always call Path.expanduser() and .mkdir() on reporting output paths --- message_ix_models/report/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 64786e468b..6b60e3df7f 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -309,7 +309,10 @@ def prepare_reporter( # For genno.compat.plot # FIXME use a consistent set of names config.setdefault("output_dir", default_output_dir) - config["output_dir"].mkdir(exist_ok=True, parents=True) + + for k in ("output_dir", "output_path"): + config[k] = config[k].expanduser() + config[k].mkdir(exist_ok=True, parents=True) # Pass configuration to the reporter rep.configure(**config, fail="raise" if has_solution else logging.NOTSET) From 95e17d818669fa4d203efffba2d7f05c0091e4f2 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 15 Sep 2022 13:47:25 +0200 Subject: [PATCH 174/220] Add remove_all_ts() reporting computation; use for NAVIGATE --- message_ix_models/report/computations.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index a67d0e0040..12280fde86 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -3,10 +3,11 @@ import logging from typing import List +import ixmp +import pandas as pd from iam_units import convert_gwp from iam_units.emissions import SPECIES from ixmp.reporting import Quantity -import pandas as pd log = logging.getLogger(__name__) @@ -14,6 +15,7 @@ "gwp_factors", "make_output_path", "model_periods", + "remove_all_ts", "share_curtailment", ] @@ -71,6 +73,26 @@ def model_periods(y: List[int], cat_year: pd.DataFrame) -> List[int]: ) +def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> None: + """Remove all time series data from `scenario. + + .. todo:: move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. + """ + data = scenario.timeseries() + log.warning(f"Remove {len(data)} rows of time series data from {scenario.url}") + + if dump: + raise NotImplementedError + + scenario.check_out() + try: + scenario.remove_timeseries(data) + except Exception: + scenario.discard_changes() + else: + scenario.commit(f"Remove time serie data ({__name__}.remove_all_ts)") + + # commented: currently unused # def share_cogeneration(fraction, *parts): # """Deducts a *fraction* from the first of *parts*.""" From 96aa8394ec4aed9b61727825392d23f35c67ef08 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 15 Sep 2022 16:15:00 +0200 Subject: [PATCH 175/220] Use timeseries_only=True in remove_all_ts(); correct usage --- message_ix_models/report/computations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 12280fde86..39c79ea88f 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -84,7 +84,7 @@ def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> if dump: raise NotImplementedError - scenario.check_out() + scenario.check_out(timeseries_only=True) try: scenario.remove_timeseries(data) except Exception: From 9974f490cf176f8dc78f8af00b55997db3744167 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 19 Sep 2022 10:28:48 +0200 Subject: [PATCH 176/220] Always print result *and* path from reporting CLI --- message_ix_models/report/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 6b60e3df7f..9d4da7e661 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -182,8 +182,10 @@ def report(context: Context): result = rep.get(key) # Display information about the result - op = rep.graph["config"]["output_path"] - log.info("Result" + (f" written to {op}" if op else f":\n{result}")) + log.info(f"Result:\n\n{result}\n") + log.info( + f"File output(s), if any, written under:\n{rep.graph['config']['output_path']}" + ) def _invoke_legacy_reporting(context): From 0cd73ccc2374c5afefbf2823df7b85bec3082f68 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 22 Sep 2022 11:29:39 +0200 Subject: [PATCH 177/220] Reduce redundant logging in prepare_reporter() --- message_ix_models/report/__init__.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 9d4da7e661..6c98e91221 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -328,8 +328,10 @@ def prepare_reporter( # If just a bare name like "ACT" is given, infer the full key if Key.bare_name(key): msg = f"for {key!r}" - key = rep.infer_keys(key) - log.info(f"Infer {key!r} {msg}") + inferred = rep.infer_keys(key) + if inferred != key: + log.info(f"Infer {key!r} {msg}") + key = inferred if config["output_path"] and not config["output_path"].is_dir(): # Add a new computation that writes *key* to the specified file From ada94891e8715ac42d3a19251d6a2d2878dc9974 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 23 Sep 2022 17:25:04 +0200 Subject: [PATCH 178/220] Add a TODO in remove_all_ts() --- message_ix_models/report/computations.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 39c79ea88f..cfcae304ee 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -76,6 +76,9 @@ def model_periods(y: List[int], cat_year: pd.DataFrame) -> List[int]: def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> None: """Remove all time series data from `scenario. + .. todo:: improve to provide the option to remove only those periods in the model + horizon. + .. todo:: move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. """ data = scenario.timeseries() @@ -90,7 +93,7 @@ def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> except Exception: scenario.discard_changes() else: - scenario.commit(f"Remove time serie data ({__name__}.remove_all_ts)") + scenario.commit(f"Remove time series data ({__name__}.remove_all_ts)") # commented: currently unused From 2211d539d564070c9ba08237398cf3c1e6988273 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 27 Sep 2022 10:36:21 +0200 Subject: [PATCH 179/220] Fix NameError in .reporting.register() --- message_ix_models/report/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 6c98e91221..823ed6973a 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -117,6 +117,7 @@ def cb(rep: Reporter, ctx: Context): callback = sys.modules[name].callback else: callback = name_or_callback + name = callback.__name__ if callback in CALLBACKS: log.info(f"Already registered: {callback}") From 3b78a0090b7e4307dbde97a367e350c1aca1e416 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 27 Sep 2022 14:56:53 +0200 Subject: [PATCH 180/220] Satisfy mypy --- message_ix_models/report/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 823ed6973a..ea71a39bec 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -75,7 +75,7 @@ def iamc(c: Reporter, info): handle_iamc(c, info) -def register(name_or_callback: Union[Callable, str]) -> str: +def register(name_or_callback: Union[Callable, str]) -> Optional[str]: """Register a callback function for :meth:`prepare_reporter`. Each registered function is called by :meth:`prepare_reporter`, in order to add or @@ -121,7 +121,7 @@ def cb(rep: Reporter, ctx: Context): if callback in CALLBACKS: log.info(f"Already registered: {callback}") - return + return None CALLBACKS.append(callback) return name From d51aa4c42b3a08689c10caf87d636e601a884207 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 4 Nov 2022 14:58:51 +0100 Subject: [PATCH 181/220] Test invocation of iamc_report_hackathon.report() - Directly in .tests.tools.post_processing.test_iamc_report_hackathon. - Via messag_data.reporting.report(), in .tests.test_reporting. - Remove this module from .tests.test_import, as it now has minimal tests. --- message_ix_models/tests/test_report.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 19fdcadf09..93c9071b4d 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -4,7 +4,7 @@ import pytest from message_ix_models import testing -from message_data.reporting import prepare_reporter, util +from message_data.reporting import prepare_reporter, report, util # Minimal reporting configuration for testing MIN_CONFIG = { @@ -28,6 +28,22 @@ def test_report_bare_res(request, test_context): # reporter.get(key) +def test_report_legacy(caplog, request, test_context): + """Legacy reporting can be invoked through :func:`.report()`.""" + # Create a target scenario + test_context.set_scenario(testing.bare_res(request, test_context, solved=False)) + # Set dry_run = True to not actually perform any calculations or modifications + test_context.dry_run = True + # Ensure the legacy reporting is used, with default settings + test_context.report = {"legacy": dict()} + + # Call succeeds + report(test_context) + + # Dry-run message is logged + assert "DRY RUN" in caplog.messages + + # Common data for tests DATA_INV_COST = pd.DataFrame( [ From 46bd9a6bbec16d37859beff87a9e38cd7dc33385 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 4 Nov 2022 15:07:21 +0100 Subject: [PATCH 182/220] Adjust legacy reporting invocation by .reporting.report() - Don't set genno-related defaults when invoking legacy reporting. - Tolerate context["report"]["config"] key is missing. - Invoke legacy reporting if context["report"]["legacy"] is empty dict. - Pass context object (for .dry_run) to iamc_report_hackathon.report(). --- message_ix_models/report/__init__.py | 15 ++++++++------- message_ix_models/report/cli.py | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index ea71a39bec..3590809e14 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -160,13 +160,14 @@ def report(context: Context): - ``report/config`` is set to :file:`report/globa.yaml`, if not set. """ - # Default arguments - context.report.setdefault("config", private_data_path("report", "global.yaml")) - context.report.setdefault("key", "default") - - if context.report.get("legacy"): + legacy = context.report.get("legacy") + if legacy or isinstance(legacy, dict): return _invoke_legacy_reporting(context) + # Default arguments for genno-based reporting + context.report.setdefault("key", "default") + context.report.setdefault("config", private_data_path("report", "global.yaml")) + rep, key = prepare_reporter(context) log.info(f"Prepare to report {'(DRY RUN)' if context.dry_run else ''}") @@ -194,7 +195,7 @@ def _invoke_legacy_reporting(context): from message_data.tools.post_processing import iamc_report_hackathon # Read a configuration file and update the arguments - config = context.report.pop("config") + config = context.report.get("config") if isinstance(config, Path) and config.exists(): with open(config, "r") as f: context.report["legacy"] = yaml.safe_load(f) @@ -207,7 +208,7 @@ def _invoke_legacy_reporting(context): mark_time() return iamc_report_hackathon.report( - mp=scenario.platform, scen=scenario, **context.report["legacy"] + mp=scenario.platform, scen=scenario, context=context, **context.report["legacy"] ) diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 3529371fd9..c7e0c1f03d 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -22,7 +22,7 @@ show_default=True, help="Path or stem for reporting config file.", ) -@click.option("--legacy", "-L", is_flag=True, help="Invoke legacy reporking.") +@click.option("--legacy", "-L", is_flag=True, help="Invoke legacy reporting.") @click.option( "--module", "-m", metavar="MODULES", help="Add extra reporting for MODULES." ) From 0ef27f05761a1b58c2a6f6db3250d1126d45d7e8 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 4 Nov 2022 16:17:33 +0100 Subject: [PATCH 183/220] Warn about old args to .iamc_report_hackathon.report() --- message_ix_models/report/__init__.py | 31 +++++++++++++++++++++++++- message_ix_models/tests/test_report.py | 29 ++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 3590809e14..405e0fd812 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -4,6 +4,7 @@ from functools import partial from pathlib import Path from typing import Callable, List, Optional, Tuple, Union +from warnings import warn import genno.config import yaml @@ -127,7 +128,7 @@ def cb(rep: Reporter, ctx: Context): return name -def report(context: Context): +def report(context: Context, *args, **kwargs): """Run complete reporting on a :class:`.message_ix.Scenario`. This function provides a single, common interface to call both the 'new' @@ -160,6 +161,34 @@ def report(context: Context): - ``report/config`` is set to :file:`report/globa.yaml`, if not set. """ + # Handle deprecated usage that appears in: + # - .model.cli.new_baseline() + # - .model.create.solve() + # - .projects.covid.scenario_runner.ScenarioRunner.solve() + if isinstance(context, Scenario): + warn( + "Calling report(scenario, path, legacy=…); pass a Context instead", + category=DeprecationWarning, + ) + # Ensure `context` is actually a Context object for the following code + scenario = context + context = Context.get_instance(-1) + + # Transfer args, kwargs to context + context.set_scenario(scenario) + context.report["legacy"] = kwargs.pop("legacy") + + if len(args) + len(set(kwargs.keys()) & {"path"}) != 1: + raise TypeError( + f"Unknown mix of deprecated positional {args!r} " + f"and keyword arguments {kwargs!r}" + ) + elif len(args) == 1: + out_dir = args[0] + else: + out_dir = kwargs.pop("path") + context.report["legacy"].setdefault("out_dir", out_dir) + legacy = context.report.get("legacy") if legacy or isinstance(legacy, dict): return _invoke_legacy_reporting(context) diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 93c9071b4d..1e8974e2fa 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -28,10 +28,11 @@ def test_report_bare_res(request, test_context): # reporter.get(key) -def test_report_legacy(caplog, request, test_context): +def test_report_legacy(caplog, request, tmp_path, test_context): """Legacy reporting can be invoked through :func:`.report()`.""" # Create a target scenario - test_context.set_scenario(testing.bare_res(request, test_context, solved=False)) + scenario = testing.bare_res(request, test_context, solved=False) + test_context.set_scenario(scenario) # Set dry_run = True to not actually perform any calculations or modifications test_context.dry_run = True # Ensure the legacy reporting is used, with default settings @@ -42,6 +43,30 @@ def test_report_legacy(caplog, request, test_context): # Dry-run message is logged assert "DRY RUN" in caplog.messages + caplog.clear() + + # Other deprecated usage + + # As called in .model.cli.new_baseline() and .model.create.solve(), with path as a + # positional argument + legacy_arg = dict( + ref_sol="True", # Must be literal "True" or "False" + merge_hist=True, + xlsx=test_context.get_local_path("rep_template.xlsx"), + ) + with ( + pytest.warns(DeprecationWarning, match="pass a Context instead"), + pytest.raises(TypeError, match="unexpected keyword argument 'xlsx'"), + ): + report(scenario, tmp_path, legacy=legacy_arg) + + # As called in .projects.covid.scenario_runner.ScenarioRunner.solve(), with path as + # a keyword argument + with ( + pytest.warns(DeprecationWarning, match="pass a Context instead"), + pytest.raises(TypeError, match="unexpected keyword argument 'xlsx'"), + ): + report(scenario, path=tmp_path, legacy=legacy_arg) # Common data for tests From 265702dc3bddb2ef6f22cdc094550eb4e7ce2f7f Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 4 Nov 2022 16:44:15 +0100 Subject: [PATCH 184/220] Satisfy mypy in .transport.test_data.assert_units() --- message_ix_models/report/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 9903f1a7b9..28780dd8b3 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -73,7 +73,7 @@ def as_quantity(info: Union[dict, str]) -> Quantity: """Convert values from a :class:`dict` to Quantity.""" if isinstance(info, str): - q = registry(info) + q = registry.Quantity(info) return Quantity(q.magnitude, units=q.units) else: data = info.copy() From 09134d5fd4523163f27b63620cd824129063ec55 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 7 Nov 2022 17:55:03 +0100 Subject: [PATCH 185/220] Simplify pass-through of legacy reporting args from CLI --- message_ix_models/report/__init__.py | 25 ++++++++++++++++--------- message_ix_models/report/cli.py | 6 +++++- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 405e0fd812..798c75bdfc 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -189,8 +189,7 @@ def report(context: Context, *args, **kwargs): out_dir = kwargs.pop("path") context.report["legacy"].setdefault("out_dir", out_dir) - legacy = context.report.get("legacy") - if legacy or isinstance(legacy, dict): + if "legacy" in context.report: return _invoke_legacy_reporting(context) # Default arguments for genno-based reporting @@ -220,25 +219,33 @@ def report(context: Context, *args, **kwargs): def _invoke_legacy_reporting(context): - log.info("Using legacy tools.post_processing.iamc_report_hackathon") + log.info("Using tools.post_processing.iamc_report_hackathon") from message_data.tools.post_processing import iamc_report_hackathon + # Convert "legacy" config to keyword arguments for .iamc_report_hackathon.report() + args = context.report.setdefault("legacy", dict()) + if not isinstance(args, dict): + raise TypeError( + f'Cannot handle Context["report"]["legacy"]={args!r} of type {type(args)}' + ) + # Read a configuration file and update the arguments config = context.report.get("config") if isinstance(config, Path) and config.exists(): with open(config, "r") as f: - context.report["legacy"] = yaml.safe_load(f) + args.update(yaml.safe_load(f)) # Default settings - context.report["legacy"].setdefault("merge_hist", True) + args.setdefault("merge_hist", True) # Retrieve the Scenario and Platform - scenario = context.get_scenario() + scen = context.get_scenario() + mp = scen.platform + mark_time() - return iamc_report_hackathon.report( - mp=scenario.platform, scen=scenario, context=context, **context.report["legacy"] - ) + # `context` is passed only for the "dry_run" setting + return iamc_report_hackathon.report(mp=mp, scen=scen, context=context, **args) def prepare_reporter( diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index c7e0c1f03d..1c3bbcc2c0 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -72,7 +72,11 @@ def cli(context, config_file, legacy, module, output_path, from_file, key, dry_r log.info(f"Registered reporting from {name}") # Common settings to apply in all contexts - common = dict(config=config, key=key, legacy=legacy) + common = dict(config=config, key=key) + + # --legacy/-L: cue report() to invoke the legacy, instead of genno-based reporting + if legacy: + common["legacy"] = dict() # Prepare a list of Context objects, each referring to one Scenario contexts = [] From b7509a7501da1edb8347885f8c3291d8738efe20 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 3 Oct 2022 13:42:57 +0200 Subject: [PATCH 186/220] Expand types handled by as_quantity() --- message_ix_models/report/util.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 28780dd8b3..5e0d232b28 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -70,16 +70,23 @@ } -def as_quantity(info: Union[dict, str]) -> Quantity: - """Convert values from a :class:`dict` to Quantity.""" +def as_quantity(info: Union[dict, float, str]) -> Quantity: + """Convert values from a :class:`dict` to Quantity. + + .. todo:: move upstream, to :mod:`genno`. + """ if isinstance(info, str): q = registry.Quantity(info) return Quantity(q.magnitude, units=q.units) - else: + elif isinstance(info, float): + return Quantity(info) + elif isinstance(info, dict): data = info.copy() dim = data.pop("_dim") unit = data.pop("_unit") return Quantity(pd.Series(data).rename_axis(dim), units=unit) + else: + raise TypeError(type(info)) def collapse(df: pd.DataFrame, var=[]) -> pd.DataFrame: From 16213f54a89d39191e3e11fd769b15f3a446c60b Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Mon, 3 Oct 2022 13:48:57 +0200 Subject: [PATCH 187/220] Adjust prepare_reporter for iiasa/message-ix-models#82 --- message_ix_models/report/__init__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 798c75bdfc..ba0a12e92d 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -323,6 +323,7 @@ def prepare_reporter( rep.require_compat("message_data.tools.gdp_pop") # Handle `report/config` setting passed from calling code + context.setdefault("report", dict()) context.report.setdefault("config", dict()) if isinstance(context.report["config"], dict): # Dictionary of existing settings; deepcopy to protect from destructive From 836c1478091e52594d01a6b0fdb3d9e9a086625f Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 4 Oct 2022 14:50:59 +0200 Subject: [PATCH 188/220] Sketch an integrated NAVIGATE workflow --- message_ix_models/report/__init__.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index ba0a12e92d..b7cb5c891c 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -128,6 +128,16 @@ def cb(rep: Reporter, ctx: Context): return name +def log_before(context, rep, key): + log.info(f"Prepare to report {'(DRY RUN)' if context.dry_run else ''}") + log.info(key) + log.log( + logging.INFO if (context.dry_run or context.verbose) else logging.DEBUG, + "\n" + rep.describe(key), + ) + mark_time() + + def report(context: Context, *args, **kwargs): """Run complete reporting on a :class:`.message_ix.Scenario`. @@ -198,13 +208,7 @@ def report(context: Context, *args, **kwargs): rep, key = prepare_reporter(context) - log.info(f"Prepare to report {'(DRY RUN)' if context.dry_run else ''}") - log.info(key) - log.log( - logging.INFO if (context.dry_run or context.verbose) else logging.DEBUG, - "\n" + rep.describe(key), - ) - mark_time() + log_before(context, rep, key) if context.dry_run: return From 751363c48e57795fe802548e79dfceac4164131c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 7 Oct 2022 15:35:14 +0200 Subject: [PATCH 189/220] Address warnings in Sphinx docs build Causes include incorrect references, malformed docstrings, incorrect ReST syntax. --- message_ix_models/report/computations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index cfcae304ee..20a8b19208 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -74,7 +74,7 @@ def model_periods(y: List[int], cat_year: pd.DataFrame) -> List[int]: def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> None: - """Remove all time series data from `scenario. + """Remove all time series data from `scenario`. .. todo:: improve to provide the option to remove only those periods in the model horizon. From c7c1e7dcb2d2a34768d7eeb88dacbec08bfe6ddf Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 14 Oct 2022 17:01:56 +0200 Subject: [PATCH 190/220] Allow specifying an initial year to .computations.remove_ts() - Rename from remove_all_ts(). - Log on level INFO, not WARNING. - Update usage in NAVIGATE reporting & workflow. --- message_ix_models/report/computations.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 20a8b19208..0440c0f2b0 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -15,7 +15,7 @@ "gwp_factors", "make_output_path", "model_periods", - "remove_all_ts", + "remove_ts", "share_curtailment", ] @@ -73,7 +73,9 @@ def model_periods(y: List[int], cat_year: pd.DataFrame) -> List[int]: ) -def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> None: +def remove_ts( + scenario: ixmp.Scenario, config: dict, after: int = None, dump: bool = False +) -> None: """Remove all time series data from `scenario`. .. todo:: improve to provide the option to remove only those periods in the model @@ -82,11 +84,17 @@ def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> .. todo:: move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. """ data = scenario.timeseries() - log.warning(f"Remove {len(data)} rows of time series data from {scenario.url}") + N = len(data) + count = f"{N}" - if dump: - raise NotImplementedError + if after: + query = f"{after} <= year" + data = data.query(query) + count = f"{len(data)} of {N} ({query})" + + log.info(f"Remove {count} rows of time series data from {scenario.url}") + # TODO improve scenario.transact() to allow timeseries_only=True; use here scenario.check_out(timeseries_only=True) try: scenario.remove_timeseries(data) @@ -95,6 +103,9 @@ def remove_all_ts(scenario: ixmp.Scenario, config: dict, dump: bool = False) -> else: scenario.commit(f"Remove time series data ({__name__}.remove_all_ts)") + if dump: + raise NotImplementedError + # commented: currently unused # def share_cogeneration(fraction, *parts): From f65a1e9e6309ebe4c628db738ddd3df4fe54834c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 8 Nov 2022 12:50:01 +0100 Subject: [PATCH 191/220] Address untyped/implicit optional errors from mypy --- message_ix_models/report/computations.py | 7 +++++-- message_ix_models/report/sim.py | 6 ++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 0440c0f2b0..fb66bcf89b 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -1,7 +1,7 @@ """Atomic reporting computations for MESSAGEix-GLOBIOM.""" import itertools import logging -from typing import List +from typing import List, Optional import ixmp import pandas as pd @@ -74,7 +74,10 @@ def model_periods(y: List[int], cat_year: pd.DataFrame) -> List[int]: def remove_ts( - scenario: ixmp.Scenario, config: dict, after: int = None, dump: bool = False + scenario: ixmp.Scenario, + config: dict, + after: Optional[int] = None, + dump: bool = False, ) -> None: """Remove all time series data from `scenario`. diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index 8f7fe58499..dcfb8f1d29 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -2,7 +2,7 @@ from collections import ChainMap, defaultdict from collections.abc import Mapping from copy import deepcopy -from typing import Any, Dict, Tuple +from typing import Any, Dict, Optional, Tuple import pandas as pd from dask.core import quote @@ -89,7 +89,9 @@ def simulate_qty(name: str, item_info: dict, **data_kw: Any) -> Tuple[Key, Quant return Key(name, dims), Quantity(df.set_index(dims) if len(dims) else df) -def add_simulated_solution(rep: Reporter, info: ScenarioInfo, data: Dict = None): +def add_simulated_solution( + rep: Reporter, info: ScenarioInfo, data: Optional[Dict] = None +): """Add a simulated model solution to `rep`, given `info` and `data`.""" # Populate the sets (from `info`, maybe empty) and pars (empty) to_add = deepcopy(MESSAGE_ITEMS) From c16c20aff77cbc561b4b5f43add2637de12afb27 Mon Sep 17 00:00:00 2001 From: GamzeUnlu95 Date: Fri, 9 Dec 2022 16:40:54 +0100 Subject: [PATCH 192/220] Add navigate_aggregates.csv --- message_ix_models/data/report/materials.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/message_ix_models/data/report/materials.yaml b/message_ix_models/data/report/materials.yaml index b3000bdb60..c2549e5050 100644 --- a/message_ix_models/data/report/materials.yaml +++ b/message_ix_models/data/report/materials.yaml @@ -3,6 +3,7 @@ report_config: table_def: message_data.model.material.report.tables unit_yaml: materials-units.yaml + aggr_def: 'navigate_aggregates.csv' run_tables: LU_Agr_fert_int: From 1847a8d06a5407bcd3933e4220d64d17716a5ac2 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 20 Jan 2023 16:06:03 +0100 Subject: [PATCH 193/220] Add .reporting.util.add_replacements() --- message_ix_models/report/__init__.py | 7 +++++++ message_ix_models/report/util.py | 24 +++++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index b7cb5c891c..53065dc96d 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -13,9 +13,12 @@ from genno.compat.pyam import iamc as handle_iamc from message_ix import Reporter, Scenario from message_ix_models import Context +from message_ix_models.model.structure import get_codes from message_ix_models.util import local_data_path, private_data_path from message_ix_models.util._logging import mark_time +from .util import add_replacements + __all__ = [ "prepare_reporter", @@ -362,6 +365,10 @@ def prepare_reporter( # Pass configuration to the reporter rep.configure(**config, fail="raise" if has_solution else logging.NOTSET) + # Add mappings for conversions to IAMC data structures + add_replacements("c", get_codes("commodity")) + add_replacements("t", get_codes("technology")) + # Apply callbacks for other modules which define additional reporting computations for callback in CALLBACKS: callback(rep, context) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 5e0d232b28..40a9e5482d 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,35 +1,33 @@ import logging -from typing import Union +from typing import Iterable, Union import pandas as pd from genno import Quantity from genno.compat.pyam.util import collapse as genno_collapse from iam_units import registry +from message_ix_models.util import eval_anno +from sdmx.model import Code log = logging.getLogger(__name__) #: Replacements used in :meth:`collapse`. -#: These are applied using :meth:`pandas.DataFrame.replace` with ``regex=True``; see -#: the documentation of that method. +#: These are applied using :meth:`pandas.DataFrame.replace` with ``regex=True``; see the +#: documentation of that method. #: #: - Applied to whole strings along each dimension. #: - These columns have :meth:`str.title` applied before these replacements. REPLACE_DIMS = { "c": { - "Crudeoil": "Oil", - "Electr": "Electricity", - "Ethanol": "Liquids|Biomass", - "Gas": "Gases", - "Lightoil": "Liquids|Oil", - "Methanol": "Liquids|Coal", # in land_out, for CH4 emissions from GLOBIOM "Agri_Ch4": "GLOBIOM|Emissions|CH4 Emissions Total", }, "l": { + # FIXME this is probably not generally applicable and should be removed "Final Energy": "Final Energy|Residential", }, + "t": dict(), } #: Replacements used in :meth:`collapse` after the 'variable' column is assembled. @@ -167,3 +165,11 @@ def collapse_gwp_info(df, var): # Remove columns from further processing [var.remove(c) for c in cols] return df.drop(cols, axis=1), var + + +def add_replacements(dim: str, codes: Iterable[Code]) -> None: + """Update :data:`REPLACE_DIMS` for dimension `dim` with values from `codes`.""" + for code in codes: + label = eval_anno(code, "report") + if label is not None: + REPLACE_DIMS[dim][f"{code.id.title()}$"] = label From 2649fa1696ff28f30e1e5ba06edfb3b7beafc330 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 24 Jan 2023 12:05:58 +0100 Subject: [PATCH 194/220] Handle partial sums in reporting "iamc:" config handler --- message_ix_models/report/__init__.py | 44 +++++++++++++++++++++++++--- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 53065dc96d..c8c63669bb 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -47,7 +47,7 @@ def _(c: Reporter, info): def iamc(c: Reporter, info): """Handle one entry from the ``iamc:`` config section. - This version overrides the version fron :mod:`genno.config` to: + This version overrides the version from :mod:`genno.config` to: - Set some defaults for the `rename` argument for :meth:`.convert_pyam`: @@ -57,12 +57,22 @@ def iamc(c: Reporter, info): - Use the MESSAGEix-GLOBIOM custom :func:`.util.collapse` callback to perform renaming etc. while collapsing dimensions to the IAMC ones. The "var" key from the entry, if any, is passed to the `var` argument of that function. + + - Provide optional partial sums. The "sums" key of the entry can give a list of + strings such as ``["x", "y", "x-y"]``; in this case, the conversion to IAMC format + is also applied to the same "base" key with a partial sum over the dimension "x"; + over "y", and over both "x" and "y". The corresponding dimensions are omitted from + "var". All data are concatenated. """ + # FIXME the upstream key "variable" for the configuration is confusing; choose a + # better name from message_data.reporting.util import collapse + # Common + base_key = Key.from_str_or_key(info["base"]) + # Use message_data custom collapse() method info.setdefault("collapse", {}) - info["collapse"]["callback"] = partial(collapse, var=info.pop("var", [])) # Add standard renames info.setdefault("rename", {}) @@ -75,8 +85,34 @@ def iamc(c: Reporter, info): ): info["rename"].setdefault(dim, target) - # Invoke the genno built-in handler - handle_iamc(c, info) + # Iterate over partial sums + # TODO move some or all of this logic upstream + keys = [] # Resulting keys + for dims in [""] + info.pop("sums", []): + # Dimensions to partial + # TODO allow iterable of str + dims = dims.split("-") + + label = f"{info['variable']} {'-'.join(dims) or 'full'}" + + # Modified copy of `info` for this invocation + _info = info.copy() + # Base key: use the partial sum over any `dims`. Use a distinct variable name. + _info.update(base=base_key.drop(*dims), variable=label) + # Exclude any summed dimensions from the IAMC Variable to be constructed + _info["collapse"].update( + callback=partial( + collapse, var=list(filter(lambda v: v not in dims, info["var"])) + ) + ) + + # Invoke the genno built-in handler + handle_iamc(c, _info) + + keys.append(f"{label}::iamc") + + # Concatenate together the multiple tables + c.add("concat", f"{info['variable']}::iamc", *keys) def register(name_or_callback: Union[Callable, str]) -> Optional[str]: From f6e2eb2bcaeadef1009de5192f0b4feb5f8e07cf Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Tue, 24 Jan 2023 12:47:12 +0100 Subject: [PATCH 195/220] Consolidate legacy reporting config for NAVIGATE Invoke hooks and return functions from .navigate.report. --- message_ix_models/data/report/materials.yaml | 40 -------------------- 1 file changed, 40 deletions(-) delete mode 100644 message_ix_models/data/report/materials.yaml diff --git a/message_ix_models/data/report/materials.yaml b/message_ix_models/data/report/materials.yaml deleted file mode 100644 index c2549e5050..0000000000 --- a/message_ix_models/data/report/materials.yaml +++ /dev/null @@ -1,40 +0,0 @@ -# Legacy reporting config ("run config") for MESSAGEix-Materials - -report_config: - table_def: message_data.model.material.report.tables - unit_yaml: materials-units.yaml - aggr_def: 'navigate_aggregates.csv' - -run_tables: - LU_Agr_fert_int: - root: Fertilizer - active: False - function: retr_fertilizer_int - args: - units_nitrogen: t N/ha/yr - units_phosphorus: t P/ha/yr - - # Used with ENGAGE_SSP2_v417_tables.py, otherwise error - LU_glo: - root: GLOBIOM - active: False - function: retr_globiom - args: - units_ghg: Mt CO2eq/yr - units_co2: Mt CO2/yr - units_energy: EJ/yr - units_volume: Mm3 - units_area: million ha - - Glob_fdbk: - root: GLOBIOM Feedback - active: True - function: retr_globiom_feedback - args: - units_emi_CH4: Mt CH4/yr - units_emi_CO2: Mt CO2/yr - units_emi_N2O: kt N2O/yr - units_ene: EJ/yr - units_CPrc_co2: US$2005/tCO2 - units_CPrc_co2_outp: US$2005/t CO2 - units_gdp: billion US$2005/yr From 6049f3ca2f8f687aff14c96c6fcccb79829dc46c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sat, 4 Feb 2023 13:22:51 +0100 Subject: [PATCH 196/220] Address mypy errors for #422 --- message_ix_models/report/util.py | 4 ++-- message_ix_models/tests/report/__init__.py | 0 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 message_ix_models/tests/report/__init__.py diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 40a9e5482d..08ac14dc6c 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,5 +1,5 @@ import logging -from typing import Iterable, Union +from typing import Dict, Iterable, Union import pandas as pd from genno import Quantity @@ -18,7 +18,7 @@ #: #: - Applied to whole strings along each dimension. #: - These columns have :meth:`str.title` applied before these replacements. -REPLACE_DIMS = { +REPLACE_DIMS: Dict[str, Dict[str, str]] = { "c": { # in land_out, for CH4 emissions from GLOBIOM "Agri_Ch4": "GLOBIOM|Emissions|CH4 Emissions Total", diff --git a/message_ix_models/tests/report/__init__.py b/message_ix_models/tests/report/__init__.py new file mode 100644 index 0000000000..e69de29bb2 From 757e1d11e4441711556e876456555af8ff72c679 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 9 Feb 2023 15:17:40 +0100 Subject: [PATCH 197/220] Handle missing "var" key in "iamc:" reporting config section --- message_ix_models/report/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index c8c63669bb..bbb4eb9f85 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -102,7 +102,7 @@ def iamc(c: Reporter, info): # Exclude any summed dimensions from the IAMC Variable to be constructed _info["collapse"].update( callback=partial( - collapse, var=list(filter(lambda v: v not in dims, info["var"])) + collapse, var=list(filter(lambda v: v not in dims, info.get("var", []))) ) ) From ddc281d80d6e8a6cd377ac89329af0558af54fea Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Feb 2023 10:44:51 +0100 Subject: [PATCH 198/220] Add .reporting.computations.from_url() --- message_ix_models/report/computations.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index fb66bcf89b..b512395b49 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -12,6 +12,7 @@ log = logging.getLogger(__name__) __all__ = [ + "from_url", "gwp_factors", "make_output_path", "model_periods", @@ -110,6 +111,16 @@ def remove_ts( raise NotImplementedError +def from_url(url: str) -> ixmp.TimeSeries: + """Return a :class:`ixmp.TimeSeries` (or :class:`ixmp.Scenario`) given its `url`. + + .. todo:: move upstream to :mod:`ixmp.reporting`. + """ + s, mp = ixmp.TimeSeries.from_url(url) + assert s is not None + return s + + # commented: currently unused # def share_cogeneration(fraction, *parts): # """Deducts a *fraction* from the first of *parts*.""" From 5c701636e4d06256312c209237a3cd814d167d26 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Feb 2023 10:45:39 +0100 Subject: [PATCH 199/220] Add .reporting.computations.get_ts() --- message_ix_models/report/computations.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index b512395b49..9b62fa7104 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -1,7 +1,7 @@ """Atomic reporting computations for MESSAGEix-GLOBIOM.""" import itertools import logging -from typing import List, Optional +from typing import List, Optional, Union import ixmp import pandas as pd @@ -13,6 +13,7 @@ __all__ = [ "from_url", + "get_ts", "gwp_factors", "make_output_path", "model_periods", @@ -21,6 +22,23 @@ ] +def get_ts( + scenario: ixmp.Scenario, + filters: Optional[dict] = None, + iamc: bool = False, + subannual: Union[bool, str] = "auto", +): + """Retrieve timeseries data from `scenario`. + + Corresponds to :meth:`ixmp.Scenario.timeseries`. + + .. todo:: move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. + """ + filters = filters or dict() + + return scenario.timeseries(iamc=iamc, subannual=subannual, **filters) + + def gwp_factors(): """Use :mod:`iam_units` to generate a Quantity of GWP factors. From ee40d688d91b3112e837c86093d1ee8787782b62 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Feb 2023 10:47:38 +0100 Subject: [PATCH 200/220] Add .reporting.util.copy_ts() --- message_ix_models/report/util.py | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 08ac14dc6c..7ee7d99c51 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -1,10 +1,12 @@ import logging -from typing import Dict, Iterable, Union +from typing import Dict, Iterable, Optional, Union import pandas as pd +from dask.core import literal from genno import Quantity from genno.compat.pyam.util import collapse as genno_collapse from iam_units import registry +from message_ix.reporting import Key, Reporter from message_ix_models.util import eval_anno from sdmx.model import Code @@ -167,6 +169,31 @@ def collapse_gwp_info(df, var): return df.drop(cols, axis=1), var +def copy_ts(rep: Reporter, other: str, filters: Optional[dict]) -> Key: + """Prepare `rep` to copy time series data from `other` to `scenario`. + + Parameters + ---------- + other_url : str + URL of the other scenario from which to copy time series data. + filters : dict, optional + Filters; passed via :func:`.store_ts` to :meth:`ixmp.TimeSeries.timeseries`. + + Returns + ------- + str + Key for the copy operation. + """ + + # A unique ID for this copy operation, to avoid collision if copy_ts() used multiple + # times + _id = f"{hash(other + repr(filters)):x}" + + k1 = rep.add("from_url", f"scenario {_id}", literal(other)) + k2 = rep.add("get_ts", f"ts data {_id}", k1, filters) + return rep.add("store_ts", f"copy ts {_id}", "scenario", k2) + + def add_replacements(dim: str, codes: Iterable[Code]) -> None: """Update :data:`REPLACE_DIMS` for dimension `dim` with values from `codes`.""" for code in codes: From 574ca98e27a50a4d5d668a61fad6b0d32607a8e9 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Feb 2023 10:48:01 +0100 Subject: [PATCH 201/220] Ensure "y::model" and "y0" keys are in all reporters --- message_ix_models/report/__init__.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index bbb4eb9f85..5bd4775571 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -2,6 +2,7 @@ import sys from copy import deepcopy from functools import partial +from operator import itemgetter from pathlib import Path from typing import Callable, List, Optional, Tuple, Union from warnings import warn @@ -401,10 +402,18 @@ def prepare_reporter( # Pass configuration to the reporter rep.configure(**config, fail="raise" if has_solution else logging.NOTSET) + # TODO perhaps move all default reporting computations for message_ix_models to a + # `CALLBACK` that is included by default. This would avoid defining any + # tasks in this function. # Add mappings for conversions to IAMC data structures add_replacements("c", get_codes("commodity")) add_replacements("t", get_codes("technology")) + # Ensure "y::model" and "y0" are present + # TODO move upstream, e.g. to message_ix + rep.add("model_periods", "y::model", "y", "cat_year") + rep.add("y0", itemgetter(0), "y::model") + # Apply callbacks for other modules which define additional reporting computations for callback in CALLBACKS: callback(rep, context) From 0a049f6fa4fe2fe05ba9f42c854339aac8ab8f26 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Feb 2023 12:53:06 +0100 Subject: [PATCH 202/220] Debug .reporting.computations.from_url() - Return message_ix.Scenario. - Keep references to objects to prevent them being GC'd. --- message_ix_models/report/computations.py | 30 ++++++++++++++++++------ 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 9b62fa7104..d3cc8ac7f4 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -4,6 +4,7 @@ from typing import List, Optional, Union import ixmp +import message_ix import pandas as pd from iam_units import convert_gwp from iam_units.emissions import SPECIES @@ -129,14 +130,29 @@ def remove_ts( raise NotImplementedError -def from_url(url: str) -> ixmp.TimeSeries: - """Return a :class:`ixmp.TimeSeries` (or :class:`ixmp.Scenario`) given its `url`. +# Non-weak references to objects to keep them alive +_FROM_URL_REF = set() - .. todo:: move upstream to :mod:`ixmp.reporting`. - """ - s, mp = ixmp.TimeSeries.from_url(url) - assert s is not None - return s +# def from_url(url: str) -> message_ix.Scenario: +# """Return a :class:`message_ix.Scenario` given its `url`. +# +# .. todo:: move upstream to :mod:`message_ix.reporting`. +# .. todo:: Create a similar method in :mod:`ixmp.reporting` to load and return +# :class:`ixmp.TimeSeries` (or :class:`ixmp.Scenario`) given its `url`. +# """ +# s, mp = message_ix.Scenario.from_url(url) +# assert s is not None +# _FROM_URL_REF.add(s) +# _FROM_URL_REF.add(mp) +# return s + +def from_url(url: str) -> ixmp.TimeSeries: + """Return a :class:`ixmp.TimeSeries` given its `url`.""" + ts, mp = ixmp.TimeSeries.from_url(url) + assert ts is not None + _FROM_URL_REF.add(ts) + _FROM_URL_REF.add(mp) + return ts # commented: currently unused From 3593ec14864e45bc969d9c90c46848fb3d702b20 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Feb 2023 12:53:47 +0100 Subject: [PATCH 203/220] Debug .reporting.util.copy_ts() Use dask.core.quote(), not dask.core.literal that it produces. --- message_ix_models/report/util.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 7ee7d99c51..8dafa5b554 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -2,7 +2,7 @@ from typing import Dict, Iterable, Optional, Union import pandas as pd -from dask.core import literal +from dask.core import quote from genno import Quantity from genno.compat.pyam.util import collapse as genno_collapse from iam_units import registry @@ -189,7 +189,7 @@ def copy_ts(rep: Reporter, other: str, filters: Optional[dict]) -> Key: # times _id = f"{hash(other + repr(filters)):x}" - k1 = rep.add("from_url", f"scenario {_id}", literal(other)) + k1 = rep.add("from_url", f"scenario {_id}", quote(other)) k2 = rep.add("get_ts", f"ts data {_id}", k1, filters) return rep.add("store_ts", f"copy ts {_id}", "scenario", k2) From f1fd123c31f03e85587d22d02d3eb1ed7b9cabfd Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 10 Feb 2023 17:26:39 +0100 Subject: [PATCH 204/220] Lint .reporting.computations --- message_ix_models/report/computations.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index d3cc8ac7f4..374cd58a44 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -1,10 +1,9 @@ """Atomic reporting computations for MESSAGEix-GLOBIOM.""" import itertools import logging -from typing import List, Optional, Union +from typing import Any, List, Optional, Set, Union import ixmp -import message_ix import pandas as pd from iam_units import convert_gwp from iam_units.emissions import SPECIES @@ -131,7 +130,7 @@ def remove_ts( # Non-weak references to objects to keep them alive -_FROM_URL_REF = set() +_FROM_URL_REF: Set[Any] = set() # def from_url(url: str) -> message_ix.Scenario: # """Return a :class:`message_ix.Scenario` given its `url`. @@ -146,6 +145,7 @@ def remove_ts( # _FROM_URL_REF.add(mp) # return s + def from_url(url: str) -> ixmp.TimeSeries: """Return a :class:`ixmp.TimeSeries` given its `url`.""" ts, mp = ixmp.TimeSeries.from_url(url) From 46357e16b274bab8f910bf784815fff827815eac Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Fri, 17 Feb 2023 14:44:58 +0100 Subject: [PATCH 205/220] Add compound_growth() genno computation, tests --- message_ix_models/report/computations.py | 14 +++++++++ .../tests/report/test_computations.py | 30 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 message_ix_models/tests/report/test_computations.py diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 374cd58a44..99d2abc512 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -5,6 +5,7 @@ import ixmp import pandas as pd +from genno.computations import pow from iam_units import convert_gwp from iam_units.emissions import SPECIES from ixmp.reporting import Quantity @@ -22,6 +23,19 @@ ] +def compound_growth(qty: Quantity, dim: str) -> Quantity: + """Compute compound growth along `dim` of `qty`.""" + # Compute intervals along `dim` + # The value at index d is the duration between d and the next index d+1 + c = qty.coords[dim] + dur = (c - c.shift({dim: 1})).fillna(0).shift({dim: -1}) + # - Raise the values of `qty` to the power of the duration. + # - Compute cumulative product along `dim` from the first index. + # - Shift, so the value at index d is the growth relative to the prior index d-1 + # - Fill in 1.0 for the first index. + return pow(qty, Quantity(dur)).cumprod(dim).shift({dim: 1}).fillna(1.0) + + def get_ts( scenario: ixmp.Scenario, filters: Optional[dict] = None, diff --git a/message_ix_models/tests/report/test_computations.py b/message_ix_models/tests/report/test_computations.py new file mode 100644 index 0000000000..1ff65b8abf --- /dev/null +++ b/message_ix_models/tests/report/test_computations.py @@ -0,0 +1,30 @@ +import xarray as xr +from genno import Quantity + +from message_data.reporting.computations import compound_growth + + +def test_compound_growth(): + """:func:`.compound_growth` on a 2-D quantity.""" + qty = Quantity( + xr.DataArray( + [ + [1.01, 1.0, 1.02, 1e6], # Varying growth rates for x=x1 + [1.0, 1.0, 1.0, 1.0], # No rates/constant for x=x2 + ], + coords=(["x1", "x2"], [2020, 2021, 2030, 2035]), + dims=("x", "t"), + ) + ) + + # Function runs + result = compound_growth(qty, "t") + + # Results have expected values + r1 = result.sel(x="x1") + assert all(1.0 == r1.sel(t=2020)) + assert all(1.01 == r1.sel(t=2021) / r1.sel(t=2020)) + assert all(1.0 == r1.sel(t=2030) / r1.sel(t=2021)) + assert all(1.02**5 == r1.sel(t=2035) / r1.sel(t=2030)) + + assert all(1.0 == result.sel(x="x2")) From 4738cb364e4422eced35a57fb20713f18d530723 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Sat, 1 Apr 2023 19:14:49 +0200 Subject: [PATCH 206/220] Adjust test_generate_workflow_cli --- message_ix_models/report/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 8dafa5b554..7c9b0a86e3 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -8,7 +8,7 @@ from iam_units import registry from message_ix.reporting import Key, Reporter from message_ix_models.util import eval_anno -from sdmx.model import Code +from sdmx.model.v21 import Code log = logging.getLogger(__name__) From 48c3edb04008ec1c65cb7f0a8bd86b5a2af05dd8 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 31 May 2023 15:19:56 +0200 Subject: [PATCH 207/220] Sort imports in 4 files --- message_ix_models/report/__init__.py | 1 - message_ix_models/report/util.py | 1 - 2 files changed, 2 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 5bd4775571..68e023a6e0 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -20,7 +20,6 @@ from .util import add_replacements - __all__ = [ "prepare_reporter", "register", diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index 7c9b0a86e3..c4436df392 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -10,7 +10,6 @@ from message_ix_models.util import eval_anno from sdmx.model.v21 import Code - log = logging.getLogger(__name__) From 66cffd8c16b610a73d5f36c9964ae13b257b0272 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 15:47:45 +0200 Subject: [PATCH 208/220] Adjust and sort imports in .report --- message_ix_models/report/__init__.py | 1 + message_ix_models/report/cli.py | 4 ++-- message_ix_models/report/sim.py | 4 ++-- message_ix_models/report/util.py | 3 ++- message_ix_models/tests/report/test_computations.py | 2 +- message_ix_models/tests/test_report.py | 4 ++-- 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 68e023a6e0..be1156ad06 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -13,6 +13,7 @@ from genno import Key from genno.compat.pyam import iamc as handle_iamc from message_ix import Reporter, Scenario + from message_ix_models import Context from message_ix_models.model.structure import get_codes from message_ix_models.util import local_data_path, private_data_path diff --git a/message_ix_models/report/cli.py b/message_ix_models/report/cli.py index 1c3bbcc2c0..b822b34b19 100644 --- a/message_ix_models/report/cli.py +++ b/message_ix_models/report/cli.py @@ -4,12 +4,12 @@ import click import yaml + +from message_ix_models.report import register, report from message_ix_models.util import local_data_path, private_data_path from message_ix_models.util._logging import mark_time from message_ix_models.util.click import common_params -from message_data.reporting import register, report - log = logging.getLogger(__name__) diff --git a/message_ix_models/report/sim.py b/message_ix_models/report/sim.py index dcfb8f1d29..d77ca88f4a 100644 --- a/message_ix_models/report/sim.py +++ b/message_ix_models/report/sim.py @@ -9,10 +9,10 @@ from ixmp.reporting import RENAME_DIMS from message_ix.models import MESSAGE_ITEMS from message_ix.reporting import Key, KeyExistsError, Quantity, Reporter -from message_ix_models import ScenarioInfo from pandas.api.types import is_scalar -from message_data.tools import silence_log +from message_ix_models import ScenarioInfo +from message_ix_models.util._logging import silence_log # Shorthand for MESSAGE_VARS, below diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index c4436df392..f4d13542f4 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -7,9 +7,10 @@ from genno.compat.pyam.util import collapse as genno_collapse from iam_units import registry from message_ix.reporting import Key, Reporter -from message_ix_models.util import eval_anno from sdmx.model.v21 import Code +from message_ix_models.util import eval_anno + log = logging.getLogger(__name__) diff --git a/message_ix_models/tests/report/test_computations.py b/message_ix_models/tests/report/test_computations.py index 1ff65b8abf..a8735076a9 100644 --- a/message_ix_models/tests/report/test_computations.py +++ b/message_ix_models/tests/report/test_computations.py @@ -1,7 +1,7 @@ import xarray as xr from genno import Quantity -from message_data.reporting.computations import compound_growth +from message_ix_models.report.computations import compound_growth def test_compound_growth(): diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 1e8974e2fa..1cf073c13a 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -2,9 +2,9 @@ import pandas as pd import pandas.testing as pdt import pytest -from message_ix_models import testing -from message_data.reporting import prepare_reporter, report, util +from message_ix_models import testing +from message_ix_models.report import prepare_reporter, report, util # Minimal reporting configuration for testing MIN_CONFIG = { From 48a3555c49105efaf6ef05845ec00cca339c7137 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 15:51:07 +0200 Subject: [PATCH 209/220] Migrate enhanced silence_log() from message_data --- message_ix_models/util/_logging.py | 39 +++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/message_ix_models/util/_logging.py b/message_ix_models/util/_logging.py index 65d5d228b0..580da22b06 100644 --- a/message_ix_models/util/_logging.py +++ b/message_ix_models/util/_logging.py @@ -13,21 +13,48 @@ "silence_log", ] +log = logging.getLogger(__name__) + @contextmanager -def silence_log(): - """Context manager to temporarily silence log output. +def silence_log(names=None, level=logging.ERROR): + """Context manager to temporarily quiet 1 or more loggers. + + Parameters + ---------- + names : str, optional + Space-separated names of loggers to quiet. + level : int, optional + Minimum level of log messages to allow. Examples -------- >>> with silence_log(): >>> log.warning("This message is not recorded.") """ - # Restore the log level at the end of the context - with preserve_log_level(): - # Set the level to a very high value - logging.getLogger(__name__.split(".")[0]).setLevel(100) + # Default: the top-level logger for the package containing this file + if names is None: + names = [__name__.split(".")[0], "message_data"] + elif isinstance(names, str): + names = [names] + + log.info(f"Set level={level} for logger(s): {' '.join(names)}") + + # Retrieve the logger objects + loggers = list(map(logging.getLogger, names)) + # Store their current levels + levels = [] + + try: + for logger in loggers: + levels.append(logger.getEffectiveLevel()) # Store the current levels + logger.setLevel(level) # Set the level yield + finally: + # Restore the levels + for logger, original_level in zip(loggers, levels): + logger.setLevel(original_level) + log.info("…restored.") @contextmanager From 63b385ed9c6e359f301d387be00f63c7319eeb5c Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 16:30:39 +0200 Subject: [PATCH 210/220] Update and integrate .report documentation --- doc/api/report/default-config.rst | 2 +- doc/api/report/index.rst | 109 ++++++++++++++++++++++-------- doc/index.rst | 1 + 3 files changed, 83 insertions(+), 29 deletions(-) diff --git a/doc/api/report/default-config.rst b/doc/api/report/default-config.rst index 78dcb92439..e4bd7b09ac 100644 --- a/doc/api/report/default-config.rst +++ b/doc/api/report/default-config.rst @@ -1,5 +1,5 @@ Default reporting configuration ******************************* -.. literalinclude:: ../../../data/report/global.yaml +.. literalinclude:: ../../../message_ix_models/data/report/global.yaml :language: yaml diff --git a/doc/api/report/index.rst b/doc/api/report/index.rst index 7f18e1ed36..2305ea8c25 100644 --- a/doc/api/report/index.rst +++ b/doc/api/report/index.rst @@ -1,32 +1,35 @@ -Reporting -********* +Reporting (:mod:`~.message_ix_models.report`) +********************************************* .. contents:: :local: See also: -- ``global.yaml``, the :doc:`reporting/default-config`. +- ``global.yaml``, the :doc:`default-config`. - Documentation for :mod:`genno` (:doc:`genno:index`), :mod:`ixmp.reporting`, and :mod:`message_ix.reporting`. -- :doc:`/reference/tools/post_processing`, still in use. -- Documentation for reporting specific to certain model variants: - - - :doc:`/reference/model/transport/report` -- `“Reporting” project board `_ on GitHub for the initial development of these features. .. toctree:: :hidden: - reporting/default-config + default-config + +Not public: + +- `“Reporting” project board `_ on GitHub for the initial implementation of these features. +- :doc:`m-data:/reference/tools/post_processing`, still in use. +- Documentation for reporting specific to certain model variants: + + - :doc:`m-data:/reference/model/transport/report` Introduction ============ See :doc:`the discussion in the MESSAGEix docs ` about the stack. -In short, :mod:`message_ix` cannot contain reporting code that references ``coal_ppl``, because not every model built on the MESSAGE framework will have a technology with this name. -Any reporting specific to ``coal_ppl`` must be in :mod:`message_data`, since all models in the MESSAGEix-GLOBIOM family will have this technology. +In short, :mod:`message_ix` must not contain reporting code that references ``coal_ppl``, because not every model built on the MESSAGE framework will have a technology with this name. +Any reporting specific to ``coal_ppl`` must be in :mod:`message_ix_models`, since all models in the MESSAGEix-GLOBIOM family will have this technology. -The basic **design pattern** of :mod:`message_data.reporting` is: +The basic **design pattern** of :mod:`message_ix_models.report` is: - A ``global.yaml`` file (i.e. in `YAML `_ format) that contains a *concise* yet *explicit* description of the reporting computations needed for a MESSAGE-GLOBIOM model. - :func:`~.reporting.prepare_reporter` reads the file and a Scenario object, and uses it to populate a new Reporter. @@ -35,7 +38,7 @@ The basic **design pattern** of :mod:`message_data.reporting` is: Features ======== -By combining these genno, ixmp, message_ix, and message_data features, the following functionality is provided. +By combining these genno, ixmp, message_ix, and message_ix_models features, the following functionality is provided. .. note:: If any of this does not appear to work as advertised, file a bug! @@ -64,9 +67,10 @@ Units base: example_var:a-b-c units: kJ +Continuous reporting +==================== -Continous reporting -=================== +.. note:: This section is no longer current. The IIASA TeamCity build server is configured to automatically run the full (:file:`global.yaml`) reporting on the following scenarios: @@ -81,31 +85,40 @@ This takes place: The results are output to Excel files that are preserved and made available as 'build artifacts' via the TeamCity web interface. - API reference ============= -.. currentmodule:: message_data.reporting +.. currentmodule:: message_ix_models.report -.. automodule:: message_data.reporting +.. automodule:: message_ix_models.report :members: + .. autosummary:: + + prepare_reporter + register + report -Computations ------------- +Operators +--------- -.. currentmodule:: message_data.reporting.computations -.. automodule:: message_data.reporting.computations +.. currentmodule:: message_ix_models.report.computations +.. automodule:: message_ix_models.report.computations :members: - :mod:`message_data` provides the following: + :mod:`message_ix_models` provides the following: .. autosummary:: + from_url + get_ts gwp_factors + make_output_path + model_periods + remove_ts share_curtailment - Other computations are provided by: + Other operators are provided by: - :mod:`message_ix.reporting.computations` - :mod:`ixmp.reporting.computations` @@ -114,11 +127,51 @@ Computations Utilities --------- -.. currentmodule:: message_data.reporting.util -.. automodule:: message_data.reporting.util +.. currentmodule:: message_ix_models.report.util +.. automodule:: message_ix_models.report.util :members: + .. autosummary:: + + add_replacements + as_quantity + collapse + collapse_gwp_info + copy_ts -.. currentmodule:: message_data.reporting.cli -.. automodule:: message_data.reporting.cli + +Command-line interface +---------------------- + +.. currentmodule:: message_ix_models.report.cli +.. automodule:: message_ix_models.report.cli :members: + + +.. code-block:: + + $ mix-models report --help + + Usage: mix-models report [OPTIONS] [KEY] + + Postprocess results. + + KEY defaults to the comprehensive report 'message::default', but may also be + the name of a specific model quantity, e.g. 'output'. + + --config can give either the absolute path to a reporting configuration + file, or the stem (i.e. name without .yaml extension) of a file in + data/report. + + With --from-file, read multiple Scenario identifiers from FILE, and report + each one. In this usage, --output-path may only be a directory. + + Options: + --dry-run Only show what would be done. + --config TEXT Path or stem for reporting config file. [default: + global] + -L, --legacy Invoke legacy reporting. + -m, --module MODULES Add extra reporting for MODULES. + -o, --output PATH Write output to file instead of console. + --from-file FILE Report multiple Scenarios listed in FILE. + --help Show this message and exit. diff --git a/doc/index.rst b/doc/index.rst index 5c61e68894..157fbd0d2e 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -34,6 +34,7 @@ Among other tasks, the tools allow modelers to: api/model-emissions api/model-snapshot api/disutility + api/report/index api/tools api/util api/testing From 09fac8e29e22294b5b98cce22d9f546e7b6002c5 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 16:31:11 +0200 Subject: [PATCH 211/220] Add .report.cli to "mix-models" CLI commands --- message_ix_models/cli.py | 1 + 1 file changed, 1 insertion(+) diff --git a/message_ix_models/cli.py b/message_ix_models/cli.py index fc5f0162a0..33e0ddaebb 100644 --- a/message_ix_models/cli.py +++ b/message_ix_models/cli.py @@ -114,6 +114,7 @@ def debug(ctx): "message_ix_models.model.snapshot", "message_ix_models.model.structure", "message_ix_models.model.water.cli", + "message_ix_models.report.cli", ] try: From 61cd48b64fca6bdd5c2978c8d9716af86d791495 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 16:31:31 +0200 Subject: [PATCH 212/220] Capitalize TODOs in .report.computations --- message_ix_models/report/computations.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index 99d2abc512..fd185b63a8 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -1,4 +1,4 @@ -"""Atomic reporting computations for MESSAGEix-GLOBIOM.""" +"""Atomic reporting operations for MESSAGEix-GLOBIOM.""" import itertools import logging from typing import Any, List, Optional, Set, Union @@ -46,7 +46,7 @@ def get_ts( Corresponds to :meth:`ixmp.Scenario.timeseries`. - .. todo:: move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. + .. todo:: Move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. """ filters = filters or dict() @@ -95,7 +95,7 @@ def make_output_path(config, name): def model_periods(y: List[int], cat_year: pd.DataFrame) -> List[int]: """Return the elements of `y` beyond the firstmodelyear of `cat_year`. - .. todo:: move upstream, to :mod:`message_ix`. + .. todo:: Move upstream, to :mod:`message_ix`. """ return list( filter( @@ -114,10 +114,10 @@ def remove_ts( ) -> None: """Remove all time series data from `scenario`. - .. todo:: improve to provide the option to remove only those periods in the model + .. todo:: Improve to provide the option to remove only those periods in the model horizon. - .. todo:: move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. + .. todo:: Move upstream, e.g. to :mod:`ixmp` alongside :func:`.store_ts`. """ data = scenario.timeseries() N = len(data) @@ -149,7 +149,7 @@ def remove_ts( # def from_url(url: str) -> message_ix.Scenario: # """Return a :class:`message_ix.Scenario` given its `url`. # -# .. todo:: move upstream to :mod:`message_ix.reporting`. +# .. todo:: Move upstream to :mod:`message_ix.reporting`. # .. todo:: Create a similar method in :mod:`ixmp.reporting` to load and return # :class:`ixmp.TimeSeries` (or :class:`ixmp.Scenario`) given its `url`. # """ From bbac6e11a5b7724244c09560901700f3dcc2b90d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 16:31:43 +0200 Subject: [PATCH 213/220] Add #116 to doc/whatsnew --- doc/whatsnew.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/whatsnew.rst b/doc/whatsnew.rst index 54682b7ed6..f9bd32094f 100644 --- a/doc/whatsnew.rst +++ b/doc/whatsnew.rst @@ -4,6 +4,7 @@ What's new Next release ============ +- New module :mod:`message_ix_models.report` for reporting (:pull:`116`). - Add documentation on :ref:`migrate-filter-repo` using :program:`git filter-repo` and helper scripts (:pull:`89`). v2023.7.26 From d0b5faf47a509a50ea80537e6acd8a619abee130 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 16:51:27 +0200 Subject: [PATCH 214/220] Work around python/mypy#15843 in lint CI workflow --- .github/workflows/lint.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml index f0be667003..058a9d5d72 100644 --- a/.github/workflows/lint.yaml +++ b/.github/workflows/lint.yaml @@ -23,6 +23,7 @@ jobs: type-hint-packages: >- genno iam-units + "mypy < 1.5" "pint < 0.21" pytest sdmx1 From 589b033ec03dcad13a72ac56559b97a645b8ab5b Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Wed, 30 Aug 2023 17:00:47 +0200 Subject: [PATCH 215/220] Update test of silence_log() --- message_ix_models/tests/util/test_logging.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/message_ix_models/tests/util/test_logging.py b/message_ix_models/tests/util/test_logging.py index c9d7e1cfc8..f3be6907de 100644 --- a/message_ix_models/tests/util/test_logging.py +++ b/message_ix_models/tests/util/test_logging.py @@ -33,7 +33,11 @@ def test_silence_log(caplog): with silence_log(): log.warning(msg) - assert [] == caplog.messages + assert [ + "Set level=40 for logger(s): message_ix_models message_data", + "…restored.", + ] == caplog.messages + caplog.clear() # After the "with" block, logging is restored log.warning(msg) From 6da4b494c47408e816b56dfe4bc665a0fce99544 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 31 Aug 2023 14:19:47 +0200 Subject: [PATCH 216/220] Adjust compound_growth for pandas 2.1.0 --- message_ix_models/report/computations.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/message_ix_models/report/computations.py b/message_ix_models/report/computations.py index fd185b63a8..9913d1ef4d 100644 --- a/message_ix_models/report/computations.py +++ b/message_ix_models/report/computations.py @@ -28,7 +28,7 @@ def compound_growth(qty: Quantity, dim: str) -> Quantity: # Compute intervals along `dim` # The value at index d is the duration between d and the next index d+1 c = qty.coords[dim] - dur = (c - c.shift({dim: 1})).fillna(0).shift({dim: -1}) + dur = (c - c.shift({dim: 1})).fillna(0).shift({dim: -1}).fillna(0) # - Raise the values of `qty` to the power of the duration. # - Compute cumulative product along `dim` from the first index. # - Shift, so the value at index d is the growth relative to the prior index d-1 From b0b131a9ef93a22f2ab23c4ae61cb09c99e8ba6d Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 31 Aug 2023 14:24:08 +0200 Subject: [PATCH 217/220] Satisfy mypy in two places with genno 1.18.0 --- message_ix_models/report/util.py | 3 ++- message_ix_models/workflow.py | 2 +- pyproject.toml | 12 +++++------- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/message_ix_models/report/util.py b/message_ix_models/report/util.py index f4d13542f4..0b5c8b9275 100644 --- a/message_ix_models/report/util.py +++ b/message_ix_models/report/util.py @@ -5,6 +5,7 @@ from dask.core import quote from genno import Quantity from genno.compat.pyam.util import collapse as genno_collapse +from genno.core.key import single_key from iam_units import registry from message_ix.reporting import Key, Reporter from sdmx.model.v21 import Code @@ -191,7 +192,7 @@ def copy_ts(rep: Reporter, other: str, filters: Optional[dict]) -> Key: k1 = rep.add("from_url", f"scenario {_id}", quote(other)) k2 = rep.add("get_ts", f"ts data {_id}", k1, filters) - return rep.add("store_ts", f"copy ts {_id}", "scenario", k2) + return single_key(rep.add("store_ts", f"copy ts {_id}", "scenario", k2)) def add_replacements(dim: str, codes: Iterable[Code]) -> None: diff --git a/message_ix_models/workflow.py b/message_ix_models/workflow.py index d9d303088f..55b6e02e17 100644 --- a/message_ix_models/workflow.py +++ b/message_ix_models/workflow.py @@ -191,7 +191,7 @@ def add_step( self.graph.pop(name, None) # Add to the Computer; return the name of the added step - return self.add_single(name, step, "context", base, strict=True) + return str(self.add_single(name, step, "context", base, strict=True)) def run(self, name_or_names: Union[str, List[str]]): """Run all workflow steps necessary to produce `name_or_names`. diff --git a/pyproject.toml b/pyproject.toml index eefff7b84f..f0ba798fc2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,12 +5,10 @@ requires = ["build", "setuptools-scm"] dynamic = ["version"] name = "message-ix-models" description = "Tools for the MESSAGEix-GLOBIOM family of models" -authors = [ - {name = "IIASA Energy, Climate, and Environment (ECE) Program"}, -] +authors = [{ name = "IIASA Energy, Climate, and Environment (ECE) Program" }] maintainers = [ - {name = "Paul Natsuo Kishimoto", email = "mail@paul.kishimoto.name"}, - {name = "Fridolin Glatter", email = "glatter@iiasa.ac.at"}, + { name = "Paul Natsuo Kishimoto", email = "mail@paul.kishimoto.name" }, + { name = "Fridolin Glatter", email = "glatter@iiasa.ac.at" }, ] readme = "README.rst" classifiers = [ @@ -28,7 +26,7 @@ classifiers = [ "Programming Language :: Python :: 3.11", "Programming Language :: R", "Topic :: Scientific/Engineering", - "Topic :: Scientific/Engineering :: Information Analysis" + "Topic :: Scientific/Engineering :: Information Analysis", ] requires-python = ">=3.8" dependencies = [ @@ -36,7 +34,7 @@ dependencies = [ "colorama", # When the minimum is greater than the minimum via message_ix; e.g. # message_ix >= 3.4.0 → ixmp >= 3.4.0 → genno >= 1.6.0", - "genno >= 1.8.0", + "genno >= 1.18.1", "iam_units", "message_ix >= 3.4.0", "pooch", From e3596c6d02951573507a36502c21fd9bc43737ee Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 31 Aug 2023 15:34:40 +0200 Subject: [PATCH 218/220] Adjust .report tests migrated from message_data --- message_ix_models/testing.py | 3 +++ message_ix_models/tests/test_report.py | 1 + 2 files changed, 4 insertions(+) diff --git a/message_ix_models/testing.py b/message_ix_models/testing.py index 2874661393..353c90aae6 100644 --- a/message_ix_models/testing.py +++ b/message_ix_models/testing.py @@ -134,6 +134,9 @@ def test_context(request, session_context): """A copy of :func:`session_context` scoped to one test function.""" ctx = deepcopy(session_context) + # Ensure there is a report key + ctx.setdefault("report", dict()) + yield ctx ctx.delete() diff --git a/message_ix_models/tests/test_report.py b/message_ix_models/tests/test_report.py index 1cf073c13a..b3a97b5202 100644 --- a/message_ix_models/tests/test_report.py +++ b/message_ix_models/tests/test_report.py @@ -28,6 +28,7 @@ def test_report_bare_res(request, test_context): # reporter.get(key) +@pytest.mark.xfail(raises=ModuleNotFoundError, reason="Requires message_data") def test_report_legacy(caplog, request, tmp_path, test_context): """Legacy reporting can be invoked through :func:`.report()`.""" # Create a target scenario From ba805c9e88c596ea1ae61bbea55bc925a65958c3 Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 31 Aug 2023 15:54:46 +0200 Subject: [PATCH 219/220] Adjust package names and relative paths in .report --- message_ix_models/report/__init__.py | 52 +++++++++++++++++----------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index be1156ad06..870069a882 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -1,7 +1,7 @@ import logging -import sys from copy import deepcopy from functools import partial +from importlib import import_module from operator import itemgetter from pathlib import Path from typing import Callable, List, Optional, Tuple, Union @@ -16,7 +16,7 @@ from message_ix_models import Context from message_ix_models.model.structure import get_codes -from message_ix_models.util import local_data_path, private_data_path +from message_ix_models.util import local_data_path, package_data_path from message_ix_models.util._logging import mark_time from .util import add_replacements @@ -67,12 +67,12 @@ def iamc(c: Reporter, info): """ # FIXME the upstream key "variable" for the configuration is confusing; choose a # better name - from message_data.reporting.util import collapse + from message_ix_models.report.util import collapse # Common base_key = Key.from_str_or_key(info["base"]) - # Use message_data custom collapse() method + # Use message_ix_models custom collapse() method info.setdefault("collapse", {}) # Add standard renames @@ -129,7 +129,7 @@ def register(name_or_callback: Union[Callable, str]) -> Optional[str]: from message_ix.reporting import Reporter from message_ix_models import Context - from message_data.reporting import register + from message_ix_models.report import register def cb(rep: Reporter, ctx: Context): # Modify `rep` by calling its methods ... @@ -140,22 +140,29 @@ def cb(rep: Reporter, ctx: Context): Parameters ---------- name_or_callback - If a string, this may be a submodule of :mod:`.message_data`, in which case the - function :func:`message_data.{name}.report.callback` is used. Or, it may be a - fully-resolved package/module name, in which case :func:`{name}.callback` is + If a string, this may be a submodule of :mod:`.message_ix_models`, or + :mod:`message_data`, in which case the function + ``{message_data,message_ix_models}.{name}.report.callback`` is used. Or, it may + be a fully-resolved package/module name, in which case ``{name}.callback`` is used. If a callable (function), it is used directly. """ if isinstance(name_or_callback, str): # Resolve a string - try: - # …as a submodule of message_data - name = f"message_data.{name_or_callback}.report" - __import__(name) - except ImportError: - # …as a fully-resolved package/module name - name = name_or_callback - __import__(name) - callback = sys.modules[name].callback + for name in [ + # As a submodule of message_ix_models + f"message_ix_models.{name_or_callback}.report", + # As a submodule of message_data + f"message_data.{name_or_callback}.report", + # As a fully-resolved package/module name + name_or_callback, + ]: + try: + mod = import_module(name) + except ModuleNotFoundError: + continue + else: + break + callback = mod.callback else: callback = name_or_callback name = callback.__name__ @@ -244,7 +251,7 @@ def report(context: Context, *args, **kwargs): # Default arguments for genno-based reporting context.report.setdefault("key", "default") - context.report.setdefault("config", private_data_path("report", "global.yaml")) + context.report.setdefault("config", package_data_path("report", "global.yaml")) rep, key = prepare_reporter(context) @@ -363,8 +370,11 @@ def prepare_reporter( has_solution = scenario.has_solution() # Append the message_data computations - rep.require_compat("message_data.reporting.computations") - rep.require_compat("message_data.tools.gdp_pop") + rep.require_compat("message_ix_models.report.computations") + try: + rep.require_compat("message_data.tools.gdp_pop") + except ModuleNotFoundError: + pass # Currently in message_data # Handle `report/config` setting passed from calling code context.setdefault("report", dict()) @@ -381,7 +391,7 @@ def prepare_reporter( p = config.get("path") if p and not p.exists() and not p.is_absolute(): # Try to resolve relative to the data/ directory - p = private_data_path("report", p) + p = package_data_path("report", p) assert p.exists(), p config.update(path=p) From 87ab4263158456c1ba3ab82ceaac9daa9ba477af Mon Sep 17 00:00:00 2001 From: Paul Natsuo Kishimoto Date: Thu, 31 Aug 2023 16:57:08 +0200 Subject: [PATCH 220/220] Force use of "iamc:" genno config handler during migration - Remove deprecated Key.from_str_or_key(). --- message_ix_models/report/__init__.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/message_ix_models/report/__init__.py b/message_ix_models/report/__init__.py index 870069a882..c6cf4739db 100644 --- a/message_ix_models/report/__init__.py +++ b/message_ix_models/report/__init__.py @@ -70,7 +70,7 @@ def iamc(c: Reporter, info): from message_ix_models.report.util import collapse # Common - base_key = Key.from_str_or_key(info["base"]) + base_key = Key(info["base"]) # Use message_ix_models custom collapse() method info.setdefault("collapse", {}) @@ -376,6 +376,13 @@ def prepare_reporter( except ModuleNotFoundError: pass # Currently in message_data + # Force re-installation of the function iamc() in this file as the handler for + # "iamc:" sections in global.yaml. Until message_data.reporting is removed, then + # importing it will cause the iamc() function in *that* file to override the one + # registered above. + # TODO Remove, once message_data.reporting is removed. + genno.config.handles("iamc")(iamc) + # Handle `report/config` setting passed from calling code context.setdefault("report", dict()) context.report.setdefault("config", dict())