confocal op• Data kinds: कोई नहीं → pairs (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)
• Call: import fullseye as fs; fs.ledger.confocal_axial_response(z_min_um: 'float' = -40.0, z_max_um: 'float' = 40.0, n_points: 'int' = 401, wavelength_nm: 'float' = 550.0, numerical_aperture: 'float' = 0.2, n_medium: 'float' = 1.0, longitudinal_sa_um: 'float' = 0.0, target: 'str' = 'mirror') -> 'np.ndarray' (implementation को सीधे call करना हो तो import chromconf; chromconf.confocal_axial_response(z_min_um: 'float' = -40.0, z_max_um: 'float' = 40.0, n_points: 'int' = 401, wavelength_nm: 'float' = 550.0, numerical_aperture: 'float' = 0.2, n_medium: 'float' = 1.0, longitudinal_sa_um: 'float' = 0.0, target: 'str' = 'mirror') -> 'np.ndarray', registry से लेना हो तो opsoptics.get("confocal_axial_response"))
confocal microscope की axial response I(z) (focus से विचलन z [µm] के सापेक्ष detected intensity) को pairs के रूप में लौटाता है।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
target="mirror"(平らな鏡面)は I = [sin(u/2)/(u/2)]²、"point"(点の散乱体・粗面の散乱成分)は I = [sin(u/4)/(u/4)]⁴、u = 8π n z sin²(α/2)/λ(Corle–Chou–Kino 1986、Wilson & Sheppard 1984)。瞳は cos θ で一様な重み(この重みで上の式は高 NA でも厳密)。鏡面の FWHM は FWHM_X_MIRROR λ / (π n (1 − cos α)) ≈ 0.886 n λ / NA²(近軸)—— λ/NA² に比例。
longitudinal_sa_um(縁の光線の焦点 − 近軸焦点、+ は遠い側)を与えると、3 次の球面収差 W ρ⁴(W = −n s² LSA/4)を瞳の位相に入れて Gauss–Legendre で積分する。応答のピークはおおよそ LSA/2 へずれ、高さは下がり幅は広がる。値は無収差のピークを 1 とした比(Strehl に相当)。
z_min_um / z_max_um / n_points: 評価する z の格子(z_min < z_max、n_points は 3〜65536)。
wavelength_nm: 波長。numerical_aperture: 媒質中の NA = n sin α(0 < NA < n_medium)。
n_medium: 焦点の側の媒質の屈折率(空気 1)。target: "mirror" か "point"。
返り値: pairs(z [µm], I)。Raises ValueError: 非有限・文字列・bool の数、NA ≤ 0 または NA ≥ n_medium、z_min ≥ z_max、未知の target。
optics के सभी ops गणना से पहले input की जाँच करते हैं (कुछ भी चुपचाप पास नहीं होता):
• Unit argument के नाम में ही लिखी होती है — _mm / _um / _deg / _mrad। mm और µm की गड़बड़ी crash नहीं करती, बल्कि "सही दिखने वाला पर गलत उत्तर" देती है, इसलिए नाम से इसे रोका जाता है। मान के आकार से unit का अनुमान बिल्कुल नहीं लगाया जाता।
• String से ValueError — float('50') सफल हो जाता है, इसलिए बिना parse किया config value length के रूप में निकल जाता (मापा गया: thin_lens('50', '200') सही दिखने वाला 66.667 mm लौटा रहा था)। bool को भी True == 1 वाले implicit promotion के रूप में अस्वीकार किया जाता है।
• complex / masked array से ValueError (केवल real-valued slots; imaginary part को चुपचाप छोड़ना या mask हटाना अस्वीकार)। हर input पर NaN/Inf से ValueError।
• शून्य से भाग और उससे जुड़े मामलों को नाम लेकर अस्वीकार किया जाता है: focal length 0, radius of curvature 0, refractive index <= 0, पूरी तरह opaque aperture (सब 0, इसलिए normalisation 0/0), ऐसा PSF जिसका योग <= 0 हो, S0 = 0 वाला Stokes vector, और front focal point पर रखा object (image अनंत पर)।
• केवल 2 ops non-finite value लौटाते हैं, और वह भी contract के रूप में लिखा हुआ: depth_of_field hyperfocal distance से आगे far_mm = inf (hyperfocal distance की परिभाषा यही है) और gaussian_beam waist पर wavefront_radius_mm = inf (plane wavefront की radius of curvature)। दोनों साथ में एक finite साथी (far_is_infinite / curvature_per_mm) भी लौटाते हैं। इसके अलावा कोई भी चुपचाप आया NaN/Inf अंदर ही पकड़ा जाता है और ValueError देता है — "float64 overflow हुआ" और "उत्तर अनंत है" अलग-अलग दावे हैं, इसलिए पहले को दूसरे का चेहरा पहनाकर नहीं लौटाया जाता।
• Size की सीमा: generate होने वाले grid के लिए optics.MAX_GRID (4096), दिए गए field/PSF/aperture के लिए optics.MAX_FIELD_ELEMENTS (2^24), ABCD element chain के लिए optics.MAX_SYSTEM_ELEMENTS (1024), Zernike के लिए MAX_ZERNIKE_TERMS (512) / MAX_ZERNIKE_ORDER (40) / MAX_ZERNIKE_BASIS (2^25)। छोटे argument से बहुत बड़ा internal allocation होने वाले रास्तों (मापा गया: n_max=40 × 4096² पर 108 GB) को fail-closed ढंग से बंद किया गया है।
• भौतिक रूप से असंभव states भी अस्वीकार: degree of polarisation > 1 वाला Stokes vector, ऋणात्मक transmittance, ऋणात्मक intensity, और n-|m| odd जैसे अमान्य Zernike indices।
• 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 में दिए गए हैं।
• poc_chromatic_confocal — py -3.11 examples/poc_chromatic_confocal.py
pairs को input के रूप में लेते हैं)mtf50 · energy_to_photons · spectral_product · spectral_integral · spectral_stats · kubelka_munk_reflectance · hyperspectral_capture · film_thickness_fft
confocal)chromatic_confocal_probe · chromatic_confocal_spectrum · chromatic_confocal_peaks · chromatic_confocal_readout · chromatic_confocal_limits
*Provenance: chromconf.py — OPTICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.