schema_version: 1
execution_profile:
  id: joint_source_channel_symbols
  version: 1
name: deepjscc_kodak_awgn_train
description: DeepJSCC image scenario with typed trainable sender/receiver slots around the canonical power-normalized AWGN path.
suite:
  id: semantic_comm
  name: Semantic Communication
  status: active
  version: v1
metadata:
  research_stage: cpu_sized_deepjscc_demonstration
  channel_enabled: true
  channel_mode: awgn
  codec_profile: deepjscc_external
  codec_label: Template-owned DeepJSCC trainable interfaces and returned-artifact runtime slots
  codec_output_form: symbols
  semantic_representation: learned_continuous_symbols
  transport_representation: complex_channel_symbols
  rate_count_fixed_point: tx_symbol_boundary.channel.fixed.modulator_input.symbol_count
  data_partition_role: train_validation_only
  held_out_benchmark_image_ids: [kodim21, kodim22, kodim23, kodim24]
  matrix:
    dimensions:
      channel.snr_db: [-4, 0, 4, 8, 12, 16]
    step_params:
      wireless_channel:
        snr_db:
          matrix: channel.snr_db
steps:
  - id: data
    op: source.image_dataset
    params:
      dataset: kodak
      dataset_dir: .noema/datasets/kodak
      image_ids: kodim01,kodim02,kodim03,kodim04,kodim05,kodim06,kodim07,kodim08,kodim09,kodim10,kodim11,kodim12,kodim13,kodim14,kodim15,kodim16,kodim17,kodim18,kodim19,kodim20
      crop_size: 128
      repeat_count: 8

  - id: sender
    op: model.deepjscc_external_encode
    inputs:
      images: data.images
    params:
      runtime: training_interface

  - id: tx_power
    op: channel.symbol_power_normalize
    inputs:
      symbols: sender.symbols
    params:
      label: tx_power_normalize
      target_power: 1.0
      normalization_scope: source_item

  - id: tx_symbol_boundary
    op: channel.symbol_boundary
    inputs:
      symbols: tx_power.symbols
    params:
      label: modulator_input
      role: symbol_channel_input

  - id: wireless_channel
    op: wireless.channel
    inputs:
      symbols: tx_symbol_boundary.symbols
    params:
      channel: awgn
      snr_db: 10
      wireless_backend: sionna
      seed: 23001

  - id: rx_symbol_boundary
    op: channel.symbol_boundary
    inputs:
      symbols: wireless_channel.rx_symbols
    params:
      label: channel_output
      role: symbol_channel_output

  - id: channel_symbol_count_match
    op: channel.symbol_count_match
    inputs:
      reference: tx_symbol_boundary.symbols
      candidate: rx_symbol_boundary.symbols
    params:
      label: channel_io

  - id: receiver
    op: model.deepjscc_external_decode
    inputs:
      symbols: rx_symbol_boundary.symbols
    params:
      runtime: training_interface

  - id: evaluation
    op: metrics.image_reconstruction
    inputs:
      reference: data.images
      reconstruction: receiver.images
