Page
ENLIGHTEN™ Spectroscopy Software
Operator’s Manual
Application version: 4.0.11
Jun 7, 2023
808 Aviation Parkway, Suite 1400, Morrisville, NC 27560 USA
wasatchphotonics.com | +1 919.544.7785
Table of Contents
2.1 Wasatch Photonics Spectrometers 8
2.1.1 Series-XL Spectrometers (Andor cameras) 8
2.1.2 Series-X and Series-XM Spectrometers (Hamamatsu detectors) 8
2.1.3 Series-XS Spectrometers (Sony IMX detectors) 9
3.3 Application Installation 12
3.3.1 Application Installation (Windows) 12
3.3.2 Uninstalling ENLIGHTEN™ (Windows) 15
3.3.4 Application Installation (Linux and Raspberry Pi) 16
3.3.5 Application Installation (MacOS) 17
3.4.1 Andor Driver Pack (XL-Series spectrometers) 19
3.4.2 Adafruit FT232H libusbK driver (SPI-based spectrometers) 19
4 Unboxing Your Spectrometer 20
4.2 Series-XL Spectrometers 21
4.3 System Power Requirements 21
5.1 Launching ENLIGHTEN™ (Windows) 22
5.2 Launching ENLIGHTEN™ (Linux) 22
5.3 Launching ENLIGHTEN™ (MacOS) 23
6.1 ENLIGHTEN™ for Quick Start 25
6.2 Sampling Parameters for Quick Start 26
6.2.1 Quick Start with Internal Laser 26
6.2.2 Quick Start with External Laser 27
6.2.2.1 Focusing Raman Probe for Quick Start 27
6.2.3 Quick Start with External Light Source 29
7.1.1.6 Temperature Control 37
7.1.1.9.2 Baseline Correction 40
7.1.1.9.3 Temperature Control 41
7.1.1.9.4 Post-Processing Options 41
7.1.1.9.4.1 Raman Intensity Correction 42
7.1.1.9.4.2 Peak Sharpening 42
7.1.3.1 Freezing / Unfreezing the Y-Axis 43
7.2.2.1 Renaming Measurements 45
7.3.1.1 Saved Data Location 49
7.3.1.2 Save Options – File Formats 50
7.3.1.3 Save Options – Optional Fields 50
7.3.1.6 Wavenumber Correction ASTM Selection 52
7.3.1.7 Batch Data Collection 52
7.3.1.7.1 Clear Thumbnails before Batch 55
7.3.1.7.2 Export Thumbnails after Batch 56
7.3.1.7.3 Take Dark before Enabling Laser 56
7.3.2 Live Spectrum (uncorrected) 56
7.4.1.1 Gain and Offset Correction 58
7.4.1.2 Bad Pixel Correction 59
7.4.4 Administrative Features 62
7.6.1 Detector TEC Temperature 63
7.6.2 Laser TEC Temperature 63
8.1.1 Wavenumber Correction 65
8.2 Reflectance and Transmission Techniques 66
8.4 Taking Dark and Reference Spectra 68
9.1 External Hardware Triggering 69
10.1 Putting Your Best Peak Forward 70
10.1.1 KnowItAll Readiness: Dark Subtraction 70
10.1.2 KnowItAll Readiness: Baseline Correction 70
10.1.3 KnowItAll Readiness: Raman Intensity Correction 71
10.1.4 KnowItAll Readiness: Peak Sharpening 71
10.1.5 KnowItAll Readiness: Wavenumber Correction 72
10.3 Understanding Matching Scores 76
12.2 Common Error Conditions 78
12.2.1 Windows Device Manager (libusb-win32) 78
12.2.2 Multiple / Conflicting Programs 81
12.4 Replacement Power Brick 82
13 Appendix A: Command-Line Options 83
14 Appendix B: Keyboard Shortcuts 84
15 Appendix C: .INI file format 85
16 Appendix D: Saved Data Formats 87
16.1 Row-ordered CSV (Dash) 87
16.3 Session Exports (Column-ordered) 89
16.4 Session Exports (Row-ordered) 90
17 Appendix E: Label Templates 91
18 Appendix F: Administrative Features 93
19 Appendix G: Cypress Drivers 95
20 Appendix H: SPI Spectrometers 99
20.1 Zadig libusbK driver (Windows-only) 99
21 Appendix I: Order of Operations 102
22.5.1 EnlightenPluginField 109
22.5.2 EnlightenPluginConfiguration 110
ENLIGHTEN™ is an interactive graphical spectroscopy application designed to let users quickly and easily view and save spectra from one or more connected Wasatch Photonics spectrometers. It is intended to provide access to all of the most common spectroscopy functions via an intuitive interface that allows new users to begin collecting high quality data quickly.
This manual makes reference to the following external documents, which you can request for additional supporting detail.
Advanced functions applicable to expert users or atypical (OEM, R&D) use-cases will be called-out with this icon. |
Scientific and mathematical insights will be identified with this icon. |
Potentially hazardous operations will be identified with this icon. |
If you are comfortable with Windows and familiar with spectroscopy and spectrometer control, feel free to jump right in and start using the program. Without an administrative password, there is nothing you can do to damage your computer or spectrometer hardware* by clicking buttons to see what they do. ENLIGHTEN™ is designed to be as intuitive and user-focused as possible, so dive in and have fun!
* Please read the following guidance on eye safety before using a laser-equipped spectrometer.
A more-detailed discussion of laser eye safety, including proper use of the hardware safety features included with your spectrometer, can be found in the Series-X Raman Spectrometer Operation Manual. If you do not have a copy of this free document, please request one from your sales representative or distributor, or contact Wasatch Photonics at https://wasatchphotonics.com. |
Although a full discussion of laser eye safety is out of scope for this document, note that if you are using a Raman spectrometer with internal or external laser, it is of paramount importance to properly follow all recommended safety precautions, including:
For additional information see the following online resources:
Please ensure you have received adequate training from the Laser Safety Officer for your company / facility. |
ENLIGHTEN™ is provided primarily to support Wasatch Photonics spectrometers and data collection from those systems. However, recognizing that spectrometers are not used in isolation, the application is also gradually extending support for other products and peripherals used in typical optical and chemical lab environments.
ENLIGHTEN™ supports all current and most historical Wasatch Photonics products, including USB, BLE (Bluetooth Low-Energy) and SPI (Serial Peripheral Interface) communications.
Series-XL spectrometers use Andor cameras like the iDus DV416A-LDC-DD and iDus DU490A. Not all Andor camera features are supported by ENLIGHTEN™ software; full feature support is available through Solis-S, available separately from Andor.
ENLIGHTEN™ support includes integration time, detector TEC setpoint and monitoring, shutter control[a] and high-gain mode. Supported models include:
Series-X and -XM spectrometers use USB communication and Hamamatsu CCD (silicon) and photodiode array (InGaAs) detectors. ENLIGHTEN™ provides full control of all spectrometer features on the following models:
Series-XS spectrometers are based on Sony IMX series active-pixel CMOS detectors, and support a variety of communication buses including USB, BLE (Bluetooth Low-Energy) and, for embedded environments, SPI (Serial Peripheral Interface). ENLIGHTEN™ supports the full range of spectrometer features implemented on each bus. Supported models include:
ENLIGHTEN™ should support all legacy Wasatch Photonics USB spectrometers including an EEPROM and supporting the Feature Identification Protocol (FID, specified in ENG-0001).
ENLIGHTEN™ can be used to control external lasers, lamps, LEDs, arc-lamps and other light sources (or the shutters thereof) with a suitably-equipped spectrometer. Light source control is currently limited to a single on/off discrete signal, available as either a 3V3 LVTTL or 5V TTL GPIO.
External light source control is provided via the Lamp Enable checkbox described under Accessory Control.
Sometimes you don’t want to control external light sources, or aren’t conveniently able to, but instead prefer the light source (or another sensor or system component) to trigger acquisitions and provide synchronization across measurements. See section on Triggering for additional information.
Current versions of ENLIGHTEN™ are tested and supported on the following platforms:
On all platforms, ENLIGHTEN™ is compiled and released as a 64-bit application. It will therefore be found in the “Program Files” folder of Windows (rather than “Program Files (x86)”).
Current versions of ENLIGHTEN™ are no longer compatible with Windows 7 and 8. This is due to the deprecation of Windows 7 by Microsoft and by the Python language consortium, the language in which ENLIGHTEN™ is written:
ENLIGHTEN™ is tested and supported on the following Linux distributions:
Builds of ENLIGHTEN™ for the ARM-based Raspberry Pi are available upon request.
Not all features are available under Linux. At writing, features not implemented for Linux include:
ENLIGHTEN™ is tested and supported on the following MacOS distributions:
Not all features are available under MacOS. At writing, features not implemented for MacOS include:
Technically Raspberry Pi OS is just another version of Linux, so does it really merit its own section? Unfortunately it does, because the Raspberry Pi uses an ARM CPU and many ENLIGHTEN dependencies (“wheels” in Python) either aren’t available or have different requirements on the RPi than on Intel x86/x64 architectures. In particular, Qt’s popular PySide2 environment is not fully supported on the latest Raspberry Pi releases, nor TensorFlow for plugins performing AI, so both the build process and supported feature set change somewhat.
ENLIGHTEN has most recently been built and tested on the following platform:
At writing, features not implemented for Raspberry Pi include:
The most recent released version of ENLIGHTEN™ is always available for download at the following URL:
Archive installers for older versions are provided for fault reproduction and version-locked environments, but may include bugs which have been identified and fixed in newer releases. Users are always encouraged to use the latest release version.
More “bleeding edge” developmental versions are posted below, if you’d like to become an unofficial beta tester. Users are encouraged to proceed with caution as these versions are very much developmental, and Wasatch Photonics is not responsible for any mishaps that may occur as a result of downloading beta versions of the software.
ENLIGHTEN™ can be installed by double-clicking the ‘ENLIGHTEN-Setup64-x.y.z.exe’ executable installer (where x.y.z indicated the version number of the software to be installed):
If running Windows 11, a message will prompt the user of a message from Microsoft Defender SmartScreen:
Fortunately, you can continue with installation by clicking the words ‘More info’. This action reveals an option to ‘Run anyway’; click that button:
Next, a Setup window appears asking for confirmation regarding the ‘Start Menu Folder’ location. Click ‘Next’ to continue:
To create a desktop shortcut for the program, click ‘Next’:
Finally, you are ready to install! Click ‘Install’:
When the installation completes successfully, you will see a message like the following, with an ENLIGHTEN™ shortcut icon on the desktop. Click Finish to complete the installation:
The ENLIGHTEN™ installer automatically installs the libusb-win32 drivers used to communicate with your spectrometer. If you experience difficulties communicating with your spectrometer, it may be worth visiting the Windows Device Manager and confirming that the libusb-win32 drivers are installed and working correctly. See section Troubleshooting for additional information.
To view a demonstration of the download and installation process please visit: Download the Software
If you need to install ENLIGHTEN™ via an automated script and wish to disable interactive user dialogs, you can run as follows:
ENLIGHTEN-Setup64.exe-x.y.z /SILENT
or
ENLIGHTEN-Setup64.exe-x.y.z /VERYSILENT
The installer is built using Inno Setup 5, so see additional command-line switches documented here:
http://www.jrsoftware.org/ishelp/index.php?topic=setupcmdline
We hope you decide to keep using it, but if you need to remove ENLIGHTEN™ from a computer, the application may be uninstalled using the Windows Add/Remove Software control panel:
Users are recommended to uninstall earlier versions of ENLIGHTEN™ before installing new updates.
(In ENLIGHTEN™ 3.1.5 and later, the Windows ENLIGHTEN™ installer automatically removes previous versions of ENLIGHTEN™.)
ENLIGHTEN™ is distributed for Linux as a GNU tar archive containing the binary executable with a few runtime configuration files. You can unarchive the tarball as follows:
$ tar zxvf ENLIGHTEN-linux-x.y.z.tgz
$ cd ENLIGHTEN-x.y.z
The only installation step is to install the udev rules necessary to allow non-root users access to USB devices with our Vendor and Product IDs:
$ sudo cp udev/10-wasatch.rules /etc/udev/rules.d
Finally, run the ENLIGHTEN™ executable:
$ ./EnlightenGUI
Outside of this section, the majority of this manual assumes a Windows platform, with Windows screenshots, pathnames etc. However, all described functionality should be supported under Linux with minor differences. For instance, on Linux, spectra is stored under ~/EnlightenSpectra, where the runtime configuration file enlighten.ini can also be found.
ENLIGHTEN™ is distributed for MacOS as a zipfile. When you open the zip file, you should find a single application named “ENLIGHTEN-x.y.z”. This file should be dragged out of your Downloads folder to Applications or another directory on your hard drive (it will not run correctly within ~/Downloads).
As an unsigned application, the first time you try to launch ENLIGHTEN™ from the Finder, you will need to right-click on the icon and select ‘Open’.
In testing, it appears you have to actually take this step twice: the first time you attempt to open the downloaded application, it will only provide two options (Move to Trash and Cancel). The second time you try to ctrl-click Open the application, it will provide a third option, Open. Fortunately, you only have to go through this process the first time launching the application after download.
Some ENLIGHTEN™ features require additional software to be installed to support full functionality. Generally these are 3rd-party libraries and drivers which Wasatch cannot redistribute directly for license reasons.
To use XL-Series spectrometers with the Andor camera system, ENLIGHTEN™ requires the Andor Driver Pack 2 be installed. This is currently available from Andor at the following link:
https://andor.oxinst.com/downloads/view/andor-driver-pack-2.104.30065.0-(ccd,iccd-emccd)
If using a spectrometer equipped with SPI (Serial Peripheral Interface) communication (as opposed to the USB interface supported by most of our desktop spectrometers), you will need a hardware adapter and special driver to control the spectrometer from ENLIGHTEN.
Please find SPI instructions in Appendix H: SPI Spectrometers.
Occasionally, Wasatch may make updated firmware binaries available to customers who wish to re-flash their devices, either to bring them up to the latest production release, or to enable custom functionality. Full guidance on updating spectrometer firmware is beyond the scope of this manual, but the ENLIGHTEN™ distribution includes extra files designed to simplify field-updates. Specifically, the Enlighten directory under C:\Program Files (x86)\Wasatch Photonics\ENLIGHTEN should contain these extra files:
These files contain the Device Manager drivers needed to let your Windows computer attach to the spectrometer through special interfaces supporting firmware updates. The CyUSB3 drivers support FX2-based spectrometers, which is basically everything with a Hamamatsu detector. The DFU_Drivers support ARM-based spectrometers, which are basically Series-XS spectrometers using the IMX385 detector. The drivers are packaged as zipfiles specifically so they won’t be used by accident; you need to expand them within your ‘Documents’ directory to use them. For sample instructions on updating FX2 firmware, see:
https://github.com/WasatchPhotonics/Wasatch.NET/blob/master/FIRMWARE.md
The package containing your Wasatch Photonics order will have a spectrometer with, or without, an embedded laser. Be sure to note any special markings or labels on the outside of the package before opening it. Depending on the spectrometer model, one of the following USB cables will be included: A-to-B, A-to-C, or A-to-Micro B. The included USB cable is 2 meters in length. Longer cables may work, but may increase opportunities for electrical interference and communication issues. An external power supply will also be included, if applicable (DC transformer brick, or “wall wart”). You may also reference our video on how to ‘Connect the Spectrometer.’
If the unit has an embedded laser, it may also have a laser interlock key and continuity interlock (implemented as a microphone jack), both of which are needed in order to fire the laser. If the system has an external probe, a probe and fibers will most likely be included as well. There may be an accompanying thumb drive containing the ENLIGHTEN™ installer, but if not, you can follow the directions in the Installation section of this manual to assist in getting the software on your computer.
After installing the ENLIGHTEN™ software, you can start plugging in and playing! If your spectrometer requires external power, always supply power to the unit before establishing a USB connection from the spectrometer to the computer or laptop where ENLIGHTEN™ will be running. It is important to make sure that you leave any fan intake and outtake unblocked. Not doing so can seriously hinder the spectrometer’s ability to cool the detector.
Next, connect the USB cable from the spectrometer to the computer. After Windows finds the device, you can launch the software to collect your spectra. If your spectrometer does not require external power, you can connect the unit via USB to the computer right away and then launch the software. To view a demonstration of this process please visit: Connect the Spectrometer
Once you get to the point where you can set up your experiment, it is important to remember to never touch any exposed optical components. Doing so will deposit dirt and oils from your hands and fingertips onto the optics that can distort the resultant spectral signal. However, you can clean the aforementioned dirt and oils from the optical components by using cotton tipped applicators moistened with isopropyl alcohol to gently wipe away the marks.
Wasatch Photonics systems can use one of two fiber optic connections: SMA or FC.
Figure: SMA fiber connector
Fiber optic cables with SMA connection typically connect a broadband light source or Raman Probe directly to the spectrometer’s collection optics.
Figure: FC fiber connector
Fiber optic cables with FC connection typically connect a laser source directly to a sampling fixture or external Raman probe.
For additional information about unboxing, connecting and configuring your Series-XL spectrometer with Andor camera, see the Series-XL QuickStart Guide with ENLIGHTEN™.
Operational power requirements including measured current draw can be found in ENG-0157 Empirical Power Draw and Power Supply Guidance.
ENLIGHTEN™ may be launched using the Windows Start Menu under the Wasatch Photonics group
or desktop shortcut.
Change to the directory in which you installed ENLIGHTEN™, then type:
$ ./EnlightenGUI
After the initial rigmarole of using the right-click Open to authorize the unsigned application, you should thereafter be able to launch the application normally by double-clicking the icon.
From the Mac terminal, you can also launch ENLIGHTEN™ using either the Open command or running the binary directly:
For scripted / automated environments, ENLIGHTEN™ may also be launched from bash, DOS (Cmd Shell), PowerShell or other command-line shells.
For details on supported command-line arguments, see Appendix A: Command-Line Options.
When you first start ENLIGHTEN™, if you have a spectrometer connected, it should open directly to the Scope Capture screen, looking something like this:
We’ll talk more about what all the different objects and buttons on that screen do in the section on Scope Capture – skip ahead if you are insanely curious and can’t wait.
In this Quick Start guide, we offer some basic instructions needed for you to collect a spectrum that requires only a few principal adjustments. This section is intended for new users and will only cover a few things. If you are an experienced user needing a more detailed explanation for a particular process, please skip ahead to Spectrometer Operation.
In order to collect a spectrum, first launch the ENLIGHTEN™ software. The default screen, showing Scope View, will look like this:
In the image above, you can see an overall flat baseline spectrum with a level intensity around 700 counts. The spectrometer, in this case, has its front optics completely capped such that no light can enter the unit, however, if your spectrometer is not capped you could see resultant free-running spectra from any ambient light entering the unit.
By default, the Spectrum Chart displays free-running spectra; if you wish to pause this feature, simply click the Pause button above the chart.
You can also re-engage the free-running spectra feature by clicking the Play button.
In this section, we describe how to set the sampling parameters of your experimental setup based on the light source being used: internal laser, external laser, or external light source.
If your system contains an internal laser, laser control is enabled within the ENLIGHTEN™ software. The laser can be enabled by clicking the Turn On Laser button under Laser Control on the right side of the screen.
With proper laser safety equipment in use and your sample in place, turn the laser on, adjust laser power setting, and adjust integration time as needed to achieve your desired Raman signal intensity. Increasing the laser power will increase Raman signal intensity; increasing integration time will also increase Raman signal intensity. As you increase or decrease the laser power and/or integration time settings, monitor the signal intensity with respect to the y-axis (signal counts) to achieve the desired signal level.
If your experimental setup allows for increased sampling time, you also have the option to increase the number of scan averages. Increasing the scan averaging will decrease the noise in your spectrum but will increase sampling time.
Next, toggle the laser off and allow the dark baseline spectrum to normalize. After ensuring the front optics are completely covered (if they aren’t already), store a dark measurement by clicking the black light bulb button (Store Dark button) above the Spectrum Chart. Do not adjust any sampling parameters between turning the laser off and storing the dark measurements. Now you are ready to collect Raman spectra!
After the dark has been stored, toggle the laser back on and check to make sure your Raman spectrum intensity (as well as profile) is as expected. You can then save a spectrum by clicking the Save button above the spectrum chart.
If you find that the Raman spectrum intensity has decreased too much after dark subtraction, increase laser power and integration time settings to increase signal intensity. After the signal is at the desired intensity, toggle the laser off, clear the saved dark measurement, and store a new dark measurement. Re-enable the laser to visualize the Raman spectrum. If the spectrum looks appropriate save it; if not, repeat the process of adjusting the sampling parameters, storing dark measurements, and toggling the laser back on until the spectrum is ready to be collected.
If you require an external laser to accompany your system, all laser control is done on the laser itself. Please refer to the laser manufacturer operating instructions regarding laser control.
Connect the laser via a fiber optic cable to either the spectrometer or Raman probe prior to firing the laser. If using a Raman probe, please refer to the following section: Focus Raman Probe for Quick Start. After appropriate laser safety equipment is in place, enable laser, adjust laser power setting, and adjust integration time as needed to achieve desired Raman signal intensity.
Next, turn the laser off and ensure a dark environment before storing a dark measurement.
Similar to the previously described procedure, you will turn the laser back on, double-check to make sure the signal intensity is as expected, and save the Raman measurement. If the intensity is not quite right, you can adjust the laser power directly on the laser itself and/or adjust the integration time setting in ENLIGHTEN™ to adjust the signal intensity accordingly. Once the signal level is adjusted, turn off the laser, clear the saved dark measurement, and store an updated dark measurement. Repeat this process until you are satisfied with the Raman signal intensity and then save the measurement.
When collecting Raman measurements with an external laser and Raman probe, you will discover that the sampling accessory is equipped with a Set Screw in order to hold the Raman probe in place at a specified focal distance. This distance needs to be optimized by moving the probe closer and closer to the sample (underneath the black cap in the image below). When the optimal focal distance between the sample and the end of the probe has been achieved, by visually referencing the spectrum in ENLIGHTEN™, the Set Screw will be used to secure the probe in its position.
In ENLIGHTEN™, set integration time to approximately 500ms. Here you will monitor ‘real-time’ spectral responses to changes in Raman probe focal distance (i.e. moving the probe toward and away from the sample). Next, ensure that the external laser is turned off prior to storing a dark measurement.
After you store a dark, turn the laser back on and save the spectrum by clicking the Save button. Overlay that newly saved spectrum onto the live spectrum shown in the Spectrum Chart by clicking the Toggle the Graph Trace button.
While the laser is still engaged, loosen the Set Screw and very slowly push the probe tip closer and closer toward the Raman sample. While the end of the probe tip is pushed toward the sample vial, watch the Spectrum Chart to see how the changes in focal distance affects the spectrum intensity, profile and resolution.
Although signal intensity, profile and resolution are being monitored to determine optimal focal distance, laser power and integration time settings can be adjusted after this part of the process to more finely tune the signal intensity itself.
Once the optimal focal distance has been achieved, tighten the Set Screw to lock the position of the probe in place for subsequent measurements. Next, we recommend increasing the integration time until the maximum intensity reaches approximately 50k counts. The reasoning for this is to ensure you are collecting as much Raman signal as possible without the risk of approaching the saturation point of the detector. If you need to adjust other parameters you can do so at this point.
When performing any kind of reference measurement requiring the use of an external broadband light source, you will first need to allow the light source to warm up for approximately 30 minutes. While the light source is warming up, connect it via a fiber optic cable to the spectrometer.
Spectrometers are data collection instruments, and the Scope view is one of the most fundamental views on interpreting and understanding spectra.
The initial, default view of ENLIGHTEN™, is where users can perform preliminary adjustments, so it is worth learning what features and controls it offers.
Let’s walk through each of those in order:
Users can make the program more usable and accessible on small screens by resizing or optionally hiding the Clipboard (9) and User Controls (6). Simply move the cursor in the blank margin between the Capture Bar and the Spectrum Chart or between the Spectrum Chart and the User Controls until you see a double ended arrow (one end pointing to the right and the other pointing to the left). Once the double ended arrow is visible, click and drag until the Capture Bar/User Controls is resized or hidden.
The following controls are available in a vertically scrolling column along the right-hand side of all screens.
When more than one spectrometer is connected to ENLIGHTEN™ via USB, you can toggle between them using the dropdown menu.
After selecting the desired spectrometer, you can adjust the sampling parameters, temporarily hide the spectral traces of the non-selected spectrometers in the Spectral Graph, and even change the color of the spectral trace visualized on the Spectrum Chart.
If you click on the colored box next to Auto Colors, the following window pops up for you to select the color of the spectral trace:
This control allows you to turn the embedded laser on and off, and control the output laser power using either a vertical slider (moving the slider up approaches maximum power), or using the up/down arrows and editable numeric field for more precise control.
For spectrometers including a laser power calibration (standard for multi-mode lasers), this control allows you to set the output laser power in milliwatts (mW). Spectrometers not including a laser power calibration (standard for single-mode lasers) configure the laser output power as a percentage of duty cycle (%).
In Expert Mode, you may see an input control allowing you to specify your laser excitation wavelength in picometer precision. Note that this does not actually change the emitted wavelength of your laser in real-time, but rather allows you to enter a “known-truth value” which you presumably measured from a high-resolution spectrometer or manufacturer’s datasheet, so that ENLIGHTEN™’s computed x-axis in wavenumbers will be as accurate as possible. |
Series-XS spectrometers with integrated lasers include a “watchdog” feature to prevent the laser from inadvertently firing overlong, which can lead to overheating and equipment damage. For instance, a watchdog value of 120sec means that when you turn the laser on, it will automatically stop firing after 2min. You can then manually fire it again.
The watchdog can be disabled by setting the value to 0 seconds. The default watchdog value can be set in the EEPROM Editor.
This control allows you to set integration time in milliseconds using either the vertical slider or the up/down arrows and editable text field.
Longer integration times will help you detect extremely faint light sources such as Raman Stokes scattering, but they will also somewhat increase noise and baseline by allowing dark signal and ambient light to accumulate.
The vertical slider is deliberately capped at 5 seconds, providing a convenient range for the most common desktop measurements. However, you can use the buttons or manually edit the field to generate longer integrations.
Each Wasatch spectrometer contains an EEPROM-configured “maximum recommended integration time,” which may be anywhere from 1min to 15min or more for different models. Longer integrations may be forced by manually entering (typing) values up to 224 ms (4.7 hr). However, it is likely that readout noise will saturate the detector and overwhelm signal in such extended measurements. |
Gain (dB) control, which is only available with Sony IMX (XS Series) detectors, can be increased to amplify the spectral signal (but also associated noise).
You can enable the external trigger if your spectrometer supports that feature (see section on Triggering).
If your spectrometer supports a “high-gain” mode with increased sensitivity (and noise!), this option is included on the Detector Control widget as well. High-Gain mode defaults “on” for Raman spectrometers (where the added intensity is often useful for 1064nm Raman), but defaults “off” for non-Raman models like the NIR1 and NIR2 (where lower noise is important for reflectance-based measurements). Whatever your application or model, you can always manually set your preferred high-gain setting and ENLIGHTEN will remember it across sessions for a particular spectrometer.
The display x-axis control allows you to change the x-axis in your chart. Changing mode from Raman to Non-Raman will reset the axis to its default state for that mode (e.g., the default x-axis for Raman mode is wavenumber, while the default x-axis for non-Raman mode is wavelength).
This control provides a Cursor checkbox which displays a red vertical line on the chart. The purpose of the Cursor is to allow you to easily visually select a specific x-coordinate (wavelength, wavenumber or pixel) on the graph. The X-Axis control will show the precise value of the selected x-coordinate, while the Status Bar will show the current y-value (intensity, transmission %, AU etc) at the closest datapoint to the entered x-value.
You can move the Cursor by clicking and dragging the red line left and right on the chart. Alternatively, you can move it using the up/down buttons on the X-Axis control, pressing Ctrl-Left or Ctrl-Right, or simply typing a value into the field on the X-Axis control.
Note that the cursor x-value unit will automatically match that of the currently displayed x-axis.
When enabled, the Show Marker feature adds circular markers to the spectrum in the Spectrum Chart for every physical detector pixel. This allows you to see the exact x and y locations of individual pixel datapoints on the detector, as opposed to the lines drawn between datapoints on the graph.
One of the simplest ways to improve Signal to Noise Ratio (SNR) is by averaging over time using multiple measurements. However, this does add time to your measurements as they will take longer to collect. To configure scan averaging, use the up/down arrows or editable numeric field to set a value larger than 1.
When Scan Averaging is enabled, a second line appears on the control widget, stating “Collecting X of Y” samples. When averaging is complete, the second line on the control widget states “Collected X of Y”. This allows you to know how soon the next fully averaged measurement will be complete.
If your spectrometer has a cooled or thermally regulated detector (-C or -R in the model name), this control allows you to configure the temperature setpoint. Temperature control is only provided in Expert mode, as most users would not wish to change this from default settings.
Specifically, this is setting the requested or target temperature in °C of the detector’s thermoelectric cooler (TEC). Different spectrometer models support different operating ranges with different optimal setpoints.
The temperature control in ENLIGHTEN™ is automatically range-limited to the supported temperature range for your spectrometer, so that you cannot damage your equipment by overdriving the TEC in either direction.
In general, colder detectors are capable of seeing fainter signals, as cooled detectors generate less thermal noise and therefore a lower baseline allowing for longer integration times.
While Scan Averaging is the most accurate way to smooth high-frequency noise in your spectra, it comes at the cost of increased collection time. An alternative is a built-in data processing option called Boxcar Smoothing, which slides (convolves) a moving average across the spectrum, averaging over wavelengths (space) instead of time. The drawback of boxcar smoothing is a loss of resolution (broadened peaks) and a drop in peak intensity.
Boxcars are defined in terms of a “half-width”, which is the number of pixels to the left and the right being averaged into each pixel in the spectrum. A boxcar of half-width 1 would replace each pixel with the average of 3 pixels (1 on the left, the original pixel value, then 1 on the right). A boxcar of 2 would average 5 pixels (2 left, original, then 2 right). By default, smoothing is set to 0 pixels, meaning no boxcar averaging is being applied.
The following example shows how a boxcar with 2-pixel half-width (Boxcar 2) is computed across a 20-pixel spectrum. Note that the averaged (smoothed) value for pixel 6 is computed as the average of the original (raw) values of pixels 4 through 8 (5 pixels total). If a pixel is too close to the beginning or end of the spectrum to generate the specified average, original values are used unmodified.
Figure 1 Computation of boxcar with 2-pixel half-width
As you can see in the following graph, the 2-pixel Boxcar averages-out high-frequency noise in the resulting spectrum.
Figure 2 Graph of raw-vs-smoothed with "boxcar 2"
Note that when you “store dark” and “store reference” in Setup tab, those dark and reference spectra will retain the currently configured scan averaging and boxcar smoothing settings (see sections on collecting Dark and Reference Spectra for additional details).
Boxcar smoothing is an example of a convolution, a transformation applied to an array or spectrum to yield a new array. |
Accessory controls are supported on spectrometers with Gen 1.5 electronics. These spectrometers are identified with a specific “Gen 1.5” flag in the EEPROM.
Supported Gen 1.5 spectrometers will display an Accessory Control feature in the User Controls.
You can enable the appropriate accessory functionality based on the physical hardware available for your experimental setup.
Advanced user features include functionality for Area Scan, Baseline Correction, Post-Processing Options, and Temperature Control (for regulated and cooled spectrometers). To enable Advanced Options, check the Advanced box. A pop-up appears to warn the user of the ramifications of using Advanced Options the first time the feature is enabled during a session.
After acknowledging the warning, you can select the desired Advance Options you wish to adjust.
In Area Scan, you can select the start and stop lines.
For Baseline Correction, you can select the desired method to correct the spectral baseline.
In addition to AirPLS, various other baseline correction methods are available via the dropdown arrow.
Spectrometers with a Thermo-Electric Cooler (TEC) can automatically cool the detector to reduce readout noise, improving the signal-to-noise ratio (SNR). All spectrometers are factory-configured to automatically cool themselves to the lowest supported temperature upon startup. Therefore, changing this value (or disabling the TEC entirely) is virtually guaranteed to worsen your measurement, so changing these values is not advised.
The Post-Processing Options include Raman Intensity Correction and Peak Sharpening (not shown here).
Each Raman spectrometer will show its own specific spectral sensitivity, the number of photons needed at a specific wavelength to generate a count in the output. To compare spectra between different spectrometers or a spectrometer and a reference library, this spectral sensitivity curve can be corrected for by using the “Raman Intensity Correction” option.
This wavelength-dependent correction curve is measured during manufacture with a NIST-certified Standard Reference Material (SRM) for the specific laser wavelength used and saved to the spetrometer’s EEPROM as a polynomial fit. By selecting “Raman Intensity Correction”, the (dark-corrected) spectrum is corrected with a wavelength-dependent factor calculated from these EEPROM parameters to account for the spectrometer-specific spectral sensitivity curve, such that two corrected spectra will be directly comparable.
Peak Sharpening can be applied to improve Raman matching results with KnowItAllⓇ in the form of Richardson-Lucy Deconvolution. Note that it does require an average FWHM value for the spectrometer to be pre-configured in the EEPROM.
At the very bottom of the User Controls column is System Status which offers the user a visual aid for systems components’ “health” including Hardware (HW), Light (light source or laser), and Temp (TEC). You can use the following table as a reference guide to assess each system component status:
Hardware | Successful connection to spectrometer | WARN, ERROR, or CRITICAL message has been logged during the connection | No spectrometer detected |
Light | Spectrometer has a laser and it is NOT enabled (latest FW: laser is ARMED with the interlock key, but not firing) | Laser is enabled and firing | Spectrometer does not have a light source or laser (latest FW: laser is DISARMED via the interlock key) |
Temp | Spectrometer has a TEC and all of the last 10 measurements were within 1oC of the current setpoint -OR- spectrometer has no TEC | Spectrometer has a TEC but at least one of the last 10 measurements was more than 1oC from the current setpoint | Spectrometer has a TEC but it is manually turned off |
The chart display in ENLIGHTEN™ has numerous advanced features which can be accessed from a 3-button mouse. Some of the most useful include:
By default, the y-axis auto-scales with each newly read spectra, which can be a little jumpy in high-noise environments. You can use the lock shaped button (🔒) atop the graph to freeze and thaw the plot axes.
Alternatively, you can hold down the left (primary) mouse button and drag just a pixel or two in any direction (vertically or horizontally). This will switch both axes into “manual” mode, essentially locking the current auto-scaled ranges into place. To unfreeze the axis, just right-click with the secondary mouse button to open the contextual menu, then set both x- and y-axes back to “Auto” (or double-click the “lock” icon as described above).
When you see that perfect fluorescence or Raman spectrum on the screen, you’re going to want to save it to show all your friends! ENLIGHTEN™ has several options for saving the results of your measurements and experiments.
ENLIGHTEN™ save options are configured on the Setup tab screen and used on the Capture tab screens for each Technique (Scope, Raman, Refl/Trans, Absorbance, etc).
To save a single spectrum to disk, simply click the Save button (arrow pointing down 🔽) on the VCR-style button-bar atop the Capture screen. This will add a timestamped graphical thumbnail to the column of Measurements on the left of the screen.
You also have the option to pause the “free-running” behavior and record single spectra one at a time. Clicking the Pause button changes the VCR-style button-bar so that the third and fourth buttons are enabled.
The third button is called the Step-Forward button, and it acquires one (potentially scan averaged) measurement and returns to the “stopped” or paused status. This functionality can be useful when you need to step through acquisitions one by one.
The fourth button is called the Step-Forward and Save button, but in addition to doing everything the third button does, it also saves the acquisition.
Each time you save a spectrum, a new timestamped thumbnail will be added to the Clipboard at the left of the screen. There are several things you can do to manipulate saved spectra through these thumbnails.
If you want to rename a spectrum with a more-relevant title, click the pencil button (✏️) and edit the spectrum title above the graph, then press <Return> or <Enter> from the keyboard (you must “lock-in” the new label name). This will update the label shown above the thumbnail, as well as the legend in the on-screen graph (if trace is displayed).
If you want to overlay a saved spectrum to the Spectral Graph window, click the spectrum button (📊). This will automatically add an item to the Graph Legend. You can change the color of the spectral trace by clicking the third, square button (⬜️). A new window will pop up allowing you to choose the desired color.
If you want to delete the saved spectrum both from ENLIGHTEN™ and from disk, click the trash can button, where you will be prompted to confirm deletion.
If all you want to do is clear the current measurement thumbnails, but leave files on disk, use the eraser button instead at the top of the bar.
If you have many thumbnails of saved spectra, you can collapse the images for easy scrolling by clicking the eyeball button (👁) at the top of the column.
Each individual measurement thumbnail has a down pointing triangle button you can click to expand or collapse individual saved spectra.
The order of saved thumbnails can be reversed by utilizing the crossed-arrows button at the top of the column. (By default, new measurements are inserted at the TOP of the column.)
As previously mentioned, the Load and Export buttons can be used to 1) load previously saved .csv files into a current ENLIGHTEN™ session and 2) export all spectra presently in the Clipboard column to a compiled .csv file.
To limit resource consumption on user computers, ENLIGHTEN is configured to only support a maximum of 500 thumbnails in the Clipboard.
Upon clicking the Export button, a dialog will appear allowing you to override the default (timestamp) file name.
Note that session exports are stored directly in the “EnlightenSpectra” folder, rather than the per-day folders beneath that directory. (This is because exports of long-running collections can span multiple days.)
Multi-measurement exports currently support CSV and JSON format (not Excel).
As described above, clicking the Save button will save spectra to disk — but where will it save it, in what format and with what fields? You can configure those options in the Settings view, which offers a variety of standard spectral management formats and options.
In the above screenshot, note the following screen areas:
You can change the default saved data file path by clicking the Change button and selecting the desired file path. By default, measurements will be saved to C:\Users\username\Documents\EnlightenSpectra on Windows (~/EnlightenSpectra on POSIX platforms).
Templated labels allow you to define a template for the labels of newly saved thumbnails appearing in the Measurements column in Capture tab. The template can be edited and will persist between application sessions.
Although the default template is set to {time} {serial_number} to reflect legacy behavior, you can set it to anything you desire, for example:
{integration_time_ms}ms {gain_db}dB {scans_to_average}avg
For further details and supported field names, see Appendix E: Label Templates.
Spectra can be saved in either CSV, XLS, TXT, and JSON formats. CSV files are more useful for dynamic programming and scripting, while XLS files include some automated formatting and worksheet breakouts.
CSV files offer additional options over XLS files: they can be saved in either row-order or column-order format, meaning spectra can extend horizontally in rows (one line per spectrum) or vertically in columns (one line per pixel).
In addition, row-ordered CSV files offer a special Append mode, in which each new spectrum saved is automatically appended to a single CSV file. This is a convenient means to create strip-charts of temperature and other metadata, for instance.
SPC files use a widely-supported binary format popularized by Thermo Galactic GRAMS. Note that many SPC files generated by other programs can be loaded as well.
For more information, see Saved Data Formats.
Besides specifying the format of the file, you can also exercise choice in what fields get written to them. Three options available for the x-axis include pixel, wavelength, and wavenumber, and you’re free to include all or none. Please note that if none of these three options are selected, no x-axis will be written to the data file.
Wavenumber is only available for spectrometers which have a defined excitation wavelength. Note that the first time you select the “Raman” technique in any ENLIGHTEN™ session, Wavenumber is automatically checked in the Save Options dialog to ensure you don’t inadvertently save Raman data in pixel or wavelength space.
The Processed spectrum is always saved to a data file by default. The Processed spectrum is the raw measurement minus the dark measurement. Remember that any and all pre-processing techniques such (i.e. scan averaging, baseline correction, boxcar smoothing, etc.) are applied to the Processed spectrum. You can select additional signal data that is saved to the file:
The selected x-axes are added to a file just once per session export, while the spectral information is added every time a measurement is saved.
Automatically interpolates spectra to a fixed / uniform x-axis when saving files. You must select the Start X and End X values as well as the X increment size using the up/down arrows or editable numeric field. When files are saved, the interpolated x-axis is saved to the files.
This option is recommended when comparing spectra from different spectrometers, as minor differences in spectrometer alignment and excitation wavelength make it impossible to perform any mathematical transformation between any two spectra since they are not interpolated to a common axis.
ENLIGHTEN™ can support external plug-ins implemented as Python source code on your computer. You can select a plug-in via the drop-down menu.
See Plugins for additional information on using the provided plug-ins, and creating your own.
Wavenumber Correction allows you to quickly perform a quick field calibration-correction to your spectrometer’s Raman wavenumber x-axis. This can account for minor changes due to temperature expansion and keep your Raman peak locations as precise as possible.
The Settings view allows you to select which ASTM E1840-96-approved compound you wish to use for calibration. It also allows you to specify whether the “expected” Raman signature of the selected compound should be shown in Scope view for your visual verification.
For details, see Wavenumber Correction.
Batch Data Collection allows you to configure, start, and monitor a pre-programmed series of acquisitions with automated timing. This is useful, for instance, should you wish to conduct overnight monitoring of a sample spectrally, generate an extended strip-chart of your spectrometer’s temperature over time, or simply perform a reproducible sequence of measurements for repeatability.
Batch Data Collection is configured on the Setup page. The feature is enabled by checking the “✅ Batch Mode Enabled” checkbox. When Batch Mode is enabled, the Step-Forward button (⏭) changes to the Fast-Forward button (⏩). To start a batch data collection, simply click the double-headed arrow button (⏩) on the VCR-style button-bar.
This will add a timestamped graphical thumbnail to the Measurements column. You will notice that In addition to the timestamp, the measurement label will also contain an integral counter identifying the measurement’s numerical position within the ongoing batch. In the example below, you can see this measurement is the first in a batch of 10 measurements.
There are many different options controlling how a Batch Collection may be configured. Use the mouse to hover over “Explain This”, and a tool-tip will appear explaining the current settings and how the resulting collection will be executed.
An illustration is provided to demonstrate how a Barch Collection would execute using the following settings:
You must set either Measurement Count or Collection Timeout to define the limits of the collection. If Collection Timeout is 0 sec (the default), then each batch will collect “Measurement Count” measurements.
The Measurement Period can be set to support an optional measurement period in milliseconds, essentially introducing a delay between subsequent measurements in a batch. If Measurement Period is set to 0 ms then the integration time will be used as the measurement period, and measurements will be essentially collected back-to-back.
It is incumbent on the user to ensure that the Measurement Period is longer than the currently set integration time (or zero, if you want measurements to occur back-to-back). If you define a Batch Collection in which a measurement starts every second, but the integration time is set to two seconds, it will yield the same behavior as setting Measurement Period to zero ms (at the end of each measurement event, ENLIGHTEN™ will observe that the next measurement is already overdue and start it immediately).
Batch Count can be configured to an optionally infinite number of batches by setting to zero; it is set to 1 as a default. You can set Batch Period to some length of time in seconds, injecting a delay between consecutive batches; this is set to 0 as a default (batches are collected back-to-back).
For Raman spectrometers, it is important to decide how you want the laser to behave during Batch Collections. Three laser operational modes are supported:
For the Spectrum and Batch laser modes, if a laser Warm-up time value is specified, that will be applied after the laser is turned on, but before the next measurement is taken. This time should be included, along with integration time, in deciding what Measurement Period you wish to configure. (Measurement Period should normally be zero, or greater than Integration Time + Laser Warm-up Time.)
Note that Spectrum and Batch laser modes are uniquely hazardous, as they will automatically turn the laser on for pre-configured durations and intervals, including unattended / lengthy overnight data collections. It is imperative that you consider laser safety precautions before configuring unattended Raman data collections — consult with your facility Laser Safety Officer. |
You may want to ensure the thumbnails are cleared from the Measurements column prior to a batch collection because every single measurement represented by a thumbnail will be written to an export file at the end of batch collection. If you saved any measurements in the current session of ENLIGHTEN™ prior to starting batch collection and you ultimately do not want those measurements exported after batch collection is complete, you will need to clear all thumbnails from the Measurements column.
You can also automatically export your set of measurements collected during batch collection by selecting this option in the Setup tab. If clear thumbnails AND export thumbnails are both selected, then you can set up multiple batch collections (one right after the other) and ensure that each set of data from its respective batch is exported to its own compiled CSV file.
Similarly, you can set up dark measurements to be stored automatically prior to enabling the laser during batch collection by selecting that feature in Setup tab.
The live spectrum is the live view of the raw spectrum. You can also take a dark and reference measurement by clicking the Take Dark and Take Reference buttons, respectively.
If a dark spectrum is stored, it will be visible here. You can clear or load a previously saved dark by using the Clear and Load buttons, respectively.
When a dark spectrum has been set in ENLIGHTEN™, it will be automatically subtracted from every subsequent measurement. This is a major contributor to the difference between the “processed” and “raw” spectra saved in measurement files on disk.
Note that “dark” spectra are never entirely dark; dark spectra are neither flat (i.e. no noise) nor zero (i.e. electronic offset plut dark signal). The biggest contribution by far is the electrical offset in the analog to digital converter.
Dark spectra are highly sensitive to the surrounding thermal conditions, which is why it is important to take a new dark spectrum whenever temperature or any measurement setting (i.e. scan averages, integration time, etc.) changes in your experimental setup.
If a reference spectrum is stored, it will be visible here. You can clear or load a previously saved dark by using the Clear and Load buttons, respectively. (For more information on references, see descriptions of absorbance, transmission and reflectance).
As with dark measurements, reference measurements are highly sensitive to changes in temperature (ambient temperature and/or light source temperature) or other measurement settings. Some lamps may take as long as 2hr to stabilize, and during that stabilization period it can be worth taking fresh reference measurements on a regular basis.
Wasatch Photonics makes many different models of spectrometers, and individual units within a product line will each contain unique configuration and calibration settings. Other settings such as temperature will vary dynamically during runtime. All of these different settings and device parameters are viewable using the ENLIGHTEN™ Hardware view (accessed through the “Views” pull-down menu).
The Hardware view provides a scrollable list of hardware settings, including serial number, excitation wavelength, wavelength calibration, TEC and gain coefficients and the like. All of this information is read-only by default but is useful in understanding and explaining your spectrometer’s behavior and performance envelope.
Each Wasatch Photonics spectrometer contains an EEPROM (Electrically Erasable Programmable Read-Only Memory) which stores configuration information about the device. Key EEPROM fields include:
For a full list of EEPROM fields, see Wasatch Photonics document ENG-0034.
Specific sets of hardware settings configurable through the EEPROM are addressed in the sections below.
All spectra read from the spectrometer are automatically corrected for signal gain and baseline offset based on values stored in the FPGA. These values are not user-changeable via the ENLIGHTEN™ application, although gain can be set temporarily via the .ini file (see Appendix C).
Silicon detectors lose sensitivity above about 1000nm (1µm), so Wasatch uses InGaAs detectors for NIR and 1064nm Raman products. InGaAs photodiode arrays such as the G9214 differ from silicon CCDs in several key respects. For instance, they are a single linear row of pixels: as multiple rows aren’t being “vertically binned,” there is no concept of “area scan” for these detectors.
Another key difference is that the InGaAs photodiode arrays are constructed in an interleaving pattern with “even-numbered” pixels (0, 2, 4…) controlled by one set of electronics, and “odd” pixels (1, 3, 5…) controlled by a second set of electronics. As each set of electronics can have slightly different characteristics regarding voltaic sensitivity and readout noise, this can result in an even-odd “sawtooth” pattern in uncalibrated spectra.
Wasatch’s current solution is to generate and apply separate linear calibrations for even and odd detector pixels (in terms of gain and offset, essentially the slope and intercept from y = mx + b). Those two calibrations are stored in the EEPROM as the following fields, per ENG-0034:
It is noteworthy that the DETECTOR_GAIN and DETECTOR_OFFSET calibrations are applied automatically within the firmware (specifically, in the FPGA), and are already present in the unsigned integral intensity values read-out over USB. Therefore, to apply the “odd” calibration in software libraries, the “even” calibration is first “unapplied”, and then the new “odd” calibration is applied. You can see how this is done in ENLIGHTEN™ through the Wasatch.PY library:
FeatureIdentificationDevice.correct_ingaas_gain_and_offset()
Spectrometer detectors, like any digital camera or LCD display, may occasionally develop one or more “bad pixels”.
There are various conditions and behaviors which may be categorized as “bad pixels”:
Bad pixels differ from “cosmic rays”, which are intermittent random fluctuations not tied to specific pixels, but which can generate temporary spikes resembling bad pixels. These are caused by random cosmic rays hitting detectors. This is probabilistic and so occurs more with longer integration times and larger detectors.
When bad pixels are identified, their indices (0-indexed in pixel space, so 0-2047 in a 2048-pixel detector) are stored in the spectrometer’s EEPROM. ENLIGHTEN™ reads their locations at application startup, and automatically corrects read spectra by averaging-over the bad pixel with a linear average of adjacent good pixels. This function prevents one or more malfunctioning pixels from affecting data quality.
Users can add or change the set of “bad pixels” using the EEPROM Editor (see below).
Example showing spectrometer with two bad pixels
Negative values may be used for “unused” bad pixel slots. Pixels do not need to be listed sequentially or consecutively (you don’t have to re-order earlier pixels if adding new ones, and unused slots can appear anywhere within the list).
Future versions of ENLIGHTEN™ will allow users to disable bad-pixel correction in case raw detector data is desired.
Settings stored within your spectrometer’s EEPROM will be temporarily overridden while using ENLIGHTEN™ if there is a corresponding section in your .ini file which matches your spectrometer’s serial number. See the Appendix C: .INI file format for additional information regarding .ini file location and contents.
The EEPROM Editor is not enabled by default. Using it requires a password which can be obtained from your Wasatch Photonics sales representative or distributor. The password can be entered by clicking the “Advanced Users” button at the bottom of the Hardware view, or pressing Ctrl-A.
Once the password is entered, some or all (depending on password) of the EEPROM fields will become editable.
You can then change the settings as desired, and finally press “Write EEPROM” at the bottom.
After writing the EEPROM, you should see this message.
It is generally good practice to exit ENLIGHTEN™ and then re-launch it to verify that the Hardware view still contains your updated values, validating that the write was successful.
The Hardware view also allows users to authenticate (login) as an “Advanced User” exposing additional hardware controls, as described in the Administrative Features Appendix.
The logging view shows a colorized scrolling event history of application state. The logging level can be increased by ticking the “Verbose logging” checkbox.
Visit our website for more information on Debug Logs: https://wasatchphotonics.com/software-support/enlighten/debug-logs/
A password is currently required to access the Factory view.
The historical temperature of the spectrometer detector is graphed over time, allowing you to visually confirm that the setpoint and TEC are functioning as expected. You may also generate your own saveable temperature strip-chart by using “batch collection” and either the CSV “append” mode, or “exporting” a series of spectra, and then graphing the resulting “temperature” column in Excel.
Keep in mind that If one or more spectrometers does not contain a detector TEC, the corresponding graph will be blank. If you wish to remove the graphical display because it is blank, or otherwise, be sure to uncheck the box labeled “Detector TEC Temperature” under Hardware Capture Controls in the upper right-hand corner of the screen. Users now have the option to Clear the strip-chart, Copy-to-Clipboard data, adjust the Strip Chart Window Size (sec), and enable Continuous File Capture.
The laser TEC temperature is likewise graphed over time, but only for units containing a single mode laser (SML). If the spectrometer(s) contains a multimode laser (MML), then the corresponding graph will be blank. Similar to the description above, the user can remove the graphical display for any reason by unchecking the box labeled “Laser TEC Temperature” under Hardware Capture Controls in the upper right-hand corner of the screen. Also, as previously mentioned, users can Clear the strip-chart, Copy-to-Clipboard data, adjust the Strip Chart Window Size (sec), and enable Continuous File Capture.
ENLIGHTEN supports a number of spectroscopic techniques for use with your Wasatch Photonics spectrometer. At a product level, these techniques have been broken out into Raman and Non-Raman categories, because the two sets represent distinct hardware requirements for spectrometers.
As there is only one “Raman Technique,” when ENLIGHTEN is in Raman mode, the Techniques selection box is hidden.
When in Non-Raman or Expert Mode, ENLIGHTEN allows the user to select which technique is desired:
Note that Transmission and Reflectance are bundled into a single selection, as mathematically they are identical (differing principally in optical setup and sampling accessory).
The Raman spectroscopic technique is available on spectrometers configured for Raman, i.e. with a laser’s excitation wavelength configured in the EEPROM. Raman technique is conducted with the x-axis set to “Raman shifts in wavenumber” (cm-1 or “inverse centimeters”), which can only be computed with an excitation wavelength.
For your convenience, the first time you select Raman Mode in a given ENLIGHTEN™ session, it will automatically check the “☑️wavenumber” field in Save Options to ensure measurements are saved in wavenumber space (potentially in addition to wavelength and pixel space, depending on existing selections).
By default, Raman technique prompts the user to collect a dark measurement, since dark subtraction is necessary when trying to detect faint Stokes scattering. While collecting a dark measurement, it is paramount that the entirety of the collection optics are blocked from all incoming light. After the dark measurement has been stored, enable the laser, wait the necessary length of laser warm-up time, and capture the Raman spectrum using the Save button.
An exclusive feature available only in Raman Technique is automatic sample identification, powered by Wiley KnowItAllⓇ Spectroscopy Edition. See the chapter on Wiley KnowItAll for additional information.
It is recommended that you perform a daily Wavenumber Correction when performing Raman measurements. This built-in functionality corrects for shifts in wavenumber axis by referencing known peak positions from a particular Raman sample (as detailed in ASTM E1840-96 Standard Guide for Raman Shift Standards for Spectrometer Calibration), and is available in the Settings view.
In order to perform Wavenumber Correction, you must have a sample vial containing one of the ASTM Standards listed in the dropdown menu:
Once you have prepared a sample vial with the chosen ASTM Standard and placed it in the sample holder, select the corresponding sample name in the dropdown menu under Wavenumber Correction in Raman Setup tab. If you want to see the expected Raman peaks for the selected standard overlaid onto the Spectrum Chart, check the “Visible” box. (This does not alter processing, and is simply provided as a visual aide.)
Now, switch back to Scope view. It is recommended to take a dark measurement prior to executing the wavenumber correction.
To complete the wavenumber correction, toggle the laser on, wait for the laser to fire (generating a visible Raman spectrum matching the selected compound) and click the X-axis Calibration button shown here:
A message will appear above the Scope informing the user of the correction made, and the X-axis Calibration button will remain red indicating that the correction has been stored. For example, upon selecting Cyclohexane as the ASTM Standard for a particular experimental setup, the message that appears after Wavenumber Correction is implemented looks like:
Sometimes fewer peaks for a specific ASTM Standard will be matched, but if too few peaks are able to be matched, the correction will fail.
This correction will stay active for the current ENLIGHTEN™ session (it is reset to the factory wavecal when ENLIGHTEN™ is closed and re-launched). You may repeat the Wavenumber Correction as many times during a session as you wish (recommended intervals are on the order of 1/day, 1/hr, or as frequently as 1/15min if you are in a dynamic thermal environment).
Transmission and reflectance are mathematically identical, although they represent physically different properties. Transmission represents the amount of light which successfully passes through a material without being absorbed, reflected, or scattered. Reflectance represents the amount of light, which is reflected off a material, being neither absorbed nor transmitted.
Both techniques require a reference spectrum (or blank measurement) and will display a blank scope graph until a reference is stored.
For transmission, the reference could be a direct measurement of the illuminating light source, with the transmitting sample removed from the optical path. In many cases, this will be conducted by measuring a “blank” sample, for instance the solvent in a cuvette, or an “air blank.”
For reflectance, that could be likewise a direct measurement of the illuminant, or perhaps a diffuse reflection thereof taken with a reflectance standard like Spectralon® or an appropriate synthetic resin (Delrin® or Teflon™).
Transmission (T) and reflectance(R) are both computed using the same equation:

