FACTS Glossary¶
This page contains a guide to terms and how they are used in the FACTS2 ecosystem.
System / Ecosystem Level¶
FACTS2¶
Framework for Assessing Changes To Sea-level, version 2. A modular, containerized system for producing probabilistic projections of future sea-level rise. Each component of the computation (temperature, ice sheets, glaciers, extreme sea-level etc.) is encapsulated in an independent Docker container called a module.
Module ecosystem¶
The full set of FACTS v2 modules — temperature, sea-level contribution, framework, and extreme sea-level — that can be composed together to produce a sea-level rise experiment.
Module registry¶
A versioned collection of module YAML files (*_module.yaml) that describe all available FACTS v2 modules. Each entry defines the module's container image, input/output arguments, volumes, and command structure. The registry is the authoritative source for what modules exist and how to run them.
Container image¶
A Docker image URL and tag (e.g., ghcr.io/fact-sealevel/fair-temperature:0.2.1) that identifies the exact, pinned version of a module to run. Specified in the module YAML and copied into the generated compose file.
Pipeline ID¶
A unique string identifier for an experiment run (e.g., my-experiment-ssp585). Propagated to every module as --pipeline-id and used to name output files, so outputs from different modules within the same experiment can be matched up.
Experiment Level¶
Experiment¶
A named, fully-specified sea-level rise computation. An experiment selects a set of modules (one temperature module, one or more sea-level modules, a framework/totaling module, and optionally an extreme sea-level module), sets shared parameters, and defines one or more workflows. Everything needed to reproduce an experiment is captured in its experiment-config.yaml.
experiment-config.yaml¶
The primary configuration file for a FACTS experiment. Written by the setup-experiment CLI command and edited by the user. Contains:
- top-level parameters shared across all modules (scenario, nsamps, pyear ranges, etc.)
- module manifest declaring which modules are included
- module-specific sections with inputs, options, outputs, and fingerprint parameters for each module
- paths to input data and output directories
- workflows defining how sea-level modules are combined for totaling
This file is the human-editable artifact; once complete it drives the FACTS-experiment-builder (FEB) command generate-compose.
experiment-compose.yaml¶
A Docker Compose file generated from a completed experiment-config.yaml by the generate-compose FEB CLI command. Contains one service definition per module (or per workflow for facts-total and ESL), with resolved image references, command arguments, volume mounts, and service dependencies. This file is used directly to run the experiment (e.g., docker compose -f experiment-compose.yaml up).
Top-level parameters¶
Parameters defined once at the experiment level and automatically passed to every module that declares them. Common top-level parameters include:
| Parameter | Description |
|---|---|
scenario |
Emissions scenario identifier (e.g., ssp585, ssp245, rcp85) |
nsamps |
Number of Monte Carlo samples to generate |
seed |
Random seed for reproducibility |
pyear-start |
First projection year (e.g., 2020) |
pyear-end |
Last projection year (e.g., 2100) |
pyear-step |
Interval between projection years (e.g., 10) |
baseyear |
Reference year for relative sea-level calculations (e.g., 2005) |
location-file |
Path to a CSV of named locations (id, name, lat, lon) for localized projections |
Scenario¶
An emissions pathway identifier used to select the appropriate climate forcing data. Common values: ssp585, ssp245, ssp126, rcp85. Some modules (e.g., ssp-landwaterstorage) require scenario names in a different format — the experiment builder handles this translation automatically via a scenario name transform.
Manifest¶
The section of experiment-config.yaml that declares which module fills each role in the experiment:
manifest:
temperature_module: fair-temperature
sealevel_modules:
- bamber19-icesheets
- ipccar5-glaciers
framework_module: facts-total
extreme_sealevel_module: extremesealevel-pointsoverthreshold
Paths¶
The section of experiment-config.yaml that declares the three root directories for the experiment:
| Field | Description |
|---|---|
shared-input-data |
Shared inputs used by multiple modules (location files, fingerprint data) |
module-specific-input-data |
Per-module input data directories |
output-data-location |
Root directory where all module outputs are written |
Module Level¶
Module¶
A self-contained computational step packaged as a Docker container. A module takes inputs (parameter values, data files) and produces outputs (NetCDF files) for a specific physical contribution to sea-level rise or for aggregation/analysis. Modules are independent — they communicate only through the file system.
Module YAML (*_module.yaml)¶
The file in the module registry that fully describes a module. Key sections:
container_image— Docker image URL:tag for the modulearguments— Declares all command-line arguments the container accepts, organized by subsection (see below)volumes— Volume mount definitions (host directory → container path)command— Optional sub-command (for modules with multiple entry points, e.g.,glaciersvs.icesheets)uses_climate_file— Boolean; if true, this module depends on the temperature module's output anddepends_onthe temperature service in composeextra— Module-specific miscellaneous configuration (e.g.,per_workflow,skip_fingerprint_params)
Argument sections¶
Within a module YAML, arguments are divided into subsections that control where their values come from and how they appear in the compose command:
| Section | Source |
|---|---|
top_level |
Resolved from top-level experiment parameters (e.g., metadata.nsamps) |
fingerprint_params |
Resolved from fingerprint parameter fields in the experiment config |
options |
Module-specific scalar options defined in the module's experiment config section |
inputs |
Input file paths defined in the module's experiment config section |
outputs |
Output file paths; filenames are defined in the module YAML and resolved at compose generation time |
Source¶
A dot-separated string in a module YAML that tells the experiment builder where to look up an argument's value. Examples:
- metadata.pipeline-id → the experiment's top-level pipeline-id
- metadata.nsamps → the experiment's top-level nsamps
- module_inputs.options.seed → the seed field in this module's options section
- module_inputs.inputs.rcmip_fname → the rcmip_fname field in this module's inputs section
Fingerprint parameters¶
Parameters used in probabilistic ensemble generation — typically fingerprint-dir (a directory of fingerprint data for spatial disaggregation) and location-file. Declared separately from regular options because they route to the shared input directory rather than the module-specific input directory.
uses_climate_file¶
A boolean field in a module YAML. When true, the module reads the temperature output file produced by the temperature module and the generated compose service will have a depends_on dependency on the temperature service.
Workflow Level¶
Workflow¶
A named grouping of sea-level modules whose contributions will be summed by the framework module (facts-total) to produce a total sea-level projection. An experiment can define multiple workflows to compare different combinations of modules. Example:
workflows:
wf1:
- bamber19-icesheets
- ipccar5-glaciers
- tlm-sterodynamics
- ssp-landwaterstorage
wf2:
- deconto21-ais
- ipccar5-glaciers
- tlm-sterodynamics
- ssp-landwaterstorage
facts-total¶
The framework module that sums sea-level contributions from all modules in a workflow. It produces both global and local total sea-level projections. Unlike other modules, facts-total generates one compose service per workflow per output type (e.g., facts-total-wf1-global, facts-total-wf1-local), not a single service.
Per-workflow services¶
When facts-total and extreme sea-level modules are included, the compose file contains one service instance per workflow (and per output type for facts-total). Service names follow the pattern facts-total-<workflow_name>-<output_type> (e.g., facts-total-wf1-global, facts-total-wf2-local).
Output types¶
Facts-total and ESL modules produce outputs classified by spatial scope:
| Type | Description |
|---|---|
global |
Spatially-averaged or global-mean output |
local |
Location-specific output for each site in the location file |
Step Level¶
Steps represent the four ordered phases of a FACTS experiment. Each step maps to one or more module types and must complete before the next step begins.
Climate step¶
The first step. Runs the temperature_module to produce climate forcing data (temperature trajectories) from emissions scenarios. Output is consumed by all sea-level modules that declare uses_climate_file: true.
Sea-level step¶
The second step. Runs all sealevel_modules in parallel (they are independent of each other, but all depend on the climate step if they use climate data). Each module computes its physical contribution to sea-level rise (e.g., glacier melt, ice sheet dynamics, sterodynamics, vertical land motion).
Totaling step¶
The third step. Runs facts-total (the framework_module) once per workflow to sum the sea-level contributions from all modules in that workflow, producing total sea-level projections (global and/or local).
Extreme sea-level step¶
The fourth step. Runs the extreme_sealevel_module on the totaled sea-level projections to compute return levels and other extreme sea-level statistics. Depends on the totaling step completing first.
Compose / Service Level¶
These terms describe how modules are represented in the generated experiment-compose.yaml.
Service¶
A single container execution unit in the compose file, corresponding to one module run. Each service specifies the container image, command arguments, volume mounts, and dependencies. Facts-total and ESL modules produce multiple services (one per workflow or workflow/type combination).
Command arguments¶
All module arguments are passed as --name=value flags in the container command. Arguments are ordered in the compose command as: top_level → fingerprint_params → options → inputs → outputs. File paths are rewritten to their container-side mount paths.
Volumes¶
Directory bindings that make host paths available inside a container. Each volume is expressed as host_path:container_path. Standard container mount points used across modules:
| Container path | Contents |
|---|---|
/mnt/module_specific_in |
Module-specific input data |
/mnt/shared_in |
Shared inputs (location files, fingerprint directories) |
/mnt/out |
All module outputs |
/mnt/experiment_specific_in |
User-supplied experiment data (e.g., custom climate files) |
/mnt/total_in |
Input to facts-total (sea-level contributions from other modules) |
/mnt/total_out |
Output from facts-total |
depends_on¶
A compose field listing services that must complete successfully before this service starts. Generated automatically based on module type (sea-level modules depend on the temperature service if uses_climate_file is true; totaling depends on all sea-level modules; ESL depends on totaling).
Shared input data¶
Input files used by multiple modules, routed to /mnt/shared_in in the container. Fields are classified as shared inputs if their name contains location, fingerprint, or fp. All other input fields are treated as module-specific inputs routed to /mnt/module_specific_in.
Module-specific input data¶
Input data files that belong to a single module. Stored under module-specific-input-data/<module_name>/ on the host and mounted at /mnt/module_specific_in in the container.