grating_interf op• Data kinds: कोई नहीं → table (केवल arguments से तय होने वाला op — यह कोई image या data input नहीं लेता)
• Call: import fullseye as fs; fs.ledger.darkfield_scatter_relation(darkfield=None, sigma_urad=None, distance_mm=23.2, analyzer_period_um=2.0, thickness_mm=None, wavelength_nm=None) (implementation को सीधे call करना हो तो import gratinginterf; gratinginterf.darkfield_scatter_relation(darkfield=None, sigma_urad=None, distance_mm=23.2, analyzer_period_um=2.0, thickness_mm=None, wavelength_nm=None), registry से लेना हो तो opsoptics.get("darkfield_scatter_relation"))
dark field D (visibility का अनुपात) और scattering-angle वितरण की चौड़ाई σ के बीच रूपांतरण (Gaussian scattering का प्रकाशित सूत्र)।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
散乱角の分布がガウス(標準偏差 σ、格子の線に直交する向きの成分)なら、縞の可視度は D = exp(−2π² σ² d²/p2²)(Strobl 2014, Sci. Rep. 4, 7243 の式 7 をガウスで積分した形 = Bech ら 2010, Phys. Med. Biol. 55, 5529 の線拡散係数の式)。d は試料(第 1 格子)から分析格子までの距離、p2 は分析格子の周期。逆に σ = (p2/(π d √2))·√(−ln D)。
darkfield と sigma_urad のどちらか一方を渡す(スカラーか配列)。thickness_mm を渡すと線拡散係数 ε = σ²/t [µrad²/mm] を返す(σ² が厚さに比例する、という仮定の下で)。wavelength_nm を渡すと自己相関長 ξ = λ d/p2 [µm] を返す(暗視野が感じる構造の大きさの目安)。
配列の D で (0, 1] の外の画素(雑音で 1 を超えた・0 以下)は σ を NaN にして数を n_invalid に返す。スカラーで (0, 1] の外なら拒否する(黙って 0 や負の σ を返さない)。
返り値 dict: darkfield / sigma_urad / diffusion_coeff_urad2_per_mm(t があるとき)/ correlation_length_um(λ があるとき)/ angular_sensitivity(2π d/p2)/ n_invalid。Raises ValueError: darkfield と sigma_urad の両方 / どちらも無い、σ < 0、スカラーの D が (0, 1] の外、正でない距離・周期・厚さ・波長、NaN/Inf。
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 में दिए गए हैं।
• grating_interferometry — py -3.11 examples/grating_interferometry.py
table को input के रूप में लेते हैं)abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd
grating_interf)talbot_grating_design · grating_stepping_simulate · grating_three_image_retrieve · talbot_carpet · talbot_source_visibility · grating_step_period_estimate · dpc_integrate
*Provenance: gratinginterf.py — OPTICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.