spectrometer_slit_image — OPTICS spectrometer op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.spectrometer_slit_image(design, slit_height_mm=2.0, wavelengths_nm=None, n_points=21, rule='vector') (implementation को सीधे call करना हो तो import gratingspec; gratingspec.spectrometer_slit_image(design, slit_height_mm=2.0, wavelengths_nm=None, n_points=21, rule='vector'), registry से लेना हो तो opsoptics.get("spectrometer_slit_image"))

उपयोग

लंबी slit की image को 3-D में trace करके smile (spectral line की वक्रता) और keystone (wavelength पर निर्भर spatial magnification) देता है।

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

design: czerny_turner_design の表。slit_height_mm: スリットの長さ(溝の向き)。

wavelengths_nm: 評価する波長(None なら帯域の 5 点)。n_points: スリットに沿った標本数(奇数にすると中心を含む)。

rule: "vector"(3 次元の格子の式、既定)/ "scalar"(面内の式を流用する壊した模型。

門の探針で、smile の閉形式から外れることを確かめるために残してある)。

返り値(table):

• x_mm / y_mm —— (波長, スリットの点) の像の位置(検出器の中心 = λ_c の中心光線)。

• smile_um —— スリットの端の像の x − 中心の像の x(波長ごと、正 = 長い波長の側)。

• smile_closed_um —— y'² (sin α + sin β) / (2 f_cam cos β)(放物線の近似)。

• curvature_radius_mm —— ρ = f_cam cos β / (sin α + sin β)。

• keystone_um —— スリットの端の像の y − 中心波長での y(波長ごと)。keystone_closed_um = y'(λ_c) (1 / cos(β − β_c) − 1)。

• anamorphic_trace / anamorphic_closed —— スリットの幅方向の倍率 dx'/dx_s を追跡と閉形式(f_cam / f_col)(cos α / cos β) / cos²(β − β_c)(平らな検出器)で。

Raises ValueError: 設計の表でない、帯域の外、高さ ≤ 0、rule の名前の誤り、伝わらない光。

पूरी family का input contract (fail-closed)

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।

उपयोग की विस्तृत guide

• optics_imaging 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 करते हैं)

• poc_spectrometer_illumination — py -3.11 examples/poc_spectrometer_illumination.py

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

abcd_matrix · wavefront_stats · sfr_from_edge · paraxial_trace · seidel_coefficients · spot_stats · tolerance_analysis · wavefront_from_opd

इसी category के (spectrometer)

grating_dispersion · czerny_turner_design · spectrometer_bandpass · spectrometer_spectrum


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