Where:
Technically you can generate a reflectance or transmission measurement without having access to a good optical dark measurement, for instance if your optical path does not include a mechanical shutter yet your lamp loses thermal stability if powered off. However, the quality of your measurement will be improved if you can take a true optical dark measurement.
Note that dark spectra may change slightly over time and temperature. It is desirable to “dark correct” a spectrum using a dark which was taken as close to the spectrum as possible, so that a similar thermal environment will be in effect. Therefore, ENLIGHTEN™ will track the dark spectrum used with your “reference” measurement separate from the dark measurement used with your “sample” measurement, so that the “best available” (most temporally proximate) dark will be used with each component spectrum.
To be clear, if you take the following collections…
t0 record dark
t1 record reference
t2 record sample
t3 record sample
t4 record sample
t5 record dark
t6 record sample
…ENLIGHTEN™ will compute the transmission or reflectance at t6 using the spectra collected at the following timestamps:

That is because the dark collected at t0 was the most-recent when the reference was saved at t1, while the dark taken at t5 was the most-recent when the sample was recorded at t6.
Changing to absorbance mode switches the graph Y-axis to Absorbance Units (AU), and the X-axis to wavelength (nm).
Like reflectance/transmission mode, absorbance requires a reference spectrum to be taken before processed spectra can be generated. See the discussion on reference and dark timing in that section.
Absorbance is computed using Beer’s Law as:

