csi_stack_simulate — INTERFEROMETRY simulate op

• Data kinds: depth → zscan

• Call: import fullseye as fs; fs.ledger.csi_stack_simulate(height_um, 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=None, noise=0.0, seed=0) (implementation को सीधे call करना हो तो import interferometry; interferometry.csi_stack_simulate(height_um, 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=None, noise=0.0, seed=0), registry से लेना हो तो opsinterferometry.get("csi_stack_simulate"))

उपयोग

interference microscope द्वारा record किया जाने वाला (Z, H, W) scan stack synthesise करता है।

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

The per-pixel version of csi_signal_simulate: every pixel of the *height_um* map gets its own coherence envelope centred on its own height, on a shared scan grid. The scan axis is FIRST — a stack is what a camera streams while the objective moves, one frame per plane — which is the same layout as a video (T, H, W) and *not* the (H, W, T) of a photoncount.dtof_cube_simulate histogram cube.

That resemblance to video is not cosmetic and it is measured, not assumed:

handing a translating-grating clip to csi_height_map does not raise, it returns a height map (see the type note in opsinterferometry for the numbers). The registry therefore declares a separate zscan type.

height_um: 2-D (H, W) map of true surface heights, in the scan's own

coordinate. Every height must lie inside the scan range.

reflectivity: optional (H, W) map of per-pixel fringe-amplitude scale

(>= 0). None = uniform 1. A pixel with reflectivity 0 has

no fringes at all and csi_height_map will refuse it

rather than report the first plane.

(the remaining parameters are csi_signal_simulate's, applied to every pixel; noise is sampled once for the whole stack from *seed*.)

Returns a float64 (n_planes, H, W) stack.

Ground truth: with noise=0, csi_height_map(stack, ..., mode="gaussian") returns *height_um* with an RMS error of 2.08e-06 um over a tilted plane spanning 5.0-7.0 um of a 0-12 um scan, and the per-pixel result is bit-for-bit identical to running csi_peak_position on each column separately (both pinned in the tests). Widening the same plane to 2.0-10.0 um degrades that to 7.06e-03 um — envelope truncation at the scan ends, not the estimator.

Raises ValueError: everything csi_signal_simulate raises, plus a non-2-D / empty *height_um*, a *reflectivity* that is negative or a different shape, any height outside the scan range, and a stack over MAX_STACK_ELEMENTS (n_planes*H*W grows fast — 241 planes of 256x256 is 1.9x the cap). The element cap is applied before the float64 promotion of *height_um*, not after.

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

• poc_interferometry_step — py -3.11 examples/poc_interferometry_step.py

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

csi_height_map · csi_contrast_map

इसी category के (simulate)

csi_signal_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.