TIVITA workflows

This example checks source orientation, not a camera. The only admitted profile here is a synthetic y,x,band declaration. Tissue, Mini and Surgery device/export profiles require independent calibration and reference-output evidence.

measurement <- list(
  cube = array(seq_len(24), c(2, 3, 4)),
  wavelengths = c(500, 600, 700, 800), metadata = list(synthetic = TRUE),
  references = list(), timestamp = "2026-01-01", path = "synthetic"
)
x <- hm_from_tivis(
  measurement,
  hm_tivita_profile(wavelengths = measurement$wavelengths)
)
b <- hm_read_block(x)
if (!isTRUE(all(
  identical(as.numeric(b$values), as.numeric(measurement$cube)),
  identical(dim(b$values), c(2L, 3L, 4L, 1L))
))) {
  cli::cli_abort("Example assertion failed.", class = "hm_example_error")
}
hm_instrument_profiles()
#>                   profile         status
#> 1 tivita-synthetic-yxb-v1 synthetic_only
#> 2                  Tissue    unqualified
#> 3                    Mini    unqualified
#> 4                 Surgery    unqualified
#> 5               cuvis-sdk    unqualified
#>                                                  reason
#> 1             Explicit portable arrays; no device claim
#> 2                        Device/export fixture required
#> 3                        Device/export fixture required
#> 4                        Device/export fixture required
#> 5 SDK scaling and complete enumeration fixture required

hm_from_tivis() requires an explicit source profile. It does not infer a grid from the camera name or the measurement’s band count. Radiometric calibration remains unknown unless established separately. Masks retain unknown/invalid pixels; registered SpecCube, RGB, DICOM and parameter-display assets retain distinct roles. A vendor display does not establish quantitative export parity.