chromatic_confocal_simulate — INTERFEROMETRY simulate op

• Data kinds: कोई नहीं → sweep (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)

• Call: import fullseye as fs; fs.ledger.chromatic_confocal_simulate(surface_um=0.0, wavelength_start_nm=500.0, wavelength_step_nm=0.5, n_bins=401, dispersion_um_per_nm=0.2, reference_wavelength_nm=600.0, peak_fwhm_nm=4.0, peak_counts=1000.0, background=10.0, noise=0.0, seed=0) (implementation को सीधे call करना हो तो import interferometry; interferometry.chromatic_confocal_simulate(surface_um=0.0, wavelength_start_nm=500.0, wavelength_step_nm=0.5, n_bins=401, dispersion_um_per_nm=0.2, reference_wavelength_nm=600.0, peak_fwhm_nm=4.0, peak_counts=1000.0, background=10.0, noise=0.0, seed=0), registry से लेना हो तो opsinterferometry.get("chromatic_confocal_simulate"))

उपयोग

ज्ञात height पर surface का confocal return spectrum synthesise करता है।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

A chromatic objective is built to have axial colour on purpose: each wavelength focuses at a different height, so only the wavelength focused *on the surface* passes the confocal pinhole. The spectrometer therefore sees a peak whose wavelength is the height::

lambda_peak = reference_wavelength_nm

+ (surface_um - 0) / dispersion_um_per_nm

i.e. surface_um = (lambda_peak - reference_wavelength_nm) * dispersion_um_per_nm, which is what chromatic_confocal_height inverts. The peak is modelled as a Gaussian of FWHM *peak_fwhm_nm* on a flat *background* pedestal.

surface_um: true height (0 = the reference wavelength focuses

exactly on it). May be negative — unlike a

time-of-flight distance, a height is signed.

wavelength_start_nm / wavelength_step_nm / n_bins: the spectrometer axis.

dispersion_um_per_nm: the axial chromatic dispersion, height per

nanometre. This is the calibration constant and

the units are in the name for a reason: a

per-micrometre reading of it is a 1000x error in

the height.

peak_fwhm_nm: spectral width of the confocal response.

peak_counts / background: peak height above, and level of, the pedestal.

noise / seed: additive Gaussian sigma and its integer seed.

Returns a 1-D float64 spectrum of n_bins non-negative intensities (clipped at 0, because a spectrometer cannot read negative light — and the clip is stated here rather than left as a surprise).

Ground truth: with noise=0 the "gaussian" estimator recovers *surface_um* exactly (measured 0.0e+00 to 3.6e-15 um over heights from -15 to +18 um), at any peak width and even with the peak two bins from the band edge, because the logarithm of a sampled Gaussian is exactly a parabola and the three-point fit is *local* — there is no Hilbert transform here, so the truncation failure that limits the coherence-scanning side does not exist on this one (pinned in the tests).

Raises ValueError: non-real / non-finite / string / bool parameters, a non-positive step / width / dispersion, negative *peak_counts* / *background* / *noise*, *n_bins* outside [3, MAX_SCAN_POINTS], and a *surface_um* whose wavelength falls outside the spectrometer band (the out-of-range case a real probe reports as "no surface").

उपयोग की विस्तृत guide

• coherence_scanning family guide

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• coherence_scanning — py -3.11 examples/coherence_scanning.py

वे अगले ops जिनसे type जुड़ता है (sweep को input के रूप में लेते हैं)

csi_envelope · csi_peak_position · chromatic_confocal_height

इसी category के (simulate)

csi_signal_simulate · csi_stack_simulate


*Provenance: interferometry.py — INTERFEROMETRY operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.