Skip to content

DALiuGE Graphs

DALiuGE Graph support covers the final graph-shaping step before translation and deployment. The YAML key is graph_patches; the operator-facing goal is to make graph changes deterministic, reviewable, and tied to the generated manifest.

Flow

project config
     |
     v
manifest build
     |
     v
apply graph_patches
     |
     v
Translator Manager
     |
     v
REST / Slurm deployment

Example

Set the scatter count from manifest data:

graph_patches:
  - match:
      kind: node_name
      equals: Scatter/GenericScatterApp/Beam
    set:
      num_of_copies: "$count(sbids[].datasets[])"

The expression runs against the manifest context. In this example, the graph receives one copy per discovered dataset across SBID groups.

Matching

Match kind Purpose
node_name Match a graph node by full DALiuGE node name
Additional kinds Add only when the graph format and validation rules support them

Keep matches precise. A patch that silently matches multiple nodes can make execution hard to audit.

Expressions

Values beginning with $ are evaluated against the manifest context. Use expressions for counts and manifest-derived scatter settings; keep complex survey logic in transforms or WASM hooks.

Expression Use
$count(path) Count manifest elements
$sum(path) Sum numeric manifest values

beampipe-ingest palette

Existing DALiuGE graphs can include the beampipe-ingest palette. At submit time, beampipe looks for a node named beampipe-ingest with a manifest_path field, creates a readonly graph configuration, and embeds the generated manifest JSON before translation.

Typical graph contract:

Field Meaning
beampipe-ingest node Marker that the graph expects beampipe manifest injection
manifest_path Path or graph parameter where the manifest JSON should be placed
Generated manifest Source/SBID/dataset grouping from project config discovery

Use the palette when the science graph should consume beampipe-generated manifest data directly. Use plain patches when the graph only needs structural changes such as scatter counts.

Operator checks

Check Why
Patch target exists Prevents silent no-op graph mutation
Expression output is expected Avoids wrong scatter size or missing parameters
Manifest injection path is readable Ensures graph apps can load the manifest
Dry execution passes Confirms graph preparation before real staging/submission

Next: use Deployment profiles to select the backend that receives the prepared graph.