csi_signal_simulate — INTERFEROMETRY simulate op

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

• Call: import fullseye as fs; fs.ledger.csi_signal_simulate(surface_um=6.0, z_start_um=0.0, z_step_um=0.05, n_planes=241, wavelength_um=0.6, envelope_fwhm_um=2.8, envelope_sigma_um=None, bias=0.5, amplitude=0.4, reflectivity=1.0, noise=0.0, seed=0) (implementation को सीधे call करना हो तो import interferometry; interferometry.csi_signal_simulate(surface_um=6.0, z_start_um=0.0, z_step_um=0.05, n_planes=241, wavelength_um=0.6, envelope_fwhm_um=2.8, envelope_sigma_um=None, bias=0.5, amplitude=0.4, reflectivity=1.0, noise=0.0, seed=0), registry से लेना हो तो opsinterferometry.get("csi_signal_simulate"))

उपयोग

ज्ञात surface height पर एक pixel का z-scan interferogram synthesise करता है।

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

The coherence-scanning forward model, and the reason every other operator here has an exact answer to be checked against::

I(z) = bias + amplitude*reflectivity * exp(-(z-z0)^2 / 2 sigma^2)

• cos(4*pi*(z-z0)/wavelength)

with z0 = surface_um. The 4 is the double pass — light goes down to the surface and back, so one fringe is wavelength/2 of *height*, not a whole wavelength. Getting that factor wrong is a clean 2x in every height this module produces, which is why it is written out here rather than hidden in a constant.

surface_um: the true surface height z0, in the scan's own

coordinate. Need not land on a scan plane — the

sub-step case is the interesting one and the tests use

it deliberately.

z_start_um/z_step_um/n_planes: the scan grid,

z_k = z_start_um + k*z_step_um.

wavelength_um: mean wavelength of the source.

envelope_fwhm_um: the FWHM of the envelope along the scan axis. Give

this *or* envelope_sigma_um, never both. It is

half the source coherence length, because the

double pass makes OPD = 2z;

csi_design returns both under separate names

for exactly that reason.

bias/amplitude: the intensity pedestal a and fringe amplitude b.

reflectivity: per-pixel scale on the fringe amplitude (>= 0). It

scales the envelope and therefore

csi_contrast_map, and — this is the honest part

— it does not move the envelope peak, so it does not

bias csi_peak_position. A *spatially varying*

reflectivity biases nothing either; what does bias the

centroid is where the peak sits in the window, and that

is documented on csi_peak_position.

noise: additive Gaussian sigma (0 = the exact model).

seed: integer seed for that noise (no None).

Returns a 1-D float64 array of n_planes intensities.

Ground truth: with noise=0 and the surface centred in the scan, the "gaussian" estimator of csi_peak_position returns *surface_um* to 1.43e-07 um over sub-step offsets, and to 2.9e-14 um when the envelope is given analytically instead of through the Hilbert transform (both pinned in the tests).

Raises ValueError: a non-real / non-finite / string / bool parameter, a non-positive z_step_um / wavelength_um / envelope width, a negative bias / amplitude / reflectivity / noise, n_planes outside [3, MAX_SCAN_POINTS], a z_step_um at or past the wavelength_um/4 Nyquist ceiling, and a *surface_um* outside the scan range (which is the case a real instrument reports as "no surface found", not as a height).

उपयोग की विस्तृत 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_stack_simulate · chromatic_confocal_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.