@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,427 @@
|
|
|
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. Dark current is an
|
|
6
|
+
* independently declared pre-compensation thermal electron rate. Exact-temperature or sampled linear
|
|
7
|
+
* interpolation is supported only within declared applicability; no universal doubling-temperature law
|
|
8
|
+
* is inferred. Population means remain approximations and do not model hot-pixel/DCNU structure.
|
|
9
|
+
* Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
|
|
10
|
+
* photo-signal local exposure event. Dark current is an independently declared pre-compensation
|
|
11
|
+
* thermal electron rate. Exact-temperature or sampled linear interpolation is supported only within
|
|
12
|
+
* declared applicability; no universal doubling-temperature law is inferred. Population means remain
|
|
13
|
+
* approximations and do not model hot-pixel/DCNU structure.
|
|
14
|
+
* @see docs/MOTION_AND_SIGNAL.md for equations, coordinate/unit conventions, blockers and support
|
|
15
|
+
* limits.
|
|
16
|
+
*/
|
|
17
|
+
import { approximationResult, calculatedResult } from "../core/calculation-result.js";
|
|
18
|
+
import { InvalidConfigurationError } from "../core/configuration-error.js";
|
|
19
|
+
import { parseEvidenceList } from "../core/evidence-provenance.js";
|
|
20
|
+
import { parseSensorEqeTemporalPhotoSignal } from "./temporal-photo-signal.js";
|
|
21
|
+
import { InvalidScientificInputError } from "../core/validation.js";
|
|
22
|
+
function requireRecord(value, path) {
|
|
23
|
+
if (typeof value !== "object" ||
|
|
24
|
+
value === null ||
|
|
25
|
+
Array.isArray(value)) {
|
|
26
|
+
throw new InvalidConfigurationError(path + " must be an object.");
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
function requireNonEmptyString(value, path) {
|
|
31
|
+
if (typeof value !== "string" ||
|
|
32
|
+
value.trim().length === 0) {
|
|
33
|
+
throw new InvalidConfigurationError(path + " must be a non-empty string.");
|
|
34
|
+
}
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
function requireFinite(value, path) {
|
|
38
|
+
if (typeof value !== "number" ||
|
|
39
|
+
!Number.isFinite(value)) {
|
|
40
|
+
throw new InvalidConfigurationError(path + " must be finite.");
|
|
41
|
+
}
|
|
42
|
+
return value;
|
|
43
|
+
}
|
|
44
|
+
function requireNonNegativeFinite(value, path) {
|
|
45
|
+
const parsed = requireFinite(value, path);
|
|
46
|
+
if (parsed < 0) {
|
|
47
|
+
throw new InvalidConfigurationError(path +
|
|
48
|
+
" must be greater than or equal to zero.");
|
|
49
|
+
}
|
|
50
|
+
return parsed;
|
|
51
|
+
}
|
|
52
|
+
function requireSiteIndex(value, path) {
|
|
53
|
+
if (typeof value !== "number" ||
|
|
54
|
+
!Number.isSafeInteger(value) ||
|
|
55
|
+
value < 0) {
|
|
56
|
+
throw new InvalidConfigurationError(path +
|
|
57
|
+
" must be a non-negative safe integer.");
|
|
58
|
+
}
|
|
59
|
+
return value;
|
|
60
|
+
}
|
|
61
|
+
function parseUncertainty(value, path) {
|
|
62
|
+
const record = requireRecord(value, path);
|
|
63
|
+
if (record.kind === "relative") {
|
|
64
|
+
const fraction = requireNonNegativeFinite(record.fraction, path + ".fraction");
|
|
65
|
+
if (typeof record.basis !== "string" ||
|
|
66
|
+
record.basis.trim().length === 0) {
|
|
67
|
+
throw new InvalidConfigurationError(path +
|
|
68
|
+
".basis must be a non-empty string.");
|
|
69
|
+
}
|
|
70
|
+
return {
|
|
71
|
+
kind: "relative",
|
|
72
|
+
fraction,
|
|
73
|
+
basis: record.basis
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
if (record.kind === "not-quantified") {
|
|
77
|
+
return {
|
|
78
|
+
kind: "not-quantified",
|
|
79
|
+
limitation: requireNonEmptyString(record.limitation, path + ".limitation")
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
throw new InvalidConfigurationError(path + ".kind is invalid.");
|
|
83
|
+
}
|
|
84
|
+
function parseSiteApplicability(value) {
|
|
85
|
+
const record = requireRecord(value, "sensorDarkCurrent.siteApplicability");
|
|
86
|
+
if (record.kind === "exact-site") {
|
|
87
|
+
const site = requireRecord(record.site, "sensorDarkCurrent.siteApplicability.site");
|
|
88
|
+
return {
|
|
89
|
+
kind: "exact-site",
|
|
90
|
+
site: {
|
|
91
|
+
x: requireSiteIndex(site.x, "sensorDarkCurrent.siteApplicability.site.x"),
|
|
92
|
+
y: requireSiteIndex(site.y, "sensorDarkCurrent.siteApplicability.site.y")
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
if (record.kind ===
|
|
97
|
+
"uniform-site-mean-approximation") {
|
|
98
|
+
return {
|
|
99
|
+
kind: "uniform-site-mean-approximation",
|
|
100
|
+
limitation: requireNonEmptyString(record.limitation, "sensorDarkCurrent.siteApplicability.limitation"),
|
|
101
|
+
evidence: parseEvidenceList(record.evidence, "sensorDarkCurrent.siteApplicability.evidence")
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.siteApplicability.kind is invalid.");
|
|
105
|
+
}
|
|
106
|
+
function parseTemperatureModel(value) {
|
|
107
|
+
const record = requireRecord(value, "sensorDarkCurrent.temperatureModel");
|
|
108
|
+
if (record.kind ===
|
|
109
|
+
"fixed-reference-temperature") {
|
|
110
|
+
return {
|
|
111
|
+
kind: "fixed-reference-temperature",
|
|
112
|
+
referenceTemperatureC: requireFinite(record.referenceTemperatureC, "sensorDarkCurrent.temperatureModel.referenceTemperatureC"),
|
|
113
|
+
darkCurrentElectronsPerSecond: requireNonNegativeFinite(record.darkCurrentElectronsPerSecond, "sensorDarkCurrent.temperatureModel.darkCurrentElectronsPerSecond")
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
if (record.kind !==
|
|
117
|
+
"piecewise-linear-temperature-table") {
|
|
118
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.temperatureModel.kind is invalid.");
|
|
119
|
+
}
|
|
120
|
+
if (record.interpolation !==
|
|
121
|
+
"piecewise-linear") {
|
|
122
|
+
throw new InvalidConfigurationError('sensorDarkCurrent.temperatureModel.interpolation must be "piecewise-linear".');
|
|
123
|
+
}
|
|
124
|
+
if (record.outsideRangeBehavior !==
|
|
125
|
+
"fail-closed") {
|
|
126
|
+
throw new InvalidConfigurationError('sensorDarkCurrent.temperatureModel.outsideRangeBehavior must be "fail-closed".');
|
|
127
|
+
}
|
|
128
|
+
if (!Array.isArray(record.samples) ||
|
|
129
|
+
record.samples.length < 2) {
|
|
130
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.temperatureModel.samples must contain at least two samples.");
|
|
131
|
+
}
|
|
132
|
+
let previousTemperature = Number.NEGATIVE_INFINITY;
|
|
133
|
+
const samples = record.samples.map((sample, index) => {
|
|
134
|
+
const parsed = requireRecord(sample, "sensorDarkCurrent.temperatureModel.samples[" +
|
|
135
|
+
index +
|
|
136
|
+
"]");
|
|
137
|
+
const temperatureC = requireFinite(parsed.temperatureC, "sensorDarkCurrent.temperatureModel.samples[" +
|
|
138
|
+
index +
|
|
139
|
+
"].temperatureC");
|
|
140
|
+
if (temperatureC <=
|
|
141
|
+
previousTemperature) {
|
|
142
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.temperatureModel.samples must be strictly increasing in temperature.");
|
|
143
|
+
}
|
|
144
|
+
previousTemperature =
|
|
145
|
+
temperatureC;
|
|
146
|
+
return {
|
|
147
|
+
temperatureC,
|
|
148
|
+
darkCurrentElectronsPerSecond: requireNonNegativeFinite(parsed.darkCurrentElectronsPerSecond, "sensorDarkCurrent.temperatureModel.samples[" +
|
|
149
|
+
index +
|
|
150
|
+
"].darkCurrentElectronsPerSecond")
|
|
151
|
+
};
|
|
152
|
+
});
|
|
153
|
+
return {
|
|
154
|
+
kind: "piecewise-linear-temperature-table",
|
|
155
|
+
interpolation: "piecewise-linear",
|
|
156
|
+
outsideRangeBehavior: "fail-closed",
|
|
157
|
+
samples
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Validate an untrusted declaration and return the normalized typed contract. Unknown enum values,
|
|
162
|
+
* missing required fields and incompatible scientific data fail at this boundary.
|
|
163
|
+
*
|
|
164
|
+
* Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
|
|
165
|
+
* or sampled linear interpolation is supported only within declared applicability; no universal
|
|
166
|
+
* doubling-temperature law is inferred. Population means remain approximations and do not model
|
|
167
|
+
* hot-pixel/DCNU structure.
|
|
168
|
+
* @param value - unknown. Treated as untrusted data; static typing alone is not validation.
|
|
169
|
+
* @returns SensorDarkCurrentProfile. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
170
|
+
*
|
|
171
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
172
|
+
*/
|
|
173
|
+
export function parseSensorDarkCurrentProfile(value) {
|
|
174
|
+
const record = requireRecord(value, "sensorDarkCurrent");
|
|
175
|
+
if (record.schemaVersion !== "0.1.0") {
|
|
176
|
+
throw new InvalidConfigurationError('sensorDarkCurrent.schemaVersion must be "0.1.0".');
|
|
177
|
+
}
|
|
178
|
+
if (record.chargeMeaning !==
|
|
179
|
+
"pre-compensation-thermally-generated-electrons") {
|
|
180
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.chargeMeaning is invalid.");
|
|
181
|
+
}
|
|
182
|
+
if (record.scientificStatus !==
|
|
183
|
+
"calibrated" &&
|
|
184
|
+
record.scientificStatus !==
|
|
185
|
+
"approximation") {
|
|
186
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.scientificStatus is invalid.");
|
|
187
|
+
}
|
|
188
|
+
if (record.darkCurrentCompensationIncluded !==
|
|
189
|
+
false) {
|
|
190
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.darkCurrentCompensationIncluded must be false.");
|
|
191
|
+
}
|
|
192
|
+
if (typeof record
|
|
193
|
+
.spatialDarkCurrentNonuniformityModeled !==
|
|
194
|
+
"boolean") {
|
|
195
|
+
throw new InvalidConfigurationError("sensorDarkCurrent.spatialDarkCurrentNonuniformityModeled must be boolean.");
|
|
196
|
+
}
|
|
197
|
+
const uncertainty = parseUncertainty(record.uncertainty, "sensorDarkCurrent.uncertainty");
|
|
198
|
+
if (record.scientificStatus ===
|
|
199
|
+
"calibrated" &&
|
|
200
|
+
uncertainty.kind ===
|
|
201
|
+
"not-quantified") {
|
|
202
|
+
throw new InvalidConfigurationError("A calibrated dark-current profile must declare quantified relative uncertainty.");
|
|
203
|
+
}
|
|
204
|
+
const siteApplicability = parseSiteApplicability(record.siteApplicability);
|
|
205
|
+
if (siteApplicability.kind ===
|
|
206
|
+
"uniform-site-mean-approximation" &&
|
|
207
|
+
record.scientificStatus !==
|
|
208
|
+
"approximation") {
|
|
209
|
+
throw new InvalidConfigurationError("Uniform site-mean dark current must remain an approximation.");
|
|
210
|
+
}
|
|
211
|
+
if (siteApplicability.kind ===
|
|
212
|
+
"uniform-site-mean-approximation" &&
|
|
213
|
+
record
|
|
214
|
+
.spatialDarkCurrentNonuniformityModeled !==
|
|
215
|
+
false) {
|
|
216
|
+
throw new InvalidConfigurationError("Uniform site-mean dark current cannot claim spatial dark-current nonuniformity is modeled.");
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
schemaVersion: "0.1.0",
|
|
220
|
+
profileId: requireNonEmptyString(record.profileId, "sensorDarkCurrent.profileId"),
|
|
221
|
+
colorSamplingProfileId: requireNonEmptyString(record.colorSamplingProfileId, "sensorDarkCurrent.colorSamplingProfileId"),
|
|
222
|
+
channelId: requireNonEmptyString(record.channelId, "sensorDarkCurrent.channelId"),
|
|
223
|
+
scientificStatus: record.scientificStatus,
|
|
224
|
+
uncertainty,
|
|
225
|
+
evidence: parseEvidenceList(record.evidence, "sensorDarkCurrent.evidence"),
|
|
226
|
+
chargeMeaning: "pre-compensation-thermally-generated-electrons",
|
|
227
|
+
siteApplicability,
|
|
228
|
+
temperatureModel: parseTemperatureModel(record.temperatureModel),
|
|
229
|
+
darkCurrentCompensationIncluded: false,
|
|
230
|
+
spatialDarkCurrentNonuniformityModeled: record
|
|
231
|
+
.spatialDarkCurrentNonuniformityModeled
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
function sameSite(a, b) {
|
|
235
|
+
return a.x === b.x && a.y === b.y;
|
|
236
|
+
}
|
|
237
|
+
function resolveDarkCurrentRate(model, operatingTemperatureC) {
|
|
238
|
+
if (!Number.isFinite(operatingTemperatureC)) {
|
|
239
|
+
throw new InvalidScientificInputError("operatingTemperatureC must be finite.");
|
|
240
|
+
}
|
|
241
|
+
if (model.kind ===
|
|
242
|
+
"fixed-reference-temperature") {
|
|
243
|
+
if (operatingTemperatureC !==
|
|
244
|
+
model.referenceTemperatureC) {
|
|
245
|
+
throw new InvalidScientificInputError("Fixed-reference dark current may only be used at its exact reference temperature.");
|
|
246
|
+
}
|
|
247
|
+
return {
|
|
248
|
+
rate: model
|
|
249
|
+
.darkCurrentElectronsPerSecond,
|
|
250
|
+
interpolationUsed: false
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
const first = model.samples[0];
|
|
254
|
+
const last = model.samples[model.samples.length - 1];
|
|
255
|
+
if (operatingTemperatureC <
|
|
256
|
+
first.temperatureC ||
|
|
257
|
+
operatingTemperatureC >
|
|
258
|
+
last.temperatureC) {
|
|
259
|
+
throw new InvalidScientificInputError("operatingTemperatureC is outside the measured dark-current temperature range; extrapolation is not permitted.");
|
|
260
|
+
}
|
|
261
|
+
const exact = model.samples.find((sample) => sample.temperatureC ===
|
|
262
|
+
operatingTemperatureC);
|
|
263
|
+
if (exact !== undefined) {
|
|
264
|
+
return {
|
|
265
|
+
rate: exact
|
|
266
|
+
.darkCurrentElectronsPerSecond,
|
|
267
|
+
interpolationUsed: false
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
const upperIndex = model.samples.findIndex((sample) => sample.temperatureC >
|
|
271
|
+
operatingTemperatureC);
|
|
272
|
+
const upper = model.samples[upperIndex];
|
|
273
|
+
const lower = model.samples[upperIndex - 1];
|
|
274
|
+
const alpha = (operatingTemperatureC -
|
|
275
|
+
lower.temperatureC) /
|
|
276
|
+
(upper.temperatureC -
|
|
277
|
+
lower.temperatureC);
|
|
278
|
+
const rate = lower
|
|
279
|
+
.darkCurrentElectronsPerSecond +
|
|
280
|
+
alpha *
|
|
281
|
+
(upper
|
|
282
|
+
.darkCurrentElectronsPerSecond -
|
|
283
|
+
lower
|
|
284
|
+
.darkCurrentElectronsPerSecond);
|
|
285
|
+
return {
|
|
286
|
+
rate,
|
|
287
|
+
interpolationUsed: true
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
function validateExposure(exposure) {
|
|
291
|
+
if (exposure.kind === "eqe-temporal-photo-signal")
|
|
292
|
+
parseSensorEqeTemporalPhotoSignal(exposure);
|
|
293
|
+
if ((exposure.kind !== "eqe-expected-counts" && exposure.kind !== "eqe-temporal-photo-signal") ||
|
|
294
|
+
exposure.temporalIntegrationApplied !==
|
|
295
|
+
true ||
|
|
296
|
+
exposure.exposureDurationApplied !==
|
|
297
|
+
true ||
|
|
298
|
+
exposure.accumulatedSignalCompleteness !==
|
|
299
|
+
"photo-signal-only" ||
|
|
300
|
+
exposure.darkChargeIncluded !== false ||
|
|
301
|
+
exposure.otherChargeIncluded !== false ||
|
|
302
|
+
exposure
|
|
303
|
+
.physicalFullWellAssessmentAuthorized !==
|
|
304
|
+
false) {
|
|
305
|
+
throw new InvalidScientificInputError("Dark-current composition requires an unmodified photo-signal-only EQE exposure integration.");
|
|
306
|
+
}
|
|
307
|
+
if (typeof exposure
|
|
308
|
+
.localExposureDurationSeconds !==
|
|
309
|
+
"number" ||
|
|
310
|
+
!Number.isFinite(exposure
|
|
311
|
+
.localExposureDurationSeconds) ||
|
|
312
|
+
exposure
|
|
313
|
+
.localExposureDurationSeconds <=
|
|
314
|
+
0) {
|
|
315
|
+
throw new InvalidScientificInputError("EQE exposure local duration must be finite and positive.");
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* Evaluate the declared temperature-dependent dark electron rate and integrate over the exact
|
|
320
|
+
* photo-signal local exposure event.
|
|
321
|
+
*
|
|
322
|
+
* Dark current is an independently declared pre-compensation thermal electron rate. Exact-temperature
|
|
323
|
+
* or sampled linear interpolation is supported only within declared applicability; no universal
|
|
324
|
+
* doubling-temperature law is inferred. Population means remain approximations and do not model
|
|
325
|
+
* hot-pixel/DCNU structure.
|
|
326
|
+
* @param input - CalculateSensorDarkCurrentChargeInput<SensorEqePhotoExposure>. See the linked contract for coordinate, unit and profile binding semantics.
|
|
327
|
+
* @returns CalculationResult<SensorPhotoDarkCurrentCharge>. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
328
|
+
*
|
|
329
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
330
|
+
*/
|
|
331
|
+
export function calculateSensorDarkCurrentCharge(input) {
|
|
332
|
+
validateExposure(input.exposure);
|
|
333
|
+
const profile = parseSensorDarkCurrentProfile(input.darkCurrentProfile);
|
|
334
|
+
if (profile.colorSamplingProfileId !==
|
|
335
|
+
input.exposure
|
|
336
|
+
.colorSamplingProfileId ||
|
|
337
|
+
profile.channelId !==
|
|
338
|
+
input.exposure.channelId) {
|
|
339
|
+
throw new InvalidScientificInputError("Dark-current profile color/channel identity must match the EQE exposure.");
|
|
340
|
+
}
|
|
341
|
+
const site = input.exposure.site;
|
|
342
|
+
if (profile.siteApplicability.kind ===
|
|
343
|
+
"exact-site" &&
|
|
344
|
+
!sameSite(profile.siteApplicability.site, site)) {
|
|
345
|
+
throw new InvalidScientificInputError("Exact-site dark-current profile does not apply to the exposure site.");
|
|
346
|
+
}
|
|
347
|
+
const resolved = resolveDarkCurrentRate(profile.temperatureModel, input.operatingTemperatureC);
|
|
348
|
+
const expectedDarkElectronCount = resolved.rate *
|
|
349
|
+
input.exposure
|
|
350
|
+
.localExposureDurationSeconds;
|
|
351
|
+
if (!Number.isFinite(expectedDarkElectronCount) ||
|
|
352
|
+
expectedDarkElectronCount < 0) {
|
|
353
|
+
throw new InvalidScientificInputError("Expected dark-electron count must remain finite and nonnegative.");
|
|
354
|
+
}
|
|
355
|
+
const result = {
|
|
356
|
+
darkCurrentProfileId: profile.profileId,
|
|
357
|
+
colorSamplingProfileId: input.exposure
|
|
358
|
+
.colorSamplingProfileId,
|
|
359
|
+
channelId: input.exposure.channelId,
|
|
360
|
+
site: {
|
|
361
|
+
...site
|
|
362
|
+
},
|
|
363
|
+
bindingId: input.exposure.bindingId,
|
|
364
|
+
...(input.exposure.kind === "eqe-temporal-photo-signal"
|
|
365
|
+
? { temporalIntegrationId: input.exposure.temporalIntegrationId }
|
|
366
|
+
: { stationarityProfileId: input.exposure.stationarityProfileId }),
|
|
367
|
+
timeReference: input.exposure.timeReference,
|
|
368
|
+
startOffsetSecondsFromOpeningReference: input.exposure
|
|
369
|
+
.startOffsetSecondsFromOpeningReference,
|
|
370
|
+
endOffsetSecondsFromOpeningReference: input.exposure
|
|
371
|
+
.endOffsetSecondsFromOpeningReference,
|
|
372
|
+
operatingTemperatureC: input.operatingTemperatureC,
|
|
373
|
+
temperatureModel: profile.temperatureModel.kind,
|
|
374
|
+
temperatureInterpolationUsed: resolved.interpolationUsed,
|
|
375
|
+
darkCurrentElectronsPerSecond: resolved.rate,
|
|
376
|
+
localExposureDurationSeconds: input.exposure
|
|
377
|
+
.localExposureDurationSeconds,
|
|
378
|
+
expectedDarkElectronCount,
|
|
379
|
+
countMeaning: "expected-thermally-generated-electrons",
|
|
380
|
+
expectationValueOnly: true,
|
|
381
|
+
integerDarkElectronCountSampled: false,
|
|
382
|
+
darkShotNoiseApplied: false,
|
|
383
|
+
darkCurrentCompensationApplied: false,
|
|
384
|
+
spatialDarkCurrentNonuniformityModeled: profile
|
|
385
|
+
.spatialDarkCurrentNonuniformityModeled,
|
|
386
|
+
photoSignalIncluded: false,
|
|
387
|
+
otherChargeIncluded: false,
|
|
388
|
+
physicalFullWellAssessmentAuthorized: false,
|
|
389
|
+
saturationAssessed: false,
|
|
390
|
+
componentEvidence: {
|
|
391
|
+
darkCurrent: profile.evidence,
|
|
392
|
+
siteApproximation: profile.siteApplicability.kind ===
|
|
393
|
+
"uniform-site-mean-approximation"
|
|
394
|
+
? profile
|
|
395
|
+
.siteApplicability
|
|
396
|
+
.evidence
|
|
397
|
+
: [],
|
|
398
|
+
exposure: input.exposure
|
|
399
|
+
.componentEvidence
|
|
400
|
+
}
|
|
401
|
+
};
|
|
402
|
+
const assumptions = [
|
|
403
|
+
"Dark current is modeled as pre-compensation thermally generated electron rate in electrons per second.",
|
|
404
|
+
"Release 4.0 style temperature handling is data-driven: no universal exponential or doubling-temperature law is inferred.",
|
|
405
|
+
"Piecewise-linear interpolation is allowed only inside an explicitly sampled temperature table; extrapolation fails closed.",
|
|
406
|
+
"Dark-current compensation, dark offset, hot-pixel/defect excess, leakage and charge injection remain separate from this thermal dark-current expectation.",
|
|
407
|
+
"Expected dark-electron count is rate × the exact local exposure duration; no integer sampling or dark-current shot-noise realization is performed.",
|
|
408
|
+
"This result is dark charge only. Photo-signal and other accumulated charge are not included, so physical full-well assessment remains unauthorized.",
|
|
409
|
+
"A/W current-domain exposure results cannot enter this electron-storage path without a separate carrier/storage mapping."
|
|
410
|
+
];
|
|
411
|
+
return profile.scientificStatus ===
|
|
412
|
+
"calibrated"
|
|
413
|
+
? calculatedResult(result, "sensor-dark-current-charge", input.exposure.kind === "eqe-temporal-photo-signal" ? "1.1.0" : "1.0.0", assumptions)
|
|
414
|
+
: approximationResult(result, "sensor-dark-current-charge", input.exposure.kind === "eqe-temporal-photo-signal" ? "1.1.0" : "1.0.0", [
|
|
415
|
+
...assumptions,
|
|
416
|
+
...(profile
|
|
417
|
+
.siteApplicability.kind ===
|
|
418
|
+
"uniform-site-mean-approximation"
|
|
419
|
+
? [
|
|
420
|
+
profile
|
|
421
|
+
.siteApplicability
|
|
422
|
+
.limitation
|
|
423
|
+
]
|
|
424
|
+
: [])
|
|
425
|
+
]);
|
|
426
|
+
}
|
|
427
|
+
//# sourceMappingURL=dark-current.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dark-current.js","sourceRoot":"","sources":["../../src/sensor/dark-current.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Module boundary and integration notes.
|
|
3
|
+
* Preflight all optical, spatial, spectral and temporal support into an internal owned execution plan
|
|
4
|
+
* without invoking provider code. Planning checks complete spatial/spectral/temporal support before
|
|
5
|
+
* invoking supplied synchronous radiance code. Queries use explicit environment directions, vacuum/air
|
|
6
|
+
* wavelength and opening-reference seconds. Optical throughput, optional local PSF and typed EQE
|
|
7
|
+
* produce photo expectations; callback invocation does not verify transport, visibility or
|
|
8
|
+
* calibration.
|
|
9
|
+
* Internal executor consumes a completed bounded geometric plan; returns no partial success on
|
|
10
|
+
* failure.
|
|
11
|
+
* @see docs/ENVIRONMENT_RAW_CAPTURE.md for equations, coordinate/unit conventions, blockers and
|
|
12
|
+
* support limits.
|
|
13
|
+
*/
|
|
14
|
+
import { type CalculationResult } from "../core/calculation-result.js";
|
|
15
|
+
import { type EvidenceProvenance } from "../core/evidence-provenance.js";
|
|
16
|
+
import { validateSceneRadianceEvaluationBindings, type SceneRadianceEvaluationRequest, type SceneRadianceEvaluationResult } from "../schema/scene-radiance.js";
|
|
17
|
+
import { calculateSensorEnvironmentRadianceQuery, type CalculateSensorEnvironmentRadianceQueryInput } from "../optics/sensor-environment-query.js";
|
|
18
|
+
import { calculateSceneRadianceToSensorIrradiance, type CalculateSceneRadianceToSensorIrradianceInput } from "../optics/scene-to-sensor-irradiance.js";
|
|
19
|
+
import { calculateSensorPsfIrradianceQuadrature, type CalculateSensorPsfIrradianceQuadratureInput } from "../optics/sensor-psf-quadrature.js";
|
|
20
|
+
import { calculateSensorSpatialSamplingQuadrature } from "./spatial-sampling-quadrature.js";
|
|
21
|
+
import { calculateSensorSpectralQuadrature } from "./spectral-quadrature.js";
|
|
22
|
+
import { createSensorEqeTemporalPhotoSignal } from "./temporal-photo-signal.js";
|
|
23
|
+
import type { CalculateSensorEqeTemporalExposureInput } from "./eqe-temporal-exposure.js";
|
|
24
|
+
import type { CalculateSceneToSensorIrradianceQuadratureInput } from "../optics/scene-to-sensor-quadrature.js";
|
|
25
|
+
/** Supplied synchronous code executes locally. Invocation does not prove physical transport. */
|
|
26
|
+
export type EnvironmentRadianceEvaluator = (request: Readonly<SceneRadianceEvaluationRequest>) => SceneRadianceEvaluationResult;
|
|
27
|
+
export interface CalculateEnvironmentSensorPhotoSignalInput {
|
|
28
|
+
temporalIntegrationId: string;
|
|
29
|
+
sensor: Omit<CalculateSensorEqeTemporalExposureInput, "samples">;
|
|
30
|
+
sceneBindings: CalculateSceneToSensorIrradianceQuadratureInput["sceneBindings"];
|
|
31
|
+
optics: Omit<CalculateSceneRadianceToSensorIrradianceInput, "sceneRadianceRequest" | "sceneRadianceResult" | "imagePointMm" | "fieldThroughput">;
|
|
32
|
+
motion: Pick<CalculateSensorEnvironmentRadianceQueryInput, "angularVelocityRadPerSec" | "timeReference" | "environmentDirectionConvention">;
|
|
33
|
+
temporalSampleCount: number;
|
|
34
|
+
/** Explicit unity field throughput; spatial vignetting is not inferred or applied. */
|
|
35
|
+
fieldThroughput: {
|
|
36
|
+
kind: "unity";
|
|
37
|
+
evidence: readonly EvidenceProvenance[];
|
|
38
|
+
limitation: string;
|
|
39
|
+
};
|
|
40
|
+
psf: {
|
|
41
|
+
kind: "not-applied";
|
|
42
|
+
evidence: readonly EvidenceProvenance[];
|
|
43
|
+
limitation: string;
|
|
44
|
+
} | {
|
|
45
|
+
kind: "sampled-local";
|
|
46
|
+
configuration: Pick<CalculateSensorPsfIrradianceQuadratureInput, "psf" | "psfWavelengthBasis" | "spatialModel">;
|
|
47
|
+
};
|
|
48
|
+
evaluateRadiance: EnvironmentRadianceEvaluator;
|
|
49
|
+
}
|
|
50
|
+
export interface EnvironmentSensorPhotoSignal {
|
|
51
|
+
sourceTargetProjectionCalculated: true;
|
|
52
|
+
providerCallbackExecuted: true;
|
|
53
|
+
providerTransportVerified: false;
|
|
54
|
+
sceneVisibilityCalculated: false;
|
|
55
|
+
productionPlanActivated: false;
|
|
56
|
+
providerEvaluationCount: number;
|
|
57
|
+
sourcePlane: "sensor-package-incident";
|
|
58
|
+
fieldThroughputEvidence: readonly EvidenceProvenance[];
|
|
59
|
+
fieldThroughputLimitation: string;
|
|
60
|
+
psfOmission: {
|
|
61
|
+
evidence: readonly EvidenceProvenance[];
|
|
62
|
+
limitation: string;
|
|
63
|
+
} | null;
|
|
64
|
+
psfRedistributionApplied: boolean;
|
|
65
|
+
photo: ReturnType<typeof createSensorEqeTemporalPhotoSignal>;
|
|
66
|
+
instants: readonly {
|
|
67
|
+
temporalSampleIndex: number;
|
|
68
|
+
timeSecondsFromOpeningReference: number;
|
|
69
|
+
psf: ReturnType<typeof calculateSensorPsfIrradianceQuadrature> | null;
|
|
70
|
+
evaluations: readonly {
|
|
71
|
+
query: ReturnType<typeof calculateSensorEnvironmentRadianceQuery>;
|
|
72
|
+
result: SceneRadianceEvaluationResult;
|
|
73
|
+
bindings: ReturnType<typeof validateSceneRadianceEvaluationBindings>;
|
|
74
|
+
optics: ReturnType<typeof calculateSceneRadianceToSensorIrradiance>;
|
|
75
|
+
}[];
|
|
76
|
+
}[];
|
|
77
|
+
}
|
|
78
|
+
/** Internal preflight is shared with the full-frame composer to bound all work before callbacks. */
|
|
79
|
+
interface EnvironmentPhotoPlan {
|
|
80
|
+
owned: Omit<CalculateEnvironmentSensorPhotoSignalInput, "evaluateRadiance">;
|
|
81
|
+
sceneBindings: CalculateSceneToSensorIrradianceQuadratureInput["sceneBindings"];
|
|
82
|
+
fieldThroughputEvidence: readonly EvidenceProvenance[];
|
|
83
|
+
spatialQuadrature: ReturnType<typeof calculateSensorSpatialSamplingQuadrature>["value"];
|
|
84
|
+
spectralQuadrature: ReturnType<typeof calculateSensorSpectralQuadrature>["value"];
|
|
85
|
+
count: number;
|
|
86
|
+
focus: CalculateSensorEnvironmentRadianceQueryInput["focus"];
|
|
87
|
+
instants: {
|
|
88
|
+
temporalSampleIndex: number;
|
|
89
|
+
time: number;
|
|
90
|
+
groups: {
|
|
91
|
+
node: CalculateSensorPsfIrradianceQuadratureInput["samples"][number]["node"];
|
|
92
|
+
taps: {
|
|
93
|
+
kernelSampleX: number;
|
|
94
|
+
kernelSampleY: number;
|
|
95
|
+
point: {
|
|
96
|
+
x: number;
|
|
97
|
+
y: number;
|
|
98
|
+
};
|
|
99
|
+
query: ReturnType<typeof calculateSensorEnvironmentRadianceQuery>;
|
|
100
|
+
}[];
|
|
101
|
+
}[];
|
|
102
|
+
}[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Preflight all optical, spatial, spectral and temporal support into an internal owned execution plan
|
|
106
|
+
* without invoking provider code.
|
|
107
|
+
*
|
|
108
|
+
* Planning checks complete spatial/spectral/temporal support before invoking supplied synchronous
|
|
109
|
+
* radiance code. Queries use explicit environment directions, vacuum/air wavelength and
|
|
110
|
+
* opening-reference seconds. Optical throughput, optional local PSF and typed EQE produce photo
|
|
111
|
+
* expectations; callback invocation does not verify transport, visibility or calibration.
|
|
112
|
+
* @param input - Omit<CalculateEnvironmentSensorPhotoSignalInput, "evaluateRadiance">. See the linked contract for coordinate, unit and profile binding semantics.
|
|
113
|
+
* @returns EnvironmentPhotoPlan. Return shape and scientific status are explicit; no calibration is inferred from successful execution.
|
|
114
|
+
*
|
|
115
|
+
* @see docs/API_REFERENCE.md for the root export and exact type graph.
|
|
116
|
+
*/
|
|
117
|
+
export declare function planEnvironmentSensorPhotoSignal(input: Omit<CalculateEnvironmentSensorPhotoSignalInput, "evaluateRadiance">): EnvironmentPhotoPlan;
|
|
118
|
+
/** Internal executor consumes a completed bounded geometric plan; returns no partial success on failure. */
|
|
119
|
+
export declare function executeEnvironmentSensorPhotoSignal(plan: ReturnType<typeof planEnvironmentSensorPhotoSignal>, evaluate: EnvironmentRadianceEvaluator): CalculationResult<EnvironmentSensorPhotoSignal>;
|
|
120
|
+
/** Generate, evaluate and integrate one site's actual local midpoint environment support. */
|
|
121
|
+
export declare function calculateEnvironmentSensorPhotoSignal(input: CalculateEnvironmentSensorPhotoSignalInput): CalculationResult<EnvironmentSensorPhotoSignal>;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=environment-photo-signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment-photo-signal.d.ts","sourceRoot":"","sources":["../../src/sensor/environment-photo-signal.ts"],"names":[],"mappings":"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"}
|