@photivra/engine 1.5.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +414 -6
- package/CITATION.cff +1 -1
- package/NODE_SUPPORT.md +64 -12
- package/README.md +301 -182
- package/SECURITY.md +37 -28
- package/THIRD_PARTY.md +148 -4
- package/dist/camera/equivalent-focal-length.d.ts +13 -14
- package/dist/camera/equivalent-focal-length.js +15 -13
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +30 -19
- package/dist/camera/field-of-view.js +67 -18
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/lens-projection.d.ts +170 -0
- package/dist/camera/lens-projection.js +444 -0
- package/dist/camera/lens-projection.js.map +1 -0
- package/dist/camera/projected-object-size.d.ts +10 -11
- package/dist/camera/projected-object-size.js +12 -10
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +9 -10
- package/dist/capture/capture-export-metadata.js +8 -5
- package/dist/capture/capture-export-metadata.js.map +1 -1
- package/dist/capture/dng-import.d.ts +91 -0
- package/dist/capture/dng-import.js +343 -0
- package/dist/capture/dng-import.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +37 -17
- package/dist/capture/environment-raw-producer.js +43 -19
- package/dist/capture/environment-raw-producer.js.map +1 -1
- package/dist/capture/export-jpeg.d.ts +35 -4
- package/dist/capture/export-jpeg.js +133 -47
- package/dist/capture/export-jpeg.js.map +1 -1
- package/dist/capture/export-tiff.d.ts +48 -24
- package/dist/capture/export-tiff.js +91 -31
- package/dist/capture/export-tiff.js.map +1 -1
- package/dist/capture/focus-control.d.ts +42 -65
- package/dist/capture/focus-control.js +56 -75
- package/dist/capture/focus-control.js.map +1 -1
- package/dist/capture/host-yield-cadence.d.ts +25 -0
- package/dist/capture/host-yield-cadence.js +25 -0
- package/dist/capture/host-yield-cadence.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +14 -12
- package/dist/capture/linear-encoding.js +14 -13
- package/dist/capture/linear-encoding.js.map +1 -1
- package/dist/capture/lossless-jpeg.d.ts +27 -0
- package/dist/capture/lossless-jpeg.js +237 -0
- package/dist/capture/lossless-jpeg.js.map +1 -0
- package/dist/capture/native-environment-lean.d.ts +227 -0
- package/dist/capture/native-environment-lean.js +974 -0
- package/dist/capture/native-environment-lean.js.map +1 -0
- package/dist/capture/native-environment-optical-stage.d.ts +97 -0
- package/dist/capture/native-environment-optical-stage.js +340 -0
- package/dist/capture/native-environment-optical-stage.js.map +1 -0
- package/dist/capture/native-environment-raw.d.ts +140 -6
- package/dist/capture/native-environment-raw.js +435 -34
- package/dist/capture/native-environment-raw.js.map +1 -1
- package/dist/capture/native-raw-development.d.ts +116 -9
- package/dist/capture/native-raw-development.js +221 -62
- package/dist/capture/native-raw-development.js.map +1 -1
- package/dist/capture/native-raw-dng.d.ts +60 -0
- package/dist/capture/native-raw-dng.js +167 -0
- package/dist/capture/native-raw-dng.js.map +1 -0
- package/dist/capture/native-raw.d.ts +65 -12
- package/dist/capture/native-raw.js +81 -19
- package/dist/capture/native-raw.js.map +1 -1
- package/dist/capture/packed-sensor-raw.d.ts +160 -0
- package/dist/capture/packed-sensor-raw.js +221 -0
- package/dist/capture/packed-sensor-raw.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +58 -35
- package/dist/capture/photographic-export.js +177 -70
- package/dist/capture/photographic-export.js.map +1 -1
- package/dist/capture/raw-development-kernel.d.ts +52 -0
- package/dist/capture/raw-development-kernel.js +88 -0
- package/dist/capture/raw-development-kernel.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +7 -7
- package/dist/capture/raw-frame-limits.js +7 -6
- package/dist/capture/raw-frame-limits.js.map +1 -1
- package/dist/capture/raw-frame-reconstruction.d.ts +8 -9
- package/dist/capture/raw-frame-reconstruction.js +9 -8
- package/dist/capture/raw-frame-reconstruction.js.map +1 -1
- package/dist/capture/raw-white-level.d.ts +55 -0
- package/dist/capture/raw-white-level.js +165 -0
- package/dist/capture/raw-white-level.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +5 -7
- package/dist/capture/release-sequence.js +15 -13
- package/dist/capture/release-sequence.js.map +1 -1
- package/dist/capture/sensor-raw-frame.d.ts +5 -6
- package/dist/capture/sensor-raw-frame.js +26 -9
- package/dist/capture/sensor-raw-frame.js.map +1 -1
- package/dist/capture/sensor-raw-producer.d.ts +21 -13
- package/dist/capture/sensor-raw-producer.js +86 -25
- package/dist/capture/sensor-raw-producer.js.map +1 -1
- package/dist/capture/simulated-capture.d.ts +15 -16
- package/dist/capture/simulated-capture.js +22 -12
- package/dist/capture/simulated-capture.js.map +1 -1
- package/dist/color/camera-color-matrix.d.ts +69 -0
- package/dist/color/camera-color-matrix.js +132 -0
- package/dist/color/camera-color-matrix.js.map +1 -0
- package/dist/color/capture-color.d.ts +17 -10
- package/dist/color/capture-color.js +50 -17
- package/dist/color/capture-color.js.map +1 -1
- package/dist/color/chromatic-adaptation.d.ts +63 -0
- package/dist/color/chromatic-adaptation.js +91 -0
- package/dist/color/chromatic-adaptation.js.map +1 -0
- package/dist/color/color-difference.d.ts +104 -0
- package/dist/color/color-difference.js +205 -0
- package/dist/color/color-difference.js.map +1 -0
- package/dist/color/color-matching-functions.d.ts +168 -0
- package/dist/color/color-matching-functions.js +309 -0
- package/dist/color/color-matching-functions.js.map +1 -0
- package/dist/color/colorimetry-math.d.ts +52 -0
- package/dist/color/colorimetry-math.js +144 -0
- package/dist/color/colorimetry-math.js.map +1 -0
- package/dist/color/gamut-mapping.d.ts +54 -0
- package/dist/color/gamut-mapping.js +107 -0
- package/dist/color/gamut-mapping.js.map +1 -0
- package/dist/color/illuminants.d.ts +182 -0
- package/dist/color/illuminants.js +434 -0
- package/dist/color/illuminants.js.map +1 -0
- package/dist/color/rgb-color-spaces.d.ts +79 -0
- package/dist/color/rgb-color-spaces.js +115 -0
- package/dist/color/rgb-color-spaces.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +33 -11
- package/dist/color/sensor-color-development.js +104 -30
- package/dist/color/sensor-color-development.js.map +1 -1
- package/dist/color/srgb-icc.d.ts +9 -2
- package/dist/color/srgb-icc.js +16 -5
- package/dist/color/srgb-icc.js.map +1 -1
- package/dist/color/srgb-transfer.d.ts +1 -2
- package/dist/color/srgb-transfer.js +1 -1
- package/dist/color/srgb-transfer.js.map +1 -1
- package/dist/color/white-balance.d.ts +68 -19
- package/dist/color/white-balance.js +168 -35
- package/dist/color/white-balance.js.map +1 -1
- package/dist/composition/image-formation-plan.d.ts +152 -128
- package/dist/composition/image-formation-plan.js +292 -138
- package/dist/composition/image-formation-plan.js.map +1 -1
- package/dist/composition/plan-consumer.d.ts +6 -7
- package/dist/composition/plan-consumer.js +14 -11
- package/dist/composition/plan-consumer.js.map +1 -1
- package/dist/core/calculation-result.d.ts +21 -14
- package/dist/core/calculation-result.js +209 -11
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +13 -8
- package/dist/core/canonical-json.js +34 -15
- package/dist/core/canonical-json.js.map +1 -1
- package/dist/core/configuration-error.d.ts +5 -4
- package/dist/core/configuration-error.js +5 -3
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +12 -12
- package/dist/core/evidence-provenance.js +10 -9
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +11 -10
- package/dist/core/image-formation.js +11 -9
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +9 -17
- package/dist/core/owned-data.js +9 -16
- package/dist/core/owned-data.js.map +1 -1
- package/dist/core/portable-math.d.ts +15 -0
- package/dist/core/portable-math.js +56 -0
- package/dist/core/portable-math.js.map +1 -0
- package/dist/core/record-validation.d.ts +48 -9
- package/dist/core/record-validation.js +93 -19
- package/dist/core/record-validation.js.map +1 -1
- package/dist/core/scientific-assurance.d.ts +16 -14
- package/dist/core/scientific-assurance.js +22 -18
- package/dist/core/scientific-assurance.js.map +1 -1
- package/dist/core/spectral-composition.d.ts +13 -14
- package/dist/core/spectral-composition.js +30 -27
- package/dist/core/spectral-composition.js.map +1 -1
- package/dist/core/spectral.d.ts +5 -6
- package/dist/core/spectral.js +9 -7
- package/dist/core/spectral.js.map +1 -1
- package/dist/core/validation.d.ts +3 -6
- package/dist/core/validation.js +3 -5
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +6 -6
- package/dist/core/version.js +6 -5
- package/dist/core/version.js.map +1 -1
- package/dist/equipment/exposure-capabilities.d.ts +10 -10
- package/dist/equipment/exposure-capabilities.js +40 -30
- package/dist/equipment/exposure-capabilities.js.map +1 -1
- package/dist/equipment/generic-tier-assets.d.ts +13 -6
- package/dist/equipment/generic-tier-assets.js +34 -15
- package/dist/equipment/generic-tier-assets.js.map +1 -1
- package/dist/equipment/generic-tier-presets.d.ts +5 -6
- package/dist/equipment/generic-tier-presets.js +15 -13
- package/dist/equipment/generic-tier-presets.js.map +1 -1
- package/dist/equipment/iso-capabilities.d.ts +21 -22
- package/dist/equipment/iso-capabilities.js +49 -44
- package/dist/equipment/iso-capabilities.js.map +1 -1
- package/dist/equipment/metering-capabilities.d.ts +5 -6
- package/dist/equipment/metering-capabilities.js +22 -19
- package/dist/equipment/metering-capabilities.js.map +1 -1
- package/dist/equipment/release-capabilities.d.ts +3 -4
- package/dist/equipment/release-capabilities.js +18 -14
- package/dist/equipment/release-capabilities.js.map +1 -1
- package/dist/exposure/exposure-duration-control.d.ts +19 -17
- package/dist/exposure/exposure-duration-control.js +27 -23
- package/dist/exposure/exposure-duration-control.js.map +1 -1
- package/dist/exposure/exposure-mode-resolver.d.ts +42 -39
- package/dist/exposure/exposure-mode-resolver.js +127 -82
- package/dist/exposure/exposure-mode-resolver.js.map +1 -1
- package/dist/exposure/exposure.d.ts +17 -16
- package/dist/exposure/exposure.js +22 -15
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash-ttl.d.ts +135 -0
- package/dist/exposure/flash-ttl.js +193 -0
- package/dist/exposure/flash-ttl.js.map +1 -0
- package/dist/exposure/flash.d.ts +144 -36
- package/dist/exposure/flash.js +259 -59
- package/dist/exposure/flash.js.map +1 -1
- package/dist/exposure/metering-scene-radiance.d.ts +10 -10
- package/dist/exposure/metering-scene-radiance.js +42 -23
- package/dist/exposure/metering-scene-radiance.js.map +1 -1
- package/dist/exposure/metering-target.d.ts +8 -8
- package/dist/exposure/metering-target.js +30 -20
- package/dist/exposure/metering-target.js.map +1 -1
- package/dist/exposure/metering-temporal.d.ts +16 -15
- package/dist/exposure/metering-temporal.js +41 -19
- package/dist/exposure/metering-temporal.js.map +1 -1
- package/dist/exposure/metering.d.ts +64 -17
- package/dist/exposure/metering.js +159 -30
- package/dist/exposure/metering.js.map +1 -1
- package/dist/exposure/program-line.d.ts +5 -5
- package/dist/exposure/program-line.js +20 -13
- package/dist/exposure/program-line.js.map +1 -1
- package/dist/facade/camera-preset.d.ts +8 -0
- package/dist/facade/camera-preset.js +102 -0
- package/dist/facade/camera-preset.js.map +1 -0
- package/dist/facade/chart-radiance-batch.d.ts +57 -0
- package/dist/facade/chart-radiance-batch.js +121 -0
- package/dist/facade/chart-radiance-batch.js.map +1 -0
- package/dist/facade/chart-scenes.d.ts +177 -0
- package/dist/facade/chart-scenes.js +232 -0
- package/dist/facade/chart-scenes.js.map +1 -0
- package/dist/facade/diffraction-provider.d.ts +30 -0
- package/dist/facade/diffraction-provider.js +127 -0
- package/dist/facade/diffraction-provider.js.map +1 -0
- package/dist/facade/host-yield.d.ts +7 -0
- package/dist/facade/host-yield.js +19 -0
- package/dist/facade/host-yield.js.map +1 -0
- package/dist/facade/scene-radiance.d.ts +117 -0
- package/dist/facade/scene-radiance.js +205 -0
- package/dist/facade/scene-radiance.js.map +1 -0
- package/dist/facade/simulate-capture.d.ts +363 -0
- package/dist/facade/simulate-capture.js +1281 -0
- package/dist/facade/simulate-capture.js.map +1 -0
- package/dist/gpu/chart-radiance-gpu.d.ts +17 -0
- package/dist/gpu/chart-radiance-gpu.js +176 -0
- package/dist/gpu/chart-radiance-gpu.js.map +1 -0
- package/dist/gpu/image-kernel-accelerator.d.ts +132 -0
- package/dist/gpu/image-kernel-accelerator.js +720 -0
- package/dist/gpu/image-kernel-accelerator.js.map +1 -0
- package/dist/gpu/image-kernel-execution.d.ts +92 -0
- package/dist/gpu/image-kernel-execution.js +84 -0
- package/dist/gpu/image-kernel-execution.js.map +1 -0
- package/dist/gpu/sensor-stage-gpu.d.ts +44 -0
- package/dist/gpu/sensor-stage-gpu.js +317 -0
- package/dist/gpu/sensor-stage-gpu.js.map +1 -0
- package/dist/gpu/temporal-sum-gpu.d.ts +23 -0
- package/dist/gpu/temporal-sum-gpu.js +150 -0
- package/dist/gpu/temporal-sum-gpu.js.map +1 -0
- package/dist/gpu/webgpu-runtime.d.ts +63 -0
- package/dist/gpu/webgpu-runtime.js +215 -0
- package/dist/gpu/webgpu-runtime.js.map +1 -0
- package/dist/gpu/wgsl-chart-kernel.d.ts +30 -0
- package/dist/gpu/wgsl-chart-kernel.js +165 -0
- package/dist/gpu/wgsl-chart-kernel.js.map +1 -0
- package/dist/gpu/wgsl-kernels.d.ts +53 -0
- package/dist/gpu/wgsl-kernels.js +365 -0
- package/dist/gpu/wgsl-kernels.js.map +1 -0
- package/dist/gpu/wgsl-sensor-kernel.d.ts +64 -0
- package/dist/gpu/wgsl-sensor-kernel.js +409 -0
- package/dist/gpu/wgsl-sensor-kernel.js.map +1 -0
- package/dist/index.d.ts +91 -25
- package/dist/index.js +60 -15
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +92 -40
- package/dist/motion/camera-rotation.js +84 -47
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +37 -34
- package/dist/motion/capture-rotation-inverse-mapping.js +32 -24
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +39 -35
- package/dist/motion/capture-rotation-temporal-quadrature.js +37 -28
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +32 -28
- package/dist/motion/capture-rotation-trajectory.js +36 -26
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +23 -21
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +33 -14
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -1
- package/dist/motion/extended-object-projection.d.ts +19 -16
- package/dist/motion/extended-object-projection.js +38 -18
- package/dist/motion/extended-object-projection.js.map +1 -1
- package/dist/motion/projected-motion.d.ts +18 -17
- package/dist/motion/projected-motion.js +25 -17
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/motion/temporal-exposure-sum.d.ts +55 -0
- package/dist/motion/temporal-exposure-sum.js +141 -0
- package/dist/motion/temporal-exposure-sum.js.map +1 -0
- package/dist/motion/video-sequence.d.ts +111 -0
- package/dist/motion/video-sequence.js +179 -0
- package/dist/motion/video-sequence.js.map +1 -0
- package/dist/optics/aperture.d.ts +14 -15
- package/dist/optics/aperture.js +13 -11
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/atmospheric-haze.d.ts +83 -0
- package/dist/optics/atmospheric-haze.js +113 -0
- package/dist/optics/atmospheric-haze.js.map +1 -0
- package/dist/optics/brown-conrady-distortion.d.ts +116 -0
- package/dist/optics/brown-conrady-distortion.js +291 -0
- package/dist/optics/brown-conrady-distortion.js.map +1 -0
- package/dist/optics/circle-of-confusion.d.ts +10 -10
- package/dist/optics/circle-of-confusion.js +15 -11
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +64 -33
- package/dist/optics/complex-pupil-psf.js +190 -98
- package/dist/optics/complex-pupil-psf.js.map +1 -1
- package/dist/optics/depth-of-field.d.ts +25 -15
- package/dist/optics/depth-of-field.js +67 -27
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction-psf-profile.d.ts +118 -0
- package/dist/optics/diffraction-psf-profile.js +252 -0
- package/dist/optics/diffraction-psf-profile.js.map +1 -0
- package/dist/optics/diffraction.d.ts +14 -13
- package/dist/optics/diffraction.js +14 -10
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +88 -27
- package/dist/optics/focus-breathing.js +114 -23
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +18 -18
- package/dist/optics/focus-state.js +21 -15
- package/dist/optics/focus-state.js.map +1 -1
- package/dist/optics/front-of-lens-filter.d.ts +45 -14
- package/dist/optics/front-of-lens-filter.js +259 -88
- package/dist/optics/front-of-lens-filter.js.map +1 -1
- package/dist/optics/illumination-vignetting.d.ts +16 -17
- package/dist/optics/illumination-vignetting.js +40 -17
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/irradiance-convolution.d.ts +59 -0
- package/dist/optics/irradiance-convolution.js +138 -0
- package/dist/optics/irradiance-convolution.js.map +1 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts +33 -30
- package/dist/optics/lateral-chromatic-aberration.js +33 -23
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-kernels.d.ts +89 -0
- package/dist/optics/lens-psf-kernels.js +175 -0
- package/dist/optics/lens-psf-kernels.js.map +1 -0
- package/dist/optics/lens-psf-profile.d.ts +78 -46
- package/dist/optics/lens-psf-profile.js +335 -124
- package/dist/optics/lens-psf-profile.js.map +1 -1
- package/dist/optics/longitudinal-chromatic-aberration.d.ts +102 -0
- package/dist/optics/longitudinal-chromatic-aberration.js +210 -0
- package/dist/optics/longitudinal-chromatic-aberration.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +80 -23
- package/dist/optics/polygon-diffraction.js +130 -25
- package/dist/optics/polygon-diffraction.js.map +1 -1
- package/dist/optics/profile-contract.d.ts +5 -6
- package/dist/optics/profile-contract.js +14 -11
- package/dist/optics/profile-contract.js.map +1 -1
- package/dist/optics/psf-foundation.d.ts +23 -23
- package/dist/optics/psf-foundation.js +24 -21
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/pupil-vignetting.d.ts +118 -0
- package/dist/optics/pupil-vignetting.js +264 -0
- package/dist/optics/pupil-vignetting.js.map +1 -0
- package/dist/optics/radial-distortion.d.ts +34 -33
- package/dist/optics/radial-distortion.js +37 -30
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +47 -33
- package/dist/optics/scene-to-sensor-irradiance.js +73 -45
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts +23 -18
- package/dist/optics/scene-to-sensor-quadrature.js +16 -11
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -1
- package/dist/optics/sensor-aperture-rays.d.ts +20 -4
- package/dist/optics/sensor-aperture-rays.js +32 -14
- package/dist/optics/sensor-aperture-rays.js.map +1 -1
- package/dist/optics/sensor-environment-query.d.ts +81 -16
- package/dist/optics/sensor-environment-query.js +145 -12
- package/dist/optics/sensor-environment-query.js.map +1 -1
- package/dist/optics/sensor-psf-quadrature.d.ts +12 -10
- package/dist/optics/sensor-psf-quadrature.js +18 -11
- package/dist/optics/sensor-psf-quadrature.js.map +1 -1
- package/dist/optics/sensor-psf-support.d.ts +8 -6
- package/dist/optics/sensor-psf-support.js +8 -5
- package/dist/optics/sensor-psf-support.js.map +1 -1
- package/dist/optics/stray-light.d.ts +22 -19
- package/dist/optics/stray-light.js +18 -12
- package/dist/optics/stray-light.js.map +1 -1
- package/dist/optics/thin-lens.d.ts +10 -9
- package/dist/optics/thin-lens.js +12 -8
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/optics/zernike-wavefront.d.ts +154 -0
- package/dist/optics/zernike-wavefront.js +352 -0
- package/dist/optics/zernike-wavefront.js.map +1 -0
- package/dist/output/capture-corrected-sdr.d.ts +16 -8
- package/dist/output/capture-corrected-sdr.js +16 -8
- package/dist/output/capture-corrected-sdr.js.map +1 -1
- package/dist/output/capture-geometry.d.ts +34 -36
- package/dist/output/capture-geometry.js +52 -32
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +7 -6
- package/dist/output/capture-sdr.js +11 -8
- package/dist/output/capture-sdr.js.map +1 -1
- package/dist/output/crop.d.ts +22 -6
- package/dist/output/crop.js +40 -6
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +60 -23
- package/dist/output/geometric-transforms.js +111 -24
- package/dist/output/geometric-transforms.js.map +1 -1
- package/dist/output/lens-corrections.d.ts +27 -19
- package/dist/output/lens-corrections.js +29 -13
- package/dist/output/lens-corrections.js.map +1 -1
- package/dist/output/native-capture-sdr.d.ts +71 -16
- package/dist/output/native-capture-sdr.js +190 -33
- package/dist/output/native-capture-sdr.js.map +1 -1
- package/dist/output/png-encoder.d.ts +65 -0
- package/dist/output/png-encoder.js +461 -0
- package/dist/output/png-encoder.js.map +1 -0
- package/dist/output/print-contrast-reference.d.ts +10 -9
- package/dist/output/print-contrast-reference.js +10 -8
- package/dist/output/print-contrast-reference.js.map +1 -1
- package/dist/output/print-detail.d.ts +18 -17
- package/dist/output/print-detail.js +12 -10
- package/dist/output/print-detail.js.map +1 -1
- package/dist/output/print-jpeg.d.ts +26 -5
- package/dist/output/print-jpeg.js +117 -50
- package/dist/output/print-jpeg.js.map +1 -1
- package/dist/output/print-plan.d.ts +19 -19
- package/dist/output/print-plan.js +11 -10
- package/dist/output/print-plan.js.map +1 -1
- package/dist/output/print-region-statistics.d.ts +14 -15
- package/dist/output/print-region-statistics.js +11 -11
- package/dist/output/print-region-statistics.js.map +1 -1
- package/dist/output/sdr-rendering.d.ts +48 -10
- package/dist/output/sdr-rendering.js +114 -25
- package/dist/output/sdr-rendering.js.map +1 -1
- package/dist/output/subject-framing-crop.d.ts +6 -10
- package/dist/output/subject-framing-crop.js +23 -13
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/processing/demosaic.d.ts +90 -0
- package/dist/processing/demosaic.js +275 -0
- package/dist/processing/demosaic.js.map +1 -0
- package/dist/processing/denoise.d.ts +68 -0
- package/dist/processing/denoise.js +214 -0
- package/dist/processing/denoise.js.map +1 -0
- package/dist/processing/focus-stacking.d.ts +17 -0
- package/dist/processing/focus-stacking.js +80 -0
- package/dist/processing/focus-stacking.js.map +1 -0
- package/dist/processing/hdr.d.ts +54 -0
- package/dist/processing/hdr.js +172 -0
- package/dist/processing/hdr.js.map +1 -0
- package/dist/processing/image-ops.d.ts +66 -0
- package/dist/processing/image-ops.js +192 -0
- package/dist/processing/image-ops.js.map +1 -0
- package/dist/processing/panorama.d.ts +51 -0
- package/dist/processing/panorama.js +305 -0
- package/dist/processing/panorama.js.map +1 -0
- package/dist/processing/processing-task.d.ts +85 -0
- package/dist/processing/processing-task.js +164 -0
- package/dist/processing/processing-task.js.map +1 -0
- package/dist/processing/tone-mapping.d.ts +69 -0
- package/dist/processing/tone-mapping.js +310 -0
- package/dist/processing/tone-mapping.js.map +1 -0
- package/dist/schema/camera.d.ts +5 -4
- package/dist/schema/illumination-spectral.d.ts +13 -19
- package/dist/schema/illumination-spectral.js +23 -19
- package/dist/schema/illumination-spectral.js.map +1 -1
- package/dist/schema/illumination-temporal.d.ts +12 -15
- package/dist/schema/illumination-temporal.js +43 -28
- package/dist/schema/illumination-temporal.js.map +1 -1
- package/dist/schema/illumination.d.ts +5 -4
- package/dist/schema/illumination.js +55 -20
- package/dist/schema/illumination.js.map +1 -1
- package/dist/schema/scene-radiance-temporal.d.ts +9 -11
- package/dist/schema/scene-radiance-temporal.js +26 -23
- package/dist/schema/scene-radiance-temporal.js.map +1 -1
- package/dist/schema/scene-radiance.d.ts +17 -17
- package/dist/schema/scene-radiance.js +56 -34
- package/dist/schema/scene-radiance.js.map +1 -1
- package/dist/schema/scene.d.ts +14 -13
- package/dist/schema/validation.d.ts +0 -1
- package/dist/schema/validation.js +17 -15
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +45 -64
- package/dist/sensor/accumulated-charge.js +41 -47
- package/dist/sensor/accumulated-charge.js.map +1 -1
- package/dist/sensor/architecture.d.ts +22 -25
- package/dist/sensor/architecture.js +17 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +21 -28
- package/dist/sensor/camera-saturation-capacity.js +36 -34
- package/dist/sensor/camera-saturation-capacity.js.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts +46 -51
- package/dist/sensor/capture-color-sampling-binding.js +39 -41
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +8 -9
- package/dist/sensor/capture-mode-timing.js +24 -21
- package/dist/sensor/capture-mode-timing.js.map +1 -1
- package/dist/sensor/capture-mode.d.ts +28 -30
- package/dist/sensor/capture-mode.js +33 -31
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts +30 -33
- package/dist/sensor/color-sampling.js +32 -37
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +19 -23
- package/dist/sensor/constant-rate-temporal-integration.js +28 -26
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -1
- package/dist/sensor/dark-current.d.ts +53 -49
- package/dist/sensor/dark-current.js +87 -46
- package/dist/sensor/dark-current.js.map +1 -1
- package/dist/sensor/environment-photo-signal.d.ts +71 -30
- package/dist/sensor/environment-photo-signal.js +127 -46
- package/dist/sensor/environment-photo-signal.js.map +1 -1
- package/dist/sensor/eqe-electron-rate.d.ts +14 -13
- package/dist/sensor/eqe-electron-rate.js +34 -14
- package/dist/sensor/eqe-electron-rate.js.map +1 -1
- package/dist/sensor/eqe-local-exposure.d.ts +24 -24
- package/dist/sensor/eqe-local-exposure.js +15 -11
- package/dist/sensor/eqe-local-exposure.js.map +1 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts +11 -11
- package/dist/sensor/eqe-temporal-exposure.js +15 -10
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/exposure-window.d.ts +48 -34
- package/dist/sensor/exposure-window.js +77 -36
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/fixed-pattern-noise.d.ts +108 -0
- package/dist/sensor/fixed-pattern-noise.js +166 -0
- package/dist/sensor/fixed-pattern-noise.js.map +1 -0
- package/dist/sensor/iso-gain.d.ts +44 -0
- package/dist/sensor/iso-gain.js +119 -0
- package/dist/sensor/iso-gain.js.map +1 -0
- package/dist/sensor/iso-signal-chain.d.ts +25 -48
- package/dist/sensor/iso-signal-chain.js +52 -66
- package/dist/sensor/iso-signal-chain.js.map +1 -1
- package/dist/sensor/local-exposure-binding.d.ts +21 -21
- package/dist/sensor/local-exposure-binding.js +22 -18
- package/dist/sensor/local-exposure-binding.js.map +1 -1
- package/dist/sensor/optical-stack.d.ts +36 -40
- package/dist/sensor/optical-stack.js +34 -37
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +22 -28
- package/dist/sensor/photon-energy.js +42 -34
- package/dist/sensor/photon-energy.js.map +1 -1
- package/dist/sensor/physical-charge-capacity.d.ts +20 -30
- package/dist/sensor/physical-charge-capacity.js +35 -36
- package/dist/sensor/physical-charge-capacity.js.map +1 -1
- package/dist/sensor/pixel-pitch.d.ts +2 -3
- package/dist/sensor/pixel-pitch.js +4 -2
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +13 -15
- package/dist/sensor/radiometry-readiness.js +20 -17
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +173 -83
- package/dist/sensor/raw-readout.js +425 -160
- package/dist/sensor/raw-readout.js.map +1 -1
- package/dist/sensor/raw-reconstruction.d.ts +112 -44
- package/dist/sensor/raw-reconstruction.js +200 -47
- package/dist/sensor/raw-reconstruction.js.map +1 -1
- package/dist/sensor/readout-exposure-linkage.d.ts +103 -34
- package/dist/sensor/readout-exposure-linkage.js +125 -27
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +43 -44
- package/dist/sensor/readout-timing.js +38 -30
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +21 -28
- package/dist/sensor/response-application-compatibility.js +35 -34
- package/dist/sensor/response-application-compatibility.js.map +1 -1
- package/dist/sensor/response-operating-range.d.ts +26 -35
- package/dist/sensor/response-operating-range.js +40 -39
- package/dist/sensor/response-operating-range.js.map +1 -1
- package/dist/sensor/responsivity-photocurrent.d.ts +21 -29
- package/dist/sensor/responsivity-photocurrent.js +57 -40
- package/dist/sensor/responsivity-photocurrent.js.map +1 -1
- package/dist/sensor/sampling-aperture.d.ts +21 -25
- package/dist/sensor/sampling-aperture.js +29 -28
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +14 -12
- package/dist/sensor/scene-eqe-temporal-exposure.js +13 -8
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -1
- package/dist/sensor/sensor-geometry.d.ts +28 -32
- package/dist/sensor/sensor-geometry.js +35 -20
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +14 -16
- package/dist/sensor/signal-noise.js +15 -13
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +45 -60
- package/dist/sensor/spatial-sample-reduction.js +39 -48
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +46 -54
- package/dist/sensor/spatial-sampling-quadrature.js +31 -36
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +32 -42
- package/dist/sensor/spatio-spectral-reduction.js +24 -29
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -1
- package/dist/sensor/spectral-coverage.d.ts +6 -9
- package/dist/sensor/spectral-coverage.js +9 -6
- package/dist/sensor/spectral-coverage.js.map +1 -1
- package/dist/sensor/spectral-quadrature.d.ts +46 -60
- package/dist/sensor/spectral-quadrature.js +38 -48
- package/dist/sensor/spectral-quadrature.js.map +1 -1
- package/dist/sensor/spectral-response.d.ts +53 -41
- package/dist/sensor/spectral-response.js +80 -47
- package/dist/sensor/spectral-response.js.map +1 -1
- package/dist/sensor/stochastic-seed.d.ts +50 -0
- package/dist/sensor/stochastic-seed.js +123 -0
- package/dist/sensor/stochastic-seed.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +2 -4
- package/dist/sensor/temporal-eqe-sum.js +5 -6
- package/dist/sensor/temporal-eqe-sum.js.map +1 -1
- package/dist/sensor/temporal-photo-signal.d.ts +5 -6
- package/dist/sensor/temporal-photo-signal.js +11 -10
- package/dist/sensor/temporal-photo-signal.js.map +1 -1
- package/dist/sensor/temporal-sample-binding.d.ts +1 -2
- package/dist/sensor/temporal-sample-binding.js +3 -3
- package/dist/sensor/temporal-sample-binding.js.map +1 -1
- package/dist/simulation/poc-simulation.d.ts +16 -16
- package/dist/simulation/poc-simulation.js +20 -15
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +42 -18
- package/dist/stabilization/camera-shake.js +43 -20
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +44 -41
- package/dist/stabilization/system.js +196 -108
- package/dist/stabilization/system.js.map +1 -1
- package/docs/AGENT_GUIDE.md +183 -0
- package/docs/API_REFERENCE.md +777 -2
- package/docs/QUICK_START.md +663 -0
- package/docs/USAGE.md +1719 -714
- package/docs/api/camera-equivalent-focal-length.md +6 -7
- package/docs/api/camera-field-of-view.md +16 -8
- package/docs/api/camera-lens-projection.md +246 -0
- package/docs/api/camera-projected-object-size.md +6 -5
- package/docs/api/capture-capture-export-metadata.md +10 -10
- package/docs/api/capture-dng-import.md +134 -0
- package/docs/api/capture-environment-raw-producer.md +17 -11
- package/docs/api/capture-export-jpeg.md +16 -0
- package/docs/api/capture-focus-control.md +25 -47
- package/docs/api/capture-linear-encoding.md +21 -12
- package/docs/api/capture-lossless-jpeg.md +49 -0
- package/docs/api/capture-native-environment-optical-stage.md +75 -0
- package/docs/api/capture-native-environment-raw.md +161 -4
- package/docs/api/capture-native-raw-development.md +69 -8
- package/docs/api/capture-native-raw-dng.md +84 -0
- package/docs/api/capture-native-raw.md +21 -10
- package/docs/api/capture-packed-sensor-raw.md +156 -0
- package/docs/api/capture-photographic-export.md +69 -31
- package/docs/api/capture-raw-frame-reconstruction.md +8 -8
- package/docs/api/capture-raw-white-level.md +37 -0
- package/docs/api/capture-release-sequence.md +6 -7
- package/docs/api/capture-sensor-raw-frame.md +6 -6
- package/docs/api/capture-sensor-raw-producer.md +17 -11
- package/docs/api/capture-simulated-capture.md +15 -15
- package/docs/api/color-camera-color-matrix.md +103 -0
- package/docs/api/color-capture-color.md +22 -11
- package/docs/api/color-chromatic-adaptation.md +82 -0
- package/docs/api/color-color-difference.md +134 -0
- package/docs/api/color-color-matching-functions.md +259 -0
- package/docs/api/color-colorimetry-math.md +54 -0
- package/docs/api/color-gamut-mapping.md +72 -0
- package/docs/api/color-illuminants.md +280 -0
- package/docs/api/color-rgb-color-spaces.md +151 -0
- package/docs/api/color-sensor-color-development.md +27 -0
- package/docs/api/color-srgb-icc.md +2 -4
- package/docs/api/color-white-balance.md +95 -19
- package/docs/api/composition-image-formation-plan.md +124 -95
- package/docs/api/composition-plan-consumer.md +7 -7
- package/docs/api/core-calculation-result.md +18 -14
- package/docs/api/core-configuration-error.md +1 -1
- package/docs/api/core-image-formation.md +7 -7
- package/docs/api/core-scientific-assurance.md +12 -10
- package/docs/api/core-spectral-composition.md +14 -14
- package/docs/api/core-spectral.md +6 -6
- package/docs/api/core-validation.md +3 -3
- package/docs/api/core-version.md +7 -6
- package/docs/api/equipment-exposure-capabilities.md +11 -10
- package/docs/api/equipment-generic-tier-assets.md +7 -2
- package/docs/api/equipment-generic-tier-presets.md +6 -6
- package/docs/api/equipment-iso-capabilities.md +18 -18
- package/docs/api/equipment-metering-capabilities.md +6 -6
- package/docs/api/equipment-release-capabilities.md +4 -4
- package/docs/api/exports.json +2253 -3
- package/docs/api/exposure-exposure-duration-control.md +9 -9
- package/docs/api/exposure-exposure-mode-resolver.md +35 -31
- package/docs/api/exposure-exposure.md +10 -10
- package/docs/api/exposure-flash-ttl.md +182 -0
- package/docs/api/exposure-flash.md +183 -28
- package/docs/api/exposure-metering-scene-radiance.md +11 -10
- package/docs/api/exposure-metering-target.md +9 -8
- package/docs/api/exposure-metering-temporal.md +8 -8
- package/docs/api/exposure-metering.md +69 -9
- package/docs/api/exposure-program-line.md +6 -5
- package/docs/api/facade-chart-radiance-batch.md +96 -0
- package/docs/api/facade-chart-scenes.md +240 -0
- package/docs/api/facade-scene-radiance.md +122 -0
- package/docs/api/facade-simulate-capture.md +397 -0
- package/docs/api/gpu-image-kernel-accelerator.md +157 -0
- package/docs/api/gpu-image-kernel-execution.md +152 -0
- package/docs/api/motion-camera-rotation.md +43 -26
- package/docs/api/motion-capture-rotation-inverse-mapping.md +24 -23
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +22 -22
- package/docs/api/motion-capture-rotation-trajectory.md +15 -15
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +15 -14
- package/docs/api/motion-extended-object-projection.md +10 -8
- package/docs/api/motion-projected-motion.md +8 -8
- package/docs/api/motion-temporal-exposure-sum.md +98 -0
- package/docs/api/motion-video-sequence.md +159 -0
- package/docs/api/optics-aperture.md +8 -8
- package/docs/api/optics-atmospheric-haze.md +104 -0
- package/docs/api/optics-brown-conrady-distortion.md +123 -0
- package/docs/api/optics-circle-of-confusion.md +5 -4
- package/docs/api/optics-complex-pupil-psf.md +57 -16
- package/docs/api/optics-depth-of-field.md +12 -6
- package/docs/api/optics-diffraction-psf-profile.md +96 -0
- package/docs/api/optics-diffraction.md +8 -7
- package/docs/api/optics-focus-breathing.md +104 -16
- package/docs/api/optics-focus-state.md +9 -10
- package/docs/api/optics-front-of-lens-filter.md +72 -14
- package/docs/api/optics-illumination-vignetting.md +10 -10
- package/docs/api/optics-irradiance-convolution.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +22 -21
- package/docs/api/optics-lens-psf-kernels.md +72 -0
- package/docs/api/optics-lens-psf-profile.md +48 -26
- package/docs/api/optics-longitudinal-chromatic-aberration.md +128 -0
- package/docs/api/optics-polygon-diffraction.md +78 -13
- package/docs/api/optics-profile-contract.md +4 -4
- package/docs/api/optics-psf-foundation.md +12 -12
- package/docs/api/optics-pupil-vignetting.md +132 -0
- package/docs/api/optics-radial-distortion.md +12 -12
- package/docs/api/optics-scene-to-sensor-irradiance.md +25 -14
- package/docs/api/optics-scene-to-sensor-quadrature.md +15 -12
- package/docs/api/optics-sensor-aperture-rays.md +3 -2
- package/docs/api/optics-sensor-environment-query.md +52 -9
- package/docs/api/optics-sensor-psf-quadrature.md +13 -10
- package/docs/api/optics-stray-light.md +12 -11
- package/docs/api/optics-thin-lens.md +4 -3
- package/docs/api/optics-zernike-wavefront.md +229 -0
- package/docs/api/output-capture-corrected-sdr.md +10 -7
- package/docs/api/output-capture-geometry.md +35 -36
- package/docs/api/output-capture-sdr.md +4 -4
- package/docs/api/output-crop.md +7 -4
- package/docs/api/output-geometric-transforms.md +65 -19
- package/docs/api/output-lens-corrections.md +17 -15
- package/docs/api/output-native-capture-sdr.md +26 -13
- package/docs/api/output-png-encoder.md +105 -0
- package/docs/api/output-print-contrast-reference.md +8 -8
- package/docs/api/output-print-detail.md +14 -14
- package/docs/api/output-print-jpeg.md +22 -5
- package/docs/api/output-print-plan.md +18 -18
- package/docs/api/output-print-region-statistics.md +14 -14
- package/docs/api/output-sdr-rendering.md +52 -10
- package/docs/api/output-subject-framing-crop.md +5 -6
- package/docs/api/processing-demosaic.md +120 -0
- package/docs/api/processing-denoise.md +148 -0
- package/docs/api/processing-focus-stacking.md +41 -0
- package/docs/api/processing-hdr.md +113 -0
- package/docs/api/processing-panorama.md +82 -0
- package/docs/api/processing-processing-task.md +107 -0
- package/docs/api/processing-tone-mapping.md +142 -0
- package/docs/api/schema-camera.md +6 -4
- package/docs/api/schema-illumination-spectral.md +10 -11
- package/docs/api/schema-illumination-temporal.md +13 -15
- package/docs/api/schema-illumination.md +4 -4
- package/docs/api/schema-scene-radiance-temporal.md +10 -11
- package/docs/api/schema-scene-radiance.md +18 -17
- package/docs/api/schema-scene.md +9 -9
- package/docs/api/schema-validation.md +1 -1
- package/docs/api/sensor-accumulated-charge.md +12 -20
- package/docs/api/sensor-architecture.md +15 -16
- package/docs/api/sensor-camera-saturation-capacity.md +9 -11
- package/docs/api/sensor-capture-color-sampling-binding.md +47 -51
- package/docs/api/sensor-capture-mode-timing.md +9 -9
- package/docs/api/sensor-capture-mode.md +29 -30
- package/docs/api/sensor-color-sampling.md +31 -33
- package/docs/api/sensor-constant-rate-temporal-integration.md +10 -11
- package/docs/api/sensor-dark-current.md +30 -14
- package/docs/api/sensor-environment-photo-signal.md +13 -6
- package/docs/api/sensor-eqe-electron-rate.md +9 -8
- package/docs/api/sensor-eqe-local-exposure.md +18 -17
- package/docs/api/sensor-eqe-temporal-exposure.md +12 -11
- package/docs/api/sensor-exposure-window.md +24 -24
- package/docs/api/sensor-fixed-pattern-noise.md +104 -0
- package/docs/api/sensor-iso-gain.md +63 -0
- package/docs/api/sensor-iso-signal-chain.md +13 -22
- package/docs/api/sensor-local-exposure-binding.md +12 -13
- package/docs/api/sensor-optical-stack.md +37 -40
- package/docs/api/sensor-photon-energy.md +10 -11
- package/docs/api/sensor-physical-charge-capacity.md +8 -13
- package/docs/api/sensor-pixel-pitch.md +1 -1
- package/docs/api/sensor-radiometry-readiness.md +9 -9
- package/docs/api/sensor-raw-readout.md +118 -52
- package/docs/api/sensor-raw-reconstruction.md +97 -20
- package/docs/api/sensor-readout-exposure-linkage.md +120 -24
- package/docs/api/sensor-readout-timing.md +33 -35
- package/docs/api/sensor-response-application-compatibility.md +9 -11
- package/docs/api/sensor-response-operating-range.md +14 -18
- package/docs/api/sensor-responsivity-photocurrent.md +9 -12
- package/docs/api/sensor-sampling-aperture.md +22 -25
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +9 -8
- package/docs/api/sensor-sensor-geometry.md +23 -24
- package/docs/api/sensor-signal-noise.md +10 -10
- package/docs/api/sensor-spatial-sample-reduction.md +27 -30
- package/docs/api/sensor-spatial-sampling-quadrature.md +37 -39
- package/docs/api/sensor-spatio-spectral-reduction.md +27 -29
- package/docs/api/sensor-spectral-coverage.md +5 -5
- package/docs/api/sensor-spectral-quadrature.md +33 -35
- package/docs/api/sensor-spectral-response.md +28 -16
- package/docs/api/sensor-temporal-photo-signal.md +6 -6
- package/docs/api/simulation-poc-simulation.md +17 -16
- package/docs/api/stabilization-camera-shake.md +29 -10
- package/docs/api/stabilization-system.md +25 -21
- package/docs/examples/production-request.json +3821 -2157
- package/docs/examples/simulate-capture.mjs +14 -0
- package/llms.txt +35 -0
- package/package.json +32 -11
- package/AGENTS.md +0 -674
- package/CONTRIBUTING.md +0 -76
- package/DCO +0 -33
- package/dist/camera/equivalent-focal-length.d.ts.map +0 -1
- package/dist/camera/field-of-view.d.ts.map +0 -1
- package/dist/camera/projected-object-size.d.ts.map +0 -1
- package/dist/capture/capture-export-metadata.d.ts.map +0 -1
- package/dist/capture/environment-raw-producer.d.ts.map +0 -1
- package/dist/capture/export-jpeg.d.ts.map +0 -1
- package/dist/capture/export-tiff.d.ts.map +0 -1
- package/dist/capture/focus-control.d.ts.map +0 -1
- package/dist/capture/linear-encoding.d.ts.map +0 -1
- package/dist/capture/native-environment-raw.d.ts.map +0 -1
- package/dist/capture/native-raw-development.d.ts.map +0 -1
- package/dist/capture/native-raw.d.ts.map +0 -1
- package/dist/capture/photographic-export.d.ts.map +0 -1
- package/dist/capture/raw-frame-limits.d.ts.map +0 -1
- package/dist/capture/raw-frame-reconstruction.d.ts.map +0 -1
- package/dist/capture/release-sequence.d.ts.map +0 -1
- package/dist/capture/sensor-raw-frame.d.ts.map +0 -1
- package/dist/capture/sensor-raw-producer.d.ts.map +0 -1
- package/dist/capture/simulated-capture.d.ts.map +0 -1
- package/dist/color/capture-color.d.ts.map +0 -1
- package/dist/color/sensor-color-development.d.ts.map +0 -1
- package/dist/color/srgb-icc.d.ts.map +0 -1
- package/dist/color/srgb-transfer.d.ts.map +0 -1
- package/dist/color/white-balance.d.ts.map +0 -1
- package/dist/composition/image-formation-plan.d.ts.map +0 -1
- package/dist/composition/plan-consumer.d.ts.map +0 -1
- package/dist/core/calculation-result.d.ts.map +0 -1
- package/dist/core/canonical-json.d.ts.map +0 -1
- package/dist/core/configuration-error.d.ts.map +0 -1
- package/dist/core/evidence-provenance.d.ts.map +0 -1
- package/dist/core/image-formation.d.ts.map +0 -1
- package/dist/core/owned-data.d.ts.map +0 -1
- package/dist/core/record-validation.d.ts.map +0 -1
- package/dist/core/scientific-assurance.d.ts.map +0 -1
- package/dist/core/spectral-composition.d.ts.map +0 -1
- package/dist/core/spectral.d.ts.map +0 -1
- package/dist/core/validation.d.ts.map +0 -1
- package/dist/core/version.d.ts.map +0 -1
- package/dist/equipment/exposure-capabilities.d.ts.map +0 -1
- package/dist/equipment/generic-tier-assets.d.ts.map +0 -1
- package/dist/equipment/generic-tier-presets.d.ts.map +0 -1
- package/dist/equipment/iso-capabilities.d.ts.map +0 -1
- package/dist/equipment/metering-capabilities.d.ts.map +0 -1
- package/dist/equipment/release-capabilities.d.ts.map +0 -1
- package/dist/exposure/exposure-duration-control.d.ts.map +0 -1
- package/dist/exposure/exposure-mode-resolver.d.ts.map +0 -1
- package/dist/exposure/exposure.d.ts.map +0 -1
- package/dist/exposure/flash.d.ts.map +0 -1
- package/dist/exposure/metering-scene-radiance.d.ts.map +0 -1
- package/dist/exposure/metering-target.d.ts.map +0 -1
- package/dist/exposure/metering-temporal.d.ts.map +0 -1
- package/dist/exposure/metering.d.ts.map +0 -1
- package/dist/exposure/program-line.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/motion/camera-rotation.d.ts.map +0 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +0 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/capture-rotation-trajectory.d.ts.map +0 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +0 -1
- package/dist/motion/extended-object-projection.d.ts.map +0 -1
- package/dist/motion/projected-motion.d.ts.map +0 -1
- package/dist/optics/aperture.d.ts.map +0 -1
- package/dist/optics/circle-of-confusion.d.ts.map +0 -1
- package/dist/optics/complex-pupil-psf.d.ts.map +0 -1
- package/dist/optics/depth-of-field.d.ts.map +0 -1
- package/dist/optics/diffraction.d.ts.map +0 -1
- package/dist/optics/focus-breathing.d.ts.map +0 -1
- package/dist/optics/focus-state.d.ts.map +0 -1
- package/dist/optics/front-of-lens-filter.d.ts.map +0 -1
- package/dist/optics/illumination-vignetting.d.ts.map +0 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +0 -1
- package/dist/optics/lens-psf-profile.d.ts.map +0 -1
- package/dist/optics/polygon-diffraction.d.ts.map +0 -1
- package/dist/optics/profile-contract.d.ts.map +0 -1
- package/dist/optics/psf-foundation.d.ts.map +0 -1
- package/dist/optics/radial-distortion.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +0 -1
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-aperture-rays.d.ts.map +0 -1
- package/dist/optics/sensor-environment-query.d.ts.map +0 -1
- package/dist/optics/sensor-psf-quadrature.d.ts.map +0 -1
- package/dist/optics/sensor-psf-support.d.ts.map +0 -1
- package/dist/optics/stray-light.d.ts.map +0 -1
- package/dist/optics/thin-lens.d.ts.map +0 -1
- package/dist/output/capture-corrected-sdr.d.ts.map +0 -1
- package/dist/output/capture-geometry.d.ts.map +0 -1
- package/dist/output/capture-sdr.d.ts.map +0 -1
- package/dist/output/crop.d.ts.map +0 -1
- package/dist/output/geometric-transforms.d.ts.map +0 -1
- package/dist/output/lens-corrections.d.ts.map +0 -1
- package/dist/output/native-capture-sdr.d.ts.map +0 -1
- package/dist/output/print-contrast-reference.d.ts.map +0 -1
- package/dist/output/print-detail.d.ts.map +0 -1
- package/dist/output/print-jpeg.d.ts.map +0 -1
- package/dist/output/print-plan.d.ts.map +0 -1
- package/dist/output/print-region-statistics.d.ts.map +0 -1
- package/dist/output/sdr-rendering.d.ts.map +0 -1
- package/dist/output/subject-framing-crop.d.ts.map +0 -1
- package/dist/schema/camera.d.ts.map +0 -1
- package/dist/schema/camera.js +0 -3
- package/dist/schema/camera.js.map +0 -1
- package/dist/schema/illumination-spectral.d.ts.map +0 -1
- package/dist/schema/illumination-temporal.d.ts.map +0 -1
- package/dist/schema/illumination.d.ts.map +0 -1
- package/dist/schema/scene-radiance-temporal.d.ts.map +0 -1
- package/dist/schema/scene-radiance.d.ts.map +0 -1
- package/dist/schema/scene.d.ts.map +0 -1
- package/dist/schema/scene.js +0 -3
- package/dist/schema/scene.js.map +0 -1
- package/dist/schema/validation.d.ts.map +0 -1
- package/dist/sensor/accumulated-charge.d.ts.map +0 -1
- package/dist/sensor/architecture.d.ts.map +0 -1
- package/dist/sensor/camera-saturation-capacity.d.ts.map +0 -1
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +0 -1
- package/dist/sensor/capture-mode-timing.d.ts.map +0 -1
- package/dist/sensor/capture-mode.d.ts.map +0 -1
- package/dist/sensor/color-sampling.d.ts.map +0 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +0 -1
- package/dist/sensor/dark-current.d.ts.map +0 -1
- package/dist/sensor/environment-photo-signal.d.ts.map +0 -1
- package/dist/sensor/eqe-electron-rate.d.ts.map +0 -1
- package/dist/sensor/eqe-local-exposure.d.ts.map +0 -1
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/exposure-window.d.ts.map +0 -1
- package/dist/sensor/iso-signal-chain.d.ts.map +0 -1
- package/dist/sensor/local-exposure-binding.d.ts.map +0 -1
- package/dist/sensor/optical-stack.d.ts.map +0 -1
- package/dist/sensor/photon-energy.d.ts.map +0 -1
- package/dist/sensor/physical-charge-capacity.d.ts.map +0 -1
- package/dist/sensor/pixel-pitch.d.ts.map +0 -1
- package/dist/sensor/radiometry-readiness.d.ts.map +0 -1
- package/dist/sensor/raw-readout.d.ts.map +0 -1
- package/dist/sensor/raw-reconstruction.d.ts.map +0 -1
- package/dist/sensor/readout-exposure-linkage.d.ts.map +0 -1
- package/dist/sensor/readout-timing.d.ts.map +0 -1
- package/dist/sensor/response-application-compatibility.d.ts.map +0 -1
- package/dist/sensor/response-operating-range.d.ts.map +0 -1
- package/dist/sensor/responsivity-photocurrent.d.ts.map +0 -1
- package/dist/sensor/sampling-aperture.d.ts.map +0 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +0 -1
- package/dist/sensor/sensor-geometry.d.ts.map +0 -1
- package/dist/sensor/signal-noise.d.ts.map +0 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +0 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +0 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +0 -1
- package/dist/sensor/spectral-coverage.d.ts.map +0 -1
- package/dist/sensor/spectral-quadrature.d.ts.map +0 -1
- package/dist/sensor/spectral-response.d.ts.map +0 -1
- package/dist/sensor/temporal-eqe-sum.d.ts.map +0 -1
- package/dist/sensor/temporal-photo-signal.d.ts.map +0 -1
- package/dist/sensor/temporal-sample-binding.d.ts.map +0 -1
- package/dist/simulation/poc-simulation.d.ts.map +0 -1
- package/dist/stabilization/camera-shake.d.ts.map +0 -1
- package/dist/stabilization/system.d.ts.map +0 -1
- package/docs/API_STYLE.md +0 -235
- package/docs/ARCHITECTURE.md +0 -356
- package/docs/AUTOMATION_COORDINATION.md +0 -190
- package/docs/CAPTURE_COLOR.md +0 -25
- package/docs/CAPTURE_CORRECTED_SDR.md +0 -25
- package/docs/CAPTURE_EXPORT_METADATA.md +0 -27
- package/docs/CAPTURE_SDR.md +0 -22
- package/docs/DENSE_PUPIL_QUALIFICATION.md +0 -121
- package/docs/DEVELOPERS.md +0 -68
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +0 -69
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +0 -208
- package/docs/EXPORT_ACCEPTANCE.md +0 -133
- package/docs/GENERIC_TIER_PRESETS.md +0 -269
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +0 -141
- package/docs/IMAGE_FORMATION.md +0 -247
- package/docs/LINEAR_CAPTURE_ENCODING.md +0 -25
- package/docs/MOTION_AND_SIGNAL.md +0 -250
- package/docs/NATIVE_CAPTURE_SDR.md +0 -70
- package/docs/NATIVE_CAPTURE_SDR_REVIEW.md +0 -37
- package/docs/NATIVE_CAPTURE_SDR_VALIDATION.md +0 -34
- package/docs/NATIVE_RAW_AND_PRINT.md +0 -54
- package/docs/NUMERICAL_CORRECTNESS.md +0 -191
- package/docs/PERFORMANCE_BASELINE.md +0 -56
- package/docs/PHOTOGRAPHIC_EXPORT.md +0 -206
- package/docs/PHYSICS_FOUNDATION.md +0 -426
- package/docs/POC_API.md +0 -278
- package/docs/POC_PROJECTION_PLATFORM_REFERENCE.md +0 -12
- package/docs/POC_PROJECTION_REUSE.md +0 -124
- package/docs/PRINT_195_196_REVIEW.md +0 -93
- package/docs/PRINT_196_ENGINE_ACCEPTANCE.md +0 -45
- package/docs/PRINT_CONTRAST_REFERENCE.md +0 -43
- package/docs/PRINT_DETAIL_ASSESSMENT.md +0 -81
- package/docs/PRINT_DETAIL_JPEG_EVIDENCE.md +0 -36
- package/docs/PRINT_DETAIL_SDR_EVIDENCE.md +0 -29
- package/docs/PRINT_DETAIL_VALIDATION.md +0 -36
- package/docs/PRINT_PLANNING.md +0 -75
- package/docs/PRINT_REGION_STATISTICS.md +0 -38
- package/docs/PROCESSED_OUTPUT.md +0 -157
- package/docs/PRODUCTION_COMPOSITION.md +0 -373
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +0 -131
- package/docs/PROVENANCE.md +0 -115
- package/docs/PSF_FOUNDATION.md +0 -165
- package/docs/RAW_FRAME_ENVELOPE.md +0 -56
- package/docs/RAW_FRAME_RECONSTRUCTION.md +0 -30
- package/docs/RELEASE_1_0.md +0 -66
- package/docs/RELEASE_1_0_1.md +0 -61
- package/docs/RELEASE_1_1_0.md +0 -25
- package/docs/RELEASE_1_2_0.md +0 -51
- package/docs/RELEASE_1_3_0.md +0 -15
- package/docs/RELEASE_1_4_0.md +0 -23
- package/docs/RELEASE_1_5_0.md +0 -105
- package/docs/RELEASE_AUDIT.md +0 -39
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +0 -298
- package/docs/SCENE_SENSOR_QUADRATURE.md +0 -98
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +0 -86
- package/docs/SCIENTIFIC_ASSURANCE.md +0 -280
- package/docs/SCIENTIFIC_CONFORMANCE.md +0 -83
- package/docs/SDR_RENDERING.md +0 -33
- package/docs/SENSOR_APERTURE_RAYS.md +0 -23
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +0 -86
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +0 -104
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +0 -74
- package/docs/SENSOR_PSF_QUADRATURE.md +0 -90
- package/docs/SENSOR_RAW_FRAME.md +0 -20
- package/docs/SENSOR_RAW_PRODUCER.md +0 -77
- package/docs/SEPARABLE_EMISSION_DRAFT.md +0 -103
- package/docs/SIGNAL_CONFORMANCE.md +0 -23
- package/docs/SIMULATED_CAPTURE.md +0 -65
- package/docs/STABILIZATION.md +0 -234
- package/docs/TEMPORAL_PHOTO_RAW.md +0 -83
- package/docs/TIER_ACCEPTANCE.md +0 -129
- package/docs/TIER_PRESET_ACCEPTANCE.md +0 -59
- package/docs/V1_COMPOSITION_MAP.md +0 -123
- package/docs/V1_HELPER_REUSE_REVIEW.md +0 -60
- package/docs/V1_PERFORMANCE_DISPOSITION.md +0 -88
- package/docs/benchmarks/2026-10-01-main-baseline.json +0 -694
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +0 -2190
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +0 -2423
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +0 -210
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +0 -187
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +0 -756
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +0 -711
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +0 -885
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +0 -868
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +0 -868
- package/docs/licenses/castleCSF-MIT.txt +0 -21
- package/docs/validation/dense-pupil-2026-10-06/pilot.jsonl +0 -6
- package/docs/validation/documentation-fragments.json +0 -212
- package/docs/validation/native-capture-sdr-darwin-arm64-node26-review.jsonl +0 -4
- package/docs/validation/native-capture-sdr-darwin-arm64.jsonl +0 -3
- package/docs/validation/native-raw-print-2026-10-04/fractional-asymmetric-crop.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/gray-ramp.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/linear-area-checker.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/manifest.json +0 -218
- package/docs/validation/native-raw-print-2026-10-04/megapixel-native.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/native-color.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel-validation.json +0 -9
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json +0 -29
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.codes.u16le.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.jpg +0 -0
- package/docs/validation/native-raw-print-2026-10-04/photivra-native-full-megapixel.json.rgb.gz +0 -0
- package/docs/validation/native-raw-print-2026-10-04/srgb.icc +0 -0
- package/docs/validation/native-raw-print-2026-10-04/validation.json +0 -41
- package/docs/validation/print-196-candidate-capabilities.json +0 -28
- package/docs/validation/print-196-candidate-evidence.json +0 -356
- package/docs/validation/print-196-engine-acceptance.json +0 -81
- package/docs/validation/print-detail-capabilities.json +0 -103
- package/docs/validation/print-detail-jpeg-evidence.json +0 -116
- package/docs/validation/print-detail-sdr-evidence.json +0 -81
- package/docs/validation/release-audit-inventory.json +0 -1306
- package/docs/validation/tier-acceptance-report-v1.json +0 -2538
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-application-compatibility.js","sourceRoot":"","sources":["../../src/sensor/response-application-compatibility.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"response-application-compatibility.js","sourceRoot":"","sources":["../../src/sensor/response-application-compatibility.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Response application compatibility: checks that a measured sensor response can be applied to this\n * light input.\n *\n * It checks the exact profile and channel, the plane where the input light is measured (source\n * plane), the area the response refers to, spatial uniformity and the reference conditions of the\n * measurement. Passing this check alone does not allow converting light to signal. The per-bin\n * operating-range check and the EQE or A/W conversion are separate steps.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport {\n calculatedResult,\n type CalculationResult\n} from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n SensorSpectralReferenceConditions,\n SensorSpectralResponseScientificStatus\n} from \"./spectral-response.js\";\nimport type {\n SensorSpatioSpectralIrradianceReduction\n} from \"./spatio-spectral-reduction.js\";\nimport { requireInputObject, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nconst AREA_TOLERANCE = 1e-10;\n\nexport type SensorResponseSourcePlane =\n | \"sensor-package-incident\"\n | \"site-incident\";\n\nexport type SensorResponseIncidentAreaBasis =\n | {\n kind: \"geometric-sensitive-aperture\";\n areaSquareMicrometers: number;\n }\n | {\n kind: \"full-site-cell\";\n areaSquareMicrometers: number;\n }\n | {\n kind: \"effective-collection-area\";\n areaSquareMicrometers: number;\n };\n\nexport type SensorResponseSpatialModel =\n | {\n kind:\n \"uniform-over-geometric-sensitive-aperture\";\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n evidence: readonly EvidenceProvenance[];\n limitation?: string;\n }\n | {\n kind: \"not-established\";\n limitation: string;\n };\n\nexport type SensorResponseReferenceConditionPolicy =\n | {\n kind: \"exact-match-required\";\n }\n | {\n kind: \"assume-compatible\";\n limitation: string;\n evidence: readonly EvidenceProvenance[];\n };\n\nexport interface SensorResponseApplicationProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n samplingApertureProfileId: string;\n opticalStackProfileId: string;\n evidence: readonly EvidenceProvenance[];\n incidentAreaBasis:\n SensorResponseIncidentAreaBasis;\n spatialResponseModel:\n SensorResponseSpatialModel;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n}\n\nexport interface SourcedSensorResponseSourcePlane {\n value: SensorResponseSourcePlane;\n evidence: readonly EvidenceProvenance[];\n}\n\nexport interface AssessSensorResponseApplicationCompatibilityInput {\n reduction:\n SensorSpatioSpectralIrradianceReduction;\n applicationProfile:\n SensorResponseApplicationProfile;\n sourcePlane:\n SourcedSensorResponseSourcePlane;\n operatingConditions?:\n SensorSpectralReferenceConditions;\n}\n\nexport type SensorResponseApplicationCompatibilityBlocker =\n | \"spectral-response-profile-id-mismatch\"\n | \"color-sampling-profile-id-mismatch\"\n | \"channel-id-mismatch\"\n | \"sampling-aperture-profile-id-missing\"\n | \"sampling-aperture-profile-id-mismatch\"\n | \"optical-stack-profile-id-missing\"\n | \"optical-stack-profile-id-mismatch\"\n | \"source-plane-mismatch\"\n | \"wavelength-basis-unresolved\"\n | \"incident-area-basis-not-currently-integrated\"\n | \"incident-area-mismatch\"\n | \"spatial-response-uniformity-not-established\"\n | \"response-reference-conditions-not-declared\"\n | \"operating-conditions-not-declared\"\n | \"operating-conditions-mismatch\";\n\nexport type SensorResponseSignalPath =\n | \"photon-rate-to-electrons\"\n | \"radiant-power-to-current\";\n\nexport interface SensorResponseApplicationCompatibilityAssessment {\n applicationProfileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n responseScope:\n SensorSpatioSpectralIrradianceReduction[\"responseScope\"];\n requiredSourcePlane:\n SensorResponseSourcePlane;\n suppliedSourcePlane:\n SensorResponseSourcePlane;\n sourcePlaneMatched: boolean;\n responseIncidentAreaBasis:\n SensorResponseIncidentAreaBasis;\n currentlyIntegratedAreaBasis:\n \"geometric-sensitive-aperture\";\n geometricApertureAreaSquareMicrometers:\n number;\n nominalSiteCellAreaSquareMicrometers?:\n number;\n spatialResponseModel:\n SensorResponseSpatialModel;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n responseReferenceConditions?:\n SensorSpectralReferenceConditions;\n operatingConditions?:\n SensorSpectralReferenceConditions;\n structuralCompatibilityEstablished:\n boolean;\n compatibilityStatus:\n | \"compatible\"\n | \"compatible-approximation\"\n | \"blocked\";\n blockers:\n readonly SensorResponseApplicationCompatibilityBlocker[];\n requiredSignalPath:\n SensorResponseSignalPath;\n quantifiedResponseUncertaintyAvailable:\n boolean;\n responseApplicationPerformed: false;\n signalConversionAuthorized: false;\n temporalIntegrationAuthorized: false;\n photonConversionPerformed: false;\n electronConversionPerformed: false;\n currentConversionPerformed: false;\n operatingRangeCompatibilityAssessed: false;\n spatiallyVaryingResponseSupported: false;\n componentEvidence: {\n applicationProfile:\n readonly EvidenceProvenance[];\n sourcePlane:\n readonly EvidenceProvenance[];\n spatialResponse:\n readonly EvidenceProvenance[];\n referenceConditionAssumption:\n readonly EvidenceProvenance[];\n response:\n SensorSpatioSpectralIrradianceReduction[\"componentEvidence\"][\"spectral\"];\n };\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction parseIncidentAreaBasis(\n value: unknown,\n path: string\n): SensorResponseIncidentAreaBasis {\n const record =\n requireRecord(value, path, [\"areaSquareMicrometers\", \"kind\"]);\n const areaSquareMicrometers =\n requirePositiveFinite(\n record.areaSquareMicrometers,\n path + \".areaSquareMicrometers\"\n );\n\n if (\n record.kind !==\n \"geometric-sensitive-aperture\" &&\n record.kind !== \"full-site-cell\" &&\n record.kind !==\n \"effective-collection-area\"\n ) {\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n }\n\n return {\n kind: record.kind,\n areaSquareMicrometers\n };\n}\n\nfunction parseSpatialResponseModel(\n value: unknown,\n path: string\n): SensorResponseSpatialModel {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", { \"not-established\": [\"kind\", \"limitation\"], \"uniform-over-geometric-sensitive-aperture\": [\"kind\", \"scientificStatus\", \"evidence\", \"limitation\"] }, path);\n\n if (\n record.kind === \"not-established\"\n ) {\n return {\n kind: \"not-established\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n if (\n record.kind !==\n \"uniform-over-geometric-sensitive-aperture\"\n ) {\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \".scientificStatus is invalid.\"\n );\n }\n\n const limitation =\n record.limitation === undefined\n ? undefined\n : requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n );\n\n if (\n record.scientificStatus ===\n \"approximation\" &&\n limitation === undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \".limitation is required for an approximation.\"\n );\n }\n\n return {\n kind:\n \"uniform-over-geometric-sensitive-aperture\",\n scientificStatus:\n record.scientificStatus,\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n ),\n ...(limitation === undefined\n ? {}\n : { limitation })\n };\n}\n\nfunction parseReferenceConditionPolicy(\n value: unknown,\n path: string\n): SensorResponseReferenceConditionPolicy {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", { \"exact-match-required\": [\"kind\"], \"assume-compatible\": [\"kind\", \"limitation\", \"evidence\"] }, path);\n\n if (\n record.kind ===\n \"exact-match-required\"\n ) {\n return {\n kind: \"exact-match-required\"\n };\n }\n\n if (\n record.kind === \"assume-compatible\"\n ) {\n return {\n kind: \"assume-compatible\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * The profile states the source plane, incident-area basis, spatial uniformity and reference\n * conditions under which a response applies.\n * @param value - Untrusted data. TypeScript types alone are not validation.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function parseSensorResponseApplicationProfile(\n value: unknown\n): SensorResponseApplicationProfile {\n const record = requireRecord(\n value,\n \"sensorResponseApplication\", [\"schemaVersion\", \"profileId\", \"spectralResponseProfileId\", \"colorSamplingProfileId\", \"channelId\", \"samplingApertureProfileId\", \"opticalStackProfileId\", \"evidence\", \"incidentAreaBasis\", \"spatialResponseModel\", \"referenceConditionPolicy\"]\n );\n\n if (\n record.schemaVersion !== \"0.1.0\"\n ) {\n throw new InvalidConfigurationError(\n 'sensorResponseApplication.schemaVersion must be \"0.1.0\".'\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId: requireNonEmptyString(\n record.profileId,\n \"sensorResponseApplication.profileId\"\n ),\n spectralResponseProfileId:\n requireNonEmptyString(\n record.spectralResponseProfileId,\n \"sensorResponseApplication.spectralResponseProfileId\"\n ),\n colorSamplingProfileId:\n requireNonEmptyString(\n record.colorSamplingProfileId,\n \"sensorResponseApplication.colorSamplingProfileId\"\n ),\n channelId: requireNonEmptyString(\n record.channelId,\n \"sensorResponseApplication.channelId\"\n ),\n samplingApertureProfileId:\n requireNonEmptyString(\n record.samplingApertureProfileId,\n \"sensorResponseApplication.samplingApertureProfileId\"\n ),\n opticalStackProfileId:\n requireNonEmptyString(\n record.opticalStackProfileId,\n \"sensorResponseApplication.opticalStackProfileId\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseApplication.evidence\"\n ),\n incidentAreaBasis:\n parseIncidentAreaBasis(\n record.incidentAreaBasis,\n \"sensorResponseApplication.incidentAreaBasis\"\n ),\n spatialResponseModel:\n parseSpatialResponseModel(\n record.spatialResponseModel,\n \"sensorResponseApplication.spatialResponseModel\"\n ),\n referenceConditionPolicy:\n parseReferenceConditionPolicy(\n record.referenceConditionPolicy,\n \"sensorResponseApplication.referenceConditionPolicy\"\n )\n };\n}\n\nfunction parseSourcePlane(\n value:\n SourcedSensorResponseSourcePlane\n): SourcedSensorResponseSourcePlane {\n const record = requireRecord(\n value,\n \"sourcePlane\", [\"value\", \"evidence\"]\n );\n if (\n record.value !==\n \"sensor-package-incident\" &&\n record.value !== \"site-incident\"\n ) {\n throw new InvalidConfigurationError(\n \"sourcePlane.value is invalid.\"\n );\n }\n return {\n value: record.value,\n evidence: parseEvidenceList(\n record.evidence,\n \"sourcePlane.evidence\"\n )\n };\n}\n\nfunction requiredSourcePlane(\n scope:\n SensorSpatioSpectralIrradianceReduction[\"responseScope\"]\n): SensorResponseSourcePlane {\n return scope ===\n \"sensor-package-incident-effective-channel-response\"\n ? \"sensor-package-incident\"\n : \"site-incident\";\n}\n\nfunction approximatelyEqual(\n actual: number,\n expected: number\n): boolean {\n const scale = Math.max(\n 1,\n Math.abs(actual),\n Math.abs(expected)\n );\n return (\n Math.abs(actual - expected) <=\n AREA_TOLERANCE * scale\n );\n}\n\nfunction conditionsMatch(\n reference:\n SensorSpectralReferenceConditions,\n operating:\n SensorSpectralReferenceConditions\n): boolean {\n if (\n reference.temperatureC !==\n undefined &&\n operating.temperatureC !==\n reference.temperatureC\n ) {\n return false;\n }\n if (\n reference\n .incidenceAngleDegreesFromNormal !==\n undefined &&\n operating\n .incidenceAngleDegreesFromNormal !==\n reference\n .incidenceAngleDegreesFromNormal\n ) {\n return false;\n }\n if (\n reference.polarization !==\n undefined &&\n operating.polarization !==\n reference.polarization\n ) {\n return false;\n }\n return true;\n}\n\nfunction validateReductionBoundary(\n reduction:\n SensorSpatioSpectralIrradianceReduction\n): number {\n requireInputObject(reduction, \"reduction input\");\n if (\n reduction.outputMeaning !==\n \"pre-response-spatio-spectral-radiometric-reduction\" ||\n reduction\n .spectralResponseApplicationPerformed !==\n false ||\n reduction.quantumEfficiencyApplied !==\n false ||\n reduction.spectralResponsivityApplied !==\n false ||\n reduction.temporalIntegrationApplied !==\n false\n ) {\n throw new InvalidScientificInputError(\n \"reduction must remain a pre-response, pre-temporal spatio-spectral result.\"\n );\n }\n\n if (\n typeof reduction\n .geometricApertureAreaSquareMicrometers !==\n \"number\" ||\n !Number.isFinite(\n reduction\n .geometricApertureAreaSquareMicrometers\n ) ||\n reduction\n .geometricApertureAreaSquareMicrometers <=\n 0\n ) {\n throw new InvalidScientificInputError(\n \"reduction.geometricApertureAreaSquareMicrometers is required and must be positive.\"\n );\n }\n\n return reduction\n .geometricApertureAreaSquareMicrometers;\n}\n\n/**\n * Checks whether the source plane, area, profile, channel and reference conditions allow the\n * selected way of applying the response.\n *\n * Passing this alone does not allow converting light to signal. The per-bin operating-range check\n * and the EQE or A/W conversion are separate steps.\n * @param input - The input; see `AssessSensorResponseApplicationCompatibilityInput` for its fields, units and coordinates.\n * @returns The assessment. Read its structured blockers before acting on an authorization.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function assessSensorResponseApplicationCompatibility(\n input:\n AssessSensorResponseApplicationCompatibilityInput\n): CalculationResult<SensorResponseApplicationCompatibilityAssessment> {\n requireInputKeys(input, \"assessSensorResponseApplicationCompatibility\", [\"reduction\", \"applicationProfile\", \"sourcePlane\", \"operatingConditions\"]);\n const geometricArea =\n validateReductionBoundary(\n input.reduction\n );\n const profile =\n parseSensorResponseApplicationProfile(\n input.applicationProfile\n );\n const sourcePlane =\n parseSourcePlane(input.sourcePlane);\n const blockers:\n SensorResponseApplicationCompatibilityBlocker[] =\n [];\n\n if (\n profile.spectralResponseProfileId !==\n input.reduction.responseProfileId\n ) {\n blockers.push(\n \"spectral-response-profile-id-mismatch\"\n );\n }\n if (\n profile.colorSamplingProfileId !==\n input.reduction\n .colorSamplingProfileId\n ) {\n blockers.push(\n \"color-sampling-profile-id-mismatch\"\n );\n }\n if (\n profile.channelId !==\n input.reduction.channelId\n ) {\n blockers.push(\n \"channel-id-mismatch\"\n );\n }\n\n const samplingApertureProfileId =\n input.reduction\n .samplingApertureProfileId;\n if (\n samplingApertureProfileId ===\n undefined\n ) {\n blockers.push(\n \"sampling-aperture-profile-id-missing\"\n );\n } else if (\n samplingApertureProfileId !==\n profile.samplingApertureProfileId\n ) {\n blockers.push(\n \"sampling-aperture-profile-id-mismatch\"\n );\n }\n\n const opticalStackProfileId =\n input.reduction\n .opticalStackProfileId;\n if (\n opticalStackProfileId === undefined\n ) {\n blockers.push(\n \"optical-stack-profile-id-missing\"\n );\n } else if (\n opticalStackProfileId !==\n profile.opticalStackProfileId\n ) {\n blockers.push(\n \"optical-stack-profile-id-mismatch\"\n );\n }\n\n const requiredPlane =\n requiredSourcePlane(\n input.reduction.responseScope\n );\n const sourcePlaneMatched =\n sourcePlane.value === requiredPlane;\n if (!sourcePlaneMatched) {\n blockers.push(\n \"source-plane-mismatch\"\n );\n }\n\n if (\n !input.reduction\n .wavelengthBasisResolved\n ) {\n blockers.push(\n \"wavelength-basis-unresolved\"\n );\n }\n\n if (\n profile.incidentAreaBasis.kind !==\n \"geometric-sensitive-aperture\"\n ) {\n blockers.push(\n \"incident-area-basis-not-currently-integrated\"\n );\n } else if (\n !approximatelyEqual(\n profile.incidentAreaBasis\n .areaSquareMicrometers,\n geometricArea\n )\n ) {\n blockers.push(\n \"incident-area-mismatch\"\n );\n }\n\n if (\n profile.spatialResponseModel.kind ===\n \"not-established\"\n ) {\n blockers.push(\n \"spatial-response-uniformity-not-established\"\n );\n }\n\n if (\n profile.referenceConditionPolicy.kind ===\n \"exact-match-required\"\n ) {\n const referenceConditions =\n input.reduction\n .responseReferenceConditions;\n if (\n referenceConditions === undefined\n ) {\n blockers.push(\n \"response-reference-conditions-not-declared\"\n );\n } else if (\n input.operatingConditions ===\n undefined\n ) {\n blockers.push(\n \"operating-conditions-not-declared\"\n );\n } else if (\n !conditionsMatch(\n referenceConditions,\n input.operatingConditions\n )\n ) {\n blockers.push(\n \"operating-conditions-mismatch\"\n );\n }\n }\n\n const structurallyCompatible =\n blockers.length === 0;\n\n const approximation =\n input.reduction\n .responseScientificStatus ===\n \"approximation\" ||\n (\n profile.spatialResponseModel.kind ===\n \"uniform-over-geometric-sensitive-aperture\" &&\n profile.spatialResponseModel\n .scientificStatus ===\n \"approximation\"\n ) ||\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\";\n\n const compatibilityStatus =\n structurallyCompatible\n ? approximation\n ? \"compatible-approximation\"\n : \"compatible\"\n : \"blocked\";\n\n const spatialEvidence =\n profile.spatialResponseModel.kind ===\n \"uniform-over-geometric-sensitive-aperture\"\n ? profile.spatialResponseModel.evidence\n : [];\n const referenceConditionEvidence =\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\"\n ? profile.referenceConditionPolicy\n .evidence\n : [];\n\n return calculatedResult(\n {\n applicationProfileId:\n profile.profileId,\n spectralResponseProfileId:\n input.reduction\n .responseProfileId,\n colorSamplingProfileId:\n input.reduction\n .colorSamplingProfileId,\n channelId:\n input.reduction.channelId,\n responseScope:\n input.reduction.responseScope,\n requiredSourcePlane:\n requiredPlane,\n suppliedSourcePlane:\n sourcePlane.value,\n sourcePlaneMatched,\n responseIncidentAreaBasis:\n profile.incidentAreaBasis,\n currentlyIntegratedAreaBasis:\n \"geometric-sensitive-aperture\",\n geometricApertureAreaSquareMicrometers:\n geometricArea,\n ...(input.reduction\n .nominalSiteCellAreaSquareMicrometers ===\n undefined\n ? {}\n : {\n nominalSiteCellAreaSquareMicrometers:\n input.reduction\n .nominalSiteCellAreaSquareMicrometers\n }),\n spatialResponseModel:\n profile.spatialResponseModel,\n referenceConditionPolicy:\n profile.referenceConditionPolicy,\n ...(input.reduction\n .responseReferenceConditions ===\n undefined\n ? {}\n : {\n responseReferenceConditions:\n input.reduction\n .responseReferenceConditions\n }),\n ...(input.operatingConditions ===\n undefined\n ? {}\n : {\n operatingConditions:\n input.operatingConditions\n }),\n structuralCompatibilityEstablished:\n structurallyCompatible,\n compatibilityStatus,\n blockers,\n requiredSignalPath:\n input.reduction\n .sourceResponseKind ===\n \"effective-spectral-responsivity\"\n ? \"radiant-power-to-current\"\n : \"photon-rate-to-electrons\",\n quantifiedResponseUncertaintyAvailable:\n input.reduction\n .responseUncertainty.kind ===\n \"relative\",\n responseApplicationPerformed:\n false,\n signalConversionAuthorized:\n false,\n temporalIntegrationAuthorized:\n false,\n photonConversionPerformed:\n false,\n electronConversionPerformed:\n false,\n currentConversionPerformed:\n false,\n operatingRangeCompatibilityAssessed:\n false,\n spatiallyVaryingResponseSupported:\n false,\n componentEvidence: {\n applicationProfile:\n profile.evidence,\n sourcePlane:\n sourcePlane.evidence,\n spatialResponse:\n spatialEvidence,\n referenceConditionAssumption:\n referenceConditionEvidence,\n response:\n input.reduction\n .componentEvidence.spectral\n }\n },\n \"sensor-response-application-compatibility\",\n \"1.0.0\",\n [\n \"This result is a structural compatibility gate only; it never authorizes or performs sensor-response signal conversion.\",\n \"Response reference plane is derived from responseScope. Package-incident and site-incident inputs are not interchangeable.\",\n \"The current spatio-spectral reducer integrates the geometric sensitive aperture only. Full-site-cell and effective-collection-area response normalizations remain blocked until matching radiometric integrations exist.\",\n \"A scalar wavelength-only response may be applied after spatial reduction only when uniform/separable response over the integrated geometric aperture is explicitly established or declared as an approximation.\",\n \"Exact reference-condition matching is required when that policy is selected because temperature, incidence-angle and polarization dependence are not modeled.\",\n \"An unresolved wavelength basis is incompatible with physical response application.\",\n \"Typical total-pixel QE definitions can include fill factor and microlens effects; they must not be applied to geometric-sensitive-aperture flux unless the response normalization explicitly matches that area basis.\",\n \"Response linearity/dynamic-range validity is not assessed by this gate and remains required before a future conversion can claim calibrated applicability.\",\n \"EQE/filter×EQE responses require a future photon-rate→electron path; A/W responsivity requires a separate radiant-power→current path.\",\n \"Temporal integration, photons/electrons/current, noise, saturation, ADC/RAW conversion and reconstruction remain downstream.\"\n ]\n );\n}\n"]}
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* declared
|
|
7
|
-
* linear superposition
|
|
8
|
-
*
|
|
9
|
-
* authorizing instantaneous response conversion. Operating-range assessment preserves incident power
|
|
10
|
-
* versus irradiance, wavelength support, reference conditions and declared nonlinearity criterion.
|
|
11
|
-
* Per-bin conversion requires spectral-bin applicability and spatial linear superposition. Valid mean
|
|
12
|
-
* input must not conceal an invalid bright local sub-aperture.
|
|
2
|
+
* Response operating range: checks that the light input is inside the range where the measured
|
|
3
|
+
* sensor response is valid (linear within a declared criterion).
|
|
4
|
+
*
|
|
5
|
+
* It keeps incident power and irradiance distinct, and respects wavelength coverage, reference
|
|
6
|
+
* conditions and the declared non-linearity criterion. Converting each spectral bin needs that bin to
|
|
7
|
+
* be in range and needs spatial linear superposition (the response to a sum of inputs is the sum of
|
|
8
|
+
* the responses). A valid average must not hide a part of the aperture that is too bright.
|
|
13
9
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
14
10
|
* limits.
|
|
15
11
|
*/
|
|
@@ -70,14 +66,14 @@ export interface SensorResponseOperatingRangeProfile {
|
|
|
70
66
|
wavelengthApplicability: SensorResponseOperatingWavelengthApplicability;
|
|
71
67
|
linearityCriterion: SensorResponseLinearityCriterion;
|
|
72
68
|
/**
|
|
73
|
-
* Optional for backward compatibility.
|
|
74
|
-
*
|
|
69
|
+
* Optional for backward compatibility. If omitted, it parses as "not
|
|
70
|
+
* established", which blocks new response-rate conversions.
|
|
75
71
|
*/
|
|
76
72
|
spatialLinearityModel?: SensorResponseOperatingSpatialLinearityModel;
|
|
77
73
|
/**
|
|
78
|
-
* Optional for backward compatibility.
|
|
79
|
-
* establishes
|
|
80
|
-
* wavelength-by-wavelength response conversion.
|
|
74
|
+
* Optional for backward compatibility. If omitted, the calibration only
|
|
75
|
+
* establishes an operating range for broadband (wavelength-integrated) input,
|
|
76
|
+
* and cannot allow wavelength-by-wavelength response conversion.
|
|
81
77
|
*/
|
|
82
78
|
spectralInputModel?: SensorResponseOperatingSpectralInputModel;
|
|
83
79
|
referenceConditions?: SensorSpectralReferenceConditions;
|
|
@@ -143,31 +139,26 @@ export interface SensorResponseOperatingRangeAssessment {
|
|
|
143
139
|
};
|
|
144
140
|
}
|
|
145
141
|
/**
|
|
146
|
-
*
|
|
147
|
-
* missing required fields and
|
|
142
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
143
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
148
144
|
*
|
|
149
|
-
*
|
|
150
|
-
* conditions and
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
154
|
-
* @returns SensorResponseOperatingRangeProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
145
|
+
* The profile states the input quantity (incident power or irradiance), wavelength coverage,
|
|
146
|
+
* reference conditions and non-linearity criterion of the calibrated operating range.
|
|
147
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
148
|
+
* @returns The result. Success does not imply calibration.
|
|
155
149
|
*
|
|
156
|
-
* @see docs/API_REFERENCE.md for the
|
|
150
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
157
151
|
*/
|
|
158
152
|
export declare function parseSensorResponseOperatingRangeProfile(value: unknown): SensorResponseOperatingRangeProfile;
|
|
159
153
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
154
|
+
* Checks every declared spectral-bin input against the operating range and the superposition
|
|
155
|
+
* requirement, before any instantaneous response conversion is allowed.
|
|
162
156
|
*
|
|
163
|
-
*
|
|
164
|
-
*
|
|
165
|
-
*
|
|
166
|
-
*
|
|
167
|
-
* @param input - AssessSensorResponseOperatingRangeInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
168
|
-
* @returns CalculationResult<SensorResponseOperatingRangeAssessment>. Read structured blockers before consuming an authorization.
|
|
157
|
+
* Each bin must be in range, and spatial linear superposition must hold. A valid average must not
|
|
158
|
+
* hide a part of the aperture that is too bright.
|
|
159
|
+
* @param input - The input; see `AssessSensorResponseOperatingRangeInput` for its fields, units and coordinates.
|
|
160
|
+
* @returns The assessment. Read its structured blockers before acting on an authorization.
|
|
169
161
|
*
|
|
170
|
-
* @see docs/API_REFERENCE.md for the
|
|
162
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
171
163
|
*/
|
|
172
164
|
export declare function assessSensorResponseOperatingRange(input: AssessSensorResponseOperatingRangeInput): CalculationResult<SensorResponseOperatingRangeAssessment>;
|
|
173
|
-
//# sourceMappingURL=response-operating-range.d.ts.map
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* declared
|
|
8
|
-
* linear superposition
|
|
9
|
-
*
|
|
10
|
-
* authorizing instantaneous response conversion. Operating-range assessment preserves incident power
|
|
11
|
-
* versus irradiance, wavelength support, reference conditions and declared nonlinearity criterion.
|
|
12
|
-
* Per-bin conversion requires spectral-bin applicability and spatial linear superposition. Valid mean
|
|
13
|
-
* input must not conceal an invalid bright local sub-aperture.
|
|
3
|
+
* Response operating range: checks that the light input is inside the range where the measured
|
|
4
|
+
* sensor response is valid (linear within a declared criterion).
|
|
5
|
+
*
|
|
6
|
+
* It keeps incident power and irradiance distinct, and respects wavelength coverage, reference
|
|
7
|
+
* conditions and the declared non-linearity criterion. Converting each spectral bin needs that bin to
|
|
8
|
+
* be in range and needs spatial linear superposition (the response to a sum of inputs is the sum of
|
|
9
|
+
* the responses). A valid average must not hide a part of the aperture that is too bright.
|
|
14
10
|
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
15
11
|
* limits.
|
|
16
12
|
*/
|
|
@@ -18,12 +14,15 @@ import { calculatedResult } from "../core/calculation-result.js";
|
|
|
18
14
|
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
19
15
|
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
20
16
|
import { InvalidScientificInputError } from "../core/validation.js";
|
|
21
|
-
|
|
17
|
+
import { requireInputObject, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from "../core/record-validation.js";
|
|
18
|
+
function requireRecord(value, path, allowedKeys) {
|
|
22
19
|
if (typeof value !== "object" ||
|
|
23
20
|
value === null ||
|
|
24
21
|
Array.isArray(value)) {
|
|
25
22
|
throw new InvalidConfigurationError(path + " must be an object.");
|
|
26
23
|
}
|
|
24
|
+
if (allowedKeys !== null)
|
|
25
|
+
rejectUnknownFields(value, allowedKeys, path);
|
|
27
26
|
return value;
|
|
28
27
|
}
|
|
29
28
|
function requireNonEmptyString(value, path) {
|
|
@@ -52,7 +51,8 @@ function requirePositiveFinite(value, path) {
|
|
|
52
51
|
return value;
|
|
53
52
|
}
|
|
54
53
|
function parseUncertainty(value, path) {
|
|
55
|
-
const record = requireRecord(value, path);
|
|
54
|
+
const record = requireRecord(value, path, null);
|
|
55
|
+
rejectUnknownVariantFields(record, "kind", UNCERTAINTY_VARIANT_FIELDS, path);
|
|
56
56
|
if (record.kind === "relative") {
|
|
57
57
|
const fraction = requireFiniteNonNegative(record.fraction, path + ".fraction");
|
|
58
58
|
return {
|
|
@@ -70,7 +70,7 @@ function parseUncertainty(value, path) {
|
|
|
70
70
|
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
71
71
|
}
|
|
72
72
|
function parseReferenceConditions(value, path) {
|
|
73
|
-
const record = requireRecord(value, path);
|
|
73
|
+
const record = requireRecord(value, path, ["temperatureC", "incidenceAngleDegreesFromNormal", "polarization"]);
|
|
74
74
|
const result = {};
|
|
75
75
|
if (record.temperatureC !== undefined) {
|
|
76
76
|
if (typeof record.temperatureC !==
|
|
@@ -118,7 +118,8 @@ function parseReferenceConditions(value, path) {
|
|
|
118
118
|
return result;
|
|
119
119
|
}
|
|
120
120
|
function parseReferenceConditionPolicy(value, path) {
|
|
121
|
-
const record = requireRecord(value, path);
|
|
121
|
+
const record = requireRecord(value, path, null);
|
|
122
|
+
rejectUnknownVariantFields(record, "kind", { "exact-match-required": ["kind"], "assume-compatible": ["kind", "limitation", "evidence"] }, path);
|
|
122
123
|
if (record.kind ===
|
|
123
124
|
"exact-match-required") {
|
|
124
125
|
return {
|
|
@@ -135,7 +136,7 @@ function parseReferenceConditionPolicy(value, path) {
|
|
|
135
136
|
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
136
137
|
}
|
|
137
138
|
function parseInputRange(value, path) {
|
|
138
|
-
const record = requireRecord(value, path);
|
|
139
|
+
const record = requireRecord(value, path, ["minimumInclusive", "maximumInclusive", "kind", "unit"]);
|
|
139
140
|
const minimumInclusive = requireFiniteNonNegative(record.minimumInclusive, path + ".minimumInclusive");
|
|
140
141
|
const maximumInclusive = requirePositiveFinite(record.maximumInclusive, path + ".maximumInclusive");
|
|
141
142
|
if (minimumInclusive >=
|
|
@@ -172,7 +173,7 @@ function parseInputRange(value, path) {
|
|
|
172
173
|
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
173
174
|
}
|
|
174
175
|
function parseWavelengthApplicability(value, path) {
|
|
175
|
-
const record = requireRecord(value, path);
|
|
176
|
+
const record = requireRecord(value, path, ["wavelengthBasis", "minimumNanometers", "maximumNanometers", "containment"]);
|
|
176
177
|
if (record.wavelengthBasis !== "air" &&
|
|
177
178
|
record.wavelengthBasis !==
|
|
178
179
|
"vacuum") {
|
|
@@ -199,7 +200,7 @@ function parseWavelengthApplicability(value, path) {
|
|
|
199
200
|
};
|
|
200
201
|
}
|
|
201
202
|
function parseLinearityCriterion(value, path) {
|
|
202
|
-
const record = requireRecord(value, path);
|
|
203
|
+
const record = requireRecord(value, path, ["maximumAbsoluteRelativeDeviation"]);
|
|
203
204
|
const maximumAbsoluteRelativeDeviation = requireFiniteNonNegative(record
|
|
204
205
|
.maximumAbsoluteRelativeDeviation, path +
|
|
205
206
|
".maximumAbsoluteRelativeDeviation");
|
|
@@ -218,7 +219,8 @@ function parseSpectralInputModel(value) {
|
|
|
218
219
|
kind: "broadband-integrated-only"
|
|
219
220
|
};
|
|
220
221
|
}
|
|
221
|
-
const record = requireRecord(value, "sensorResponseOperatingRange.spectralInputModel");
|
|
222
|
+
const record = requireRecord(value, "sensorResponseOperatingRange.spectralInputModel", null);
|
|
223
|
+
rejectUnknownVariantFields(record, "kind", { "broadband-integrated-only": ["kind"], "per-spectral-bin": ["kind", "maximumBinWidthNanometers", "scientificStatus", "evidence", "limitation"] }, "sensorResponseOperatingRange.spectralInputModel");
|
|
222
224
|
if (record.kind ===
|
|
223
225
|
"broadband-integrated-only") {
|
|
224
226
|
return {
|
|
@@ -261,7 +263,8 @@ function parseSpatialLinearityModel(value) {
|
|
|
261
263
|
limitation: "Spatial-distribution linear superposition was not declared."
|
|
262
264
|
};
|
|
263
265
|
}
|
|
264
|
-
const record = requireRecord(value, "sensorResponseOperatingRange.spatialLinearityModel");
|
|
266
|
+
const record = requireRecord(value, "sensorResponseOperatingRange.spatialLinearityModel", null);
|
|
267
|
+
rejectUnknownVariantFields(record, "kind", { "not-established": ["kind", "limitation"], "linear-superposition-over-geometric-aperture": ["kind", "scientificStatus", "evidence", "limitation"] }, "sensorResponseOperatingRange.spatialLinearityModel");
|
|
265
268
|
if (record.kind === "not-established") {
|
|
266
269
|
return {
|
|
267
270
|
kind: "not-established",
|
|
@@ -296,20 +299,18 @@ function parseSpatialLinearityModel(value) {
|
|
|
296
299
|
};
|
|
297
300
|
}
|
|
298
301
|
/**
|
|
299
|
-
*
|
|
300
|
-
* missing required fields and
|
|
302
|
+
* Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,
|
|
303
|
+
* missing required fields and inconsistent scientific data are rejected.
|
|
301
304
|
*
|
|
302
|
-
*
|
|
303
|
-
* conditions and
|
|
304
|
-
*
|
|
305
|
-
*
|
|
306
|
-
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
307
|
-
* @returns SensorResponseOperatingRangeProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
305
|
+
* The profile states the input quantity (incident power or irradiance), wavelength coverage,
|
|
306
|
+
* reference conditions and non-linearity criterion of the calibrated operating range.
|
|
307
|
+
* @param value - Untrusted data. TypeScript types alone are not validation.
|
|
308
|
+
* @returns The result. Success does not imply calibration.
|
|
308
309
|
*
|
|
309
|
-
* @see docs/API_REFERENCE.md for the
|
|
310
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
310
311
|
*/
|
|
311
312
|
export function parseSensorResponseOperatingRangeProfile(value) {
|
|
312
|
-
const record = requireRecord(value, "sensorResponseOperatingRange");
|
|
313
|
+
const record = requireRecord(value, "sensorResponseOperatingRange", ["schemaVersion", "scientificStatus", "referenceConditions", "referenceConditionPolicy", "uncertainty", "profileId", "responseApplicationProfileId", "spectralResponseProfileId", "colorSamplingProfileId", "channelId", "evidence", "inputRange", "wavelengthApplicability", "linearityCriterion", "spatialLinearityModel", "spectralInputModel"]);
|
|
313
314
|
if (record.schemaVersion !== "0.1.0") {
|
|
314
315
|
throw new InvalidConfigurationError('sensorResponseOperatingRange.schemaVersion must be "0.1.0".');
|
|
315
316
|
}
|
|
@@ -413,6 +414,7 @@ function spectralNodeInputValue(entry, range) {
|
|
|
413
414
|
return value;
|
|
414
415
|
}
|
|
415
416
|
function validateReductionIdentity(reduction, compatibility) {
|
|
417
|
+
requireInputObject(reduction, "reduction input");
|
|
416
418
|
if (reduction.responseProfileId !==
|
|
417
419
|
compatibility
|
|
418
420
|
.spectralResponseProfileId ||
|
|
@@ -425,19 +427,18 @@ function validateReductionIdentity(reduction, compatibility) {
|
|
|
425
427
|
}
|
|
426
428
|
}
|
|
427
429
|
/**
|
|
428
|
-
*
|
|
429
|
-
*
|
|
430
|
+
* Checks every declared spectral-bin input against the operating range and the superposition
|
|
431
|
+
* requirement, before any instantaneous response conversion is allowed.
|
|
430
432
|
*
|
|
431
|
-
*
|
|
432
|
-
*
|
|
433
|
-
*
|
|
434
|
-
*
|
|
435
|
-
* @param input - AssessSensorResponseOperatingRangeInput. See the linked contract for coordinate, unit and profile binding semantics.
|
|
436
|
-
* @returns CalculationResult<SensorResponseOperatingRangeAssessment>. Read structured blockers before consuming an authorization.
|
|
433
|
+
* Each bin must be in range, and spatial linear superposition must hold. A valid average must not
|
|
434
|
+
* hide a part of the aperture that is too bright.
|
|
435
|
+
* @param input - The input; see `AssessSensorResponseOperatingRangeInput` for its fields, units and coordinates.
|
|
436
|
+
* @returns The assessment. Read its structured blockers before acting on an authorization.
|
|
437
437
|
*
|
|
438
|
-
* @see docs/API_REFERENCE.md for the
|
|
438
|
+
* @see docs/API_REFERENCE.md for the package export and its full type definitions.
|
|
439
439
|
*/
|
|
440
440
|
export function assessSensorResponseOperatingRange(input) {
|
|
441
|
+
requireInputKeys(input, "assessSensorResponseOperatingRange", ["reduction", "compatibility", "operatingRangeProfile"]);
|
|
441
442
|
validateReductionIdentity(input.reduction, input.compatibility);
|
|
442
443
|
const profile = parseSensorResponseOperatingRangeProfile(input.operatingRangeProfile);
|
|
443
444
|
const blockers = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-operating-range.js","sourceRoot":"","sources":["../../src/sensor/response-operating-range.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"response-operating-range.js","sourceRoot":"","sources":["../../src/sensor/response-operating-range.ts"],"names":[],"mappings":"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","sourcesContent":["// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Response operating range: checks that the light input is inside the range where the measured\n * sensor response is valid (linear within a declared criterion).\n *\n * It keeps incident power and irradiance distinct, and respects wavelength coverage, reference\n * conditions and the declared non-linearity criterion. Converting each spectral bin needs that bin to\n * be in range and needs spatial linear superposition (the response to a sum of inputs is the sum of\n * the responses). A valid average must not hide a part of the aperture that is too bright.\n * @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support\n * limits.\n */\n\nimport {\n calculatedResult,\n type CalculationResult\n} from \"../core/calculation-result.js\";\nimport { InvalidConfigurationError } from \"../core/configuration-error.js\";\nimport {\n parseEvidenceList,\n type EvidenceProvenance\n} from \"../core/evidence-provenance.js\";\nimport { InvalidScientificInputError } from \"../core/validation.js\";\nimport type {\n SensorResponseApplicationCompatibilityAssessment,\n SensorResponseReferenceConditionPolicy,\n SensorResponseSignalPath\n} from \"./response-application-compatibility.js\";\nimport type {\n SensorSpectralReferenceConditions,\n SensorSpectralResponseScientificStatus,\n SensorSpectralResponseUncertainty,\n SpectralWavelengthBasis\n} from \"./spectral-response.js\";\nimport type {\n SensorSpatioSpectralIrradianceReduction\n} from \"./spatio-spectral-reduction.js\";\nimport { requireInputObject, requireInputKeys, rejectUnknownFields, rejectUnknownVariantFields, UNCERTAINTY_VARIANT_FIELDS } from \"../core/record-validation.js\";\n\ntype UnknownRecord = Record<string, unknown>;\n\nexport type SensorResponseOperatingInputRange =\n | {\n kind:\n \"wavelength-integrated-geometric-aperture-radiant-power\";\n unit: \"W\";\n minimumInclusive: number;\n maximumInclusive: number;\n }\n | {\n kind:\n \"wavelength-integrated-spatial-average-irradiance\";\n unit: \"W/m^2\";\n minimumInclusive: number;\n maximumInclusive: number;\n };\n\nexport interface SensorResponseOperatingWavelengthApplicability {\n wavelengthBasis:\n Exclude<SpectralWavelengthBasis, \"unspecified\">;\n minimumNanometers: number;\n maximumNanometers: number;\n containment:\n \"requested-range-must-be-contained\";\n}\n\nexport interface SensorResponseLinearityCriterion {\n maximumAbsoluteRelativeDeviation: number;\n}\n\nexport type SensorResponseOperatingSpectralInputModel =\n | {\n kind: \"broadband-integrated-only\";\n }\n | {\n kind: \"per-spectral-bin\";\n maximumBinWidthNanometers: number;\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n evidence: readonly EvidenceProvenance[];\n limitation?: string;\n };\n\nexport type SensorResponseOperatingSpatialLinearityModel =\n | {\n kind:\n \"linear-superposition-over-geometric-aperture\";\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n evidence: readonly EvidenceProvenance[];\n limitation?: string;\n }\n | {\n kind: \"not-established\";\n limitation: string;\n };\n\nexport interface SensorResponseOperatingRangeProfile {\n schemaVersion: \"0.1.0\";\n profileId: string;\n responseApplicationProfileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n scientificStatus:\n SensorSpectralResponseScientificStatus;\n uncertainty:\n SensorSpectralResponseUncertainty;\n evidence: readonly EvidenceProvenance[];\n inputRange:\n SensorResponseOperatingInputRange;\n wavelengthApplicability:\n SensorResponseOperatingWavelengthApplicability;\n linearityCriterion:\n SensorResponseLinearityCriterion;\n /**\n * Optional for backward compatibility. If omitted, it parses as \"not\n * established\", which blocks new response-rate conversions.\n */\n spatialLinearityModel?:\n SensorResponseOperatingSpatialLinearityModel;\n /**\n * Optional for backward compatibility. If omitted, the calibration only\n * establishes an operating range for broadband (wavelength-integrated) input,\n * and cannot allow wavelength-by-wavelength response conversion.\n */\n spectralInputModel?:\n SensorResponseOperatingSpectralInputModel;\n referenceConditions?:\n SensorSpectralReferenceConditions;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n}\n\nexport interface AssessSensorResponseOperatingRangeInput {\n reduction:\n SensorSpatioSpectralIrradianceReduction;\n compatibility:\n SensorResponseApplicationCompatibilityAssessment;\n operatingRangeProfile:\n SensorResponseOperatingRangeProfile;\n}\n\nexport type SensorResponseOperatingRangeBlocker =\n | \"structural-compatibility-not-established\"\n | \"response-application-profile-id-mismatch\"\n | \"spectral-response-profile-id-mismatch\"\n | \"color-sampling-profile-id-mismatch\"\n | \"channel-id-mismatch\"\n | \"wavelength-basis-unresolved\"\n | \"wavelength-basis-mismatch\"\n | \"wavelength-range-outside-linearity-applicability\"\n | \"input-below-linearity-range\"\n | \"input-above-linearity-range\"\n | \"spectral-bin-width-outside-linearity-applicability\"\n | \"spectral-bin-input-below-linearity-range\"\n | \"spectral-bin-input-above-linearity-range\"\n | \"spatial-linearity-superposition-not-established\"\n | \"operating-conditions-not-declared\"\n | \"linearity-operating-conditions-mismatch\";\n\nexport interface SensorResponseOperatingRangeAssessment {\n operatingRangeProfileId: string;\n responseApplicationProfileId: string;\n spectralResponseProfileId: string;\n colorSamplingProfileId: string;\n channelId: string;\n requiredSignalPath:\n SensorResponseSignalPath;\n inputRange:\n SensorResponseOperatingInputRange;\n evaluatedInput: {\n kind:\n SensorResponseOperatingInputRange[\"kind\"];\n unit:\n SensorResponseOperatingInputRange[\"unit\"];\n value: number;\n };\n wavelengthApplicability:\n SensorResponseOperatingWavelengthApplicability;\n evaluatedWavelengthRangeNanometers: {\n minimum: number;\n maximum: number;\n };\n linearityCriterion:\n SensorResponseLinearityCriterion;\n spectralInputModel:\n SensorResponseOperatingSpectralInputModel;\n evaluatedSpectralNodeInputs?:\n readonly {\n spectralSampleIndex: number;\n wavelengthNanometers: number;\n wavelengthMeasureNanometers: number;\n kind:\n SensorResponseOperatingInputRange[\"kind\"];\n unit:\n SensorResponseOperatingInputRange[\"unit\"];\n value: number;\n }[];\n spectralNodeRangeCompatibilityAssessed:\n boolean;\n spatialLinearityModel:\n SensorResponseOperatingSpatialLinearityModel;\n referenceConditionPolicy:\n SensorResponseReferenceConditionPolicy;\n referenceConditions?:\n SensorSpectralReferenceConditions;\n operatingConditions?:\n SensorSpectralReferenceConditions;\n operatingRangeCompatibilityAssessed: true;\n instantaneousResponseRangeCompatible: boolean;\n status:\n | \"broadband-range-compatible\"\n | \"broadband-range-compatible-approximation\"\n | \"rate-conversion-authorized\"\n | \"rate-conversion-authorized-approximation\"\n | \"blocked\";\n blockers:\n readonly SensorResponseOperatingRangeBlocker[];\n responseRateConversionAuthorized: boolean;\n responseApplicationPerformed: false;\n temporalIntegrationAuthorized: false;\n exposureDomainLinearityAssessed: false;\n accumulatedChargeLinearityAssessed: false;\n saturationAssessed: false;\n photonConversionPerformed: false;\n electronConversionPerformed: false;\n currentConversionPerformed: false;\n componentEvidence: {\n operatingRange:\n readonly EvidenceProvenance[];\n referenceConditionAssumption:\n readonly EvidenceProvenance[];\n spatialLinearity:\n readonly EvidenceProvenance[];\n structuralCompatibility:\n SensorResponseApplicationCompatibilityAssessment[\"componentEvidence\"];\n };\n}\n\nfunction requireRecord(\n value: unknown,\n path: string,\n allowedKeys: readonly string[] | null\n): UnknownRecord {\n if (\n typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value)\n ) {\n throw new InvalidConfigurationError(\n path + \" must be an object.\"\n );\n }\n if (allowedKeys !== null) rejectUnknownFields(value, allowedKeys, path);\n return value as UnknownRecord;\n}\n\nfunction requireNonEmptyString(\n value: unknown,\n path: string\n): string {\n if (\n typeof value !== \"string\" ||\n value.trim().length === 0\n ) {\n throw new InvalidConfigurationError(\n path + \" must be a non-empty string.\"\n );\n }\n return value;\n}\n\nfunction requireFiniteNonNegative(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than or equal to zero.\"\n );\n }\n return value;\n}\n\nfunction requirePositiveFinite(\n value: unknown,\n path: string\n): number {\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must be finite and greater than zero.\"\n );\n }\n return value;\n}\n\nfunction parseUncertainty(\n value: unknown,\n path: string\n): SensorSpectralResponseUncertainty {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", UNCERTAINTY_VARIANT_FIELDS, path);\n\n if (record.kind === \"relative\") {\n const fraction =\n requireFiniteNonNegative(\n record.fraction,\n path + \".fraction\"\n );\n return {\n kind: \"relative\",\n fraction,\n basis: requireNonEmptyString(\n record.basis,\n path + \".basis\"\n )\n };\n }\n\n if (\n record.kind === \"not-quantified\"\n ) {\n return {\n kind: \"not-quantified\",\n limitation: requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseReferenceConditions(\n value: unknown,\n path: string\n): SensorSpectralReferenceConditions {\n const record =\n requireRecord(value, path, [\"temperatureC\", \"incidenceAngleDegreesFromNormal\", \"polarization\"]);\n const result:\n SensorSpectralReferenceConditions =\n {};\n\n if (\n record.temperatureC !== undefined\n ) {\n if (\n typeof record.temperatureC !==\n \"number\" ||\n !Number.isFinite(\n record.temperatureC\n )\n ) {\n throw new InvalidConfigurationError(\n path +\n \".temperatureC must be finite.\"\n );\n }\n result.temperatureC =\n record.temperatureC;\n }\n\n if (\n record.incidenceAngleDegreesFromNormal !==\n undefined\n ) {\n const angle =\n record\n .incidenceAngleDegreesFromNormal;\n if (\n typeof angle !== \"number\" ||\n !Number.isFinite(angle) ||\n angle < 0 ||\n angle > 90\n ) {\n throw new InvalidConfigurationError(\n path +\n \".incidenceAngleDegreesFromNormal must be finite from 0 through 90.\"\n );\n }\n result.incidenceAngleDegreesFromNormal =\n angle;\n }\n\n if (\n record.polarization !== undefined\n ) {\n if (\n record.polarization !==\n \"unpolarized\" &&\n record.polarization !==\n \"unspecified\"\n ) {\n throw new InvalidConfigurationError(\n path +\n \".polarization is invalid.\"\n );\n }\n result.polarization =\n record.polarization;\n }\n\n if (\n result.temperatureC === undefined &&\n result\n .incidenceAngleDegreesFromNormal ===\n undefined &&\n result.polarization === undefined\n ) {\n throw new InvalidConfigurationError(\n path +\n \" must declare at least one condition.\"\n );\n }\n\n return result;\n}\n\nfunction parseReferenceConditionPolicy(\n value: unknown,\n path: string\n): SensorResponseReferenceConditionPolicy {\n const record =\n requireRecord(value, path, null);\n rejectUnknownVariantFields(record, \"kind\", { \"exact-match-required\": [\"kind\"], \"assume-compatible\": [\"kind\", \"limitation\", \"evidence\"] }, path);\n\n if (\n record.kind ===\n \"exact-match-required\"\n ) {\n return {\n kind: \"exact-match-required\"\n };\n }\n\n if (\n record.kind === \"assume-compatible\"\n ) {\n return {\n kind: \"assume-compatible\",\n limitation:\n requireNonEmptyString(\n record.limitation,\n path + \".limitation\"\n ),\n evidence: parseEvidenceList(\n record.evidence,\n path + \".evidence\"\n )\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseInputRange(\n value: unknown,\n path: string\n): SensorResponseOperatingInputRange {\n const record =\n requireRecord(value, path, [\"minimumInclusive\", \"maximumInclusive\", \"kind\", \"unit\"]);\n\n const minimumInclusive =\n requireFiniteNonNegative(\n record.minimumInclusive,\n path + \".minimumInclusive\"\n );\n const maximumInclusive =\n requirePositiveFinite(\n record.maximumInclusive,\n path + \".maximumInclusive\"\n );\n\n if (\n minimumInclusive >=\n maximumInclusive\n ) {\n throw new InvalidConfigurationError(\n path +\n \".minimumInclusive must be less than maximumInclusive.\"\n );\n }\n\n if (\n record.kind ===\n \"wavelength-integrated-geometric-aperture-radiant-power\"\n ) {\n if (record.unit !== \"W\") {\n throw new InvalidConfigurationError(\n path +\n '.unit must be \"W\".'\n );\n }\n return {\n kind:\n \"wavelength-integrated-geometric-aperture-radiant-power\",\n unit: \"W\",\n minimumInclusive,\n maximumInclusive\n };\n }\n\n if (\n record.kind ===\n \"wavelength-integrated-spatial-average-irradiance\"\n ) {\n if (record.unit !== \"W/m^2\") {\n throw new InvalidConfigurationError(\n path +\n '.unit must be \"W/m^2\".'\n );\n }\n return {\n kind:\n \"wavelength-integrated-spatial-average-irradiance\",\n unit: \"W/m^2\",\n minimumInclusive,\n maximumInclusive\n };\n }\n\n throw new InvalidConfigurationError(\n path + \".kind is invalid.\"\n );\n}\n\nfunction parseWavelengthApplicability(\n value: unknown,\n path: string\n): SensorResponseOperatingWavelengthApplicability {\n const record =\n requireRecord(value, path, [\"wavelengthBasis\", \"minimumNanometers\", \"maximumNanometers\", \"containment\"]);\n\n if (\n record.wavelengthBasis !== \"air\" &&\n record.wavelengthBasis !==\n \"vacuum\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.wavelengthBasis must be \"air\" or \"vacuum\".'\n );\n }\n\n const minimumNanometers =\n requirePositiveFinite(\n record.minimumNanometers,\n path + \".minimumNanometers\"\n );\n const maximumNanometers =\n requirePositiveFinite(\n record.maximumNanometers,\n path + \".maximumNanometers\"\n );\n\n if (\n minimumNanometers >=\n maximumNanometers\n ) {\n throw new InvalidConfigurationError(\n path +\n \".minimumNanometers must be less than maximumNanometers.\"\n );\n }\n\n if (\n record.containment !==\n \"requested-range-must-be-contained\"\n ) {\n throw new InvalidConfigurationError(\n path +\n '.containment must be \"requested-range-must-be-contained\".'\n );\n }\n\n return {\n wavelengthBasis:\n record.wavelengthBasis,\n minimumNanometers,\n maximumNanometers,\n containment:\n \"requested-range-must-be-contained\"\n };\n}\n\nfunction parseLinearityCriterion(\n value: unknown,\n path: string\n): SensorResponseLinearityCriterion {\n const record =\n requireRecord(value, path, [\"maximumAbsoluteRelativeDeviation\"]);\n const maximumAbsoluteRelativeDeviation =\n requireFiniteNonNegative(\n record\n .maximumAbsoluteRelativeDeviation,\n path +\n \".maximumAbsoluteRelativeDeviation\"\n );\n\n if (\n maximumAbsoluteRelativeDeviation >\n 1\n ) {\n throw new InvalidConfigurationError(\n path +\n \".maximumAbsoluteRelativeDeviation must be a fraction from 0 through 1.\"\n );\n }\n\n return {\n maximumAbsoluteRelativeDeviation\n };\n}\n\nfunction parseSpectralInputModel(\n value: unknown\n): SensorResponseOperatingSpectralInputModel {\n if (value === undefined) {\n return {\n kind: \"broadband-integrated-only\"\n };\n }\n\n const record = requireRecord(\n value,\n \"sensorResponseOperatingRange.spectralInputModel\", null\n );\n rejectUnknownVariantFields(record, \"kind\", { \"broadband-integrated-only\": [\"kind\"], \"per-spectral-bin\": [\"kind\", \"maximumBinWidthNanometers\", \"scientificStatus\", \"evidence\", \"limitation\"] }, \"sensorResponseOperatingRange.spectralInputModel\");\n\n if (\n record.kind ===\n \"broadband-integrated-only\"\n ) {\n return {\n kind: \"broadband-integrated-only\"\n };\n }\n\n if (\n record.kind !==\n \"per-spectral-bin\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spectralInputModel.kind is invalid.\"\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spectralInputModel.scientificStatus is invalid.\"\n );\n }\n\n const maximumBinWidthNanometers =\n requirePositiveFinite(\n record.maximumBinWidthNanometers,\n \"sensorResponseOperatingRange.spectralInputModel.maximumBinWidthNanometers\"\n );\n const limitation =\n record.limitation === undefined\n ? undefined\n : requireNonEmptyString(\n record.limitation,\n \"sensorResponseOperatingRange.spectralInputModel.limitation\"\n );\n\n if (\n record.scientificStatus ===\n \"approximation\" &&\n limitation === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spectralInputModel.limitation is required for an approximation.\"\n );\n }\n\n return {\n kind: \"per-spectral-bin\",\n maximumBinWidthNanometers,\n scientificStatus:\n record.scientificStatus,\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseOperatingRange.spectralInputModel.evidence\"\n ),\n ...(limitation === undefined\n ? {}\n : { limitation })\n };\n}\n\nfunction parseSpatialLinearityModel(\n value: unknown\n): SensorResponseOperatingSpatialLinearityModel {\n if (value === undefined) {\n return {\n kind: \"not-established\",\n limitation:\n \"Spatial-distribution linear superposition was not declared.\"\n };\n }\n\n const record = requireRecord(\n value,\n \"sensorResponseOperatingRange.spatialLinearityModel\", null\n );\n rejectUnknownVariantFields(record, \"kind\", { \"not-established\": [\"kind\", \"limitation\"], \"linear-superposition-over-geometric-aperture\": [\"kind\", \"scientificStatus\", \"evidence\", \"limitation\"] }, \"sensorResponseOperatingRange.spatialLinearityModel\");\n\n if (\n record.kind === \"not-established\"\n ) {\n return {\n kind: \"not-established\",\n limitation: requireNonEmptyString(\n record.limitation,\n \"sensorResponseOperatingRange.spatialLinearityModel.limitation\"\n )\n };\n }\n\n if (\n record.kind !==\n \"linear-superposition-over-geometric-aperture\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spatialLinearityModel.kind is invalid.\"\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spatialLinearityModel.scientificStatus is invalid.\"\n );\n }\n\n const limitation =\n record.limitation === undefined\n ? undefined\n : requireNonEmptyString(\n record.limitation,\n \"sensorResponseOperatingRange.spatialLinearityModel.limitation\"\n );\n\n if (\n record.scientificStatus ===\n \"approximation\" &&\n limitation === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.spatialLinearityModel.limitation is required for an approximation.\"\n );\n }\n\n return {\n kind:\n \"linear-superposition-over-geometric-aperture\",\n scientificStatus:\n record.scientificStatus,\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseOperatingRange.spatialLinearityModel.evidence\"\n ),\n ...(limitation === undefined\n ? {}\n : { limitation })\n };\n}\n\n/**\n * Validates untrusted input and returns it as a normalized, typed value. Unknown enum values,\n * missing required fields and inconsistent scientific data are rejected.\n *\n * The profile states the input quantity (incident power or irradiance), wavelength coverage,\n * reference conditions and non-linearity criterion of the calibrated operating range.\n * @param value - Untrusted data. TypeScript types alone are not validation.\n * @returns The result. Success does not imply calibration.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function parseSensorResponseOperatingRangeProfile(\n value: unknown\n): SensorResponseOperatingRangeProfile {\n const record =\n requireRecord(\n value,\n \"sensorResponseOperatingRange\", [\"schemaVersion\", \"scientificStatus\", \"referenceConditions\", \"referenceConditionPolicy\", \"uncertainty\", \"profileId\", \"responseApplicationProfileId\", \"spectralResponseProfileId\", \"colorSamplingProfileId\", \"channelId\", \"evidence\", \"inputRange\", \"wavelengthApplicability\", \"linearityCriterion\", \"spatialLinearityModel\", \"spectralInputModel\"]\n );\n\n if (\n record.schemaVersion !== \"0.1.0\"\n ) {\n throw new InvalidConfigurationError(\n 'sensorResponseOperatingRange.schemaVersion must be \"0.1.0\".'\n );\n }\n\n if (\n record.scientificStatus !==\n \"calibrated\" &&\n record.scientificStatus !==\n \"approximation\"\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.scientificStatus is invalid.\"\n );\n }\n\n const referenceConditions =\n record.referenceConditions ===\n undefined\n ? undefined\n : parseReferenceConditions(\n record.referenceConditions,\n \"sensorResponseOperatingRange.referenceConditions\"\n );\n\n const referenceConditionPolicy =\n parseReferenceConditionPolicy(\n record.referenceConditionPolicy,\n \"sensorResponseOperatingRange.referenceConditionPolicy\"\n );\n\n if (\n referenceConditionPolicy.kind ===\n \"exact-match-required\" &&\n referenceConditions === undefined\n ) {\n throw new InvalidConfigurationError(\n \"sensorResponseOperatingRange.referenceConditions is required when exact-match-required is selected.\"\n );\n }\n\n const uncertainty =\n parseUncertainty(\n record.uncertainty,\n \"sensorResponseOperatingRange.uncertainty\"\n );\n\n if (\n record.scientificStatus ===\n \"calibrated\" &&\n uncertainty.kind ===\n \"not-quantified\"\n ) {\n throw new InvalidConfigurationError(\n \"A calibrated sensor response operating range must declare quantified relative uncertainty.\"\n );\n }\n\n return {\n schemaVersion: \"0.1.0\",\n profileId: requireNonEmptyString(\n record.profileId,\n \"sensorResponseOperatingRange.profileId\"\n ),\n responseApplicationProfileId:\n requireNonEmptyString(\n record\n .responseApplicationProfileId,\n \"sensorResponseOperatingRange.responseApplicationProfileId\"\n ),\n spectralResponseProfileId:\n requireNonEmptyString(\n record\n .spectralResponseProfileId,\n \"sensorResponseOperatingRange.spectralResponseProfileId\"\n ),\n colorSamplingProfileId:\n requireNonEmptyString(\n record.colorSamplingProfileId,\n \"sensorResponseOperatingRange.colorSamplingProfileId\"\n ),\n channelId:\n requireNonEmptyString(\n record.channelId,\n \"sensorResponseOperatingRange.channelId\"\n ),\n scientificStatus:\n record.scientificStatus,\n uncertainty,\n evidence: parseEvidenceList(\n record.evidence,\n \"sensorResponseOperatingRange.evidence\"\n ),\n inputRange: parseInputRange(\n record.inputRange,\n \"sensorResponseOperatingRange.inputRange\"\n ),\n wavelengthApplicability:\n parseWavelengthApplicability(\n record.wavelengthApplicability,\n \"sensorResponseOperatingRange.wavelengthApplicability\"\n ),\n linearityCriterion:\n parseLinearityCriterion(\n record.linearityCriterion,\n \"sensorResponseOperatingRange.linearityCriterion\"\n ),\n spatialLinearityModel:\n parseSpatialLinearityModel(\n record.spatialLinearityModel\n ),\n spectralInputModel:\n parseSpectralInputModel(\n record.spectralInputModel\n ),\n ...(referenceConditions ===\n undefined\n ? {}\n : { referenceConditions }),\n referenceConditionPolicy\n };\n}\n\nfunction conditionsMatch(\n reference:\n SensorSpectralReferenceConditions,\n operating:\n SensorSpectralReferenceConditions\n): boolean {\n if (\n reference.temperatureC !==\n undefined &&\n operating.temperatureC !==\n reference.temperatureC\n ) {\n return false;\n }\n if (\n reference\n .incidenceAngleDegreesFromNormal !==\n undefined &&\n operating\n .incidenceAngleDegreesFromNormal !==\n reference\n .incidenceAngleDegreesFromNormal\n ) {\n return false;\n }\n if (\n reference.polarization !==\n undefined &&\n operating.polarization !==\n reference.polarization\n ) {\n return false;\n }\n return true;\n}\n\nfunction requireReductionMetric(\n reduction:\n SensorSpatioSpectralIrradianceReduction,\n range:\n SensorResponseOperatingInputRange\n): number {\n const value =\n range.kind ===\n \"wavelength-integrated-geometric-aperture-radiant-power\"\n ? reduction\n .wavelengthIntegratedGeometricApertureIncidentFluxWatts\n : reduction\n .wavelengthIntegratedSpatialAverageIrradianceWattsPerSquareMeter;\n\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidScientificInputError(\n \"The selected operating-range input metric must be finite and nonnegative.\"\n );\n }\n return value;\n}\n\nfunction spectralNodeInputValue(\n entry:\n SensorSpatioSpectralIrradianceReduction[\"perWavelength\"][number],\n range:\n SensorResponseOperatingInputRange\n): number {\n const value =\n range.kind ===\n \"wavelength-integrated-geometric-aperture-radiant-power\"\n ? entry\n .wavelengthIntegratedGeometricApertureIncidentFluxContributionWatts\n : entry\n .wavelengthIntegratedSpatialAverageContributionWattsPerSquareMeter;\n\n if (\n typeof value !== \"number\" ||\n !Number.isFinite(value) ||\n value < 0\n ) {\n throw new InvalidScientificInputError(\n \"Per-spectral-node operating-range input must be finite and nonnegative.\"\n );\n }\n return value;\n}\n\nfunction validateReductionIdentity(\n reduction:\n SensorSpatioSpectralIrradianceReduction,\n compatibility:\n SensorResponseApplicationCompatibilityAssessment\n): void {\n requireInputObject(reduction, \"reduction input\");\n if (\n reduction.responseProfileId !==\n compatibility\n .spectralResponseProfileId ||\n reduction.colorSamplingProfileId !==\n compatibility\n .colorSamplingProfileId ||\n reduction.channelId !==\n compatibility.channelId\n ) {\n throw new InvalidScientificInputError(\n \"reduction and compatibility assessment identities do not match.\"\n );\n }\n}\n\n/**\n * Checks every declared spectral-bin input against the operating range and the superposition\n * requirement, before any instantaneous response conversion is allowed.\n *\n * Each bin must be in range, and spatial linear superposition must hold. A valid average must not\n * hide a part of the aperture that is too bright.\n * @param input - The input; see `AssessSensorResponseOperatingRangeInput` for its fields, units and coordinates.\n * @returns The assessment. Read its structured blockers before acting on an authorization.\n *\n * @see docs/API_REFERENCE.md for the package export and its full type definitions.\n */\nexport function assessSensorResponseOperatingRange(\n input:\n AssessSensorResponseOperatingRangeInput\n): CalculationResult<SensorResponseOperatingRangeAssessment> {\n requireInputKeys(input, \"assessSensorResponseOperatingRange\", [\"reduction\", \"compatibility\", \"operatingRangeProfile\"]);\n validateReductionIdentity(\n input.reduction,\n input.compatibility\n );\n const profile =\n parseSensorResponseOperatingRangeProfile(\n input.operatingRangeProfile\n );\n const blockers:\n SensorResponseOperatingRangeBlocker[] =\n [];\n\n if (\n !input.compatibility\n .structuralCompatibilityEstablished ||\n input.compatibility\n .compatibilityStatus === \"blocked\"\n ) {\n blockers.push(\n \"structural-compatibility-not-established\"\n );\n }\n\n if (\n profile.responseApplicationProfileId !==\n input.compatibility\n .applicationProfileId\n ) {\n blockers.push(\n \"response-application-profile-id-mismatch\"\n );\n }\n if (\n profile.spectralResponseProfileId !==\n input.reduction\n .responseProfileId\n ) {\n blockers.push(\n \"spectral-response-profile-id-mismatch\"\n );\n }\n if (\n profile.colorSamplingProfileId !==\n input.reduction\n .colorSamplingProfileId\n ) {\n blockers.push(\n \"color-sampling-profile-id-mismatch\"\n );\n }\n if (\n profile.channelId !==\n input.reduction.channelId\n ) {\n blockers.push(\n \"channel-id-mismatch\"\n );\n }\n\n if (\n !input.reduction\n .wavelengthBasisResolved\n ) {\n blockers.push(\n \"wavelength-basis-unresolved\"\n );\n } else if (\n input.reduction.wavelengthBasis !==\n profile.wavelengthApplicability\n .wavelengthBasis\n ) {\n blockers.push(\n \"wavelength-basis-mismatch\"\n );\n }\n\n const wavelengthRange =\n input.reduction\n .wavelengthRangeNanometers;\n if (\n wavelengthRange.minimum <\n profile.wavelengthApplicability\n .minimumNanometers ||\n wavelengthRange.maximum >\n profile.wavelengthApplicability\n .maximumNanometers\n ) {\n blockers.push(\n \"wavelength-range-outside-linearity-applicability\"\n );\n }\n\n const metricValue =\n requireReductionMetric(\n input.reduction,\n profile.inputRange\n );\n\n if (\n metricValue <\n profile.inputRange.minimumInclusive\n ) {\n blockers.push(\n \"input-below-linearity-range\"\n );\n }\n if (\n metricValue >\n profile.inputRange.maximumInclusive\n ) {\n blockers.push(\n \"input-above-linearity-range\"\n );\n }\n\n const spectralInputModel =\n profile.spectralInputModel ?? {\n kind: \"broadband-integrated-only\" as const\n };\n const evaluatedSpectralNodeInputs:\n {\n spectralSampleIndex: number;\n wavelengthNanometers: number;\n wavelengthMeasureNanometers: number;\n kind:\n SensorResponseOperatingInputRange[\"kind\"];\n unit:\n SensorResponseOperatingInputRange[\"unit\"];\n value: number;\n }[] = [];\n\n if (\n spectralInputModel.kind ===\n \"per-spectral-bin\"\n ) {\n for (\n const entry of\n input.reduction.perWavelength\n ) {\n if (\n entry.wavelengthMeasureNanometers >\n spectralInputModel\n .maximumBinWidthNanometers\n ) {\n blockers.push(\n \"spectral-bin-width-outside-linearity-applicability\"\n );\n }\n\n const value =\n spectralNodeInputValue(\n entry,\n profile.inputRange\n );\n evaluatedSpectralNodeInputs.push({\n spectralSampleIndex:\n entry.spectralSampleIndex,\n wavelengthNanometers:\n entry.wavelengthNanometers,\n wavelengthMeasureNanometers:\n entry.wavelengthMeasureNanometers,\n kind:\n profile.inputRange.kind,\n unit:\n profile.inputRange.unit,\n value\n });\n\n if (\n value <\n profile.inputRange\n .minimumInclusive\n ) {\n blockers.push(\n \"spectral-bin-input-below-linearity-range\"\n );\n }\n if (\n value >\n profile.inputRange\n .maximumInclusive\n ) {\n blockers.push(\n \"spectral-bin-input-above-linearity-range\"\n );\n }\n }\n }\n\n if (\n profile.spatialLinearityModel?.kind !==\n \"linear-superposition-over-geometric-aperture\"\n ) {\n blockers.push(\n \"spatial-linearity-superposition-not-established\"\n );\n }\n\n if (\n profile.referenceConditionPolicy.kind ===\n \"exact-match-required\"\n ) {\n const referenceConditions =\n profile.referenceConditions!;\n if (\n input.compatibility\n .operatingConditions ===\n undefined\n ) {\n blockers.push(\n \"operating-conditions-not-declared\"\n );\n } else if (\n !conditionsMatch(\n referenceConditions,\n input.compatibility\n .operatingConditions\n )\n ) {\n blockers.push(\n \"linearity-operating-conditions-mismatch\"\n );\n }\n }\n\n const compatible =\n blockers.length === 0;\n\n const approximate =\n input.compatibility\n .compatibilityStatus ===\n \"compatible-approximation\" ||\n profile.scientificStatus ===\n \"approximation\" ||\n profile.uncertainty.kind ===\n \"not-quantified\" ||\n (\n profile.spatialLinearityModel?.kind ===\n \"linear-superposition-over-geometric-aperture\" &&\n profile.spatialLinearityModel\n .scientificStatus ===\n \"approximation\"\n ) ||\n (\n spectralInputModel.kind ===\n \"per-spectral-bin\" &&\n spectralInputModel\n .scientificStatus ===\n \"approximation\"\n ) ||\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\";\n\n const spectralRateReady =\n compatible &&\n spectralInputModel.kind ===\n \"per-spectral-bin\";\n\n const status =\n compatible\n ? spectralRateReady\n ? approximate\n ? \"rate-conversion-authorized-approximation\"\n : \"rate-conversion-authorized\"\n : approximate\n ? \"broadband-range-compatible-approximation\"\n : \"broadband-range-compatible\"\n : \"blocked\";\n\n const referenceConditionEvidence =\n profile.referenceConditionPolicy.kind ===\n \"assume-compatible\"\n ? profile.referenceConditionPolicy\n .evidence\n : [];\n const spatialLinearityEvidence =\n profile.spatialLinearityModel?.kind ===\n \"linear-superposition-over-geometric-aperture\"\n ? profile.spatialLinearityModel.evidence\n : [];\n\n return calculatedResult(\n {\n operatingRangeProfileId:\n profile.profileId,\n responseApplicationProfileId:\n input.compatibility\n .applicationProfileId,\n spectralResponseProfileId:\n input.reduction\n .responseProfileId,\n colorSamplingProfileId:\n input.reduction\n .colorSamplingProfileId,\n channelId:\n input.reduction.channelId,\n requiredSignalPath:\n input.compatibility\n .requiredSignalPath,\n inputRange:\n profile.inputRange,\n evaluatedInput: {\n kind: profile.inputRange.kind,\n unit: profile.inputRange.unit,\n value: metricValue\n },\n wavelengthApplicability:\n profile.wavelengthApplicability,\n evaluatedWavelengthRangeNanometers:\n {\n ...wavelengthRange\n },\n linearityCriterion:\n profile.linearityCriterion,\n spectralInputModel,\n ...(evaluatedSpectralNodeInputs.length ===\n 0\n ? {}\n : {\n evaluatedSpectralNodeInputs\n }),\n spectralNodeRangeCompatibilityAssessed:\n spectralInputModel.kind ===\n \"per-spectral-bin\",\n spatialLinearityModel:\n profile.spatialLinearityModel ?? {\n kind: \"not-established\",\n limitation:\n \"Spatial-distribution linear superposition was not declared.\"\n },\n referenceConditionPolicy:\n profile.referenceConditionPolicy,\n ...(profile.referenceConditions ===\n undefined\n ? {}\n : {\n referenceConditions:\n profile.referenceConditions\n }),\n ...(input.compatibility\n .operatingConditions ===\n undefined\n ? {}\n : {\n operatingConditions:\n input.compatibility\n .operatingConditions\n }),\n operatingRangeCompatibilityAssessed:\n true,\n instantaneousResponseRangeCompatible:\n compatible,\n status,\n blockers,\n responseRateConversionAuthorized:\n spectralRateReady,\n responseApplicationPerformed:\n false,\n temporalIntegrationAuthorized:\n false,\n exposureDomainLinearityAssessed:\n false,\n accumulatedChargeLinearityAssessed:\n false,\n saturationAssessed: false,\n photonConversionPerformed:\n false,\n electronConversionPerformed:\n false,\n currentConversionPerformed:\n false,\n componentEvidence: {\n operatingRange:\n profile.evidence,\n referenceConditionAssumption:\n referenceConditionEvidence,\n spatialLinearity:\n spatialLinearityEvidence,\n structuralCompatibility:\n input.compatibility\n .componentEvidence\n }\n },\n \"sensor-response-operating-range-assessment\",\n \"1.0.0\",\n [\n \"This gate assesses instantaneous response-law applicability only; it does not apply response or integrate exposure.\",\n \"The valid optical-input range is evidence-backed and must be expressed in the same wavelength-integrated power or irradiance domain produced by the pre-response reducer.\",\n \"Broadband-integrated range compatibility alone cannot authorize wavelength-dependent response conversion; per-spectral-bin applicability must be explicitly established and every bin must remain inside the calibrated input range.\",\n \"Per-spectral-bin applicability also declares a maximum supported bin width so a broad quadrature bin is not silently treated as an equivalent monochromatic calibration point.\",\n \"Linearity can depend on optical input level and wavelength; the reduction wavelength range must remain inside the declared applicability range.\",\n \"Post-spatial rate conversion additionally requires explicit linear superposition over the geometric aperture; otherwise sub-aperture illumination patterns could hide local nonlinear behavior.\",\n \"The maximumAbsoluteRelativeDeviation criterion documents the tolerated response nonlinearity for the declared valid range; this function does not derive that criterion from synthetic data.\",\n \"Reference conditions for the linearity calibration are separate from spectral-response reference conditions and must match when exact matching is required.\",\n \"Exposure-domain linearity, accumulated-charge saturation/full-well behavior, and downstream electronics linearity are intentionally not assessed here.\",\n \"A successful result authorizes only a future instantaneous rate conversion path: photon-rate→electrons for EQE/filter×EQE or radiant-power→current for A/W responsivity.\",\n \"Temporal integration, saturation, noise, ADC/RAW conversion and reconstruction remain downstream.\"\n ]\n );\n}\n"]}
|