oct op• Data kinds: कोई नहीं → table (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)
• Call: import fullseye as fs; fs.ledger.oct_dispersion_broadening(material='SILICA', length_mm=10.0, center_nm=840.0, bandwidth_nm=50.0) (implementation को सीधे call करना हो तो import octscan; octscan.oct_dispersion_broadening(material='SILICA', length_mm=10.0, center_nm=840.0, bandwidth_nm=50.0), registry से लेना हो तो opsoptics.get("oct_dispersion_broadening"))
केवल sample arm में मौजूद material (लंबाई L, आना-जाना) के dispersion mismatch से A-scan का peak कितने गुना चौड़ा होता है (table, closed form)।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
往復の位相 φ(k) = 2 L k (n(k) − n_g(k0))(群遅延は参照腕で合わせた前提)を k0 で展開し、φ₂ = 2L d²(nk)/dk²、φ₃ = 2L d³(nk)/dk³。ガウス光源(パワーの標準偏差 σ = Δk/2.355)の包絡は √(1 + σ⁴ φ₂²) 倍に広がる(2 次まで厳密、3 次は非対称な裾)。数値補償の係数は a2 = φ₂/2 [µm²]、a3 = φ₃/6 [µm³] で、展開の中心は k0 = 2π/λ0(k_center)—— oct_dispersion_compensate / oct_ascan には a2・a3 と同じ k_center を渡す(中心がずれると a2 が 3 a3 δk だけ変わる)。層そのものの分散(厚い樹脂の底の界面が広がる)も同じ式で、L に層の厚さを入れる。
返り値: dict(kind="oct_dispersion", phi2_um2, phi3_um3, a2, a3, broadening, group_index, gvd_fs2_per_mm)。
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_industrial_oct — py -3.11 examples/poc_industrial_oct.py
table को input के रूप में लेते हैं)abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd
oct)oct_design · oct_interferogram · oct_bscan_simulate · oct_from_spectra · oct_k_linearize · oct_dispersion_estimate · oct_dispersion_compensate · oct_ascan
*Provenance: octscan.py — OPTICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.