nirs4all.synthesis.instruments module
Instrument archetype simulation for synthetic NIRS data generation.
This module provides realistic simulation of different NIR instrument types, including their optical characteristics, noise models, and measurement configurations. It also supports multi-sensor systems that stitch together signal chunks from different wavelength ranges, and multi-scan averaging.
- Key Features:
20+ instrument archetypes covering benchtop, handheld, process, and embedded
Multi-sensor stitching simulation (combining multiple detector ranges)
Multi-scan averaging with realistic noise reduction
Detector-specific noise models (shot, thermal, 1/f)
Wavelength calibration effects
Stray light and etalon interference
References
Workman Jr, J., & Weyer, L. (2012). Practical Guide and Spectral Atlas for Interpretive Near-Infrared Spectroscopy. CRC Press.
Siesler, H. W., Ozaki, Y., Kawata, S., & Heise, H. M. (2002). Near-Infrared Spectroscopy: Principles, Instruments, Applications. Wiley-VCH.
ASTM E1944-98(2017): Standard Practice for Describing and Measuring Performance of NIR Instruments.
- class nirs4all.synthesis.instruments.DetectorType(value)[source]
Bases:
StrEnumTypes of NIR detectors.
- INGAAS = 'ingaas'
- INGAAS_EXTENDED = 'ingaas_ext'
- MCT = 'mct'
- MEMS = 'mems'
- PBS = 'pbs'
- PBSE = 'pbse'
- SI = 'si'
- class nirs4all.synthesis.instruments.InstrumentCategory(value)[source]
Bases:
StrEnumCategories of NIR instruments.
- BENCHTOP = 'benchtop'
- DIODE_ARRAY = 'diode_array'
- EMBEDDED = 'embedded'
- FILTER = 'filter'
- FT_NIR = 'ft_nir'
- HANDHELD = 'handheld'
- PROCESS = 'process'
- class nirs4all.synthesis.instruments.MonochromatorType(value)[source]
Bases:
StrEnumTypes of wavelength selection mechanisms.
- AOTF = 'aotf'
- DMD = 'dmd'
- FABRY_PEROT = 'fabry_perot'
- FILTER_WHEEL = 'filter_wheel'
- FT = 'fourier_transform'
- GRATING = 'grating'
- LVF = 'lvf'
- nirs4all.synthesis.instruments.get_instrument_wavelength_info() dict[str, dict[str, Any]][source]
Get detailed information about all instrument wavelength grids.
- Returns:
n_wavelengths: Number of wavelength points
wavelength_start: Start wavelength (nm)
wavelength_end: End wavelength (nm)
mean_step: Mean wavelength step (nm)
- Return type:
Dictionary mapping instrument names to info dicts containing
Example
>>> info = get_instrument_wavelength_info() >>> print(info["micronir_onsite"]) {'n_wavelengths': 125, 'wavelength_start': 908.0, ...}
- nirs4all.synthesis.instruments.get_instruments_by_category() dict[str, list[str]][source]
Get all instruments organized by category.
- Returns:
Dictionary mapping category name to list of instrument names.
- nirs4all.synthesis.instruments.list_instrument_archetypes(category: InstrumentCategory | None = None) list[str][source]
List available instrument archetype names.
- Parameters:
category – Optional filter by category.
- Returns:
List of archetype names.
Example
>>> list_instrument_archetypes(InstrumentCategory.HANDHELD) ['viavi_micronir', 'scio', 'tellspec', 'linksquare', 'siware_neoscanner']
- nirs4all.synthesis.instruments.list_instrument_wavelength_grids() list[str][source]
List all available predefined instrument wavelength grids.
- Returns:
List of instrument identifiers.
Example
>>> grids = list_instrument_wavelength_grids() >>> print(grids[:3]) ['micronir_onsite', 'scio', 'neospectra_micro']