General project configuration¶
The following features can be accessed via a general project configuration file:
Import codelists and mappings from public GitHub repositories
Add all countries to the region codelist (details: A common list of countries)
Configuration file format¶
The configuration file must be located on the same level as the mappings and definitions directories.
The file must be in yaml format and named nomenclature.yaml.
Importing from an external repository¶
In order to import from an external repository, the configuration file must define the repository and the repositories key.
The repository has a name (in the example below common-definitions) and a url. Multiple repositories can be used in a single configuration file:
repositories:
common-definitions:
url: https://github.com/IAMconsortium/common-definitions.git/
legacy-definitions:
url: https://github.com/IAMconsortium/legacy-definitions.git/
In order for the import to work the url must be given in the above format, i.e. with the leading https:// and the trailing .git/.
Information from an external repository can either be used for codelists (“definitions”) or model mappings, or both. For each definition dimension, i.e. region or variable multiple external repositories can be used as the example below illustrates for variable:
repositories:
common-definitions:
url: https://github.com/IAMconsortium/common-definitions.git/
legacy-definitions:
url: https://github.com/IAMconsortium/legacy-definitions.git/
definitions:
region:
repository: common-definitions
variable:
repositories:
- common-definitions
- legacy-definitions
mappings:
repository: common-definitions
The value in definitions.region.repository can be a list or a single value.
For model mappings the process is analogous using mappings.repository.
Filter code lists imported from external repositories¶
Since importing the entirety of, for example, common-definitions is too much for most
projects, the list can be filtered using include and exclude keywords. Under
these keywords, lists of filters can be given that will be applied to the code list from
the given repository.
The filtering can be done by any attribute:
repositories:
common-definitions:
url: https://github.com/IAMconsortium/common-definitions.git/
definitions:
variable:
repository:
name: common-definitions
include:
- name: [Primary Energy*, Final Energy*]
- name: "Population*"
tier: 1
exclude:
- name: "Final Energy|Industry*"
depth: 2
If a filter is being used for repositories, the name attribute must be used for the repository.
In the example above we are including: 1. All variables starting with Primary Energy or Final Energy 2. All variables starting with Population and with the tier attribute equal to 1
From this list we are then excluding all variables that match “Final Energy|Industry*” and have a depth of 2 (meaning that they contain two pipe “|” characters).
Adding countries to the region codelist¶
By setting definitions.region.country as true in the configuration file:
definitions:
region:
country: true
the nomenclature package will add all countries to the region codelist.
More details on the list of countries can be found here: A common list of countries.
Adding NUTS to the region codelist¶
By setting definitions.region.nuts (optional) in the configuration file:
definitions:
region:
nuts:
nuts-1: [ AT, BE, CZ ]
nuts-2: [ AT ]
nuts-3: true
the nomenclature package will add the selected NUTS regions to the region codelist.
In the example above, the package will add: NUTS 1 regions for Austria, Belgium and Czechia, NUTS 2 regions for Austria, NUTS 3 regions for all EU countries.
More details on the list of NUTS regions can be found here: NUTS classification.
Specify dimensions to be read¶
The configuration file offers the possibility to set the dimensions which will be read by DataStructureDefinition, overriding the dimensions from the definitions sub-directories. If no sub-directories exist (e.g.: when importing dimensions from external repositories), setting dimensions in the configuration file is mandatory.
In the below case we specify region, variable and scenario to be read and used for validation:
dimensions:
- region
- variable
- scenario
Filter model mappings from external repositories¶
We often only want to use a subset of models in a particular project (and not import all mappings), so there is an option to filter for specific model mappings. This works very similarly to the filtering for definitions.
repositories:
common-definitions:
url: https://github.com/IAMconsortium/common-definitions.git/
mappings:
repository:
name: common-definitions
include:
- MESSAGEix-GLOBIOM 2.1-M-R12
The above example retrieves only the model mapping for MESSAGEix-GLOBIOM 2.1-M-R12 from the common-definitions repository.
Configuring processors¶
The processors section of nomenclature.yaml allows processors to be declared
directly in the configuration file, so they are applied automatically when calling
process() without passing an explicit processor argument.
Region processor¶
Setting processors.region-processor as true will automatically create a
RegionProcessor from the project’s default mappings/ directory:
processors:
region-processor: true
This is equivalent to calling:
import pyam
from nomenclature.processor import RegionProcessor
df = pyam.IamDataFrame(data="path/to/file.csv")
dsd = DataStructureDefinition("definitions")
processor = RegionProcessor.from_directory("mappings", dsd)
aggregated_data = process(df, dsd)
NUTS processor¶
Setting processors.nuts to a list of model names will automatically create a
NutsProcessor and apply NUTS hierarchical aggregation (NUTS3 → NUTS2 →
NUTS1 → Country → EU27) for those models:
processors:
nuts-processor: [ Model A, Model B ]
More details on NUTS aggregation can be found here: NUTS classification.