# HARKANA Data Formats

Generated from the current implementation. See the JSON resource for exact structured metadata.

```json
{
  "availability": "Implemented reader support is not a claim of activation or live verification in every deployment.",
  "formats": [
    {
      "description": "Streaming one-column signal or two-column axis/signal vectors; one-column sources use sample indices.",
      "extensions": [
        ".csv"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "csv",
      "label": "CSV",
      "selectionFields": [
        "axisUnit",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "signalUnit"
      ]
    },
    {
      "description": "Header and matching binary data; native interleave and band dimensions are preserved.",
      "extensions": [
        ".hdr",
        ".bil",
        ".bin",
        ".bip",
        ".bsq",
        ".dat",
        ".img",
        ".raw"
      ],
      "fileGrouping": {
        "binaryExtensions": [
          ".bil",
          ".bin",
          ".bip",
          ".bsq",
          ".dat",
          ".img",
          ".raw"
        ],
        "description": "Declare exactly one .hdr header and one matching binary file in the same directory, for example sample.hdr plus sample.bin. Binary alternatives are listed in binaryExtensions; a header or binary alone is not a complete source.",
        "fileCount": 2,
        "headerExtensions": [
          ".hdr"
        ],
        "kind": "header-binary-pair"
      },
      "formatID": "envi",
      "label": "ENVI",
      "selectionFields": [
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions"
      ]
    },
    {
      "description": "Numeric Igor v5 waves; wavePath selects a wave in multi-wave containers. Unsupported wave types reject.",
      "extensions": [
        ".ibw",
        ".pxp",
        ".pxt"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "igor",
      "label": "Igor Pro",
      "selectionFields": [
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "wavePath"
      ]
    },
    {
      "description": "Bounded JSON objects with y (or values), optional x, and optional axis/signal units; oversized or invalid sources reject.",
      "extensions": [
        ".json"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "json",
      "label": "JSON spectrum",
      "selectionFields": [
        "axisUnit",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "signalUnit"
      ]
    },
    {
      "description": "Selected numeric variables and explicitly selected native coordinates; use exact inspected variable paths.",
      "extensions": [
        ".nc",
        ".nc4",
        ".cdf",
        ".netcdf"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "netcdf",
      "label": "NetCDF",
      "selectionFields": [
        "coordinates",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "signal",
        "variables"
      ]
    },
    {
      "description": "Selected decoder series with native dimensions; tiled access is supported.",
      "extensions": [
        ".oir"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "oir",
      "label": "Olympus OIR",
      "selectionFields": [
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "seriesIndex"
      ]
    },
    {
      "description": "Selected series with native dimensions and available OME coordinate metadata.",
      "extensions": [
        ".ome.tif",
        ".ome.tiff",
        ".tif",
        ".tiff"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "ome-tiff",
      "label": "OME-TIFF",
      "selectionFields": [
        "channelValuesFromLabels",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "seriesIndex"
      ]
    },
    {
      "description": "OME-Zarr v2 stores; datasetPath selects the array and available coordinate transforms are retained.",
      "extensions": [
        ".zarr"
      ],
      "fileGrouping": {
        "description": "Declare all metadata and chunk files under one explicit .zarr directory root, preserving relative paths. A source is the complete store, not a single chunk or metadata file.",
        "kind": "directory",
        "rootExtension": ".zarr"
      },
      "formatID": "ome-zarr",
      "label": "OME-Zarr",
      "selectionFields": [
        "channelValuesFromLabels",
        "datasetPath",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions"
      ]
    },
    {
      "description": "Bounded SPC spectral vectors; unsupported or oversized sources reject.",
      "extensions": [
        ".spc"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "spc",
      "label": "SPC spectrum",
      "selectionFields": [
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions"
      ]
    },
    {
      "description": "Streaming one-column signal or two-column axis/signal vectors; one-column sources use sample indices.",
      "extensions": [
        ".txt",
        ".text"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "text",
      "label": "Delimited text",
      "selectionFields": [
        "axisUnit",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "signalUnit"
      ]
    },
    {
      "description": "Selected series with native dimensions; strips and tiles are supported.",
      "extensions": [
        ".tif",
        ".tiff"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "tiff",
      "label": "TIFF",
      "selectionFields": [
        "channelValuesFromLabels",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "seriesIndex"
      ]
    },
    {
      "description": "Streaming one-column signal or two-column axis/signal vectors; one-column sources use sample indices.",
      "extensions": [
        ".tsv"
      ],
      "fileGrouping": {
        "description": "Declare exactly one source file.",
        "fileCount": 1,
        "kind": "single-file"
      },
      "formatID": "tsv",
      "label": "TSV",
      "selectionFields": [
        "axisUnit",
        "dimensionRoles",
        "fixedIndices",
        "retainedDimensions",
        "signalUnit"
      ]
    }
  ],
  "selectionSemantics": {
    "dimensionRoles": "Roles annotate dimensions; they neither select dimensions nor create physical calibration.",
    "dimensions": "Variables retain their own ordered native dimensions. There is no fixed four-dimensional requirement, synthetic singleton-axis requirement or implicit flattening.",
    "fixedIndices": "Select zero-based indices of dimensions to remove. Retained and fixed dimensions must not overlap.",
    "formatSpecific": "The schema describes all source choices; each format accepts only its documented selectionFields. Non-default options for another format reject.",
    "indexCoordinatePolicy": "dimension-index-coordinates-v1",
    "indexCoordinates": "New selections persist named unitless sample-index coordinates for every retained dimension. Empty native-coordinate selection does not suppress these indices. Identify generated indices by metadata, not names; physical-coordinate operations reject indices.",
    "nativeCoordinates": "Reader-provided native coordinates are preserved. The coordinates selector is format-specific, not a universal suppression switch; other readers may supply coordinates even when this list is empty.",
    "nativeIdentifiers": "Use exact case-sensitive inspected dimension, variable and coordinate IDs. Dimension names are not semantic roles.",
    "netcdfCoordinates": "For NetCDF, omitted coordinates and coordinates: [] both select no native coordinate variables. Select explicit inspected coordinate paths to retain them; there is no automatic coordinate-variable discovery into the selected Dataset.",
    "retainedDimensions": "When provided, retains the named dimensions. Excluded non-singleton dimensions require fixedIndices; excluded singleton dimensions are fixed at zero. Omission preserves literal selection semantics.",
    "units": "Missing units remain null; numeric channel labels require explicit channelValuesFromLabels selection and are not automatic calibration.",
    "unresolvedSources": "A container without an executable default requires explicit signal or wave selection and reinspection before preview or submission."
  },
  "sourceSelectionSchema": {
    "additionalProperties": false,
    "properties": {
      "axisUnit": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "title": "Axisunit"
      },
      "channelValuesFromLabels": {
        "default": false,
        "title": "Channelvaluesfromlabels",
        "type": "boolean"
      },
      "coordinates": {
        "default": [],
        "items": {
          "maxLength": 128,
          "minLength": 1,
          "type": "string"
        },
        "maxItems": 64,
        "title": "Coordinates",
        "type": "array"
      },
      "datasetPath": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "title": "Datasetpath"
      },
      "dimensionRoles": {
        "additionalProperties": {
          "maxLength": 128,
          "minLength": 1,
          "type": "string"
        },
        "default": {},
        "propertyNames": {
          "maxLength": 128,
          "minLength": 1
        },
        "title": "Dimensionroles",
        "type": "object"
      },
      "fixedIndices": {
        "additionalProperties": {
          "minimum": 0,
          "type": "integer"
        },
        "default": {},
        "propertyNames": {
          "maxLength": 128,
          "minLength": 1
        },
        "title": "Fixedindices",
        "type": "object"
      },
      "retainedDimensions": {
        "anyOf": [
          {
            "items": {
              "maxLength": 128,
              "minLength": 1,
              "type": "string"
            },
            "maxItems": 64,
            "type": "array"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "title": "Retaineddimensions"
      },
      "seriesIndex": {
        "default": 0,
        "minimum": 0,
        "title": "Seriesindex",
        "type": "integer"
      },
      "signal": {
        "default": "signal",
        "maxLength": 128,
        "minLength": 1,
        "title": "Signal",
        "type": "string"
      },
      "signalUnit": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "title": "Signalunit"
      },
      "variables": {
        "default": [],
        "items": {
          "maxLength": 128,
          "minLength": 1,
          "type": "string"
        },
        "maxItems": 64,
        "title": "Variables",
        "type": "array"
      },
      "wavePath": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "title": "Wavepath"
      }
    },
    "title": "SourceSelection",
    "type": "object"
  },
  "summary": "Native Dataset source formats and explicit source selection.",
  "version": "processing-data-formats-doc-v2"
}
```
