Skip to content

Reference configuration

The full default configuration composed from icenet_mp/config/base.yaml and all its sub-configs. This is the configuration used when you run any command without overrides.

Note

Interpolation markers such as ${base_path} are left unresolved so you can see exactly which keys reference shared values. Set base_path in your local config file to point to your data directory.

Named model configs

The model section below shows the default (naive-unet-naive). Alternative model configs live in icenet_mp/config/model/ and can be selected with:

uv run imp <command> --config-name my_config  # where my_config inherits base and overrides /model

Full config

data:
  datasets:
    samp-floatsouth-argo-25p0km-2020-2024-24h-v3:
      name: samp-floatsouth-argo-25p0km-2020-2024-24h-v3
      group_as: float-argo
      description: ARGO float data for southern hemisphere
      attribution: ARGO
      licence: CC-BY-4.0
      dates:
        start: '2020-01-01T12:00:00'
        end: '2024-07-31T12:00:00'
        frequency: 24h
        missing:
        - start: '2022-01-01T12:00:00'
          end: '2022-06-30T12:00:00'
        - start: '2022-08-01T12:00:00'
          end: '2022-12-31T12:00:00'
        - start: '2023-02-01T12:00:00'
          end: '2023-12-31T12:00:00'
        - start: '2024-02-01T12:00:00'
          end: '2024-06-30T12:00:00'
      input:
        pipe:
        - argo:
            area: 0/-180/-90/180
            crs: EPSG:6932
            param:
            - TEMP
            - PSAL
            resolution: 25p0km
            shape:
            - 432
            - 432
        - nan-to-num:
            variables:
            - TEMP
            - PSAL
            replace_with: 99
        - set-geography:
            crs: ${...0.argo.crs}
            resolution: ${...0.argo.resolution}
    samp-sicsouth-osisaf-25p0km-2020-2024-24h-v1:
      name: samp-sicsouth-osisaf-25p0km-2020-2024-24h-v1
      group_as: sic-osisaf
      description: Sea ice concentration from SMMR/SSMI/SSMIS + AMSR-E/AMSR-2 + AMSR2
        for southern hemisphere
      attribution: EUMETSAT/OSISAF
      licence: CC-BY-4.0
      dates:
        start: '2020-01-01T12:00:00'
        end: '2024-07-31T12:00:00'
        frequency: 24h
        missing:
        - start: '2022-01-01T12:00:00'
          end: '2022-06-30T12:00:00'
        - start: '2022-08-01T12:00:00'
          end: '2022-12-31T12:00:00'
        - start: '2023-02-01T12:00:00'
          end: '2023-12-31T12:00:00'
        - start: '2024-02-01T12:00:00'
          end: '2024-06-30T12:00:00'
      postprocessors:
        mask_generator:
          _target_: icenet_mp.ingestion.postprocessors.StatusFlagMaskGenerator
      input:
        pipe:
        - concat:
          - dates:
              start: '2012-07-24T12:00:00'
              end: '2020-12-31T12:00:00'
              frequency: 24h
            ftp:
              url: ftp://osisaf.met.no/reprocessed/ice/conc_amsr/v3p0/{date:strftime(%Y)}/{date:strftime(%m)}/ice_conc_sh_ease2-250_cdr-v3p0-amsr_{date:strftime(%Y%m%d)}1200.nc
          - dates:
              start: '2021-01-01T12:00:00'
              end: '2025-12-31T12:00:00'
              frequency: 24h
            ftp:
              url: ftp://osisaf.met.no/reprocessed/ice/conc-cont-reproc-amsr/v3p0/{date:strftime(%Y)}/{date:strftime(%m)}/ice_conc_sh_ease2-250_icdr-v3p0-amsr_{date:strftime(%Y%m%d)}1200.nc
        - drop:
            param:
            - algorithm_standard_uncertainty
            - raw_ice_conc_values
            - smearing_standard_uncertainty
        - rescale:
            scale: 0.01
            offset: 0.0
            param: ice_conc
        - rescale:
            scale: 0.01
            offset: 0.0
            param: total_standard_uncertainty
        - nan-to-num:
            variables:
            - ice_conc
            - total_standard_uncertainty
            replace_with: 0.0
        - set-geography:
            crs: EPSG:6932
            resolution: 25p0km
    samp-weathersouth-era5-25p0km-2020-2024-24h-v4:
      name: samp-weathersouth-era5-25p0km-2020-2024-24h-v4
      group_as: era5
      description: Weather from ERA5 for partial southern hemisphere
      attribution: ECMWF/C3S
      licence: CC-BY-4.0
      dates:
        start: '2020-01-01T12:00:00'
        end: '2024-07-31T12:00:00'
        frequency: 24h
        missing:
        - start: '2022-01-01T12:00:00'
          end: '2022-06-30T12:00:00'
        - start: '2022-08-01T12:00:00'
          end: '2022-12-31T12:00:00'
        - start: '2023-02-01T12:00:00'
          end: '2023-12-31T12:00:00'
        - start: '2024-02-01T12:00:00'
          end: '2024-06-30T12:00:00'
      input:
        pipe:
        - join:
          - mars:
              use_cdsapi_dataset: reanalysis-era5-complete
              area: -15/-180/-90/180
              grid: 0.25 / 0.25
              levtype: sfc
              param:
              - 2t
              - sp
              - 10u
              - 10v
              - msl
          - mars:
              use_cdsapi_dataset: reanalysis-era5-complete
              area: -15/-180/-90/180
              grid: 0.25 / 0.25
              level:
              - 10
              - 250
              - 500
              - 1000
              levtype: pl
              param:
              - z
              - t
              - q
              - u
              - v
          - forcings:
              param:
              - cos_julian_day
              - insolation
              - sin_julian_day
              template: \${input.pipe.0.join.0.mars}
        - reproject:
            crs: EPSG:6932
            resolution: 25p0km
            shape:
            - 432
            - 432
  split:
    batch_size: 2
    predict:
    - start: null
      end: null
    test:
    - start: '2024-01-01'
      end: '2024-01-31'
    - start: '2024-07-01'
      end: '2024-07-31'
    train:
    - start: '2020-01-01'
      end: '2021-12-31'
    validate:
    - start: '2022-07-01'
      end: '2022-07-31'
    - start: '2023-01-01'
      end: '2023-01-31'
