spectrometer op• Data kinds: table × pairs → pairs
• Call: import fullseye as fs; fs.ledger.spectrometer_spectrum(design, spectrum, slit_width_um=25.0, pixel_um=14.0, input_na=0.1, max_order_multiple=3, higher_order_efficiency=0.3, longpass_nm=None, oversample=8, pupil='circular') (implementation को सीधे call करना हो तो import gratingspec; gratingspec.spectrometer_spectrum(design, spectrum, slit_width_um=25.0, pixel_um=14.0, input_na=0.1, max_order_multiple=3, higher_order_efficiency=0.3, longpass_nm=None, oversample=8, pupil='circular'), registry से लेना हो तो opsoptics.get("spectrometer_spectrum"))
input spectrum → detector pixels की readings (first order की image पर higher-order images का overlap)।
> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।
design: czerny_turner_design の表。spectrum: pairs(λ [nm] 昇順, 分光放射輝度 ≥ 0、nm あたり)。slit_width_um / pixel_um / input_na / pupil: spectrometer_bandpass と同じ(装置関数を決める)。max_order_multiple: 設計の次数 m の何倍までの次数を足すか(1 = 高次なし、3 なら m, 2m, 3m)。higher_order_efficiency: 高次の回折効率の 1 次に対する比(次数によらず一定の模型)。
longpass_nm: 入口のロングパスのフィルタの端(これより短い光を 0 にする。None = フィルタなし)。
oversample: 画素を何分割して像を置くか(畳み込みの精度)。
返り値: pairs(画素の中心の波長 [nm]、1 次の校正で、読み(nm あたりの放射輝度 × 帯域の幅の単位))。装置関数は中心波長のもの(スリットの像と回折の幅の波長による変化は入れない —— 帯域ごとの幅は spectrometer_bandpass が出す)。
Raises ValueError: 入力が粗すぎて装置関数の FWHM の 1/3 より細かく標本化されていない、昇順でない・負・非有限のスペクトル、設計の表でない、引数の範囲外。
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_spectrometer_illumination — py -3.11 examples/poc_spectrometer_illumination.py
pairs को input के रूप में लेते हैं)mtf50 · energy_to_photons · spectral_product · spectral_integral · spectral_stats · kubelka_munk_reflectance · hyperspectral_capture · film_thickness_fft
spectrometer)grating_dispersion · czerny_turner_design · spectrometer_bandpass · spectrometer_slit_image
*Provenance: gratingspec.py — OPTICS operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.