@photivra/engine 0.6.0 → 1.0.1
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/AGENTS.md +674 -0
- package/CHANGELOG.md +191 -0
- package/CITATION.cff +1 -1
- package/CONTRIBUTING.md +76 -0
- package/DCO +33 -0
- package/NODE_SUPPORT.md +37 -0
- package/NOTICE +2 -0
- package/README.md +139 -72
- package/SECURITY.md +55 -0
- package/THIRD_PARTY.md +63 -0
- package/dist/camera/equivalent-focal-length.d.ts +9 -0
- package/dist/camera/equivalent-focal-length.d.ts.map +1 -1
- package/dist/camera/equivalent-focal-length.js +9 -0
- package/dist/camera/equivalent-focal-length.js.map +1 -1
- package/dist/camera/field-of-view.d.ts +13 -0
- package/dist/camera/field-of-view.d.ts.map +1 -1
- package/dist/camera/field-of-view.js +13 -0
- package/dist/camera/field-of-view.js.map +1 -1
- package/dist/camera/projected-object-size.d.ts +8 -0
- package/dist/camera/projected-object-size.d.ts.map +1 -1
- package/dist/camera/projected-object-size.js +8 -0
- package/dist/camera/projected-object-size.js.map +1 -1
- package/dist/capture/capture-export-metadata.d.ts +60 -0
- package/dist/capture/capture-export-metadata.d.ts.map +1 -0
- package/dist/capture/capture-export-metadata.js +62 -0
- package/dist/capture/capture-export-metadata.js.map +1 -0
- package/dist/capture/environment-raw-producer.d.ts +55 -0
- package/dist/capture/environment-raw-producer.d.ts.map +1 -0
- package/dist/capture/environment-raw-producer.js +88 -0
- package/dist/capture/environment-raw-producer.js.map +1 -0
- package/dist/capture/export-jpeg.d.ts +12 -0
- package/dist/capture/export-jpeg.d.ts.map +1 -0
- package/dist/capture/export-jpeg.js +126 -0
- package/dist/capture/export-jpeg.js.map +1 -0
- package/dist/capture/export-tiff.d.ts +45 -0
- package/dist/capture/export-tiff.d.ts.map +1 -0
- package/dist/capture/export-tiff.js +129 -0
- package/dist/capture/export-tiff.js.map +1 -0
- package/dist/capture/focus-control.d.ts +210 -0
- package/dist/capture/focus-control.d.ts.map +1 -0
- package/dist/capture/focus-control.js +664 -0
- package/dist/capture/focus-control.js.map +1 -0
- package/dist/capture/linear-encoding.d.ts +59 -0
- package/dist/capture/linear-encoding.d.ts.map +1 -0
- package/dist/capture/linear-encoding.js +98 -0
- package/dist/capture/linear-encoding.js.map +1 -0
- package/dist/capture/photographic-export.d.ts +135 -0
- package/dist/capture/photographic-export.d.ts.map +1 -0
- package/dist/capture/photographic-export.js +273 -0
- package/dist/capture/photographic-export.js.map +1 -0
- package/dist/capture/raw-frame-limits.d.ts +12 -0
- package/dist/capture/raw-frame-limits.d.ts.map +1 -0
- package/dist/capture/raw-frame-limits.js +13 -0
- package/dist/capture/raw-frame-limits.js.map +1 -0
- package/dist/capture/raw-frame-reconstruction.d.ts +48 -0
- package/dist/capture/raw-frame-reconstruction.d.ts.map +1 -0
- package/dist/capture/raw-frame-reconstruction.js +146 -0
- package/dist/capture/raw-frame-reconstruction.js.map +1 -0
- package/dist/capture/release-sequence.d.ts +120 -0
- package/dist/capture/release-sequence.d.ts.map +1 -0
- package/dist/capture/release-sequence.js +446 -0
- package/dist/capture/release-sequence.js.map +1 -0
- package/dist/capture/sensor-raw-frame.d.ts +34 -0
- package/dist/capture/sensor-raw-frame.d.ts.map +1 -0
- package/dist/capture/sensor-raw-frame.js +106 -0
- package/dist/capture/sensor-raw-frame.js.map +1 -0
- package/dist/capture/sensor-raw-producer.d.ts +51 -0
- package/dist/capture/sensor-raw-producer.d.ts.map +1 -0
- package/dist/capture/sensor-raw-producer.js +235 -0
- package/dist/capture/sensor-raw-producer.js.map +1 -0
- package/dist/capture/simulated-capture.d.ts +125 -0
- package/dist/capture/simulated-capture.d.ts.map +1 -0
- package/dist/capture/simulated-capture.js +248 -0
- package/dist/capture/simulated-capture.js.map +1 -0
- package/dist/color/capture-color.d.ts +73 -0
- package/dist/color/capture-color.d.ts.map +1 -0
- package/dist/color/capture-color.js +145 -0
- package/dist/color/capture-color.js.map +1 -0
- package/dist/color/sensor-color-development.d.ts +23 -0
- package/dist/color/sensor-color-development.d.ts.map +1 -0
- package/dist/color/sensor-color-development.js +56 -0
- package/dist/color/sensor-color-development.js.map +1 -0
- package/dist/color/white-balance.d.ts +175 -0
- package/dist/color/white-balance.d.ts.map +1 -0
- package/dist/color/white-balance.js +606 -0
- package/dist/color/white-balance.js.map +1 -0
- package/dist/composition/image-formation-plan.d.ts +481 -0
- package/dist/composition/image-formation-plan.d.ts.map +1 -0
- package/dist/composition/image-formation-plan.js +2499 -0
- package/dist/composition/image-formation-plan.js.map +1 -0
- package/dist/composition/plan-consumer.d.ts +53 -0
- package/dist/composition/plan-consumer.d.ts.map +1 -0
- package/dist/composition/plan-consumer.js +119 -0
- package/dist/composition/plan-consumer.js.map +1 -0
- package/dist/core/calculation-result.d.ts.map +1 -1
- package/dist/core/calculation-result.js +6 -0
- package/dist/core/calculation-result.js.map +1 -1
- package/dist/core/canonical-json.d.ts +18 -0
- package/dist/core/canonical-json.d.ts.map +1 -0
- package/dist/core/canonical-json.js +44 -0
- package/dist/core/canonical-json.js.map +1 -0
- package/dist/core/configuration-error.d.ts +6 -0
- package/dist/core/configuration-error.d.ts.map +1 -1
- package/dist/core/configuration-error.js +6 -0
- package/dist/core/configuration-error.js.map +1 -1
- package/dist/core/evidence-provenance.d.ts +6 -0
- package/dist/core/evidence-provenance.d.ts.map +1 -1
- package/dist/core/evidence-provenance.js +7 -0
- package/dist/core/evidence-provenance.js.map +1 -1
- package/dist/core/image-formation.d.ts +9 -3
- package/dist/core/image-formation.d.ts.map +1 -1
- package/dist/core/image-formation.js +29 -5
- package/dist/core/image-formation.js.map +1 -1
- package/dist/core/owned-data.d.ts +25 -0
- package/dist/core/owned-data.d.ts.map +1 -0
- package/dist/core/owned-data.js +34 -0
- package/dist/core/owned-data.js.map +1 -0
- package/dist/core/record-validation.d.ts +17 -0
- package/dist/core/record-validation.d.ts.map +1 -0
- package/dist/core/record-validation.js +44 -0
- package/dist/core/record-validation.js.map +1 -0
- package/dist/core/scientific-assurance.d.ts +101 -0
- package/dist/core/scientific-assurance.d.ts.map +1 -0
- package/dist/core/scientific-assurance.js +301 -0
- package/dist/core/scientific-assurance.js.map +1 -0
- package/dist/core/spectral-composition.d.ts +106 -0
- package/dist/core/spectral-composition.d.ts.map +1 -0
- package/dist/core/spectral-composition.js +334 -0
- package/dist/core/spectral-composition.js.map +1 -0
- package/dist/core/spectral.d.ts +34 -0
- package/dist/core/spectral.d.ts.map +1 -0
- package/dist/core/spectral.js +57 -0
- package/dist/core/spectral.js.map +1 -0
- package/dist/core/validation.d.ts +6 -0
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +6 -0
- package/dist/core/validation.js.map +1 -1
- package/dist/core/version.d.ts +9 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +10 -0
- package/dist/core/version.js.map +1 -0
- package/dist/equipment/exposure-capabilities.d.ts +125 -0
- package/dist/equipment/exposure-capabilities.d.ts.map +1 -0
- package/dist/equipment/exposure-capabilities.js +391 -0
- package/dist/equipment/exposure-capabilities.js.map +1 -0
- package/dist/equipment/generic-tier-assets.d.ts +82 -0
- package/dist/equipment/generic-tier-assets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-assets.js +119 -0
- package/dist/equipment/generic-tier-assets.js.map +1 -0
- package/dist/equipment/generic-tier-presets.d.ts +57 -0
- package/dist/equipment/generic-tier-presets.d.ts.map +1 -0
- package/dist/equipment/generic-tier-presets.js +122 -0
- package/dist/equipment/generic-tier-presets.js.map +1 -0
- package/dist/equipment/iso-capabilities.d.ts +143 -0
- package/dist/equipment/iso-capabilities.d.ts.map +1 -0
- package/dist/equipment/iso-capabilities.js +578 -0
- package/dist/equipment/iso-capabilities.js.map +1 -0
- package/dist/equipment/metering-capabilities.d.ts +58 -0
- package/dist/equipment/metering-capabilities.d.ts.map +1 -0
- package/dist/equipment/metering-capabilities.js +151 -0
- package/dist/equipment/metering-capabilities.js.map +1 -0
- package/dist/equipment/release-capabilities.d.ts +33 -0
- package/dist/equipment/release-capabilities.d.ts.map +1 -0
- package/dist/equipment/release-capabilities.js +176 -0
- package/dist/equipment/release-capabilities.js.map +1 -0
- package/dist/exposure/exposure-duration-control.d.ts +72 -0
- package/dist/exposure/exposure-duration-control.d.ts.map +1 -0
- package/dist/exposure/exposure-duration-control.js +161 -0
- package/dist/exposure/exposure-duration-control.js.map +1 -0
- package/dist/exposure/exposure-mode-resolver.d.ts +637 -0
- package/dist/exposure/exposure-mode-resolver.d.ts.map +1 -0
- package/dist/exposure/exposure-mode-resolver.js +1905 -0
- package/dist/exposure/exposure-mode-resolver.js.map +1 -0
- package/dist/exposure/exposure.d.ts +8 -0
- package/dist/exposure/exposure.d.ts.map +1 -1
- package/dist/exposure/exposure.js +8 -0
- package/dist/exposure/exposure.js.map +1 -1
- package/dist/exposure/flash.d.ts +179 -0
- package/dist/exposure/flash.d.ts.map +1 -0
- package/dist/exposure/flash.js +644 -0
- package/dist/exposure/flash.js.map +1 -0
- package/dist/exposure/metering-scene-radiance.d.ts +72 -0
- package/dist/exposure/metering-scene-radiance.d.ts.map +1 -0
- package/dist/exposure/metering-scene-radiance.js +222 -0
- package/dist/exposure/metering-scene-radiance.js.map +1 -0
- package/dist/exposure/metering-target.d.ts +67 -0
- package/dist/exposure/metering-target.d.ts.map +1 -0
- package/dist/exposure/metering-target.js +265 -0
- package/dist/exposure/metering-target.js.map +1 -0
- package/dist/exposure/metering-temporal.d.ts +76 -0
- package/dist/exposure/metering-temporal.d.ts.map +1 -0
- package/dist/exposure/metering-temporal.js +210 -0
- package/dist/exposure/metering-temporal.js.map +1 -0
- package/dist/exposure/metering.d.ts +124 -0
- package/dist/exposure/metering.d.ts.map +1 -0
- package/dist/exposure/metering.js +422 -0
- package/dist/exposure/metering.js.map +1 -0
- package/dist/exposure/program-line.d.ts +29 -0
- package/dist/exposure/program-line.d.ts.map +1 -0
- package/dist/exposure/program-line.js +126 -0
- package/dist/exposure/program-line.js.map +1 -0
- package/dist/index.d.ts +87 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +85 -6
- package/dist/index.js.map +1 -1
- package/dist/motion/camera-rotation.d.ts +16 -0
- package/dist/motion/camera-rotation.d.ts.map +1 -1
- package/dist/motion/camera-rotation.js +16 -0
- package/dist/motion/camera-rotation.js.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.d.ts +13 -0
- package/dist/motion/capture-rotation-inverse-mapping.d.ts.map +1 -1
- package/dist/motion/capture-rotation-inverse-mapping.js +13 -0
- package/dist/motion/capture-rotation-inverse-mapping.js.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts +15 -0
- package/dist/motion/capture-rotation-temporal-quadrature.d.ts.map +1 -1
- package/dist/motion/capture-rotation-temporal-quadrature.js +15 -0
- package/dist/motion/capture-rotation-temporal-quadrature.js.map +1 -1
- package/dist/motion/capture-rotation-trajectory.d.ts +15 -0
- package/dist/motion/capture-rotation-trajectory.d.ts.map +1 -1
- package/dist/motion/capture-rotation-trajectory.js +15 -0
- package/dist/motion/capture-rotation-trajectory.js.map +1 -1
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts +119 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.d.ts.map +1 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js +263 -0
- package/dist/motion/capture-translation-parallax-temporal-quadrature.js.map +1 -0
- package/dist/motion/extended-object-projection.d.ts +175 -0
- package/dist/motion/extended-object-projection.d.ts.map +1 -0
- package/dist/motion/extended-object-projection.js +402 -0
- package/dist/motion/extended-object-projection.js.map +1 -0
- package/dist/motion/projected-motion.d.ts +11 -0
- package/dist/motion/projected-motion.d.ts.map +1 -1
- package/dist/motion/projected-motion.js +11 -0
- package/dist/motion/projected-motion.js.map +1 -1
- package/dist/optics/aperture.d.ts +9 -0
- package/dist/optics/aperture.d.ts.map +1 -1
- package/dist/optics/aperture.js +9 -0
- package/dist/optics/aperture.js.map +1 -1
- package/dist/optics/circle-of-confusion.d.ts +8 -0
- package/dist/optics/circle-of-confusion.d.ts.map +1 -1
- package/dist/optics/circle-of-confusion.js +8 -0
- package/dist/optics/circle-of-confusion.js.map +1 -1
- package/dist/optics/complex-pupil-psf.d.ts +128 -0
- package/dist/optics/complex-pupil-psf.d.ts.map +1 -0
- package/dist/optics/complex-pupil-psf.js +462 -0
- package/dist/optics/complex-pupil-psf.js.map +1 -0
- package/dist/optics/depth-of-field.d.ts +18 -0
- package/dist/optics/depth-of-field.d.ts.map +1 -1
- package/dist/optics/depth-of-field.js +29 -4
- package/dist/optics/depth-of-field.js.map +1 -1
- package/dist/optics/diffraction.d.ts +8 -0
- package/dist/optics/diffraction.d.ts.map +1 -1
- package/dist/optics/diffraction.js +8 -0
- package/dist/optics/diffraction.js.map +1 -1
- package/dist/optics/focus-breathing.d.ts +13 -0
- package/dist/optics/focus-breathing.d.ts.map +1 -1
- package/dist/optics/focus-breathing.js +13 -0
- package/dist/optics/focus-breathing.js.map +1 -1
- package/dist/optics/focus-state.d.ts +47 -0
- package/dist/optics/focus-state.d.ts.map +1 -0
- package/dist/optics/focus-state.js +78 -0
- package/dist/optics/focus-state.js.map +1 -0
- package/dist/optics/front-of-lens-filter.d.ts +114 -0
- package/dist/optics/front-of-lens-filter.d.ts.map +1 -0
- package/dist/optics/front-of-lens-filter.js +468 -0
- package/dist/optics/front-of-lens-filter.js.map +1 -0
- package/dist/optics/illumination-vignetting.d.ts +9 -0
- package/dist/optics/illumination-vignetting.d.ts.map +1 -1
- package/dist/optics/illumination-vignetting.js +9 -0
- package/dist/optics/illumination-vignetting.js.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.d.ts +11 -0
- package/dist/optics/lateral-chromatic-aberration.d.ts.map +1 -1
- package/dist/optics/lateral-chromatic-aberration.js +11 -0
- package/dist/optics/lateral-chromatic-aberration.js.map +1 -1
- package/dist/optics/lens-psf-profile.d.ts +217 -0
- package/dist/optics/lens-psf-profile.d.ts.map +1 -0
- package/dist/optics/lens-psf-profile.js +823 -0
- package/dist/optics/lens-psf-profile.js.map +1 -0
- package/dist/optics/polygon-diffraction.d.ts +67 -0
- package/dist/optics/polygon-diffraction.d.ts.map +1 -0
- package/dist/optics/polygon-diffraction.js +145 -0
- package/dist/optics/polygon-diffraction.js.map +1 -0
- package/dist/optics/profile-contract.d.ts +42 -0
- package/dist/optics/profile-contract.d.ts.map +1 -0
- package/dist/optics/profile-contract.js +92 -0
- package/dist/optics/profile-contract.js.map +1 -0
- package/dist/optics/psf-foundation.d.ts +16 -3
- package/dist/optics/psf-foundation.d.ts.map +1 -1
- package/dist/optics/psf-foundation.js +28 -15
- package/dist/optics/psf-foundation.js.map +1 -1
- package/dist/optics/radial-distortion.d.ts +18 -0
- package/dist/optics/radial-distortion.d.ts.map +1 -1
- package/dist/optics/radial-distortion.js +18 -0
- package/dist/optics/radial-distortion.js.map +1 -1
- package/dist/optics/scene-to-sensor-irradiance.d.ts +213 -0
- package/dist/optics/scene-to-sensor-irradiance.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-irradiance.js +662 -0
- package/dist/optics/scene-to-sensor-irradiance.js.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts +63 -0
- package/dist/optics/scene-to-sensor-quadrature.d.ts.map +1 -0
- package/dist/optics/scene-to-sensor-quadrature.js +82 -0
- package/dist/optics/scene-to-sensor-quadrature.js.map +1 -0
- package/dist/optics/sensor-environment-query.d.ts +60 -0
- package/dist/optics/sensor-environment-query.d.ts.map +1 -0
- package/dist/optics/sensor-environment-query.js +50 -0
- package/dist/optics/sensor-environment-query.js.map +1 -0
- package/dist/optics/sensor-psf-quadrature.d.ts +70 -0
- package/dist/optics/sensor-psf-quadrature.d.ts.map +1 -0
- package/dist/optics/sensor-psf-quadrature.js +101 -0
- package/dist/optics/sensor-psf-quadrature.js.map +1 -0
- package/dist/optics/sensor-psf-support.d.ts +20 -0
- package/dist/optics/sensor-psf-support.d.ts.map +1 -0
- package/dist/optics/sensor-psf-support.js +13 -0
- package/dist/optics/sensor-psf-support.js.map +1 -0
- package/dist/optics/stray-light.d.ts +91 -0
- package/dist/optics/stray-light.d.ts.map +1 -0
- package/dist/optics/stray-light.js +110 -0
- package/dist/optics/stray-light.js.map +1 -0
- package/dist/optics/thin-lens.d.ts +8 -0
- package/dist/optics/thin-lens.d.ts.map +1 -1
- package/dist/optics/thin-lens.js +8 -0
- package/dist/optics/thin-lens.js.map +1 -1
- package/dist/output/capture-corrected-sdr.d.ts +49 -0
- package/dist/output/capture-corrected-sdr.d.ts.map +1 -0
- package/dist/output/capture-corrected-sdr.js +149 -0
- package/dist/output/capture-corrected-sdr.js.map +1 -0
- package/dist/output/capture-geometry.d.ts.map +1 -1
- package/dist/output/capture-geometry.js +8 -0
- package/dist/output/capture-geometry.js.map +1 -1
- package/dist/output/capture-sdr.d.ts +49 -0
- package/dist/output/capture-sdr.d.ts.map +1 -0
- package/dist/output/capture-sdr.js +90 -0
- package/dist/output/capture-sdr.js.map +1 -0
- package/dist/output/crop.d.ts +6 -0
- package/dist/output/crop.d.ts.map +1 -1
- package/dist/output/crop.js +6 -0
- package/dist/output/crop.js.map +1 -1
- package/dist/output/geometric-transforms.d.ts +137 -0
- package/dist/output/geometric-transforms.d.ts.map +1 -0
- package/dist/output/geometric-transforms.js +225 -0
- package/dist/output/geometric-transforms.js.map +1 -0
- package/dist/output/lens-corrections.d.ts +121 -0
- package/dist/output/lens-corrections.d.ts.map +1 -0
- package/dist/output/lens-corrections.js +210 -0
- package/dist/output/lens-corrections.js.map +1 -0
- package/dist/output/sdr-rendering.d.ts +81 -0
- package/dist/output/sdr-rendering.d.ts.map +1 -0
- package/dist/output/sdr-rendering.js +106 -0
- package/dist/output/sdr-rendering.js.map +1 -0
- package/dist/output/subject-framing-crop.d.ts +8 -0
- package/dist/output/subject-framing-crop.d.ts.map +1 -1
- package/dist/output/subject-framing-crop.js +8 -0
- package/dist/output/subject-framing-crop.js.map +1 -1
- package/dist/schema/camera.d.ts +6 -0
- package/dist/schema/camera.d.ts.map +1 -1
- package/dist/schema/illumination-spectral.d.ts +51 -0
- package/dist/schema/illumination-spectral.d.ts.map +1 -0
- package/dist/schema/illumination-spectral.js +132 -0
- package/dist/schema/illumination-spectral.js.map +1 -0
- package/dist/schema/illumination-temporal.d.ts +156 -0
- package/dist/schema/illumination-temporal.d.ts.map +1 -0
- package/dist/schema/illumination-temporal.js +554 -0
- package/dist/schema/illumination-temporal.js.map +1 -0
- package/dist/schema/illumination.d.ts +138 -0
- package/dist/schema/illumination.d.ts.map +1 -0
- package/dist/schema/illumination.js +483 -0
- package/dist/schema/illumination.js.map +1 -0
- package/dist/schema/scene-radiance-temporal.d.ts +107 -0
- package/dist/schema/scene-radiance-temporal.d.ts.map +1 -0
- package/dist/schema/scene-radiance-temporal.js +259 -0
- package/dist/schema/scene-radiance-temporal.js.map +1 -0
- package/dist/schema/scene-radiance.d.ts +185 -0
- package/dist/schema/scene-radiance.d.ts.map +1 -0
- package/dist/schema/scene-radiance.js +535 -0
- package/dist/schema/scene-radiance.js.map +1 -0
- package/dist/schema/scene.d.ts +7 -0
- package/dist/schema/scene.d.ts.map +1 -1
- package/dist/schema/validation.d.ts.map +1 -1
- package/dist/schema/validation.js +7 -0
- package/dist/schema/validation.js.map +1 -1
- package/dist/sensor/accumulated-charge.d.ts +199 -0
- package/dist/sensor/accumulated-charge.d.ts.map +1 -0
- package/dist/sensor/accumulated-charge.js +450 -0
- package/dist/sensor/accumulated-charge.js.map +1 -0
- package/dist/sensor/architecture.d.ts +48 -13
- package/dist/sensor/architecture.d.ts.map +1 -1
- package/dist/sensor/architecture.js +58 -16
- package/dist/sensor/architecture.js.map +1 -1
- package/dist/sensor/camera-saturation-capacity.d.ts +138 -0
- package/dist/sensor/camera-saturation-capacity.d.ts.map +1 -0
- package/dist/sensor/camera-saturation-capacity.js +356 -0
- package/dist/sensor/camera-saturation-capacity.js.map +1 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts +1 -0
- package/dist/sensor/capture-color-sampling-binding.d.ts.map +1 -1
- package/dist/sensor/capture-color-sampling-binding.js +14 -0
- package/dist/sensor/capture-color-sampling-binding.js.map +1 -1
- package/dist/sensor/capture-mode-timing.d.ts +63 -0
- package/dist/sensor/capture-mode-timing.d.ts.map +1 -0
- package/dist/sensor/capture-mode-timing.js +270 -0
- package/dist/sensor/capture-mode-timing.js.map +1 -0
- package/dist/sensor/capture-mode.d.ts.map +1 -1
- package/dist/sensor/capture-mode.js +13 -0
- package/dist/sensor/capture-mode.js.map +1 -1
- package/dist/sensor/color-sampling.d.ts.map +1 -1
- package/dist/sensor/color-sampling.js +19 -0
- package/dist/sensor/color-sampling.js.map +1 -1
- package/dist/sensor/constant-rate-temporal-integration.d.ts +126 -0
- package/dist/sensor/constant-rate-temporal-integration.d.ts.map +1 -0
- package/dist/sensor/constant-rate-temporal-integration.js +382 -0
- package/dist/sensor/constant-rate-temporal-integration.js.map +1 -0
- package/dist/sensor/dark-current.d.ts +169 -0
- package/dist/sensor/dark-current.d.ts.map +1 -0
- package/dist/sensor/dark-current.js +427 -0
- package/dist/sensor/dark-current.js.map +1 -0
- package/dist/sensor/environment-photo-signal.d.ts +123 -0
- package/dist/sensor/environment-photo-signal.d.ts.map +1 -0
- package/dist/sensor/environment-photo-signal.js +186 -0
- package/dist/sensor/environment-photo-signal.js.map +1 -0
- package/dist/sensor/eqe-electron-rate.d.ts +107 -0
- package/dist/sensor/eqe-electron-rate.d.ts.map +1 -0
- package/dist/sensor/eqe-electron-rate.js +561 -0
- package/dist/sensor/eqe-electron-rate.js.map +1 -0
- package/dist/sensor/eqe-local-exposure.d.ts +65 -0
- package/dist/sensor/eqe-local-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-local-exposure.js +84 -0
- package/dist/sensor/eqe-local-exposure.js.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts +55 -0
- package/dist/sensor/eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/eqe-temporal-exposure.js +62 -0
- package/dist/sensor/eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/exposure-window.d.ts +14 -0
- package/dist/sensor/exposure-window.d.ts.map +1 -1
- package/dist/sensor/exposure-window.js +14 -0
- package/dist/sensor/exposure-window.js.map +1 -1
- package/dist/sensor/iso-signal-chain.d.ts +148 -0
- package/dist/sensor/iso-signal-chain.d.ts.map +1 -0
- package/dist/sensor/iso-signal-chain.js +411 -0
- package/dist/sensor/iso-signal-chain.js.map +1 -0
- package/dist/sensor/local-exposure-binding.d.ts +87 -0
- package/dist/sensor/local-exposure-binding.d.ts.map +1 -0
- package/dist/sensor/local-exposure-binding.js +214 -0
- package/dist/sensor/local-exposure-binding.js.map +1 -0
- package/dist/sensor/optical-stack.d.ts.map +1 -1
- package/dist/sensor/optical-stack.js +17 -0
- package/dist/sensor/optical-stack.js.map +1 -1
- package/dist/sensor/photon-energy.d.ts +97 -0
- package/dist/sensor/photon-energy.d.ts.map +1 -0
- package/dist/sensor/photon-energy.js +390 -0
- package/dist/sensor/photon-energy.js.map +1 -0
- package/dist/sensor/physical-charge-capacity.d.ts +130 -0
- package/dist/sensor/physical-charge-capacity.d.ts.map +1 -0
- package/dist/sensor/physical-charge-capacity.js +345 -0
- package/dist/sensor/physical-charge-capacity.js.map +1 -0
- package/dist/sensor/pixel-pitch.d.ts +6 -0
- package/dist/sensor/pixel-pitch.d.ts.map +1 -1
- package/dist/sensor/pixel-pitch.js +6 -0
- package/dist/sensor/pixel-pitch.js.map +1 -1
- package/dist/sensor/radiometry-readiness.d.ts +10 -0
- package/dist/sensor/radiometry-readiness.d.ts.map +1 -1
- package/dist/sensor/radiometry-readiness.js +10 -0
- package/dist/sensor/radiometry-readiness.js.map +1 -1
- package/dist/sensor/raw-readout.d.ts +314 -0
- package/dist/sensor/raw-readout.d.ts.map +1 -0
- package/dist/sensor/raw-readout.js +914 -0
- package/dist/sensor/raw-readout.js.map +1 -0
- package/dist/sensor/raw-reconstruction.d.ts +170 -0
- package/dist/sensor/raw-reconstruction.d.ts.map +1 -0
- package/dist/sensor/raw-reconstruction.js +424 -0
- package/dist/sensor/raw-reconstruction.js.map +1 -0
- package/dist/sensor/readout-exposure-linkage.d.ts +12 -0
- package/dist/sensor/readout-exposure-linkage.d.ts.map +1 -1
- package/dist/sensor/readout-exposure-linkage.js +12 -0
- package/dist/sensor/readout-exposure-linkage.js.map +1 -1
- package/dist/sensor/readout-timing.d.ts +13 -0
- package/dist/sensor/readout-timing.d.ts.map +1 -1
- package/dist/sensor/readout-timing.js +13 -0
- package/dist/sensor/readout-timing.js.map +1 -1
- package/dist/sensor/response-application-compatibility.d.ts +136 -0
- package/dist/sensor/response-application-compatibility.d.ts.map +1 -0
- package/dist/sensor/response-application-compatibility.js +408 -0
- package/dist/sensor/response-application-compatibility.js.map +1 -0
- package/dist/sensor/response-operating-range.d.ts +173 -0
- package/dist/sensor/response-operating-range.d.ts.map +1 -0
- package/dist/sensor/response-operating-range.js +672 -0
- package/dist/sensor/response-operating-range.js.map +1 -0
- package/dist/sensor/responsivity-photocurrent.d.ts +158 -0
- package/dist/sensor/responsivity-photocurrent.d.ts.map +1 -0
- package/dist/sensor/responsivity-photocurrent.js +644 -0
- package/dist/sensor/responsivity-photocurrent.js.map +1 -0
- package/dist/sensor/sampling-aperture.d.ts.map +1 -1
- package/dist/sensor/sampling-aperture.js +14 -0
- package/dist/sensor/sampling-aperture.js.map +1 -1
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts +45 -0
- package/dist/sensor/scene-eqe-temporal-exposure.d.ts.map +1 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js +64 -0
- package/dist/sensor/scene-eqe-temporal-exposure.js.map +1 -0
- package/dist/sensor/sensor-geometry.d.ts +12 -0
- package/dist/sensor/sensor-geometry.d.ts.map +1 -1
- package/dist/sensor/sensor-geometry.js +12 -0
- package/dist/sensor/sensor-geometry.js.map +1 -1
- package/dist/sensor/signal-noise.d.ts +10 -0
- package/dist/sensor/signal-noise.d.ts.map +1 -1
- package/dist/sensor/signal-noise.js +10 -0
- package/dist/sensor/signal-noise.js.map +1 -1
- package/dist/sensor/spatial-sample-reduction.d.ts +44 -1
- package/dist/sensor/spatial-sample-reduction.d.ts.map +1 -1
- package/dist/sensor/spatial-sample-reduction.js +51 -5
- package/dist/sensor/spatial-sample-reduction.js.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.d.ts +24 -0
- package/dist/sensor/spatial-sampling-quadrature.d.ts.map +1 -1
- package/dist/sensor/spatial-sampling-quadrature.js +27 -0
- package/dist/sensor/spatial-sampling-quadrature.js.map +1 -1
- package/dist/sensor/spatio-spectral-reduction.d.ts +187 -0
- package/dist/sensor/spatio-spectral-reduction.d.ts.map +1 -0
- package/dist/sensor/spatio-spectral-reduction.js +373 -0
- package/dist/sensor/spatio-spectral-reduction.js.map +1 -0
- package/dist/sensor/spectral-coverage.d.ts +24 -0
- package/dist/sensor/spectral-coverage.d.ts.map +1 -0
- package/dist/sensor/spectral-coverage.js +86 -0
- package/dist/sensor/spectral-coverage.js.map +1 -0
- package/dist/sensor/spectral-quadrature.d.ts +169 -0
- package/dist/sensor/spectral-quadrature.d.ts.map +1 -0
- package/dist/sensor/spectral-quadrature.js +542 -0
- package/dist/sensor/spectral-quadrature.js.map +1 -0
- package/dist/sensor/spectral-response.d.ts +192 -0
- package/dist/sensor/spectral-response.d.ts.map +1 -0
- package/dist/sensor/spectral-response.js +664 -0
- package/dist/sensor/spectral-response.js.map +1 -0
- package/dist/sensor/temporal-eqe-sum.d.ts +15 -0
- package/dist/sensor/temporal-eqe-sum.d.ts.map +1 -0
- package/dist/sensor/temporal-eqe-sum.js +30 -0
- package/dist/sensor/temporal-eqe-sum.js.map +1 -0
- package/dist/sensor/temporal-photo-signal.d.ts +38 -0
- package/dist/sensor/temporal-photo-signal.d.ts.map +1 -0
- package/dist/sensor/temporal-photo-signal.js +110 -0
- package/dist/sensor/temporal-photo-signal.js.map +1 -0
- package/dist/sensor/temporal-sample-binding.d.ts +6 -0
- package/dist/sensor/temporal-sample-binding.d.ts.map +1 -0
- package/dist/sensor/temporal-sample-binding.js +32 -0
- package/dist/sensor/temporal-sample-binding.js.map +1 -0
- package/dist/simulation/poc-simulation.d.ts.map +1 -1
- package/dist/simulation/poc-simulation.js +34 -11
- package/dist/simulation/poc-simulation.js.map +1 -1
- package/dist/stabilization/camera-shake.d.ts +11 -0
- package/dist/stabilization/camera-shake.d.ts.map +1 -1
- package/dist/stabilization/camera-shake.js +11 -0
- package/dist/stabilization/camera-shake.js.map +1 -1
- package/dist/stabilization/system.d.ts +218 -0
- package/dist/stabilization/system.d.ts.map +1 -0
- package/dist/stabilization/system.js +695 -0
- package/dist/stabilization/system.js.map +1 -0
- package/docs/API_REFERENCE.md +2017 -0
- package/docs/API_STYLE.md +139 -3
- package/docs/ARCHITECTURE.md +134 -24
- package/docs/AUTOMATION_COORDINATION.md +2 -0
- package/docs/CAPTURE_COLOR.md +25 -0
- package/docs/CAPTURE_CORRECTED_SDR.md +25 -0
- package/docs/CAPTURE_EXPORT_METADATA.md +27 -0
- package/docs/CAPTURE_SDR.md +20 -0
- package/docs/DEVELOPERS.md +60 -0
- package/docs/DIGITAL_OPTICS_FOUNDATION.md +69 -0
- package/docs/ENVIRONMENT_RAW_CAPTURE.md +187 -0
- package/docs/EXPORT_ACCEPTANCE.md +133 -0
- package/docs/GENERIC_TIER_PRESETS.md +269 -0
- package/docs/GEOMETRIC_PREPARATION_REUSE.md +141 -0
- package/docs/IMAGE_FORMATION.md +80 -10
- package/docs/LINEAR_CAPTURE_ENCODING.md +25 -0
- package/docs/MOTION_AND_SIGNAL.md +5 -3
- package/docs/NUMERICAL_CORRECTNESS.md +191 -0
- package/docs/PERFORMANCE_BASELINE.md +56 -0
- package/docs/PHOTOGRAPHIC_EXPORT.md +206 -0
- package/docs/PHYSICS_FOUNDATION.md +152 -5
- package/docs/POC_API.md +2 -0
- package/docs/POC_PROJECTION_REUSE.md +124 -0
- package/docs/PROCESSED_OUTPUT.md +157 -0
- package/docs/PRODUCTION_COMPOSITION.md +373 -0
- package/docs/PRODUCTION_ENVIRONMENT_CAPTURE.md +131 -0
- package/docs/PROVENANCE.md +4 -0
- package/docs/PSF_FOUNDATION.md +110 -88
- package/docs/RAW_FRAME_ENVELOPE.md +56 -0
- package/docs/RAW_FRAME_RECONSTRUCTION.md +30 -0
- package/docs/RELEASE_1_0.md +66 -0
- package/docs/RELEASE_1_0_1.md +61 -0
- package/docs/RELEASE_AUDIT.md +39 -0
- package/docs/SCENE_RADIANCE_AND_ILLUMINATION.md +298 -0
- package/docs/SCENE_SENSOR_QUADRATURE.md +98 -0
- package/docs/SCENE_SENSOR_TEMPORAL_EXPOSURE.md +86 -0
- package/docs/SCIENTIFIC_ASSURANCE.md +280 -0
- package/docs/SCIENTIFIC_CONFORMANCE.md +83 -0
- package/docs/SDR_RENDERING.md +33 -0
- package/docs/SENSOR_ENVIRONMENT_QUERY.md +86 -0
- package/docs/SENSOR_EQE_LOCAL_EXPOSURE.md +104 -0
- package/docs/SENSOR_EQE_TEMPORAL_EXPOSURE.md +74 -0
- package/docs/SENSOR_PSF_QUADRATURE.md +90 -0
- package/docs/SENSOR_RAW_FRAME.md +20 -0
- package/docs/SENSOR_RAW_PRODUCER.md +77 -0
- package/docs/SIGNAL_CONFORMANCE.md +23 -0
- package/docs/SIMULATED_CAPTURE.md +65 -0
- package/docs/STABILIZATION.md +160 -17
- package/docs/TEMPORAL_PHOTO_RAW.md +83 -0
- package/docs/TIER_ACCEPTANCE.md +129 -0
- package/docs/TIER_PRESET_ACCEPTANCE.md +59 -0
- package/docs/USAGE.md +5050 -1047
- package/docs/V1_COMPOSITION_MAP.md +123 -0
- package/docs/V1_HELPER_REUSE_REVIEW.md +60 -0
- package/docs/V1_PERFORMANCE_DISPOSITION.md +88 -0
- package/docs/api/camera-equivalent-focal-length.md +53 -0
- package/docs/api/camera-field-of-view.md +119 -0
- package/docs/api/camera-projected-object-size.md +54 -0
- package/docs/api/capture-capture-export-metadata.md +107 -0
- package/docs/api/capture-environment-raw-producer.md +56 -0
- package/docs/api/capture-focus-control.md +419 -0
- package/docs/api/capture-linear-encoding.md +99 -0
- package/docs/api/capture-photographic-export.md +172 -0
- package/docs/api/capture-raw-frame-reconstruction.md +87 -0
- package/docs/api/capture-release-sequence.md +252 -0
- package/docs/api/capture-sensor-raw-frame.md +66 -0
- package/docs/api/capture-sensor-raw-producer.md +98 -0
- package/docs/api/capture-simulated-capture.md +179 -0
- package/docs/api/color-capture-color.md +122 -0
- package/docs/api/color-white-balance.md +386 -0
- package/docs/api/composition-image-formation-plan.md +825 -0
- package/docs/api/composition-plan-consumer.md +98 -0
- package/docs/api/core-calculation-result.md +220 -0
- package/docs/api/core-configuration-error.md +19 -0
- package/docs/api/core-image-formation.md +204 -0
- package/docs/api/core-scientific-assurance.md +214 -0
- package/docs/api/core-spectral-composition.md +268 -0
- package/docs/api/core-spectral.md +78 -0
- package/docs/api/core-validation.md +34 -0
- package/docs/api/core-version.md +14 -0
- package/docs/api/equipment-exposure-capabilities.md +270 -0
- package/docs/api/equipment-generic-tier-assets.md +82 -0
- package/docs/api/equipment-generic-tier-presets.md +103 -0
- package/docs/api/equipment-iso-capabilities.md +295 -0
- package/docs/api/equipment-metering-capabilities.md +126 -0
- package/docs/api/equipment-release-capabilities.md +91 -0
- package/docs/api/exports.json +5656 -0
- package/docs/api/exposure-exposure-duration-control.md +115 -0
- package/docs/api/exposure-exposure-mode-resolver.md +966 -0
- package/docs/api/exposure-exposure.md +150 -0
- package/docs/api/exposure-flash.md +327 -0
- package/docs/api/exposure-metering-scene-radiance.md +154 -0
- package/docs/api/exposure-metering-target.md +134 -0
- package/docs/api/exposure-metering-temporal.md +77 -0
- package/docs/api/exposure-metering.md +172 -0
- package/docs/api/exposure-program-line.md +64 -0
- package/docs/api/motion-camera-rotation.md +215 -0
- package/docs/api/motion-capture-rotation-inverse-mapping.md +128 -0
- package/docs/api/motion-capture-rotation-temporal-quadrature.md +127 -0
- package/docs/api/motion-capture-rotation-trajectory.md +132 -0
- package/docs/api/motion-capture-translation-parallax-temporal-quadrature.md +171 -0
- package/docs/api/motion-extended-object-projection.md +312 -0
- package/docs/api/motion-projected-motion.md +60 -0
- package/docs/api/optics-aperture.md +69 -0
- package/docs/api/optics-circle-of-confusion.md +46 -0
- package/docs/api/optics-complex-pupil-psf.md +193 -0
- package/docs/api/optics-depth-of-field.md +92 -0
- package/docs/api/optics-diffraction.md +46 -0
- package/docs/api/optics-focus-breathing.md +119 -0
- package/docs/api/optics-focus-state.md +64 -0
- package/docs/api/optics-front-of-lens-filter.md +263 -0
- package/docs/api/optics-illumination-vignetting.md +95 -0
- package/docs/api/optics-lateral-chromatic-aberration.md +225 -0
- package/docs/api/optics-lens-psf-profile.md +380 -0
- package/docs/api/optics-polygon-diffraction.md +68 -0
- package/docs/api/optics-profile-contract.md +47 -0
- package/docs/api/optics-psf-foundation.md +181 -0
- package/docs/api/optics-radial-distortion.md +194 -0
- package/docs/api/optics-scene-to-sensor-irradiance.md +371 -0
- package/docs/api/optics-scene-to-sensor-quadrature.md +78 -0
- package/docs/api/optics-sensor-environment-query.md +58 -0
- package/docs/api/optics-sensor-psf-quadrature.md +81 -0
- package/docs/api/optics-stray-light.md +109 -0
- package/docs/api/optics-thin-lens.md +53 -0
- package/docs/api/output-capture-corrected-sdr.md +71 -0
- package/docs/api/output-capture-geometry.md +500 -0
- package/docs/api/output-capture-sdr.md +69 -0
- package/docs/api/output-crop.md +47 -0
- package/docs/api/output-geometric-transforms.md +199 -0
- package/docs/api/output-lens-corrections.md +162 -0
- package/docs/api/output-sdr-rendering.md +122 -0
- package/docs/api/output-subject-framing-crop.md +59 -0
- package/docs/api/schema-camera.md +84 -0
- package/docs/api/schema-illumination-spectral.md +77 -0
- package/docs/api/schema-illumination-temporal.md +289 -0
- package/docs/api/schema-illumination.md +246 -0
- package/docs/api/schema-scene-radiance-temporal.md +215 -0
- package/docs/api/schema-scene-radiance.md +415 -0
- package/docs/api/schema-scene.md +105 -0
- package/docs/api/schema-validation.md +25 -0
- package/docs/api/sensor-accumulated-charge.md +273 -0
- package/docs/api/sensor-architecture.md +155 -0
- package/docs/api/sensor-camera-saturation-capacity.md +215 -0
- package/docs/api/sensor-capture-color-sampling-binding.md +323 -0
- package/docs/api/sensor-capture-mode-timing.md +123 -0
- package/docs/api/sensor-capture-mode.md +321 -0
- package/docs/api/sensor-color-sampling.md +228 -0
- package/docs/api/sensor-constant-rate-temporal-integration.md +152 -0
- package/docs/api/sensor-dark-current.md +227 -0
- package/docs/api/sensor-environment-photo-signal.md +77 -0
- package/docs/api/sensor-eqe-electron-rate.md +166 -0
- package/docs/api/sensor-eqe-local-exposure.md +68 -0
- package/docs/api/sensor-eqe-temporal-exposure.md +73 -0
- package/docs/api/sensor-exposure-window.md +183 -0
- package/docs/api/sensor-iso-signal-chain.md +264 -0
- package/docs/api/sensor-local-exposure-binding.md +126 -0
- package/docs/api/sensor-optical-stack.md +211 -0
- package/docs/api/sensor-photon-energy.md +149 -0
- package/docs/api/sensor-physical-charge-capacity.md +196 -0
- package/docs/api/sensor-pixel-pitch.md +41 -0
- package/docs/api/sensor-radiometry-readiness.md +240 -0
- package/docs/api/sensor-raw-readout.md +499 -0
- package/docs/api/sensor-raw-reconstruction.md +260 -0
- package/docs/api/sensor-readout-exposure-linkage.md +172 -0
- package/docs/api/sensor-readout-timing.md +209 -0
- package/docs/api/sensor-response-application-compatibility.md +256 -0
- package/docs/api/sensor-response-operating-range.md +293 -0
- package/docs/api/sensor-responsivity-photocurrent.md +245 -0
- package/docs/api/sensor-sampling-aperture.md +221 -0
- package/docs/api/sensor-scene-eqe-temporal-exposure.md +56 -0
- package/docs/api/sensor-sensor-geometry.md +143 -0
- package/docs/api/sensor-signal-noise.md +75 -0
- package/docs/api/sensor-spatial-sample-reduction.md +186 -0
- package/docs/api/sensor-spatial-sampling-quadrature.md +188 -0
- package/docs/api/sensor-spatio-spectral-reduction.md +217 -0
- package/docs/api/sensor-spectral-coverage.md +33 -0
- package/docs/api/sensor-spectral-quadrature.md +183 -0
- package/docs/api/sensor-spectral-response.md +291 -0
- package/docs/api/sensor-temporal-photo-signal.md +62 -0
- package/docs/api/simulation-poc-simulation.md +364 -0
- package/docs/api/stabilization-camera-shake.md +71 -0
- package/docs/api/stabilization-system.md +442 -0
- package/docs/benchmarks/2026-10-01-main-baseline.json +694 -0
- package/docs/benchmarks/2026-10-02-geometric-preparation-reuse.json +2190 -0
- package/docs/benchmarks/2026-10-02-poc-projection-reuse.json +2423 -0
- package/docs/benchmarks/2026-10-02-v1-environment-gc-profile.json +210 -0
- package/docs/benchmarks/2026-10-02-v1-environment-ordinary.json +187 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-gc-profile.json +756 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-1.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-geometry-ordinary-2.json +711 -0
- package/docs/benchmarks/2026-10-02-v1-poc-gc-profile.json +885 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-1.json +868 -0
- package/docs/benchmarks/2026-10-02-v1-poc-ordinary-2.json +868 -0
- package/docs/examples/production-capture.mjs +34 -0
- package/docs/examples/production-request.json +4613 -0
- package/docs/examples/quick-start.mjs +12 -0
- package/docs/validation/documentation-fragments.json +212 -0
- package/docs/validation/release-audit-inventory.json +1306 -0
- package/docs/validation/tier-acceptance-report-v1.json +2538 -0
- package/package.json +15 -3
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
/**
|
|
3
|
+
* Module boundary and integration notes.
|
|
4
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
5
|
+
* missing required fields and incompatible scientific data fail at this boundary. Rate times duration
|
|
6
|
+
* is allowed only by explicit stationarity bound to the exact site and local shutter interval. EQE
|
|
7
|
+
* integrates to expected photons/electrons; A/W integrates current magnitude to coulombs without an
|
|
8
|
+
* implicit carrier mapping. Counts remain fractional expectations before stochastic sampling.
|
|
9
|
+
* Integrates one explicitly stationary response-rate result over its exact bound local exposure
|
|
10
|
+
* window. This function is intentionally limited to the constant-rate approximation. It does not
|
|
11
|
+
* sample or integrate a time-varying signal.
|
|
12
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
13
|
+
* limits.
|
|
14
|
+
*/
|
|
15
|
+
import { approximationResult, calculatedResult } from "../core/calculation-result.js";
|
|
16
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
17
|
+
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
18
|
+
import { InvalidScientificInputError } from "../core/validation.js";
|
|
19
|
+
function requireRecord(value, path) {
|
|
20
|
+
if (typeof value !== "object" ||
|
|
21
|
+
value === null ||
|
|
22
|
+
Array.isArray(value)) {
|
|
23
|
+
throw new InvalidConfigurationError(path + " must be an object.");
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
function requireNonEmptyString(value, path) {
|
|
28
|
+
if (typeof value !== "string" ||
|
|
29
|
+
value.trim().length === 0) {
|
|
30
|
+
throw new InvalidConfigurationError(path + " must be a non-empty string.");
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
function requireNonNegativeSafeInteger(value, path) {
|
|
35
|
+
if (typeof value !== "number" ||
|
|
36
|
+
!Number.isSafeInteger(value) ||
|
|
37
|
+
value < 0) {
|
|
38
|
+
throw new InvalidConfigurationError(path +
|
|
39
|
+
" must be a non-negative safe integer.");
|
|
40
|
+
}
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
function requireFinite(value, path) {
|
|
44
|
+
if (typeof value !== "number" ||
|
|
45
|
+
!Number.isFinite(value)) {
|
|
46
|
+
throw new InvalidConfigurationError(path + " must be finite.");
|
|
47
|
+
}
|
|
48
|
+
return value;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
52
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
53
|
+
*
|
|
54
|
+
* Rate times duration is allowed only by explicit stationarity bound to the exact site and local
|
|
55
|
+
* shutter interval. EQE integrates to expected photons/electrons; A/W integrates current magnitude to
|
|
56
|
+
* coulombs without an implicit carrier mapping. Counts remain fractional expectations before
|
|
57
|
+
* stochastic sampling.
|
|
58
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
59
|
+
* @returns SensorRateTemporalStationarityProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
60
|
+
*
|
|
61
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
62
|
+
*/
|
|
63
|
+
export function parseSensorRateTemporalStationarityProfile(value) {
|
|
64
|
+
const record = requireRecord(value, "sensorRateTemporalStationarity");
|
|
65
|
+
if (record.schemaVersion !== "0.1.0") {
|
|
66
|
+
throw new InvalidConfigurationError('sensorRateTemporalStationarity.schemaVersion must be "0.1.0".');
|
|
67
|
+
}
|
|
68
|
+
if (record.rateDomain !==
|
|
69
|
+
"eqe-electron-rate" &&
|
|
70
|
+
record.rateDomain !==
|
|
71
|
+
"responsivity-photocurrent") {
|
|
72
|
+
throw new InvalidConfigurationError("sensorRateTemporalStationarity.rateDomain is invalid.");
|
|
73
|
+
}
|
|
74
|
+
const site = requireRecord(record.site, "sensorRateTemporalStationarity.site");
|
|
75
|
+
const localExposureWindow = requireRecord(record.localExposureWindow, "sensorRateTemporalStationarity.localExposureWindow");
|
|
76
|
+
if (localExposureWindow.timeReference !==
|
|
77
|
+
"first-opening-boundary-phase") {
|
|
78
|
+
throw new InvalidConfigurationError('sensorRateTemporalStationarity.localExposureWindow.timeReference must be "first-opening-boundary-phase".');
|
|
79
|
+
}
|
|
80
|
+
if (record.stationarityMeaning !==
|
|
81
|
+
"reported-rate-constant-through-bound-local-exposure") {
|
|
82
|
+
throw new InvalidConfigurationError("sensorRateTemporalStationarity.stationarityMeaning is invalid.");
|
|
83
|
+
}
|
|
84
|
+
if (record.status !== "established" &&
|
|
85
|
+
record.status !== "approximation") {
|
|
86
|
+
throw new InvalidConfigurationError("sensorRateTemporalStationarity.status is invalid.");
|
|
87
|
+
}
|
|
88
|
+
const limitation = record.limitation === undefined
|
|
89
|
+
? undefined
|
|
90
|
+
: requireNonEmptyString(record.limitation, "sensorRateTemporalStationarity.limitation");
|
|
91
|
+
if (record.status === "approximation" &&
|
|
92
|
+
limitation === undefined) {
|
|
93
|
+
throw new InvalidConfigurationError("sensorRateTemporalStationarity.limitation is required for an approximation.");
|
|
94
|
+
}
|
|
95
|
+
const start = requireFinite(localExposureWindow
|
|
96
|
+
.startOffsetSecondsFromOpeningReference, "sensorRateTemporalStationarity.localExposureWindow.startOffsetSecondsFromOpeningReference");
|
|
97
|
+
const end = requireFinite(localExposureWindow
|
|
98
|
+
.endOffsetSecondsFromOpeningReference, "sensorRateTemporalStationarity.localExposureWindow.endOffsetSecondsFromOpeningReference");
|
|
99
|
+
if (!(end > start)) {
|
|
100
|
+
throw new InvalidConfigurationError("sensorRateTemporalStationarity.localExposureWindow end must be greater than start.");
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
schemaVersion: "0.1.0",
|
|
104
|
+
profileId: requireNonEmptyString(record.profileId, "sensorRateTemporalStationarity.profileId"),
|
|
105
|
+
rateDomain: record.rateDomain,
|
|
106
|
+
colorSamplingProfileId: requireNonEmptyString(record.colorSamplingProfileId, "sensorRateTemporalStationarity.colorSamplingProfileId"),
|
|
107
|
+
channelId: requireNonEmptyString(record.channelId, "sensorRateTemporalStationarity.channelId"),
|
|
108
|
+
site: {
|
|
109
|
+
x: requireNonNegativeSafeInteger(site.x, "sensorRateTemporalStationarity.site.x"),
|
|
110
|
+
y: requireNonNegativeSafeInteger(site.y, "sensorRateTemporalStationarity.site.y")
|
|
111
|
+
},
|
|
112
|
+
bindingId: requireNonEmptyString(record.bindingId, "sensorRateTemporalStationarity.bindingId"),
|
|
113
|
+
localExposureWindow: {
|
|
114
|
+
timeReference: "first-opening-boundary-phase",
|
|
115
|
+
startOffsetSecondsFromOpeningReference: start,
|
|
116
|
+
endOffsetSecondsFromOpeningReference: end
|
|
117
|
+
},
|
|
118
|
+
stationarityMeaning: "reported-rate-constant-through-bound-local-exposure",
|
|
119
|
+
status: record.status,
|
|
120
|
+
evidence: parseEvidenceList(record.evidence, "sensorRateTemporalStationarity.evidence"),
|
|
121
|
+
...(limitation === undefined
|
|
122
|
+
? {}
|
|
123
|
+
: { limitation })
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function sameSite(a, b) {
|
|
127
|
+
return a.x === b.x && a.y === b.y;
|
|
128
|
+
}
|
|
129
|
+
function requireRateSite(rate) {
|
|
130
|
+
if (rate.site === undefined ||
|
|
131
|
+
!Number.isSafeInteger(rate.site.x) ||
|
|
132
|
+
rate.site.x < 0 ||
|
|
133
|
+
!Number.isSafeInteger(rate.site.y) ||
|
|
134
|
+
rate.site.y < 0) {
|
|
135
|
+
throw new InvalidScientificInputError("rate.site is required for temporal integration.");
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
x: rate.site.x,
|
|
139
|
+
y: rate.site.y
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
function validateBinding(rate, binding) {
|
|
143
|
+
const site = requireRateSite(rate);
|
|
144
|
+
if (!sameSite(site, binding.site) ||
|
|
145
|
+
binding.colorSamplingProfileId !==
|
|
146
|
+
rate.colorSamplingProfileId ||
|
|
147
|
+
binding.channelId !==
|
|
148
|
+
rate.channelId) {
|
|
149
|
+
throw new InvalidScientificInputError("rate and exposureBinding must reference the same color site/channel.");
|
|
150
|
+
}
|
|
151
|
+
const rateDomain = rate.sourceResponseKind ===
|
|
152
|
+
"effective-spectral-responsivity"
|
|
153
|
+
? "responsivity-photocurrent"
|
|
154
|
+
: "eqe-electron-rate";
|
|
155
|
+
if (binding.rateDomain !==
|
|
156
|
+
rateDomain ||
|
|
157
|
+
binding
|
|
158
|
+
.nativeImageRasterBindingEstablished !==
|
|
159
|
+
true ||
|
|
160
|
+
binding.channelAtSiteValidated !==
|
|
161
|
+
true ||
|
|
162
|
+
binding
|
|
163
|
+
.constantRateTemporalIntegrationAuthorized !==
|
|
164
|
+
false ||
|
|
165
|
+
binding.timeStationarityEstablished !==
|
|
166
|
+
false ||
|
|
167
|
+
binding.temporalIntegrationApplied !==
|
|
168
|
+
false ||
|
|
169
|
+
binding
|
|
170
|
+
.multiFrameSequenceBindingEstablished !==
|
|
171
|
+
false) {
|
|
172
|
+
throw new InvalidScientificInputError("exposureBinding must remain an unintegrated local timing binding for the same rate domain.");
|
|
173
|
+
}
|
|
174
|
+
if (binding.rateIdentity
|
|
175
|
+
.responseProfileId !==
|
|
176
|
+
rate.responseProfileId ||
|
|
177
|
+
binding.rateIdentity
|
|
178
|
+
.responseApplicationProfileId !==
|
|
179
|
+
rate.responseApplicationProfileId ||
|
|
180
|
+
binding.rateIdentity
|
|
181
|
+
.operatingRangeProfileId !==
|
|
182
|
+
rate.operatingRangeProfileId) {
|
|
183
|
+
throw new InvalidScientificInputError("exposureBinding response-rate identity must match the rate.");
|
|
184
|
+
}
|
|
185
|
+
if (rateDomain ===
|
|
186
|
+
"responsivity-photocurrent") {
|
|
187
|
+
const current = rate;
|
|
188
|
+
if (binding.rateIdentity
|
|
189
|
+
.electricalApplicabilityProfileId !==
|
|
190
|
+
current
|
|
191
|
+
.electricalApplicabilityProfileId) {
|
|
192
|
+
throw new InvalidScientificInputError("exposureBinding electrical applicability identity must match the A/W rate.");
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else if (binding.rateIdentity
|
|
196
|
+
.electricalApplicabilityProfileId !==
|
|
197
|
+
undefined) {
|
|
198
|
+
throw new InvalidScientificInputError("EQE exposureBinding must not carry an A/W electrical applicability identity.");
|
|
199
|
+
}
|
|
200
|
+
const window = binding.localExposureWindow;
|
|
201
|
+
const duration = window
|
|
202
|
+
.endOffsetSecondsFromOpeningReference -
|
|
203
|
+
window
|
|
204
|
+
.startOffsetSecondsFromOpeningReference;
|
|
205
|
+
if (!Number.isFinite(duration) ||
|
|
206
|
+
duration <= 0 ||
|
|
207
|
+
!Number.isFinite(binding.localExposureDurationSeconds) ||
|
|
208
|
+
binding.localExposureDurationSeconds !==
|
|
209
|
+
duration) {
|
|
210
|
+
throw new InvalidScientificInputError("exposureBinding local duration must exactly equal end minus start and remain positive.");
|
|
211
|
+
}
|
|
212
|
+
return {
|
|
213
|
+
rateDomain,
|
|
214
|
+
site,
|
|
215
|
+
duration
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function validateStationarity(stationarity, binding, rateDomain, site) {
|
|
219
|
+
if (stationarity.rateDomain !==
|
|
220
|
+
rateDomain ||
|
|
221
|
+
stationarity
|
|
222
|
+
.colorSamplingProfileId !==
|
|
223
|
+
binding.colorSamplingProfileId ||
|
|
224
|
+
stationarity.channelId !==
|
|
225
|
+
binding.channelId ||
|
|
226
|
+
!sameSite(stationarity.site, site) ||
|
|
227
|
+
stationarity.bindingId !==
|
|
228
|
+
binding.bindingId ||
|
|
229
|
+
stationarity
|
|
230
|
+
.localExposureWindow
|
|
231
|
+
.timeReference !==
|
|
232
|
+
binding.timeReference ||
|
|
233
|
+
stationarity
|
|
234
|
+
.localExposureWindow
|
|
235
|
+
.startOffsetSecondsFromOpeningReference !==
|
|
236
|
+
binding.localExposureWindow
|
|
237
|
+
.startOffsetSecondsFromOpeningReference ||
|
|
238
|
+
stationarity
|
|
239
|
+
.localExposureWindow
|
|
240
|
+
.endOffsetSecondsFromOpeningReference !==
|
|
241
|
+
binding.localExposureWindow
|
|
242
|
+
.endOffsetSecondsFromOpeningReference) {
|
|
243
|
+
throw new InvalidScientificInputError("stationarityProfile must apply to the exact bound rate domain, site, binding, and local exposure window.");
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function requireNonNegativeFiniteRate(value, path) {
|
|
247
|
+
if (typeof value !== "number" ||
|
|
248
|
+
!Number.isFinite(value) ||
|
|
249
|
+
value < 0) {
|
|
250
|
+
throw new InvalidScientificInputError(path +
|
|
251
|
+
" must be finite and greater than or equal to zero.");
|
|
252
|
+
}
|
|
253
|
+
return value;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Integrates one explicitly stationary response-rate result over its exact
|
|
257
|
+
* bound local exposure window.
|
|
258
|
+
*
|
|
259
|
+
* This function is intentionally limited to the constant-rate approximation.
|
|
260
|
+
* It does not sample or integrate a time-varying signal.
|
|
261
|
+
*/
|
|
262
|
+
export function integrateStationarySensorRateOverLocalExposure(input) {
|
|
263
|
+
const binding = validateBinding(input.rate, input.exposureBinding);
|
|
264
|
+
const stationarity = parseSensorRateTemporalStationarityProfile(input.stationarityProfile);
|
|
265
|
+
validateStationarity(stationarity, input.exposureBinding, binding.rateDomain, binding.site);
|
|
266
|
+
const common = {
|
|
267
|
+
colorSamplingProfileId: input.rate
|
|
268
|
+
.colorSamplingProfileId,
|
|
269
|
+
channelId: input.rate.channelId,
|
|
270
|
+
site: binding.site,
|
|
271
|
+
bindingId: input.exposureBinding.bindingId,
|
|
272
|
+
stationarityProfileId: stationarity.profileId,
|
|
273
|
+
stationarityStatus: stationarity.status,
|
|
274
|
+
timeReference: input.exposureBinding
|
|
275
|
+
.timeReference,
|
|
276
|
+
startOffsetSecondsFromOpeningReference: input.exposureBinding
|
|
277
|
+
.localExposureWindow
|
|
278
|
+
.startOffsetSecondsFromOpeningReference,
|
|
279
|
+
endOffsetSecondsFromOpeningReference: input.exposureBinding
|
|
280
|
+
.localExposureWindow
|
|
281
|
+
.endOffsetSecondsFromOpeningReference,
|
|
282
|
+
localExposureDurationSeconds: binding.duration,
|
|
283
|
+
integrationMethod: "constant-rate-times-local-exposure-duration",
|
|
284
|
+
timeStationarityEstablished: true,
|
|
285
|
+
temporalIntegrationApplied: true,
|
|
286
|
+
exposureDurationApplied: true,
|
|
287
|
+
timeVaryingSignalIntegrated: false,
|
|
288
|
+
multiFrameSequenceIntegrated: false,
|
|
289
|
+
darkChargeIncluded: false,
|
|
290
|
+
otherChargeIncluded: false,
|
|
291
|
+
accumulatedSignalCompleteness: "photo-signal-only",
|
|
292
|
+
physicalFullWellAssessmentAuthorized: false,
|
|
293
|
+
cameraSaturationAssessmentAuthorized: false,
|
|
294
|
+
saturationAssessed: false,
|
|
295
|
+
shotNoiseApplied: false,
|
|
296
|
+
readNoiseApplied: false,
|
|
297
|
+
adcQuantizationApplied: false,
|
|
298
|
+
rawCodeValueProduced: false,
|
|
299
|
+
componentEvidence: {
|
|
300
|
+
stationarity: stationarity.evidence,
|
|
301
|
+
exposureBinding: input.exposureBinding
|
|
302
|
+
.componentEvidence
|
|
303
|
+
}
|
|
304
|
+
};
|
|
305
|
+
const assumptions = [
|
|
306
|
+
"The reported instantaneous rate is explicitly declared constant through this exact bound local exposure window.",
|
|
307
|
+
"The integration is therefore rate × local duration; no temporal quadrature or time-varying signal samples are generated.",
|
|
308
|
+
"Motion, flicker, flash, time-varying illumination/vignetting, shutter modulation and other temporal scene/optical effects are excluded unless already proven irrelevant by the stationarity evidence.",
|
|
309
|
+
"A/W stationarity additionally treats the quasi-static detector-terminal photocurrent result as valid throughout the window; detector bandwidth/transient response remains unmodeled.",
|
|
310
|
+
"This result contains photo-signal accumulation only. Dark current, defects, leakage, charge injection and other charge contributors are not included.",
|
|
311
|
+
"Physical full-well and camera/digital saturation must not be assessed from this incomplete photo-signal accumulation alone.",
|
|
312
|
+
"Shot/read noise, conversion gain, ADC/RAW conversion and reconstruction remain downstream."
|
|
313
|
+
];
|
|
314
|
+
if (binding.rateDomain ===
|
|
315
|
+
"eqe-electron-rate") {
|
|
316
|
+
const rate = input.rate;
|
|
317
|
+
const photonRate = requireNonNegativeFiniteRate(rate.incidentPhotonRatePerSecond, "rate.incidentPhotonRatePerSecond");
|
|
318
|
+
const electronRate = requireNonNegativeFiniteRate(rate
|
|
319
|
+
.expectedGeneratedElectronRatePerSecond, "rate.expectedGeneratedElectronRatePerSecond");
|
|
320
|
+
const photonCount = photonRate *
|
|
321
|
+
binding.duration;
|
|
322
|
+
const electronCount = electronRate *
|
|
323
|
+
binding.duration;
|
|
324
|
+
if (!Number.isFinite(photonCount) ||
|
|
325
|
+
!Number.isFinite(electronCount)) {
|
|
326
|
+
throw new InvalidScientificInputError("EQE constant-rate temporal integration must remain finite.");
|
|
327
|
+
}
|
|
328
|
+
const result = {
|
|
329
|
+
...common,
|
|
330
|
+
kind: "eqe-expected-counts",
|
|
331
|
+
incidentPhotonRatePerSecond: photonRate,
|
|
332
|
+
expectedGeneratedElectronRatePerSecond: electronRate,
|
|
333
|
+
expectedIncidentPhotonCount: photonCount,
|
|
334
|
+
expectedGeneratedElectronCount: electronCount,
|
|
335
|
+
countsAreExpectationValues: true,
|
|
336
|
+
integerPhotonCountSampled: false,
|
|
337
|
+
integerElectronCountSampled: false,
|
|
338
|
+
chargeCalculated: false,
|
|
339
|
+
currentCalculated: false
|
|
340
|
+
};
|
|
341
|
+
return stationarity.status ===
|
|
342
|
+
"established"
|
|
343
|
+
? calculatedResult(result, "sensor-stationary-eqe-exposure-integration", "1.0.0", assumptions)
|
|
344
|
+
: approximationResult(result, "sensor-stationary-eqe-exposure-integration", "1.0.0", [
|
|
345
|
+
...assumptions,
|
|
346
|
+
stationarity.limitation
|
|
347
|
+
]);
|
|
348
|
+
}
|
|
349
|
+
const rate = input.rate;
|
|
350
|
+
const current = requireNonNegativeFiniteRate(rate.photocurrentMagnitudeAmperes, "rate.photocurrentMagnitudeAmperes");
|
|
351
|
+
if (rate.temporalResponseModel !==
|
|
352
|
+
"quasi-static-steady-state-only" ||
|
|
353
|
+
rate.detectorBandwidthModeled !==
|
|
354
|
+
false ||
|
|
355
|
+
rate.chargeCalculated !== false) {
|
|
356
|
+
throw new InvalidScientificInputError("A/W input must remain a quasi-static current result with no prior charge integration.");
|
|
357
|
+
}
|
|
358
|
+
const charge = current * binding.duration;
|
|
359
|
+
if (!Number.isFinite(charge)) {
|
|
360
|
+
throw new InvalidScientificInputError("A/W constant-current temporal integration must remain finite.");
|
|
361
|
+
}
|
|
362
|
+
const result = {
|
|
363
|
+
...common,
|
|
364
|
+
kind: "responsivity-photocurrent-charge",
|
|
365
|
+
photocurrentMagnitudeAmperes: current,
|
|
366
|
+
photochargeMagnitudeCoulombs: charge,
|
|
367
|
+
currentSignConvention: rate.currentSignConvention,
|
|
368
|
+
chargeSignConvention: "magnitude-only-no-carrier-or-circuit-polarity",
|
|
369
|
+
carrierCountInferred: false,
|
|
370
|
+
electronCountCalculated: false,
|
|
371
|
+
photonCountCalculated: false,
|
|
372
|
+
detectorBandwidthModeled: false
|
|
373
|
+
};
|
|
374
|
+
return stationarity.status ===
|
|
375
|
+
"established"
|
|
376
|
+
? calculatedResult(result, "sensor-stationary-responsivity-exposure-integration", "1.0.0", assumptions)
|
|
377
|
+
: approximationResult(result, "sensor-stationary-responsivity-exposure-integration", "1.0.0", [
|
|
378
|
+
...assumptions,
|
|
379
|
+
stationarity.limitation
|
|
380
|
+
]);
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=constant-rate-temporal-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant-rate-temporal-integration.js","sourceRoot":"","sources":["../../src/sensor/constant-rate-temporal-integration.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
4
|
+
* missing required fields and incompatible scientific data fail at this boundary. Dark current is an
|
|
5
|
+
* independently declared pre-compensation thermal electron rate. Exact-temperature or sampled linear
|
|
6
|
+
* interpolation is supported only within declared applicability; no universal doubling-temperature law
|
|
7
|
+
* is inferred. Population means remain approximations and do not model hot-pixel/DCNU structure.
|
|
8
|
+
* Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
|
|
9
|
+
* photo-signal local exposure event. Dark current is an independently declared pre-compensation
|
|
10
|
+
* thermal electron rate. Exact-temperature or sampled linear interpolation is supported only within
|
|
11
|
+
* declared applicability; no universal doubling-temperature law is inferred. Population means remain
|
|
12
|
+
* approximations and do not model hot-pixel/DCNU structure.
|
|
13
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
14
|
+
* limits.
|
|
15
|
+
*/
|
|
16
|
+
import { type CalculationResult } from "../core/calculation-result.js";
|
|
17
|
+
import { type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
18
|
+
import type { SensorEqeExposureIntegration } from "./constant-rate-temporal-integration.js";
|
|
19
|
+
import type { SensorEqePhotoExposure, SensorEqeTemporalPhotoSignal } from "./temporal-photo-signal.js";
|
|
20
|
+
import type { SensorSpectralResponseScientificStatus, SensorSpectralResponseUncertainty } from "./spectral-response.js";
|
|
21
|
+
export type SensorDarkCurrentSiteApplicability = {
|
|
22
|
+
kind: "exact-site";
|
|
23
|
+
site: {
|
|
24
|
+
x: number;
|
|
25
|
+
y: number;
|
|
26
|
+
};
|
|
27
|
+
} | {
|
|
28
|
+
kind: "uniform-site-mean-approximation";
|
|
29
|
+
limitation: string;
|
|
30
|
+
evidence: readonly EvidenceProvenance[];
|
|
31
|
+
};
|
|
32
|
+
export type SensorDarkCurrentTemperatureModel = {
|
|
33
|
+
kind: "fixed-reference-temperature";
|
|
34
|
+
referenceTemperatureC: number;
|
|
35
|
+
darkCurrentElectronsPerSecond: number;
|
|
36
|
+
} | {
|
|
37
|
+
kind: "piecewise-linear-temperature-table";
|
|
38
|
+
interpolation: "piecewise-linear";
|
|
39
|
+
outsideRangeBehavior: "fail-closed";
|
|
40
|
+
samples: readonly {
|
|
41
|
+
temperatureC: number;
|
|
42
|
+
darkCurrentElectronsPerSecond: number;
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
export interface SensorDarkCurrentProfile {
|
|
46
|
+
schemaVersion: "0.1.0";
|
|
47
|
+
profileId: string;
|
|
48
|
+
colorSamplingProfileId: string;
|
|
49
|
+
channelId: string;
|
|
50
|
+
scientificStatus: SensorSpectralResponseScientificStatus;
|
|
51
|
+
uncertainty: SensorSpectralResponseUncertainty;
|
|
52
|
+
evidence: readonly EvidenceProvenance[];
|
|
53
|
+
chargeMeaning: "pre-compensation-thermally-generated-electrons";
|
|
54
|
+
siteApplicability: SensorDarkCurrentSiteApplicability;
|
|
55
|
+
temperatureModel: SensorDarkCurrentTemperatureModel;
|
|
56
|
+
darkCurrentCompensationIncluded: false;
|
|
57
|
+
spatialDarkCurrentNonuniformityModeled: boolean;
|
|
58
|
+
}
|
|
59
|
+
export interface CalculateSensorDarkCurrentChargeInput<Exposure extends SensorEqePhotoExposure = SensorEqeExposureIntegration> {
|
|
60
|
+
exposure: Exposure;
|
|
61
|
+
darkCurrentProfile: SensorDarkCurrentProfile;
|
|
62
|
+
operatingTemperatureC: number;
|
|
63
|
+
}
|
|
64
|
+
export interface SensorDarkCurrentCharge {
|
|
65
|
+
darkCurrentProfileId: string;
|
|
66
|
+
colorSamplingProfileId: string;
|
|
67
|
+
channelId: string;
|
|
68
|
+
site: {
|
|
69
|
+
x: number;
|
|
70
|
+
y: number;
|
|
71
|
+
};
|
|
72
|
+
bindingId: string;
|
|
73
|
+
stationarityProfileId: string;
|
|
74
|
+
temporalIntegrationId?: never;
|
|
75
|
+
timeReference: "first-opening-boundary-phase";
|
|
76
|
+
startOffsetSecondsFromOpeningReference: number;
|
|
77
|
+
endOffsetSecondsFromOpeningReference: number;
|
|
78
|
+
operatingTemperatureC: number;
|
|
79
|
+
temperatureModel: SensorDarkCurrentTemperatureModel["kind"];
|
|
80
|
+
temperatureInterpolationUsed: boolean;
|
|
81
|
+
darkCurrentElectronsPerSecond: number;
|
|
82
|
+
localExposureDurationSeconds: number;
|
|
83
|
+
expectedDarkElectronCount: number;
|
|
84
|
+
countMeaning: "expected-thermally-generated-electrons";
|
|
85
|
+
expectationValueOnly: true;
|
|
86
|
+
integerDarkElectronCountSampled: false;
|
|
87
|
+
darkShotNoiseApplied: false;
|
|
88
|
+
darkCurrentCompensationApplied: false;
|
|
89
|
+
spatialDarkCurrentNonuniformityModeled: boolean;
|
|
90
|
+
photoSignalIncluded: false;
|
|
91
|
+
otherChargeIncluded: false;
|
|
92
|
+
physicalFullWellAssessmentAuthorized: false;
|
|
93
|
+
saturationAssessed: false;
|
|
94
|
+
componentEvidence: {
|
|
95
|
+
darkCurrent: readonly EvidenceProvenance[];
|
|
96
|
+
siteApproximation: readonly EvidenceProvenance[];
|
|
97
|
+
exposure: SensorEqeExposureIntegration["componentEvidence"];
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/** Dark charge shares the exact temporal photo event, without a stationarity ID. */
|
|
101
|
+
export type SensorTemporalDarkCurrentCharge = Omit<SensorDarkCurrentCharge, "stationarityProfileId" | "temporalIntegrationId" | "componentEvidence"> & {
|
|
102
|
+
stationarityProfileId?: never;
|
|
103
|
+
temporalIntegrationId: string;
|
|
104
|
+
componentEvidence: Omit<SensorDarkCurrentCharge["componentEvidence"], "exposure"> & {
|
|
105
|
+
exposure: SensorEqeTemporalPhotoSignal["componentEvidence"];
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
export type SensorPhotoDarkCurrentCharge = SensorDarkCurrentCharge | SensorTemporalDarkCurrentCharge;
|
|
109
|
+
/**
|
|
110
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
111
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
112
|
+
*
|
|
113
|
+
* Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
|
|
114
|
+
* or sampled linear interpolation is supported only within declared applicability; no universal
|
|
115
|
+
* doubling-temperature law is inferred. Population means remain approximations and do not model
|
|
116
|
+
* hot-pixel/DCNU structure.
|
|
117
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
118
|
+
* @returns SensorDarkCurrentProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
119
|
+
*
|
|
120
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
121
|
+
*/
|
|
122
|
+
export declare function parseSensorDarkCurrentProfile(value: unknown): SensorDarkCurrentProfile;
|
|
123
|
+
/**
|
|
124
|
+
* Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
|
|
125
|
+
* photo-signal local exposure event.
|
|
126
|
+
*
|
|
127
|
+
* Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
|
|
128
|
+
* or sampled linear interpolation is supported only within declared applicability; no universal
|
|
129
|
+
* doubling-temperature law is inferred. Population means remain approximations and do not model
|
|
130
|
+
* hot-pixel/DCNU structure.
|
|
131
|
+
* @param input - Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & { exposure: SensorEqeExposureIntegration }. See the linked contract for coordinate, unit and profile binding semantics.
|
|
132
|
+
* @returns CalculationResult<SensorDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
133
|
+
*
|
|
134
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
135
|
+
*/
|
|
136
|
+
export declare function calculateSensorDarkCurrentCharge(input: Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & {
|
|
137
|
+
exposure: SensorEqeExposureIntegration;
|
|
138
|
+
}): CalculationResult<SensorDarkCurrentCharge>;
|
|
139
|
+
/**
|
|
140
|
+
* Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
|
|
141
|
+
* photo-signal local exposure event.
|
|
142
|
+
*
|
|
143
|
+
* Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
|
|
144
|
+
* or sampled linear interpolation is supported only within declared applicability; no universal
|
|
145
|
+
* doubling-temperature law is inferred. Population means remain approximations and do not model
|
|
146
|
+
* hot-pixel/DCNU structure.
|
|
147
|
+
* @param input - Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & { exposure: SensorEqeTemporalPhotoSignal }. See the linked contract for coordinate, unit and profile binding semantics.
|
|
148
|
+
* @returns CalculationResult<SensorTemporalDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
149
|
+
*
|
|
150
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
151
|
+
*/
|
|
152
|
+
export declare function calculateSensorDarkCurrentCharge(input: Omit<CalculateSensorDarkCurrentChargeInput, "exposure"> & {
|
|
153
|
+
exposure: SensorEqeTemporalPhotoSignal;
|
|
154
|
+
}): CalculationResult<SensorTemporalDarkCurrentCharge>;
|
|
155
|
+
/**
|
|
156
|
+
* Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
|
|
157
|
+
* photo-signal local exposure event.
|
|
158
|
+
*
|
|
159
|
+
* Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
|
|
160
|
+
* or sampled linear interpolation is supported only within declared applicability; no universal
|
|
161
|
+
* doubling-temperature law is inferred. Population means remain approximations and do not model
|
|
162
|
+
* hot-pixel/DCNU structure.
|
|
163
|
+
* @param input - CalculateSensorDarkCurrentChargeInput<SensorEqePhotoExposure>. See the linked contract for coordinate, unit and profile binding semantics.
|
|
164
|
+
* @returns CalculationResult<SensorPhotoDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
165
|
+
*
|
|
166
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
167
|
+
*/
|
|
168
|
+
export declare function calculateSensorDarkCurrentCharge(input: CalculateSensorDarkCurrentChargeInput<SensorEqePhotoExposure>): CalculationResult<SensorPhotoDarkCurrentCharge>;
|
|
169
|
+
//# sourceMappingURL=dark-current.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dark-current.d.ts","sourceRoot":"","sources":["../../src/sensor/dark-current.ts"],"names":[],"mappings":"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"}
|