evaluate:
  callbacks:
    activation_saver:
      _target_: icenet_mp.callbacks.ActivationSaver
      layer_paths: []
      output_dir: ${base_path}/evaluation/activations/
    metric_summary:
      _target_: icenet_mp.callbacks.MetricSummaryCallback
    plotting:
      _target_: icenet_mp.callbacks.PlottingCallback
      frequency:
        number: 3
      make_input_plots: false
      make_static_plots: true
      make_video_plots: true
  trainer: ${train.trainer}
loggers:
  wandb:
    _target_: lightning.pytorch.loggers.wandb.WandbLogger
    entity: turing-seaice
    log_model: false
    name: null
    offline: false
    save_dir: ${base_path}/training/
loss:
  _target_: icenet_mp.losses.amse_loss.AMSELoss
  mode: hybrid
  spectral_weight: 0.1
  delta: 0.5
  merge_bins_below: 4
  eps: 1.0e-12
  wavenumber_weight: null
model:
  _target_: icenet_mp.models.EncodeProcessDecode
  name: quick-test
  encoders:
    latent_space:
    - 128
    - 128
    era5:
      _target_: icenet_mp.models.encoders.NaiveLinearEncoder
    float-argo:
      _target_: icenet_mp.models.encoders.NaiveLinearEncoder
    sic-osisaf:
      _target_: icenet_mp.models.encoders.NaiveLinearEncoder
    sic-ssmis:
      _target_: icenet_mp.models.encoders.NaiveLinearEncoder
  processor:
    _target_: icenet_mp.models.processors.UNetProcessor
    start_out_channels: 64
  decoder:
    _target_: icenet_mp.models.decoders.NaiveLinearDecoder
    mask_type: active
    restrict_range: sigmoid
    skip_connection:
      method: none
predict:
  target:
    group_name: sic-osisaf
    variables:
    - ice_conc
  n_forecast_steps: 2
  n_history_steps: 3
random:
  seed: null
  fully_deterministic: false
train:
  callbacks:
    best_checkpoint:
      _target_: lightning.pytorch.callbacks.ModelCheckpoint
      monitor: validation_loss
      mode: min
      save_top_k: 1
      save_last: true
    early_stopping:
      _target_: lightning.pytorch.callbacks.EarlyStopping
      monitor: validation_loss
      mode: min
      patience: 20
    ema_weight_averaging:
      _target_: icenet_mp.callbacks.EMAWeightAveragingCallback
      decay_rate: 0.999
      every_n_epochs: 1
      every_n_steps: 100
    learning_rate:
      _target_: lightning.pytorch.callbacks.LearningRateMonitor
    metric_summary:
      _target_: icenet_mp.callbacks.MetricSummaryCallback
    plotting:
      _target_: icenet_mp.callbacks.PlottingCallback
      frequency:
        number: 3
      make_input_plots: false
      make_static_plots: true
      make_video_plots: false
      plot_spec:
        dpi: 72
  lr_scheduler:
    frequency: 1
    interval: epoch
    name: learning-rate
  multistage:
    finetune:
      optimizer:
        lr: 0.0005
  optimizer:
    _target_: torch.optim.AdamW
    lr: 0.005
    weight_decay: 0.01
  scheduler:
    _target_: torch.optim.lr_scheduler.CosineAnnealingLR
    eta_min: 1.0e-06
    T_max: ${..trainer.max_epochs}
  trainer:
    _target_: lightning.pytorch.trainer.trainer.Trainer
    accelerator: auto
    devices: auto
    gradient_clip_val: 1.0
    log_every_n_steps: 50
    max_epochs: 50
    strategy: auto
base_path: ../base