When performing operations that combine multiple measurements, which includes dark subtraction and any reference-based techniques such as transmission, reflectance and absorbance, accuracy will be improved by applying the same post-processing operations to all spectra involved.
That is to say, if you are using 10-scan averaging and a boxcar of 2 on your measurements, you should use the same 10-scan averaging and 2-halfwidth boxcar when you record dark and reference spectra. This ensures you are subtracting “apples from apples” as it were.
At the end of the day, ENLIGHTEN™ is one software application which often runs as just one component in your laboratory or industrial environment. Even the connected spectrometer may be just a part of your optical setup, which may include additional light sources, shutter modules, filter wheels, articulated X-Y sample trays, and so forth.
This section is provided to address some of the common questions and situations arising when trying to combine disparate components from multiple vendors into a cohesive and harmonious workflow.
It is often important to synchronize measurement operations such that spectral acquisitions are timed in accordance with sample position, laser pulse, arc-lamp flash, user readiness or other external factors which ENLIGHTEN™ and the spectrometer may know nothing about. For these situations we support an “external hardware triggering” capability in which spectrometer acquisitions are controlled by electrical signals arising from some other component in your system.
Within ENLIGHTEN™, triggering is enabled through the Detector Control widget:
When you enable triggering, the on-screen spectral graph will appear to freeze, and a message will display indicating ENLIGHTEN™ is “waiting for trigger.”
When the external trigger signal is raised, a single acquisition will be taken at the currently-configured integration time. The spectrometer will then go back into “waiting” mode, pending arrival of the next trigger.
Triggers received during acquisition are ignored (not queued or “latched”).
Currently the only supported standard trigger mode is “rising edge.”
Physical triggering connectors vary by model, and will be identified in product datasheets.
Wiley KnowItAllⓇ can be used to perform Raman spectral matching within the ENLIGHTEN™ software. In order to begin using it, you must first download the program, install it, then launch the ENLIGHTEN™ software.
In ENLIGHTEN™, tailor your measurement settings as needed and remember that you must be in Raman mode in order to utilize the Raman matching capabilities of KnowItAllⓇ. Revisit details on User Controls if necessary.
For best matching results with Wiley KnowItAllⓇ, the following steps are recommended to ensure your Raman spectra are as clean and close as possible to the “ideal” compound signatures in the KnowItAll database. The following tips will help make sure your wavenumber x-axis is correctly calibrated, that your y-axis intensities are properly corrected for instrument response, and the spectra is otherwise tuned for maximum performance.
As with all Raman measurements, KnowItAll functions best if you’ve taken a fresh Dark measurement, so follow the instructions on taking a new dark. This will turn the corresponding “Take Dark” button (💡) red to signal that the measurement has been stored.
Enabling Baseline Correction via the AirPLS algorithm will further improve your Raman peaks by mathematically subtracting non-peak formations which likely arise from fluorescence and other non-Raman signal. Baseline Correction can be enabled by checking Advanced Features → Baseline Correction, then scrolling down in the right-hand control pane.
Raman spectra are further improved by applying a Raman Intensity Correction, which normalizes system response against a factory NIST SRM standard. You can enable this in ENLIGHTEN by checking Advanced Features → Post-Processing, scrolling down to the Post-Processing Options control in the right-hand control pane, and checking “Raman Intensity Correction.”
Note that Raman Intensity Correction is only available if you are in the Raman technique, you have stored a dark measurement, and your spectrometer has a Raman Intensity Calibration in the device EEPROM. If the Raman Intensity Correction checkbox is grayed-out, you can mouse-over the control to see why the feature has been disabled.
If desired, you can also enable Sharpen Peaks. Revisit details on Peak Sharpening if necessary.
As shown below, switch from Capture Tab to Setup Tab to access Wavenumber Correction and select an ASTM standard. Revisit details on Wavenumber Correction if necessary.
This correction can be enabled by toggling the laser on, waiting for the laser to fire (Raman peaks will be visible on the graph), and then clicking the X-Axis Calibration button.
Afterward, a message above the Spectrum Chart will appear notifying you of the wavenumber correction amount.
The laser may then be disabled as soon as the wavenumber correction is complete.
You can adjust the KnowItAllⓇ settings in the Setup tab to change the Match Score threshold and also set the maximum number of results displayed at any given time (see below).
The main KnowItAllⓇ control pane is on the Capture Tab, in the lower-left (only visible in Raman technique). You may need to scroll down to see the Spectral Library Matching panel.
To automatically process live, streaming spectra in KnowItAllⓇ, check the box for “continuous” Raman matching.
Details regarding positive match identifications, corresponding match scores, and the length of time to process a Raman match are all displayed as shown below.
Some ENLIGHTEN™ features have the ability to connect to the internet during spectrometer configuration or measurement operations. All network access is disabled by default unless the operator explicitly enables it via the Settings view.
Once enabled, cloud connectivity is persisted through enlighten.ini across application sessions until disabled (or enlighten.ini is deleted).
Currently, the major feature enabled by Cloud Connectivity is the ability to automatically download configuration files for XL-Series spectrometers.
XL-Series spectrometers do not have physical EEPROMs on which to store calibration coefficients. Instead, factory calibrations are stored in a cloud repository as “virtual EEPROMs” and downloaded at runtime.
You can look at the downloaded files in EnlightenSpectra/config. They are stored in JSON format, and each is named in accordance with the detector serial number of the XL unit’s Andor camera.
When an Andor system is connected over USB, if an associated JSON configuration file is found in EnlightenSpectra/config, that file is used for spectrometer calibrations. If no file is found, and if cloud connectivity is enabled, then ENLIGHTEN will attempt to download a configuration file for the appropriate camera serial number.
Therefore, once the calibration file has been downloaded, the user is free to disable cloud connectivity, as the saved configuration file can be re-used for future application sessions.
A live, colorized, scrollable version of the ENLIGHTEN™ event log can be viewed within ENLIGHTEN™ by navigating to “Hardware” → “Setup” → “Logging”.
By default, the full logfile is written to the user’s documents folder in the path Documents\EnlightenSpectra\enlighten.log.
In the unfortunate circumstance that you encounter problems using ENLIGHTEN™, we can best expedite a resolution if you can send us the full application logfile as an email attachment. To report a problem or request a new feature, visit https://wasatchphotonics.com/software-support/.
Wasatch makes every effort to test ENLIGHTEN™ and our spectrometers against a variety of real-world hardware and operating environments, but the global breadth of our customer base means that there are probably some architectures and operating platforms we have not included in our test labs, and that means you may occasionally encounter a fault when operating our product. Should that occur, following are some suggestions to resolve the most common issues.
If ENLIGHTEN™ does not automatically detect and connect to your spectrometer, there may be something wrong with your driver configuration. This can be checked using the Windows Device Manager.
You should see your Wasatch Spectrometer listed in the Device Manager under “libusb-win32” devices, like this:
If ENLIGHTEN™ is failing to connect to your spectrometer, you may instead see something like this:
If your spectrometer does not appear under “libusb-win32” devices as shown in the first example, follow these instructions to point Windows to the correct drivers for use with ENLIGHTEN.
Select “Update driver” from the context menu as shown above.
Tell Windows you wish to “Browse my computer for driver software.”
On the following dialog, ensure "[x] include subfolders" is checked, then click “Browse”.
Navigate to the path C:\Program Files\Wasatch Photonics\ENLIGHTEN\Enlighten\libusb_drivers and click “OK”.
When prompted to confirm whether you wish to install the libusb drivers, click "Install."
Confirm that your spectrometer now appears under "libusb-win32 devices".
A particularly frustrating user-facing symptom is when ENLIGHTEN appears to “see” and connect to your spectrometer, but then promptly disconnects, either after graphing a single spectrum or sometimes no spectra at all. Sometimes this behavior will seem to repeat in a loop, endlessly connecting and disconnecting to the same unit.
One reason for this is running multiple programs in parallel which are all trying to “claim” or control the same spectrometer. ENLIGHTEN is one such program, and should not be run at the same time as other spectrometer-control software (such as LabCognition Panorama, Spectragryph, or your own custom applications).
If you wish to let multiple programs communicate with the spectrometer at once, or “receive and process” the same stream of live spectra, one option is to use ENLIGHTEN plug-ins. Several examples have been provided which demonstrate how live spectra received from ENLIGHTEN can be passed in real-time to other programs.
Other options for this could be to use a single “spectrometer server process” as a gateway, for instance using our RPi-Communication GitHub project. Another option would be to write your own software using one of our several driver libraries.
Although Wasatch continually strives to make our electronics as fault-tolerant as possible to power spikes and drains (electrical fast transients) over both the 5V USB and 12V mains connections, these are sensitive instruments and may enter a failure mode in which the spectrometer ceases to respond over USB.
In this event, the spectrometer should be fully power-cycled (switched off, if it has a power switch, else unplugged for 10sec) and software restarted. The spectrometer should then resume normal operations.
Wasatch Photonics “benchtop” spectrometers (all but the Series-XS micro-Raman models) ship with a 12V “wall-wart” power brick (AC/DC transformer). If yours is damaged or lost you can obtain a replacement from Wasatch or the manufacturer: EDAC EA10683N-120 (product homepage).
When launching ENLIGHTEN™ from a command-line or script environment, the following command-line arguments are supported:
$ enlighten --help
usage: Enlighten.py [-h] [--log-level {debug,info,warning,error,critical}] [--logfile LOGFILE]
[--max-memory-growth MAX_MEMORY_GROWTH] [--run-sec RUN_SEC] [--serial-number SERIAL_NUMBER]
[--set-all-dfu] [--stylesheet-path STYLESHEET_PATH] [--headless]
acquire from specified device, display line graph
options:
-h, --help show this help message and exit
--log-level {debug,info,warning,error,critical}
logging level
--logfile LOGFILE Explicit path for the logfile
--max-memory-growth MAX_MEMORY_GROWTH
Automatically exit after this percent memory growth (0 for never, 100 = doubling)
--run-sec RUN_SEC Automatically exit after this many seconds (0 for never)
--serial-number SERIAL_NUMBER
only connect to specified serial number
--set-all-dfu set spectrometers to DFU mode as soon as they connect
--stylesheet-path STYLESHEET_PATH
Path to CSS directory
--headless Run Enlighten without GUI
None of these options are required for typical usage, but this is what they are for:
--log-level | Change the logging level to DEBUG, INFO, WARNING, ERROR or CRITICAL (default is INFO). Regardless of which logging level is specified, the application will start in DEBUG mode until the first spectrometer has successfully connected (to capture detailed startup sequence), at which point the commanded or default logging level will be applied. You can always switch the runtime logging level to DEBUG by clicking the “Verbose Logging” checkbox on the Hardware → Setup → Logging tab. |
--serial-number | If multiple spectrometers are plugged-in over USB, and only one is DESIRED, which one that should be. |
--set-all-dfu | As each spectrometer connects, switch to DFU mode for firmware update (R&D only) |
--max-memory-growth | Automatically exit after N% memory growth from initial process size (100 would represent doubling of size, 0 (default) indicates to never exit based on memory growth) |
--run-sec | Automatically exit after running for this many seconds |
--stylesheet-path | Path for CSS “skin” (experimental) |
These keyboard shortcuts are provided to speed common operations while using ENLIGHTEN™:
Ctrl-A – Authenticate with password for Advanced features
Ctrl-C – Copy current scope data to Clipboard
Ctrl-D – store / clear Dark measurement (also F8)
Ctrl-H – toggle between Hardware and scope techniques
Ctrl-L – toggle Laser on/off
Ctrl-P – toggle Play/Pause
Ctrl-R – store / clear Reference measurement (also F9)
Ctrl-S – Save current spectra (also F12)
Ctrl-Left – move cursor left (down in nm/cm-1)
Ctrl-Right – move cursor right (up in nm/cm-1)
F1 – change technique to Hardware
F2 – change technique to Scope
F3 – change technique to Raman
F4 – change technique to Reflectance / Transmission
F5 – change technique to Absorbance
F6 – change to “Setup” screen (also Ctrl-1)
F7 – change to “Capture” screen (also Ctrl-2)
F8 – store / clear dark measurement (also Ctrl-D)
F9 – store / clear reference measurement (also Ctrl-R)
F10 – “play” spectra (continuous acquisition) (see Ctrl-P)
F11 – “pause” spectra (disable continuous acquisition) (see Ctrl-P)
F12 – save current spectra
Your ENLIGHTEN™ installation will contain a text file named “enlighten.ini” in the following path:
C:\Users\yourname\Documents\EnlightenSpectra\enlighten.ini
(Linux systems expect the file at ~/EnlightenSpectra/enlighten.ini)
If that file is not found upon launching ENLIGHTEN™, the program will automatically create a default one.
This file is used to persist application settings between runs, and also to locally override various spectrometer settings.
The following categories of application settings can be configured using the .ini file:
In addition, the following settings can be overridden for individual spectrometers (by serial number) using the .ini file:
This file follows a fairly straightforward syntax, and is used to selectively override individual settings from the spectrometer’s EEPROM. This allows users to customize a spectrometer’s default settings, update the wavelength calibration, etc. without going through the trouble of reprogramming its EEPROM.
Each spectrometer block of the file starts with the target device serial number, followed by an arbitrary set of name-value pairs:
[WP-00132]
integration_time_ms = 10
wavelength_coeff_0 = 399.2413
wavelength_coeff_1 = 4.3601E-01
wavelength_coeff_2 = -7.3314E-05
wavelength_coeff_3 = 2.8049E-08
ENLIGHTEN™ can save spectra in three data formats: CSV (row-ordered), CSV (column-ordered) and Excel (old-style .xls).
Row-ordered CSV files are saved with the following field order, which is retained for compatibility with the older Wasatch Dash application:
The primary advantage of row-ordered CSV is that it works extremely well for appending / streaming data quickly, as it is much easier for a computer to add one line to the end of a file than to add a new column to the “right” of existing line-based data.
Therefore, this format is recommended for long-running Batch Collections taking hundreds or thousands of measurements.
Column-ordered CSV files are new to ENLIGHTEN™ (Dash did not support them), so the file format is a little less fixed-in-stone. All columnar CSV files follow the convention:
A typical column-ordered CSV might look like this:
Additional spectrum columns (after Processed) may include “Raw,” “Dark” and “Reference” (see Saved File Fields).
A special case of column-ordered CSV are “session exports,” in which a number of measurements were originally saved in one format (row or column-ordered CSV, Excel, whatever), and then “exported” to a single large CSV for easy analysis in Excel or other numerical programs.
Session Exports are very similar to column-ordered CSV files, except that the (name, value) metadata is repeated atop each measurement. This is necessary, as fields within the metadata (temperature, integration time, laser enable etc) may vary from measurement to measurement, so all metadata is explicitly re-stated for measurement.
The format of a columnar Session Export might be more easily shown by example than described:
Essentially what you see there is that each spectrometer participating in the export has its x-axis columns exported ONCE (at the left of the export), and then only processed/raw/dark/reference “data” columns are populated thereafter. It is expected that users can select the proper x-axis for a given spectrometer by using the “Serial Number” row at the top of the metadata.
You can also export a session in row-ordered (“Dash”) format. That format (same data as above) would look something like this:
Note that “Line Number” is used to indicate “a measurement” rather than just a line, as the user selected to export 3 x-axes (pixels, wavelengths and wavenumbers) as well as 2 “component” spectra (raw and dark).
ENLIGHTEN™ allows you to define a "template" to determine the label of newly saved thumbnails appearing in the "capture bar" on the left-side of Scope Capture. This "Label Template" can be edited at the top of the Scope Setup screen, and is persisted between application sessions.
The default label is "{time} {serial_number}" to reflect legacy ENLIGHTEN™ behavior. However, you can set it to anything you like. One example would be:
{integration_time_ms}ms {gain_db}dB {scans_to_average}avg R{region}
Other than {time} (HH:MM:SS), supported fields within braces can be any Python "attribute" appearing in either of the Wasatch.PY classes wasatch.SpectrometerState or wasatch.EEPROM, as well as the “metadata” fields output at the top of saved measurements. At writing, those include:
area_scan_enabled
area_scan_fast
battery_charging
battery_percentage
battery_raw
boxcar_half_width
fan_enabled
gain_db
high_gain_mode_enabled
integration_time_ms
lamp_enabled
laser_enabled
laser_power_mW
laser_power_perc
mod_enabled
mod_period_us
mod_width_us
region
scans_to_average
shutter_enabled
tec_enabled
tec_setpoint_degC
trigger_source
use_mW
wavenumber_correction
active_pixels_horizontal
active_pixels_vertical
actual_horizontal
actual_vertical
adc_to_degC_coeffs
avg_resolution
bad_pixels
baud_rate
bin_2x2
calibrated_by
calibration_date
cutoff_filter_installed
degC_to_dac_coeffs
detector
detector_gain
detector_gain_odd
detector_offset
detector_offset_odd
excitation_nm
excitation_nm_float
feature_mask
format
gen15
hardware_even_odd
has_battery
has_cooling
has_laser
invert_x_axis
laser_power_coeffs
laser_warmup_sec
linearity_coeffs
max_integration_time_ms
max_laser_power_mW
max_temp_degC
min_integration_time_ms
min_laser_power_mW
min_temp_degC
model
product_configuration
raman_intensity_calibration_order
raman_intensity_coeffs
region_count
roi_horiz_region_2_end
roi_horiz_region_2_start
roi_horiz_region_3_end
roi_horiz_region_3_start
roi_horiz_region_4_end
roi_horiz_region_4_start
roi_horizontal_end
roi_horizontal_start
roi_vertical_region_1_end
roi_vertical_region_1_start
roi_vertical_region_2_end
roi_vertical_region_2_start
roi_vertical_region_3_end
roi_vertical_region_3_start
roi_vertical_region_4_end
roi_vertical_region_4_start
roi_wavecal_region_2_coeffs
roi_wavecal_region_3_coeffs
roi_wavecal_region_4_coeffs
serial_number
slit_size_um
startup_integration_time_ms
startup_temp_degC
startup_triggering_scheme
subformat
user_data
user_text
wavelength_coeffs
(These are the same fields saved at the top of CSV measurement files…note space rather than underscore)
enlighten version
measurement id
serial number
model
label
detector
scan averaging
boxcar
integration time
timestamp
note
temperature
technique
baseline correction algo
ccd c0
ccd c1
ccd c2
ccd c3
ccd c4
ccd offset
ccd gain
ccd offset odd
ccd gain odd
laser wavelength
laser enable
laser temperature
pixel count
declared match
declared score
roi pixel start
roi pixel end
vignetted
interpolated
raman intensity corrected
deconvolved
region
slit width
wavenumber correction
battery %
fw version
fpga version
laser power %
laser power mw
ENLIGHTEN allows advanced users to enter a password to access administrative features which are normally disabled, as improper use could disrupt a spectrometer’s operation by altering its factory-set calibrations, potentially leading to invalid spectral data or even damaging the device.
If you have received an administrative password from your Wasatch Photonics account representative, you can authenticate by clicking “Advanced Users” at the bottom of the Hardware Setup screen.
This will bring up a dialog box prompting you to enter your password. Different passwords are supported, offering a range of unlockable features.
Full administrative access includes the following EEPROM options:
Different Wasatch Photonics spectrometers are designed with different electronics. Some are based on the Cypress FX2 microcontroller. If a computer has been used to “flash” new microcontroller firmware onto a spectrometer, then it is likely that the computer will have Cypress device drivers installed. Those drivers “override” the libusb-win32 driver that ENLIGHTEN uses, and as a result, ENLIGHTEN cannot “see” the spectrometer when the Cypress driver is in effect.
The observable symptom of this issue is that ENLIGHTEN reports “no spectrometer found”, although you can see our spectrometer in the Windows Device Manager listed under “Universal Serial Bus Controllers”:
Fortunately the solution is straightforward:
Right-click on the spectrometer device and select “Update Driver”.
Select “Browse my computer for drivers”:
Select “Let me pick from a list”:
Select the one that says “Wasatch Photonics Spectrometer”:
Confirm it then reports the device as “Wasatch Device Spectrometer”:
Confirm your spectrometer is now properly listed on Device Manager under “libusb-win32 devices”:
ENLIGHTEN should now be able to connect to your spectrometer and display and save spectra per usual.
Most Wasatch Spectrometers communicate over USB (Universal Serial Bus) 2.0, either High-Speed (480Mbps) or Full-Speed (12Mbps) depending on the model, or BLE (Bluetooth Low-Energy) for wireless control. Both protocols are convenient and ubiquitous, but neither is optimized for high uptime or deterministic timing. For industrial-grade process-control applications, specific models are available with SPI (Serial Peripheral Interface) communications using a board-level accessory connector.
(For more information, see “ENG-0150 Wasatch Photonics SPI API”, available from your OEM account representative or distributor.)
ENLIGHTEN is designed to run on standard desktop and laptop computers. Unlike USB, most computers don’t come with a user-accessible “SPI port,” so there is no obvious way to connect your SPI-based spectrometer to the computer.
A common solution is to use a USB-to-serial converter like the Adafruit FT232H, readily available from DigiKey and other vendors. The breakout board must be wired to the spectrometer’s accessory connector using a specific pinout; this specification is provided with your SPI-based spectrometer, or a custom cable can be provided by Wasatch for your integration testing.
Unfortunately, the “default” Windows driver associated to the Adafruit FT232H is not one that the Python-based ENLIGHTEN application can readily use. As a consequence, by default, simply plugging a SPI-based Wasatch Photonics spectrometer into an Adafruit dongle, and then connecting the Adafruit to the Windows computer, will not allow ENLIGHTEN to “see” the spectrometer. ENLIGHTEN will act as though no spectrometer is connected.
Fortunately, there is a straightforward solution: it is easy to install a new driver for your Adafruit FT232H dongle which ENLIGHTEN can see and use.
The following instructions are a summary extracted from Adafruit’s website at https://learn.adafruit.com/circuitpython-on-any-computer-with-ft232h/windows. Users are recommended to review the complete procedure defined by Adafruit to avoid overwriting drivers used by other FTDI-based devices in your system. |
You should now see your Adafruit FT232H reflected in the Windows Device Manager as shown:
The following is the basic order of operations which occurs when a Wasatch USB spectrometer is plugged into a computer, and then ENLIGHTEN™ is launched or an application using a supported Wasatch driver library is executed (or alternately, when a new spectrometer is plugged into an already-running ENLIGHTEN™ session):
1) The software reads the EEPROM values off the connected unit.
2) If ENLIGHTEN™ is running, it will then look for a file EnlightenSpectra\enlighten.ini and check for entries with the same serial number. If one is found, those values will supersede the EEPROM values. These enlighten.ini files can be manually written or created from within ENLIGHTEN™ (see below). However, this file is not used by any customer software other than ENLIGHTEN™. *DISCLAIMER: Editing of this file is strongly discouraged unless you know exactly what changes are being made.
3) Some of those resulting values, whether they originated from the EEPROM or INI, will be written back into the microcontroller or FPGA of the spectrometer where they are actually used:
a) Some changes are applied to the spectra while still in the detector, even before it is read-out to the FPGA:
o If the spectrometer is in High Gain Mode, each intensity will be gained-up by a fixed amount, inside the photodiodes
o Analog gain is applied in dB by the detector electronics
b) When the FPGA reads the raw pixel intensities from the detector, they are communicated as a raw array of intensity counts as integers (unsigned 16-bit integers 0-65535), starting with pixel 0. (At this point there is no calibration data or x-axis, this is just a list of the raw y-axis intensity values in left-to-right order.)
c) The following adjustments to the spectra are applied to data in the FPGA before communication to the host:
(1) Every pixel is multiplied by Detector Gain (a float)
(2) Detector Offset (a signed integer) is ADDED to every intensity to raise or lower the baseline
d) The following adjustments to the spectra are applied to data in the driver (Wasatch.PY for ENLIGHTEN™, Wasatch.NET for LabVIEW, etc)
i) InGaAs even-odd correction
ii) Area Scan (rare): if we are in Area Scan mode, we extract the row number from the first pixel position, then overwrite pixel 0 with pixel 1. (note: Area Scan not applicable to InGaAs)
iii) Overwrite array ends: some detectors include unusable pixels at the beginning of the array, the end of the array, or both (synchronization bytes and what-not), so we overwrite these with the first good pixel (or last good pixel), which may create short horizontal bars at the spectrum ends.
iv) X-Axis Inversion (1064 OEM etc): if the EEPROM indicates that the detector is inverted (i.e., upside down) on a given model, such that the left-to-right spectrum is physically red-to-blue rather than our normal blue-to-red, then the spectrum is flipped end-for-end.
v) Bad Pixel Correction: the EEPROM can be configured with a list of bad pixels (dead pixels, hot pixels or just volatile pixels), so we overwrite those intensity values with a linear average of the nearest adjacent good pixels (mx + b slope fit).
vi) 2x2 Binning: color 2D detectors like the IMX385 have a red-blue-green Bayer filter which we remove by averaging every pixel with its following neighbor.
o a[0] = (a[0] + a[1]) / 2
o a[1] = (a[1] + a[2]) / 2 …etc
vii) Scan Averaging: averaging 2-1000 spectra together to increase SNR by averaging out noise on the same pixel (averaging over time).
viii) Take other hardware readings: in Wasatch.PY, at this point (after completing an averaged spectrum), the driver automatically reads several other hardware settings to attach to the Reading object, including:
(1) Detector temperature (on TEC-equipped models)
(2) Laser temperature (on laser-equipped models)[b][c][d]
(3) Ambient temperature (on Gen 1.5 models)
(4) Battery charge level and charging state (on Series XS models)
e) The driver is also responsible for providing an x-axis for each spectrometer (initially computed when the spectrometer is connected and the EEPROM is loaded, though these may be updated if wavecal or excitation are adjusted at runtime).
i) Wavelength (nm): a wavelength x-axis is expanded from the EEPROM’s 4th-order wavelength calibration polynomial.
ii) Wavenumber (cm-1): if the EEPROM lists a Laser Excitation Wavelength greater than 0 nm, a second axis is generated in wavenumbers (Raman shift) from the excitation wavelength.
f) The following adjustments to the spectra are applied to data in ENLIGHTEN™ (after Wasatch.PY library processing):
i) Single-point wavenumber shift correction (Raman models only)
ii) Dark Subtraction: if a dark or ambient measurement has been stored, it is subtracted from the sample measurement.
iii) ROI Vignetting (Region of Interest): if start and end pixels have been configured in the EEPROM’s ROI Horizontal Start and End fields, the spectrum is cropped to within that range[e][f]. (ROI is disabled if either value is negative, if the values are equal, start > end, or either value exceeds the physical number of pixels.)
iv) Reference-based Processing: If using a reference-based technique (absorbance, reflectance, transmission), this is computed now and replaces the active spectrum in subsequent steps.
v) Raman Intensity Correction: If in Raman mode, we correct the Raman spectrum here using the factors generated from the SRM standard and stored in the EEPROM.
vi) Baseline Correction: If in non-referenced technique, and baseline correction has been enabled, then the selected algorithm (AirPLS etc) is used to generate and subtract a computed baseline.
vii) Peak Sharpening: if in Raman mode, at this point we can apply the Richardson-Lucy point-spread function deconvolution to bring peaks closer to their nominal FWHM.
viii) Boxcar Averaging: removing low-frequency noise by averaging one or more adjacent pixels (averaging over space).
ix) Interpolation: if interpolation is enabled in Save Options, the spectrum intensities will be interpolated to the configured x-axis (e.g. integral wavenumbers from 200 to 2400 in 0.1cm-1 steps), to simplify comparison between measurements recorded on different spectrometers.
x) At this point the processed spectrum is graphed.
xi) KnowItAllⓇ Raman Identification: if you are in Raman mode and KIA is installed and enabled, at this point the measurement is sent to them for identification.
xii) Plugins: if a plugin has been selected, it is now sent to the connected plugin for processing. (May be moved earlier in the process, e.g. before graphing.)
xiii) If we are currently performing a Batch Collection such that every reading is being saved, the measurement is saved at this point.
The ENLIGHTEN™ Plugin Architecture allows for the creation of Python files that can augment the normal processing provided in ENLIGHTEN™. The architecture allows for spectrometer readings to be sent to these external files that will then return a result, which can be displayed in a graph or table. The following photo displays a typical GUI layout displayed to a user utilizing a plugin.
A plugin can have a graph, a table, or neither. If a plugin has fields of type output a table will automatically appear in the GUI below the main graph. If the plugin utilizes an additional graph, the control widget will contain a drop down, labeled Graph Position, that allows the user to select where the additional graph is placed in relation to the main graph.
Below that is the Enabled check box. This will be present on any loaded plugin. This box determines whether or not ENLIGHTEN™ is actively sending readings from the spectrometer to the plugin for processing. Below the Enabled checkbox, are any fields specified as inputs in the plugin script. Any fields that are specified as outputs in the plugin script will appear in the table.
Plugins are loaded by selecting them within the plugins widget on the right side panel. The plugins widget contains a dropdown list of plugins that ENLIGHTEN™ has found and can be used during the current session.
Plugins should be saved in a folder called “plugins” located in the Saved Data Location, which can be found in Settings (default “EnlightenSpectra”).
It is sometimes easier to review sample code than to describe code. ENLIGHTEN ships with a number of pre-tested plugins which demonstrate a variety of supported features and interfaces. If you have installed ENLIGHTEN on Windows, the sample plugins will be installed under EnlightenSpectra\plugins. Alternately you can review them on the GitHub project here:
In particular, note that all plugins should “extend” (inherit from) the class EnlightenPlugin.EnlightenPluginBase. That class, and several utility classes used in configuring and communicating with plugins, are defined here:
Following are several working plugins that demonstrate a broad swath of plugin capability:
Before going further with this tutorial, note that in addition to the browseable “sample code” on GitHub, most of the plugin classes, datatypes and methods are documented in rendered Doxygen on our API site:
In particular, you will find most of the key classes documented in the rendered HTML version of our README_PLUGINS.md:
Each plugin must import the following classes from EnlightenPlugin:
Then the plugin class must inherit from EnlightenPlugin.EnlightenPluginBase. The name of the class must be the same name as the file, or the plugin will fail to load.
Each plugin needs to implement the following methods, which are called from ENLIGHTEN’s Plugins.PluginController:
This function must accept plugin_manager as an argument. Plugin_manager is currently reserved for future capability.
This function sets up the information needed by ENLIGHTEN™, returning a populated instance of EnlightenPluginConfiguration.
Many objects go into an EnlightenPluginConfiguration, described in the following.
An EnlightenPluginField can represent a plugin output displayed on the ENLIGHTEN GUI, or a plugin input passed from the ENLIGHTEN GUI to the plugin. In either case, each EnlightenPluginField will correspond to an on-screen GUI widget. “Input” fields may be rendered as active QSpinner widgets (ints), QDoubleSpinner (floats), QLineEntry (strings) etc. “Output” fields will generally be QLabels (display-only on the GUI).
An EnlightenPlugField takes the following arguments:
EnlightenPluginField(name, datatype, direction, initial, maximum, minimum, step, callback) |
Name: mostly utilized by ENLIGHTEN™ to identify the field. This must be unique. If the datatype is a button, this will determine what the button says.
Datatype: This determines what the field is. The options are and result in:
string -> QLineEdit
Int -> QSpinBox
float -> QDoubleSpinBox
bool -> QCheckBox
button -> QPushButton
For an output, this field is less important as the output will be displayed in the table as a string.
Direction: Determines if a field is an input or output, which determines if it is displayed in the control widget or table, respectively.
Initial, maximum, minimum, step: These are for float and int. This allows you to set the values and what manipulation can be applied to them for an input field.
Callback: If the datatype is a button, this determines what the button executes when it is pressed. This can be any additional function you have defined in the plugin file.
An EnlightenPluginConfiguration contains the following:
EnlightenPluginConfiguration(name, plugin_type, fields, has_other_graph, x_axis_units, y_axis_units, plot_names, graph_type): |
Name: This determines the name that appears in the control widget.
Plugin_type: This must be a string of either “every” or “manual.” This determines if the plugin continuously sends spectra or includes a button on the control widget that will send spectra when pressed.
Fields: This must be a list of EnlightenPluginFields.
Has_other_graph: This must be a boolean and determines if there is a graph separate from the main graph for plotting data.
X_axis_units: This must be a string and determines what the label on the x axis says.
Y_axis_units: This must be a string and determines what the label on the y axis says.
Plot_names: This must be a list of strings and must match the names in the data portion of EnlightenPluginResponse. This determines what the names of the curves that appear on the graph are, as listed in the legend.
Graph_type: This must be a string of either “line” or “xy.” This determines if the graph utilizes points or draws a line for displaying the data. This is only supported for Has_other_graph. Plots on the main graph are only lines.
This is the bulk of where the execution of the plugin exists. When ENLIGHTEN™ receives a spectrum, it sends an EnlightenPluginRequest to this function. This function can perform any needed processing, and then it needs to return an EnlightenPluginResponse. A plugin request contains the following:
EnlightenPluginRequest(settings, processed_reading, plugin_fields) |
Settings: This contains a Wasatch Spectrometer settings object
Processed_reading: These are the intensity values that were recorded by the spectrometer after any processing, such as boxcar smoothing, has been applied.
Plugin_fields: This contains a dictionary of all the fields and their values as displayed in the GUI. The keys for the dictionary match the name set in the name argument for the EnlgithenPluginField
A response must contain the following:
EnlightenPluginResponse(request, data, outputs) |
Request: This is just the same request that was passed to process_request
Data: This is a dictionary of dictionaries. Each key must match the name of the curve specified in “plot_names” in EnlightenPluginConfiguration. The dictionary corresponding to each of those has two keys, “x” and “y.” These correspond to the x axis and y axis values. They must be of the same length and contain integers or floats. X may contain the value None though. If x contains None, ENLIGHTEN™ will assume the x values match that of the x axis for the current x axis on the main graph of pixel, wavenumber, or wavelength.
Outputs: Outputs are not passed to EnlightenPluginResponse when the response object is created. Instead, as seen in the example, it is set using the function set_ouput(). This function takes two arguments, a string that must match a field of the same name, and a value. The value is what appears in the table, and it must be in a csv format.
This function just needs to include super.disconnect() as shown in the example above.
Along with plugins processing responses from the process_request call, ENLIGHTEN can process responses from events. In order to add this ability the optional methods, get_event_responses and clear_event_responses must BOTH be implemented. The former must return a list of EnlightenResponse objects that ENLIGHTEN can use to update the GUI for the plugin, while the latter ensures that events are not processed more than once.
ENLIGHTEN™ User Manual Dec 15, 2022
[a]We probably could / should add: external trigger, lamp enable
[b]for quite some time I have been getting readings of -96 deg C (or there abouts) for the laser - is this feature not supported? If not, should this give a different reading, maybe, something other than -96 deg C that indicates NA?
[c]It would be valuable sharing more info about this like a copy of the eeprom and log files to determine why it's reporting -96C. There is a bug I'm seeing right now with my SiG where on the hardware page it reports an erroneous temperature but on the scope page it reports a constant 0 for it since it doesn't have a laser temperature sensor
[d]Basically, we can't read the laser temperature for any MML. Therefore ENLIGHTEN shouldn't try to display the laser temperature if an MML is connected. However, we don't currently have a field in the EEPROM indicating whether the laser is an MML (although one could infer it, for instance from whether max_laser_power_mW is > 130).
However the truth is I'm not sure we were measuring the laser temperature well for SML either — I think the voltage coming out of the laser thermistor exceeds the limits of the connected ADC.
I would support simply disabling laser temperature monitoring / reporting altogether at this point.
[e]this has not been working for me for some while
[f]We need to set up a very specific test-case that can be reproduced by Dieter, Allie and Evan, and work to resolve it to everyone's satisfaction. Then we change the test to cover other predictable corner-cases, and make sure everyone is satisfied with how that is handled, and so on. This is a very thorny issue affecting how the spectrum is graphed, how it is saved, what happens in different techniques, which version of the spectrum is passed to each "processing" module (dark correction, baseline correction, KIA, plugins, etc). There are not only many ways to "get it wrong," there are also many ways that "seem right" to one user or application, which breaks another user or application. It's not enough to say "fix it" or "make it work," we need to actively decide exactly how it should work; at that point implementation becomes straightforward. This will take a few iterations.
[g]The old way still works.
The new way is somewhat documented in README_PLUGINS under Quick Start and Demos/hello_graph.py
We want to update this section once functional plugins reach maturity.