# HARKANA Workflow Examples

Complete validated graphs; source-dependent compatibility still requires review.

## Save uploaded dataset

Example ID: `save-upload`

Save uploaded dataset

Requirements: {"inputs": [{"description": "Review actual source variable and dimension bindings before submission.", "dimensions": ["spectral", "y", "x"], "inputID": "uploaded"}]}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "Save uploaded dataset",
  "description": "Save uploaded dataset.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Uploaded dataset",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "rawOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Uploaded dataset",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "spectrum",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "rawOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "spectral": "spectral",
          "y": "y",
          "x": "x"
        }
      }
    },
    "outputProfiles": {
      "rawOutput": "exploration"
    },
    "generatedFeatures": {
      "rawOutput": [
        "spectrum"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "c585bac6b479c9f6bc173af09025a63131be3ee558367458e7421baf032ef09d"
}

```

## Spatial average and save

Example ID: `process-and-save`

Spatial average and save

Requirements: {"inputs": [{"description": "Review actual source variable and dimension bindings before submission.", "dimensions": ["spectral", "y", "x"], "inputID": "uploaded"}]}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "Spatial average and save",
  "description": "Spatial average and save.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Uploaded dataset",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "spatialAverage",
      "displayName": "3x3 spatial mean",
      "nodeType": "local-mean",
      "nodeVersion": "local-mean-v2",
      "parameters": {}
    },
    {
      "nodeID": "smoothedOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Spatially smoothed dataset",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "spectrum",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "spatialAverage",
      "toInput": "dataset",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axes": [
            "y",
            "x"
          ]
        },
        "coordinates": {},
        "dimensionParameters": {
          "y": {
            "windowSize": 3
          },
          "x": {
            "windowSize": 3
          }
        },
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "spatialAverage",
      "fromOutput": "result",
      "toNodeID": "smoothedOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "spectral": "spectral",
          "y": "y",
          "x": "x"
        }
      }
    },
    "outputProfiles": {
      "smoothedOutput": "exploration"
    },
    "generatedFeatures": {
      "smoothedOutput": [
        "spectrum"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "7fa45e4dcfefc8971763f0c2fdee9feeb92339bbc0b76e04a270e4833a76f6d5"
}

```

## Save uploaded and spatially smoothed datasets

Example ID: `preserve-source-and-derived-result`

Save uploaded and spatially smoothed datasets

Requirements: {"inputs": [{"description": "Review actual source variable and dimension bindings before submission.", "dimensions": ["spectral", "y", "x"], "inputID": "uploaded"}]}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "Save uploaded and spatially smoothed datasets",
  "description": "Save uploaded and spatially smoothed datasets.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Uploaded dataset",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "spatialAverage",
      "displayName": "3x3 spatial mean",
      "nodeType": "local-mean",
      "nodeVersion": "local-mean-v2",
      "parameters": {}
    },
    {
      "nodeID": "rawOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Uploaded dataset",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "spectrum",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    },
    {
      "nodeID": "smoothedOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Spatially smoothed dataset",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "spectrum",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "spatialAverage",
      "toInput": "dataset",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axes": [
            "y",
            "x"
          ]
        },
        "coordinates": {},
        "dimensionParameters": {
          "y": {
            "windowSize": 3
          },
          "x": {
            "windowSize": 3
          }
        },
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "rawOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "spatialAverage",
      "fromOutput": "result",
      "toNodeID": "smoothedOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "spectral": "spectral",
          "y": "y",
          "x": "x"
        }
      }
    },
    "outputProfiles": {
      "rawOutput": "exploration",
      "smoothedOutput": "exploration"
    },
    "generatedFeatures": {
      "rawOutput": [
        "spectrum"
      ],
      "smoothedOutput": [
        "spectrum"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "3ca4469d6fb799fd2a9f251dfb752ecf603c02caebc33d608e023c540bd646f4"
}

```

## Corrected CARS dataset and Raman prediction

Example ID: `hyperspectral-corrected-cars-dataset-and-raman-prediction`

Preserve an already detector/NRB-corrected CARS dataset and run neural prediction.

Requirements: {"caveats": ["The caller must establish that reference correction has already been performed; no source flag or modality infers it.", "Requires a strictly monotonic shift coordinate and complete finite spectra; model compatibility remains source-dependent."], "inputs": [{"coordinatePolicy": "explicit-physical-choice", "coordinates": {}, "description": "Bind the assigned spectral dimension and explicitly selected physical coordinate. Spatial and time dimensions are selected from inspection, not inferred from the project label.", "dimensionPolicy": "reviewed-source-selection", "dimensions": ["y", "x", "spectral"], "inputID": "uploaded", "sourceRole": "primary", "variable": "signal"}], "scientificCompatibility": "source-dependent-validation-deferred"}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "Corrected CARS dataset and Raman prediction",
  "description": "Preserve an already detector/NRB-corrected CARS dataset and run neural prediction.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Corrected CARS dataset",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "prediction",
      "displayName": "CARS neural network prediction",
      "nodeType": "cars-neural-network-prediction",
      "nodeVersion": "cars-neural-network-prediction-v2",
      "parameters": {
        "predictiveIntervals": [
          {
            "confidenceLevel": 95
          },
          {
            "confidenceLevel": 90
          },
          {
            "confidenceLevel": 75
          },
          {
            "confidenceLevel": 50
          }
        ]
      }
    },
    {
      "nodeID": "measurementOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Corrected CARS dataset",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "layers",
            "label": "Layers",
            "shortLabel": "Layers",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {
              "spectral": {
                "coverage": "all"
              }
            },
            "windowDimension": "spectral",
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    },
    {
      "nodeID": "predictionOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Raman spectrum",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": [
              "predictive-95",
              "predictive-90",
              "predictive-75",
              "predictive-50"
            ]
          },
          {
            "featureID": "layers",
            "label": "Layers",
            "shortLabel": "Layers",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {
              "spectral": {
                "coverage": "all"
              }
            },
            "windowDimension": "spectral",
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "prediction",
      "toInput": "measurement",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "measurementOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "prediction",
      "fromOutput": "result",
      "toNodeID": "predictionOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "y": "y",
          "x": "x",
          "spectral": "spectral"
        }
      }
    },
    "outputProfiles": {
      "measurementOutput": "exploration",
      "predictionOutput": "exploration"
    },
    "generatedFeatures": {
      "measurementOutput": [
        "curve",
        "layers"
      ],
      "predictionOutput": [
        "curve",
        "layers"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "610906b7cfe81b0c4275a78a7e664ec7f42accba0afdcb3c51fc6e71a94dcecb"
}

```

## CARS correction, Raman prediction, MEM retrieval, and Gaussian peaks

Example ID: `hyperspectral-cars-correction-raman-prediction-mem-retrieval-and-gaussian-peaks`

Compare reference-normalized CARS, neural prediction, MEM retrieval and three Gaussian peak ranges.

Requirements: {"caveats": ["Reference spectral coordinate values must align; known intensity units must be compatible.", "Use a strictly monotonic shift axis with complete finite spectra; MEM keeps the catalog's relaxed uniform-axis default.", "The shift coordinate must use the intended physical scale and cover 1370-1480, 1960-2070 and 2690-2800 with enough samples per range.", "Gaussian fitting uses independent range-wise moments, not a joint least-squares decomposition; these authored ranges are not inferred from the source.", "Neural execution requires its provider and model resources; schema validity does not establish scientific suitability."], "inputs": [{"coordinatePolicy": "explicit-physical-choice", "coordinates": {}, "description": "Bind the assigned spectral dimension and explicitly selected physical coordinate. Spatial and time dimensions are selected from inspection, not inferred from the project label.", "dimensionPolicy": "reviewed-source-selection", "dimensions": ["y", "x", "spectral"], "inputID": "uploaded", "sourceRole": "primary", "variable": "signal"}, {"coordinatePolicy": "explicit-physical-choice", "coordinates": {}, "description": "Bind the assigned spectral dimension and explicitly selected physical coordinate. Spatial and time dimensions are selected from inspection, not inferred from the project label.", "dimensionPolicy": "reviewed-source-selection", "dimensions": ["spectral"], "inputID": "detector", "sourceRole": "reference", "variable": "signal"}, {"coordinatePolicy": "explicit-physical-choice", "coordinates": {}, "description": "Bind the assigned spectral dimension and explicitly selected physical coordinate. Spatial and time dimensions are selected from inspection, not inferred from the project label.", "dimensionPolicy": "reviewed-source-selection", "dimensions": ["spectral"], "inputID": "nonresonant", "sourceRole": "reference", "variable": "signal"}], "scientificCompatibility": "source-dependent-validation-deferred"}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "CARS correction, Raman prediction, MEM retrieval, and Gaussian peaks",
  "description": "Compare reference-normalized CARS, neural prediction, MEM retrieval and three Gaussian peak ranges.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Uploaded CARS dataset",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "detectorBackgroundInput",
      "displayName": "Detector background",
      "nodeType": "reference-input",
      "nodeVersion": "reference-input-v2",
      "parameters": {
        "inputID": "detector"
      }
    },
    {
      "nodeID": "nonResonantBackgroundInput",
      "displayName": "Non-resonant background",
      "nodeType": "reference-input",
      "nodeVersion": "reference-input-v2",
      "parameters": {
        "inputID": "nonresonant"
      }
    },
    {
      "nodeID": "correction",
      "displayName": "CARS detector and NRB correction",
      "nodeType": "cars-bg-nrb-ratio",
      "nodeVersion": "cars-bg-nrb-ratio-v2",
      "parameters": {
        "denominatorZeroPolicy": "nan"
      }
    },
    {
      "nodeID": "prediction",
      "displayName": "CARS neural network prediction",
      "nodeType": "cars-neural-network-prediction",
      "nodeVersion": "cars-neural-network-prediction-v2",
      "parameters": {
        "predictiveIntervals": [
          {
            "confidenceLevel": 95
          },
          {
            "confidenceLevel": 90
          },
          {
            "confidenceLevel": 75
          },
          {
            "confidenceLevel": 50
          }
        ]
      }
    },
    {
      "nodeID": "mem",
      "displayName": "CARS MEM Raman retrieval",
      "nodeType": "cars-mem-raman-retrieval",
      "nodeVersion": "cars-mem-raman-retrieval-v2",
      "parameters": {
        "coordinateMode": "physical",
        "intensityFloor": 1e-12,
        "validateUniformAxis": false
      }
    },
    {
      "nodeID": "gaussianMixture",
      "displayName": "Gaussian peak mixture fit",
      "nodeType": "gaussian-mixture-fit",
      "nodeVersion": "gaussian-mixture-fit-v2",
      "parameters": {
        "coordinateMode": "physical",
        "components": [
          {
            "minimumValue": 1370.0,
            "maximumValue": 1480.0,
            "componentID": "peak-1370-1480",
            "label": "1370-1480"
          },
          {
            "minimumValue": 1960.0,
            "maximumValue": 2070.0,
            "componentID": "peak-1960-2070",
            "label": "1960-2070"
          },
          {
            "minimumValue": 2690.0,
            "maximumValue": 2800.0,
            "componentID": "peak-2690-2800",
            "label": "2690-2800"
          }
        ],
        "nonNegativeAmplitude": true
      }
    },
    {
      "nodeID": "uploadedOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Uploaded CARS dataset",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "layers",
            "label": "Layers",
            "shortLabel": "Layers",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {
              "spectral": {
                "coverage": "all"
              }
            },
            "windowDimension": "spectral",
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "mip",
            "label": "Maximum intensity projection",
            "shortLabel": "MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "hsv-mip",
            "label": "Spectral HSV maximum intensity projection",
            "shortLabel": "HSV-MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "hsv-mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "umap",
            "label": "UMAP spectral embedding",
            "shortLabel": "UMAP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "umap-rgb",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": [
          {
            "analysisID": "pca",
            "method": "pca",
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "coordinates": {},
            "spectrumFeatureID": "curve",
            "componentSelection": {
              "mode": "count",
              "count": 10
            },
            "scores": {
              "featureID": "pca-scores",
              "label": "PCA score images",
              "shortLabel": "PCA scores"
            },
            "loadings": {
              "featureID": "pca-loadings",
              "label": "PCA spectral loadings",
              "shortLabel": "PCA loadings"
            }
          }
        ]
      }
    },
    {
      "nodeID": "detectorBackgroundOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Detector background",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    },
    {
      "nodeID": "nonResonantBackgroundOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Non-resonant background",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    },
    {
      "nodeID": "correctedOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Corrected CARS measurement",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "layers",
            "label": "Layers",
            "shortLabel": "Layers",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {
              "spectral": {
                "coverage": "all"
              }
            },
            "windowDimension": "spectral",
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "mip",
            "label": "Maximum intensity projection",
            "shortLabel": "MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "hsv-mip",
            "label": "Spectral HSV maximum intensity projection",
            "shortLabel": "HSV-MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "hsv-mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "umap",
            "label": "UMAP spectral embedding",
            "shortLabel": "UMAP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "umap-rgb",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": [
          {
            "analysisID": "pca",
            "method": "pca",
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "coordinates": {},
            "spectrumFeatureID": "curve",
            "componentSelection": {
              "mode": "count",
              "count": 10
            },
            "scores": {
              "featureID": "pca-scores",
              "label": "PCA score images",
              "shortLabel": "PCA scores"
            },
            "loadings": {
              "featureID": "pca-loadings",
              "label": "PCA spectral loadings",
              "shortLabel": "PCA loadings"
            }
          }
        ]
      }
    },
    {
      "nodeID": "predictionOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Raman spectrum",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Median estimate",
            "shortLabel": "Median estimate",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": [
              "predictive-95",
              "predictive-90",
              "predictive-75",
              "predictive-50"
            ]
          },
          {
            "featureID": "layers",
            "label": "Layers",
            "shortLabel": "Layers",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {
              "spectral": {
                "coverage": "all"
              }
            },
            "windowDimension": "spectral",
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "mip",
            "label": "Maximum intensity projection",
            "shortLabel": "MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "hsv-mip",
            "label": "Spectral HSV maximum intensity projection",
            "shortLabel": "HSV-MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "hsv-mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "umap",
            "label": "UMAP spectral embedding",
            "shortLabel": "UMAP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "umap-rgb",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": [
          {
            "analysisID": "pca",
            "method": "pca",
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "coordinates": {},
            "spectrumFeatureID": "curve",
            "componentSelection": {
              "mode": "count",
              "count": 10
            },
            "scores": {
              "featureID": "pca-scores",
              "label": "PCA score images",
              "shortLabel": "PCA scores"
            },
            "loadings": {
              "featureID": "pca-loadings",
              "label": "PCA spectral loadings",
              "shortLabel": "PCA loadings"
            }
          }
        ]
      }
    },
    {
      "nodeID": "memOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Raman spectrum (MEM)",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "estimatedRamanSpectrum",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "layers",
            "label": "Layers",
            "shortLabel": "Layers",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "estimatedRamanSpectrum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {
              "spectral": {
                "coverage": "all"
              }
            },
            "windowDimension": "spectral",
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "mip",
            "label": "Maximum intensity projection",
            "shortLabel": "MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "estimatedRamanSpectrum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "hsv-mip",
            "label": "Spectral HSV maximum intensity projection",
            "shortLabel": "HSV-MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "hsv-mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "estimatedRamanSpectrum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "umap",
            "label": "UMAP spectral embedding",
            "shortLabel": "UMAP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "umap-rgb",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "estimatedRamanSpectrum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "curve-real-component",
            "label": "Real component",
            "shortLabel": "Real component",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "realComponent",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "curve-phase",
            "label": "Phase",
            "shortLabel": "Phase",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "phase",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "curve-amplitude",
            "label": "Amplitude",
            "shortLabel": "Amplitude",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "amplitude",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "curve-log-amplitude",
            "label": "Log amplitude",
            "shortLabel": "Log amplitude",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "logAmplitude",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": []
          }
        ],
        "analyses": [
          {
            "analysisID": "pca",
            "method": "pca",
            "signal": {
              "memberID": "estimatedRamanSpectrum",
              "variable": "signal"
            },
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "coordinates": {},
            "spectrumFeatureID": "curve",
            "componentSelection": {
              "mode": "count",
              "count": 10
            },
            "scores": {
              "featureID": "pca-scores",
              "label": "PCA score images",
              "shortLabel": "PCA scores"
            },
            "loadings": {
              "featureID": "pca-loadings",
              "label": "PCA spectral loadings",
              "shortLabel": "PCA loadings"
            }
          }
        ]
      }
    },
    {
      "nodeID": "gaussianMixtureOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Gaussian peak mixture",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "sum",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "y",
              "x"
            ],
            "relationshipIDs": [
              "components"
            ]
          },
          {
            "featureID": "layers",
            "label": "Layers",
            "shortLabel": "Layers",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "sum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {
              "spectral": {
                "coverage": "all"
              }
            },
            "windowDimension": "spectral",
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "mip",
            "label": "Maximum intensity projection",
            "shortLabel": "MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "sum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "hsv-mip",
            "label": "Spectral HSV maximum intensity projection",
            "shortLabel": "HSV-MIP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "hsv-mip",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "sum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "umap",
            "label": "UMAP spectral embedding",
            "shortLabel": "UMAP",
            "spectrumFeatureID": "curve",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "projection": "umap-rgb",
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "signal": {
              "memberID": "sum",
              "variable": "signal"
            },
            "displayDimensions": [
              "y",
              "x"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": [
          {
            "analysisID": "pca",
            "method": "pca",
            "signal": {
              "memberID": "sum",
              "variable": "signal"
            },
            "spectralDimension": "spectral",
            "spatialDimensions": [
              "y",
              "x"
            ],
            "coordinates": {},
            "spectrumFeatureID": "curve",
            "componentSelection": {
              "mode": "count",
              "count": 10
            },
            "scores": {
              "featureID": "pca-scores",
              "label": "PCA score images",
              "shortLabel": "PCA scores"
            },
            "loadings": {
              "featureID": "pca-loadings",
              "label": "PCA spectral loadings",
              "shortLabel": "PCA loadings"
            }
          }
        ]
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "correction",
      "toInput": "measurement",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "detectorBackgroundInput",
      "fromOutput": "reference",
      "toNodeID": "correction",
      "toInput": "detectorBackground",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "nonResonantBackgroundInput",
      "fromOutput": "reference",
      "toNodeID": "correction",
      "toInput": "nonResonantBackground",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "correction",
      "fromOutput": "correctedMeasurement",
      "toNodeID": "prediction",
      "toInput": "measurement",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "correction",
      "fromOutput": "correctedMeasurement",
      "toNodeID": "mem",
      "toInput": "dataset",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "prediction",
      "fromOutput": "result",
      "toNodeID": "gaussianMixture",
      "toInput": "dataset",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "uploadedOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "detectorBackgroundInput",
      "fromOutput": "reference",
      "toNodeID": "detectorBackgroundOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "nonResonantBackgroundInput",
      "fromOutput": "reference",
      "toNodeID": "nonResonantBackgroundOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "correction",
      "fromOutput": "correctedMeasurement",
      "toNodeID": "correctedOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "prediction",
      "fromOutput": "result",
      "toNodeID": "predictionOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "mem",
      "fromOutput": "result",
      "toNodeID": "memOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "gaussianMixture",
      "fromOutput": "result",
      "toNodeID": "gaussianMixtureOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "y": "y",
          "x": "x",
          "spectral": "spectral"
        }
      },
      "detector": {
        "variable": "signal",
        "dimensions": {
          "spectral": "spectral"
        }
      },
      "nonresonant": {
        "variable": "signal",
        "dimensions": {
          "spectral": "spectral"
        }
      }
    },
    "outputProfiles": {
      "uploadedOutput": "exploration",
      "detectorBackgroundOutput": "exploration",
      "nonResonantBackgroundOutput": "exploration",
      "correctedOutput": "exploration",
      "predictionOutput": "exploration",
      "memOutput": "exploration",
      "gaussianMixtureOutput": "exploration"
    },
    "generatedFeatures": {
      "uploadedOutput": [
        "curve",
        "layers",
        "mip",
        "hsv-mip",
        "umap",
        "pca-scores",
        "pca-loadings"
      ],
      "detectorBackgroundOutput": [
        "curve"
      ],
      "nonResonantBackgroundOutput": [
        "curve"
      ],
      "correctedOutput": [
        "curve",
        "layers",
        "mip",
        "hsv-mip",
        "umap",
        "pca-scores",
        "pca-loadings"
      ],
      "predictionOutput": [
        "curve",
        "layers",
        "mip",
        "hsv-mip",
        "umap",
        "pca-scores",
        "pca-loadings"
      ],
      "memOutput": [
        "curve",
        "layers",
        "mip",
        "hsv-mip",
        "umap",
        "curve-real-component",
        "curve-phase",
        "curve-amplitude",
        "curve-log-amplitude",
        "pca-scores",
        "pca-loadings"
      ],
      "gaussianMixtureOutput": [
        "curve",
        "layers",
        "mip",
        "hsv-mip",
        "umap",
        "pca-scores",
        "pca-loadings"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "8a77d624bd9980c2afa84478a4f1fae0cb60e2d9f0cdee23df52ffbcd7385b01"
}

```

## Raman correction and smoothed measurement

Example ID: `single-spectrum-raman-correction-and-smoothed-measurement`

Preserve the original, neural-corrected Raman result and independent 5-point moving average.

Requirements: {"caveats": ["Requires a strictly monotonic shift axis and at least one complete finite spectrum.", "Provider/model availability and source-dependent scientific compatibility must be checked separately."], "inputs": [{"coordinatePolicy": "explicit-physical-choice", "coordinates": {}, "description": "Bind the assigned spectral dimension and explicitly selected physical coordinate. Spatial and time dimensions are selected from inspection, not inferred from the project label.", "dimensionPolicy": "reviewed-source-selection", "dimensions": ["spectral"], "inputID": "uploaded", "sourceRole": "primary", "variable": "signal"}], "scientificCompatibility": "source-dependent-validation-deferred"}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "Raman correction and smoothed measurement",
  "description": "Preserve the original, neural-corrected Raman result and independent 5-point moving average.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Uploaded Raman measurement",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "ramanCorrection",
      "displayName": "Raman neural network correction",
      "nodeType": "raman-neural-network-correction",
      "nodeVersion": "raman-neural-network-correction-v2",
      "parameters": {
        "predictiveIntervals": [
          {
            "confidenceLevel": 95
          },
          {
            "confidenceLevel": 90
          },
          {
            "confidenceLevel": 75
          },
          {
            "confidenceLevel": 50
          }
        ]
      }
    },
    {
      "nodeID": "movingAverage",
      "displayName": "5-point moving average",
      "nodeType": "local-mean",
      "nodeVersion": "local-mean-v2",
      "parameters": {}
    },
    {
      "nodeID": "measurementOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Uploaded Raman measurement",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    },
    {
      "nodeID": "ramanCorrectionOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Raman correction",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "median",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": [
              "predictive-95",
              "predictive-90",
              "predictive-75",
              "predictive-50"
            ]
          }
        ],
        "analyses": []
      }
    },
    {
      "nodeID": "smoothedMeasurementOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "5-point moving average",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "curve",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "ramanCorrection",
      "toInput": "measurement",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axis": "spectral"
        },
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "movingAverage",
      "toInput": "dataset",
      "binding": {
        "variable": "signal",
        "dimensions": {
          "axes": [
            "spectral"
          ]
        },
        "coordinates": {},
        "dimensionParameters": {
          "spectral": {
            "windowSize": 5
          }
        },
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "measurementOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "ramanCorrection",
      "fromOutput": "result",
      "toNodeID": "ramanCorrectionOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "movingAverage",
      "fromOutput": "result",
      "toNodeID": "smoothedMeasurementOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "spectral": "spectral"
        }
      }
    },
    "outputProfiles": {
      "measurementOutput": "exploration",
      "ramanCorrectionOutput": "exploration",
      "smoothedMeasurementOutput": "exploration"
    },
    "generatedFeatures": {
      "measurementOutput": [
        "curve"
      ],
      "ramanCorrectionOutput": [
        "curve"
      ],
      "smoothedMeasurementOutput": [
        "curve"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "8d242fa243c0999c9787b50b0518e17f90c8e040da560d8ae084c553fdf70afe"
}

```

## Import uploaded dataset

Example ID: `hyperspectral-import-uploaded-dataset`

Preserve selected source values and metadata unchanged.

Requirements: {"caveats": [], "inputs": [{"coordinatePolicy": "physical-or-index", "coordinates": {}, "description": "Preserve the selected Dataset and prepare compatible exploration views.", "dimensionPolicy": "reviewed-source-selection", "dimensions": [], "inputID": "uploaded", "sourceRole": "primary", "variable": null}], "scientificCompatibility": "source-dependent-validation-deferred"}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "Import uploaded dataset",
  "description": "Preserve selected source values and metadata unchanged.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Uploaded dataset",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "measurementOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Uploaded dataset",
        "save": {
          "members": "all"
        },
        "views": [],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "measurementOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "spectral": "spectral",
          "y": "y",
          "x": "x",
          "time": "time"
        }
      }
    },
    "outputProfiles": {
      "measurementOutput": "exploration"
    },
    "generatedFeatures": {
      "measurementOutput": [
        "curve",
        "layers",
        "mip",
        "hsv-mip",
        "umap",
        "pca-scores",
        "pca-loadings"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "71478601bb2e726fefb21d1b8cf4e2586e422e8580733f2f3841b3188d6d41b0"
}

```

## Import spectral time series

Example ID: `spectral-time-series-import-uploaded-dataset`

Preserve the uploaded spectral time series unchanged and browse its waterfall, spectra, and time traces.

Requirements: {"caveats": [], "inputs": [{"coordinatePolicy": "explicit-physical-choice", "coordinates": {}, "description": "Select the time and spectral dimensions and their physical coordinates, or explicitly use index coordinates.", "dimensionPolicy": "reviewed-source-selection", "dimensions": ["time", "spectral"], "inputID": "uploaded", "sourceRole": "primary", "variable": "signal"}], "scientificCompatibility": "source-dependent-validation-deferred"}

```json

{
  "version": "processing-workflow-v2",
  "phase": "upload",
  "friendlyName": "Import spectral time series",
  "description": "Preserve the uploaded spectral time series unchanged and browse its waterfall, spectra, and time traces.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Uploaded spectral time series",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "uploaded"
      }
    },
    {
      "nodeID": "measurementOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Spectral time series",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "waterfall",
            "label": "Spectral waterfall",
            "shortLabel": "Waterfall heatmap",
            "spectrumFeatureID": "spectrum",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "time",
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "spectrum",
            "label": "Spectrum",
            "shortLabel": "Spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "time"
            ],
            "relationshipIDs": []
          },
          {
            "featureID": "time-trace",
            "label": "Time trace",
            "shortLabel": "Time trace",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "dataset",
              "variable": "signal"
            },
            "displayDimensions": [
              "time"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {},
            "selectionDimensions": [
              "spectral"
            ],
            "relationshipIDs": []
          }
        ],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "measurementOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "authoring": {
    "version": "workflow-authoring-v1",
    "inputs": {
      "uploaded": {
        "variable": "signal",
        "dimensions": {
          "time": "time",
          "spectral": "spectral"
        }
      }
    },
    "outputProfiles": {
      "measurementOutput": "exploration"
    },
    "generatedFeatures": {
      "measurementOutput": [
        "waterfall",
        "spectrum",
        "time-trace"
      ]
    },
    "resolvedInputs": {},
    "generatedRequests": {}
  },
  "workflowHash": "67a9c205276cfef31ff56ff50ed06305be22bda7e870c62528bab149703797ec"
}

```

## Temporal GP mean and uncertainty

Example ID: `temporal-gp-mean-and-uncertainty`

Fit independent temporal curves for each spectral sample and prepare mean and uncertainty views.

Requirements: {"bindingPolicy": "This graph assumes the stated exact input metadata. Use the user's reviewed input description for other names and exact package sourceBindings; do not invent them.", "inputs": [{"coordinates": {"spectral": "spectralAxis", "time": "timeAxis"}, "dimensions": ["time", "spectral"], "inputID": "input1", "variable": "signal"}], "scientificCompatibility": "source-dependent-validation-deferred"}

```json

{
  "version": "processing-workflow-v2",
  "phase": "postprocessing",
  "friendlyName": "Temporal GP mean and uncertainty",
  "description": "Fit independent temporal curves for each spectral sample and prepare mean and uncertainty views.",
  "nodes": [
    {
      "nodeID": "input",
      "displayName": "Selected spectral time series",
      "nodeType": "dataset-input",
      "nodeVersion": "dataset-input-v2",
      "parameters": {
        "inputID": "input1"
      }
    },
    {
      "nodeID": "temporalGP",
      "displayName": "Temporal Gaussian process regression",
      "nodeType": "gaussian-process-regression",
      "nodeVersion": "gaussian-process-regression-v2",
      "parameters": {
        "fitMode": "bbmm",
        "fitScope": "independent",
        "kernel": {
          "family": "matern-5/2",
          "lengthscaleMode": "anisotropic",
          "lengthscales": [],
          "outputScale": {
            "mode": "estimate"
          }
        },
        "observationNoise": {
          "mode": "estimate"
        },
        "intervalSigmas": [
          1.96
        ],
        "intervalDistributions": [
          "latent",
          "observation"
        ],
        "trainingIterations": 75,
        "convergenceTolerance": 0.0001,
        "convergencePatience": 10,
        "learningRate": 0.05,
        "inducingPointCount": 256,
        "miniBatchSize": 1024
      }
    },
    {
      "nodeID": "gpOutput",
      "nodeType": "analysis-output",
      "nodeVersion": "analysis-output-v2",
      "parameters": {
        "friendlyName": "Temporal GP mean and uncertainty",
        "save": {
          "members": "all"
        },
        "views": [
          {
            "featureID": "time-trace",
            "label": "GP time trace and uncertainty",
            "shortLabel": "GP time trace",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "mean",
              "variable": "signal"
            },
            "displayDimensions": [
              "time"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {
              "time": {
                "memberID": "mean",
                "coordinate": "timeAxis"
              },
              "spectral": {
                "memberID": "mean",
                "coordinate": "spectralAxis"
              }
            },
            "selectionDimensions": [
              "spectral"
            ],
            "relationshipIDs": [
              "latent-1_96",
              "observation-1_96"
            ]
          },
          {
            "featureID": "waterfall",
            "label": "GP mean spectral waterfall",
            "shortLabel": "GP waterfall",
            "spectrumFeatureID": "spectrum",
            "adapterID": "grid",
            "adapterVersion": "grid-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "mean",
              "variable": "signal"
            },
            "displayDimensions": [
              "time",
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {
              "time": {
                "memberID": "mean",
                "coordinate": "timeAxis"
              },
              "spectral": {
                "memberID": "mean",
                "coordinate": "spectralAxis"
              }
            },
            "selectionDimensions": [],
            "relationshipIDs": []
          },
          {
            "featureID": "spectrum",
            "label": "GP mean spectrum",
            "shortLabel": "GP spectrum",
            "adapterID": "line",
            "adapterVersion": "line-v1",
            "spatialDimensions": [],
            "signal": {
              "memberID": "mean",
              "variable": "signal"
            },
            "displayDimensions": [
              "spectral"
            ],
            "browse": {},
            "fixedIndices": {},
            "coordinates": {
              "time": {
                "memberID": "mean",
                "coordinate": "timeAxis"
              },
              "spectral": {
                "memberID": "mean",
                "coordinate": "spectralAxis"
              }
            },
            "selectionDimensions": [
              "time"
            ],
            "relationshipIDs": [
              "latent-1_96",
              "observation-1_96"
            ]
          }
        ],
        "analyses": []
      }
    }
  ],
  "edges": [
    {
      "fromNodeID": "input",
      "fromOutput": "dataset",
      "toNodeID": "temporalGP",
      "toInput": "dataset",
      "binding": {
        "variable": "signal",
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [
          "timeAxis"
        ],
        "groupByCoordinates": []
      }
    },
    {
      "fromNodeID": "temporalGP",
      "fromOutput": "result",
      "toNodeID": "gpOutput",
      "toInput": "primary",
      "binding": {
        "dimensions": {},
        "coordinates": {},
        "dimensionParameters": {},
        "modeledCoordinates": [],
        "groupByCoordinates": []
      }
    }
  ],
  "workflowHash": "95ad025c34847e6d906c3e1e235e2588371678badc200bbb096735494ff6354f"
}

```
