Page

A picture containing text, clipart

Description automatically generated

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

1. Introduction        6

1.1 Referenced Documents        6

1.2 Manual Conventions        6

1.3 Quick Start        6

1.4 Laser Eye Safety        7

2 Hardware Compatibility        8

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

2.1.4 Older Spectrometers        9

2.2 Other Hardware Vendors        9

2.2.1 Light Sources        9

2.2.2 Trigger Sources        9

3 Installation        10

3.1 Compatibility        10

3.1.1 Microsoft Windows        10

3.1.2 Linux        10

3.1.3 MacOS        10

3.1.4 Raspberry Pi OS        11

3.2 Download        11

3.3 Application Installation        12

3.3.1 Application Installation (Windows)        12

3.3.2 Uninstalling ENLIGHTEN™ (Windows)        15

3.3.3 Updates (Windows)        16

3.3.4 Application Installation (Linux and Raspberry Pi)        16

3.3.5 Application Installation (MacOS)        17

3.4 External Dependencies        19

3.4.1 Andor Driver Pack (XL-Series spectrometers)        19

3.4.2 Adafruit FT232H libusbK driver (SPI-based spectrometers)        19

3.5 Firmware Updates        19

4 Unboxing Your Spectrometer        20

4.1 Fibers        20

4.2 Series-XL Spectrometers        21

4.3 System Power Requirements        21

5 Launching ENLIGHTEN™        22

5.1 Launching ENLIGHTEN™ (Windows)        22

5.1.1 Windows Start Menu        22

5.2 Launching ENLIGHTEN™ (Linux)        22

5.3 Launching ENLIGHTEN™ (MacOS)        23

5.4 Command-Line        23

5.5 Opening Screen        23

6 Quick Start        25

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 Spectrometer Operation        30

7.1 Scope View        30

7.1.1 User Controls        32

7.1.1.1 Spectrometer        32

7.1.1.2 Laser Control        33

7.1.1.2.1 Laser Watchdog        34

7.1.1.3 Detector Control        34

7.1.1.3.1 Integration Time        34

7.1.1.3.2 Gain (dB)        35

7.1.1.3.3 External Trigger        35

7.1.1.3.4 High-Gain Mode        35

7.1.1.4 X Axis        36

7.1.1.4.1 Cursor        36

7.1.1.4.2 Show Marker        36

7.1.1.5 Scan Averaging        36

7.1.1.6 Temperature Control        37

7.1.1.7 Boxcar Smoothing        37

7.1.1.8 Accessory Control        38

7.1.1.9 Advanced Options        39

7.1.1.9.1 Area Scan        40

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.2 System Status        42

7.1.3 Chart Navigation        43

7.1.3.1 Freezing / Unfreezing the Y-Axis        43

7.2 Data Management        44

7.2.1 Saving Spectra        44

7.2.2 Thumbnail Management        45

7.2.2.1 Renaming Measurements        45

7.2.2.2 Overlays        45

7.2.2.3 Delete and Clear        46

7.2.2.4 Collapse        46

7.2.2.5 Re-sort        47

7.2.2.6 Load and Export        47

7.3 Settings View        48

7.3.1 Application Options        48

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.4 Interpolation        51

7.3.1.5 Plug-Ins        51

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.3.3 Dark Spectrum        56

7.3.4 Reference Spectrum        57

7.4 Hardware View        58

7.4.1 Spectrometer EEPROM        58

7.4.1.1 Gain and Offset Correction        58

7.4.1.2 Bad Pixel Correction        59

7.4.2 .INI Configuration        60

7.4.3 EEPROM Editor        60

7.4.4 Administrative Features        62

7.5 Log View        62

7.6 Factory View        62

7.6.1 Detector TEC Temperature        63

7.6.2 Laser TEC Temperature        63

8 Spectroscopic Techniques        64

8.1 Raman Technique        64

8.1.1 Wavenumber Correction        65

8.2 Reflectance and Transmission Techniques        66

8.3 Absorbance Technique        67

8.4 Taking Dark and Reference Spectra        68

9 Measurement Operations        69

9.1 External Hardware Triggering        69

10 Wiley KnowItAllⓇ        70

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.2 KnowItAll Options        74

10.3 Understanding Matching Scores        76

11 Cloud Connectivity        77

XL Virtual EEPROM        77

12 Troubleshooting        78

12.1 Application Logging        78

12.2 Common Error Conditions        78

12.2.1 Windows Device Manager (libusb-win32)        78

12.2.2 Multiple / Conflicting Programs        81

12.3 Electrical Transients        82

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.2 Column-ordered CSV        87

16.3 Session Exports (Column-ordered)        89

16.4 Session Exports (Row-ordered)        90

17 Appendix E: Label Templates        91

SpectrometerState        91

EEPROM        91

Measurement Metadata        92

18 Appendix F: Administrative Features        93

18.1 EEPROM Updates        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 Appendix J: Plugins        105

22.1 User Interface        105

22.2 Loading a Plugin        106

22.3 Creating a Plugin        107

22.4 __init__        109

22.5 get_configuration        109

22.5.1 EnlightenPluginField        109

22.5.2 EnlightenPluginConfiguration        110

22.6 process_request        110

22.7 disconnect        111

22.8 Event Responses        111

 

  1. Introduction

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.

  1. Referenced Documents

This manual makes reference to the following external documents, which you can request for additional supporting detail.

  1. Manual Conventions

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.

  1. Quick Start

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.

  1. Laser Eye Safety

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.

  1. Hardware Compatibility

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.

  1. Wasatch Photonics Spectrometers

ENLIGHTEN™ supports all current and most historical Wasatch Photonics products, including USB, BLE (Bluetooth Low-Energy) and SPI (Serial Peripheral Interface) communications.

  1. Series-XL Spectrometers (Andor cameras)

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:

  1. Series-X and Series-XM Spectrometers (Hamamatsu detectors)

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:

  1. Series-XS Spectrometers (Sony IMX detectors)

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:

  1. Older Spectrometers

ENLIGHTEN™ should support all legacy Wasatch Photonics USB spectrometers including an EEPROM and supporting the Feature Identification Protocol (FID, specified in ENG-0001).

  1. Other Hardware Vendors

  1. Light Sources

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.

  1. Trigger Sources

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.

  1. Installation

  1. Compatibility

  1. Microsoft Windows

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:

  1. Linux

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:

  1. MacOS

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:

  1. Raspberry Pi OS

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:

  1. Download

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.

  1. Application Installation

  1. Application Installation (Windows)

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):

../../../Pictures/screenshots/Screen%20Shot%202017-12-10%20at%205.46.16%20

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

  1. Uninstalling ENLIGHTEN™ (Windows)

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:

  1. Updates (Windows)

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™.)

  1. Application Installation (Linux and Raspberry Pi)

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.

  1. Application Installation (MacOS)

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.

Graphical user interface

Description automatically generated

Graphical user interface, text, website

Description automatically generated

Graphical user interface, website

Description automatically generated

  1. External Dependencies

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.

  1. Andor Driver Pack (XL-Series spectrometers)

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)

  1. Adafruit FT232H libusbK driver (SPI-based spectrometers)

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.

  1. Firmware Updates

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

  1. Unboxing Your Spectrometer

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.

  1. Fibers

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.

  1. Series-XL Spectrometers

For additional information about unboxing, connecting and configuring your Series-XL spectrometer with Andor camera, see the Series-XL QuickStart Guide with ENLIGHTEN.

  1. System Power Requirements

Operational power requirements including measured current draw can be found in ENG-0157 Empirical Power Draw and Power Supply Guidance.

  1. Launching ENLIGHTEN™

  1. Launching ENLIGHTEN™ (Windows)

  1. Windows Start Menu

ENLIGHTEN™ may be launched using the Windows Start Menu under the Wasatch Photonics group

../../../Pictures/screenshots/Screen%20Shot%202017-12-10%20at%206.07.09%20

or desktop shortcut.

  1. Launching ENLIGHTEN™ (Linux)

Change to the directory in which you installed ENLIGHTEN™, then type:

$ ./EnlightenGUI

  1. Launching ENLIGHTEN™ (MacOS)

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:

A picture containing text, screen, screenshot, close

Description automatically generated

  1. Command-Line

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.

  1. Opening Screen

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.

  1. Quick Start

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.

  1. ENLIGHTEN™ for Quick Start

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.  

  1. Sampling Parameters for Quick Start

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.

  1. Quick Start with Internal Laser

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.

  1. Quick Start with External Laser

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.

  1. Focusing Raman Probe for Quick Start

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.

  1. Quick Start with External Light Source

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.

  1. Spectrometer Operation

  1. Scope View

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:

  1. Window Title: At the top of the ENLIGHTEN™ window is a standard operating system title bar, and that contains two fields of interest: the software version number, and the model and serial number of the spectrometer currently selected. Each of those points of information will be useful in helping you resolve any issues you experience with the application.
  2. View: Current options in this pull-down menu include Scope (shown), Settings, Hardware, and Log.
  3. Mode: By default, Raman spectrometers will come up in Raman mode (wavenumber axis), while other spectrometers will default to Non-Raman mode. Different options and features apply to different models. “Expert” mode provides access to all features, including rarely-used / experimental options.
  4. Pause/Play, Save, Step-Forward/Batch Collection, Step-Forward and Save: Using familiar video-player icons (if you’re from the VHS/Betamax generation), this set of four buttons allows you to save data in a few different ways. As a default, spectra are “free-running,” and the first two of the four buttons are functional: the Pause and Save buttons. The Pause button pauses the “free-running” signal in the spectrum chart while the Save button () saves an individual spectrum after the current integration. The remaining two buttons’ functionality are discussed in Saving Spectra (Capture Screen).
  5. Spectrum Chart: The Scope Capture screen is appropriately dominated by the spectral graph, discussed in more detail in the section on Chart Navigation.
  6. User Controls: The right-hand side of the screen features a scrollable palette of spectrometer and view controls, allowing you to command common spectrometer features and configure basic post-processing options. Individual controls are discussed in detail in the section on User Controls.
  7. System Status: Overall system status for hardware (HW), laser (Light), and detector temperature (Temp) can be viewed at a glance with the three status indicators at the bottom-right of the screen. Check out more details in section System Status.
  8. Status Bar: Shows quick metrics about the current spectrum being displayed. Metrics include: Min, Max, Mean, Area, Detector Temperature, Cursor Intensity, and Spectrum Count. A user can customize the metrics that are displayed by clicking the button on the far right of the bar (appears as 3 white dots) and selecting the desired metrics.
  9. Clipboard: The left-hand side of the screen is used to track spectra you’ve saved during acquisition. This column will fill with graphical thumbnails of each spectrum as you save them. See the section on Data Management for more information.
  10. Saved Data Controls: Use these controls to Load previously captured spectra from disk, or to Export a series of saved collections as a single file for strip-chart creation and offline analysis. The user can also add to the Prefix and/or Suffix fields so that this information can be added to either the beginning of or end of the filename.  Adding notes to the Notes field embeds this information into the metadata of the file itself. See the section on Data Management for more information.
  11. Quick-Click View Toggles: In the upper-left of the chart, you find buttons to lock/unlock the Y-axis (lock shaped button), zoom/unzoom to full-width chart mode (square with arrows in each corner), dis/enable the graph grid, reverse the x-axis (triangles side-by-side), or visualize the horizontal ROI.
  12. Dark and Reference Measurement Storage: You can store dark and reference measurements using the black light bulb button and the white light bulb button respectively. Note that when you “store dark” and “store reference”, those darks and references will represent the current post-processed spectrum, with the currently applied Scan Averaging, Boxcar, etc already applied.  See sections on collecting Dark and Reference Spectra for additional details.
  13. Status Message: When ENLIGHTEN™ wishes to display a brief status or alert message, it will be shown here.  Most messages will automatically disappear after 3 seconds.
  14. Spectroscopy Tips and Copy: At software launch, the option for Spectroscopy Tips (magic wand button) is enabled by default. These Tips are shown to the user above the Spectrum Chart, but they can be disabled by clicking on the icon such that it turns black. The Copy button allows you to quickly copy the currently displayed spectra (as well as the currently selected x-axis) to the system clipboard for pasting into other applications like Excel.
  15. Graph Legend: Identifies each spectral trace on the graph.  Note that this legend can be dragged elsewhere on the chart.

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.

  1. User Controls

The following controls are available in a vertically scrolling column along the right-hand side of all screens.

  1. Spectrometer

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:

Graphical user interface

Description automatically generated

  1. Laser Control

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.

  1. Laser Watchdog

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.

  1. Detector Control

  1. Integration Time

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.

  1. Gain (dB)

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

  1. External Trigger

You can enable the external trigger if your spectrometer supports that feature (see section on Triggering).

  1. High-Gain Mode

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.

  1. X Axis

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

A screenshot of a phone

Description automatically generated with medium confidence

  1. Cursor

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.

  1. Show Marker

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.

  1. Scan Averaging

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.

  1. Temperature Control

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.

  1. Boxcar Smoothing

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.

  1. Accessory Control

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.

  1. Advanced Options

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.

Graphical user interface, text, application

Description automatically generated

After acknowledging the warning, you can select the desired Advance Options you wish to adjust.

  1. Area Scan

In Area Scan, you can select the start and stop lines.

A screenshot of a computer screen

Description automatically generated with medium confidence

  1. Baseline Correction

For Baseline Correction, you can select the desired method to correct the spectral baseline.

Graphical user interface, application

Description automatically generated

In addition to AirPLS, various other baseline correction methods are available via the dropdown arrow.

A screen shot of a phone

Description automatically generated with low confidence

  1. Temperature Control

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.

  1. Post-Processing Options

The Post-Processing Options include Raman Intensity Correction and Peak Sharpening (not shown here).

Graphical user interface, application

Description automatically generated

  1. Raman Intensity Correction

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.

  1. Peak Sharpening

Peak Sharpening can be applied to improve Raman matching results with KnowItAllin 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.

  1. System Status

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

  1. Chart Navigation

The chart display in ENLIGHTEN™ has numerous advanced features which can be accessed from a 3-button mouse. Some of the most useful include:

  1. Freezing / Unfreezing the Y-Axis

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

  1. Data Management

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

  1. Saving Spectra

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.

  1. Thumbnail Management

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.

  1. Renaming Measurements

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

  1. Overlays

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.

Graphical user interface

Description automatically generated

  1. Delete and Clear

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.  

Graphical user interface

Description automatically generated

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.

Graphical user interface, text, application

Description automatically generated

  1. Collapse

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.  

Graphical user interface, text, application

Description automatically generated

Each individual measurement thumbnail has a down pointing triangle button you can click to expand or collapse individual saved spectra.

A screenshot of a computer

Description automatically generated with low confidence

  1. Re-sort

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

Graphical user interface, text, application

Description automatically generated

  1. Load and Export

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

  1. Settings View

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.

  1. Application Options

In the above screenshot, note the following screen areas:  

  1. Saved Data Location: Lets you specify where you’d like spectra saved when you click the Save button in the VCR-style controls atop the Capture screen. See Saved Data Location for more details.
  2. Saved Data Options - File Formats: Allows you to specify whether CSV, XLS, TXT, and/or JSON files are saved. If CSV is selected, you can choose for files to be row-ordered (each spectrum on one line) or column-ordered (each spectrum in one column).  If row-ordered is selected, it also provides an Append option in which multiple spectra are added to one file.  See Save Options – File Formats for more details.
  3. Saved Data Options - Optional Fields: Enables you to select which x-axis (pixel index, wavelength axis, and/or wavenumber axis) and y-axis (raw measurement, dark measurement, and/or reference measurement) fields you want saved to your data files. The “Processed” spectrum shown on the graph is always saved. In Raman Mode, “wavenumber” is automatically selected.  See Save Options – Optional Fields for more details.
  1. All Spectrometers: If multiple spectrometers are connected and this button is checked, when the Save button is used, the software will automatically save the latest / current spectrum from each spectrometer (each in a separate file, unless Append has also been checked).  (Note that this does not relate to “exports”, which may often combine spectra from multiple spectrometers.  This option relates to the behavior of the “Save” button itself.)
  2. Rename Files: If Rename Files is enabled, when you rename thumbnail labels on the Clipboard, the associated files in EnlightenSpectra will be renamed as well. See Rename the Measurement for more details.
  1. Interpolation: Causes each acquired spectrum to be interpolated against a specified x-axis. It will then be the interpolated spectrum which is graphed and saved, not the original spectrum.  Linear interpolation is used between neighboring datapoints.  The interpolated x-axis can be specified with scalar (start, stop) values and a step size.
  2. Plugins: See Appendix F: Plugins for more details.
  3. Wavenumber Correction: see Wavenumber Correction for more details.
  4. Batch Data Collection: ‘Batch Mode’ allows you to collect spectra in a wide variety of automatic, repeated, batch spectral measurements. Read the Batch Data Collection section for more details.
  5. Batch Data Collection - Options: Allows you to configure certain parameters regarding how the Clipboard is managed and how darks are collected during Batch Data Collection.
  6. Cloud Connectivity: Certain ENLIGHTEN features are able to access the internet. By default, all network and internet connectivity is disabled unless explicitly enabled via this checkbox. See Cloud Connectivity for more details.
  1. Saved Data Location

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.

  1. Save Options – File Formats

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.

  1. Save Options – Optional Fields

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:

  1. Raw: A relatively pure, unadulterated copy of the spectrum ENLIGHTEN™ received from the spectrometer driver.  Because some spectral corrections occur in the Wasatch.PY driver layer (including bad-pixel correction, axis inversion, 2x2 binning and scan averaging), those corrections will already have been applied to this spectrum.  However, it does not contain additional ENLIGHTEN™ processing like dark subtraction, boxcar smoothing or baseline correction.  See Order of Operations for additional details.
  2. Dark: Saves the dark spectrum used in generating the Processed spectrum.
  3. Reference: For reference-based techniques (transmission, reflectance, absorbance etc), this saves the spectrum used in generating the Processed spectrum.

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.

  1. Interpolation

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.

  1. Plug-Ins

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.

  1. Wavenumber Correction ASTM Selection

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.

  1. Batch Data Collection

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:

  1. Manual: ENLIGHTEN™ makes no changes to the laser status.  If you turn on the laser before the Batch Collection starts, then the laser will be on; if it is turned off, then the laser will be off.  If you toggle the laser during the Batch Collection, then different measurements will have different excitation states.
  2. Spectrum: The laser is automatically turned on at the start of each spectrum’s measurement and turned off at the end of each spectrum’s measurement.
  3. Batch: The laser is automatically turned on at the beginning of a Batch Collection, and automatically turned off at the end of the Batch Collection.  

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.

  1. Clear Thumbnails before Batch

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.

  1. Export Thumbnails after Batch

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.

  1. Take Dark before Enabling Laser

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.

  1. Live Spectrum (uncorrected)

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.

  1. Dark Spectrum

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.

  1. Reference Spectrum

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.

  1. Hardware View

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.

  1. Spectrometer EEPROM

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.

  1. Gain and Offset Correction

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()

  1. Bad Pixel Correction

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.

  1. .INI Configuration

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.

  1. EEPROM Editor

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.

  1. Administrative Features

The Hardware view also allows users to authenticate (login) as an “Advanced User” exposing additional hardware controls, as described in the Administrative Features Appendix.

  1. Log View

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/

  1. Factory View

A password is currently required to access the Factory view.

  1. Detector TEC Temperature

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.

  1. Laser TEC Temperature

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.

  1. Spectroscopic Techniques

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

  1. Raman Technique

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.

  1. Wavenumber Correction        

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

  1. Reflectance and Transmission Techniques

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.

  1. Absorbance Technique

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:

  1. Taking Dark and Reference Spectra

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.

  1. Measurement Operations

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.

  1. External Hardware Triggering

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.

  1. Wiley KnowItAll

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.

  1. Putting Your Best Peak Forward

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.

  1. KnowItAll Readiness: Dark Subtraction

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.

  1. KnowItAll Readiness: Baseline Correction

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.

  1. KnowItAll Readiness: Raman Intensity Correction

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.

  1. KnowItAll Readiness: Peak Sharpening

If desired, you can also enable Sharpen Peaks. Revisit details on Peak Sharpening if necessary.

  1. KnowItAll Readiness: Wavenumber Correction

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.

  1. KnowItAll Options

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.

  1. Understanding Matching Scores

Details regarding positive match identifications, corresponding match scores, and the length of time to process a Raman match are all displayed as shown below.

  1. Cloud Connectivity

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 Virtual EEPROM

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.

  1. Troubleshooting

  1. Application Logging

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

  1. Common Error Conditions

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.

  1. Windows Device Manager (libusb-win32)

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:

one

If ENLIGHTEN™ is failing to connect to your spectrometer, you may instead see something like this:

pdate Drivers

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

  1. Multiple / Conflicting Programs

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.

  1. Electrical Transients

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.

  1. Replacement Power Brick

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

  1. Appendix A: Command-Line Options

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)

  1. Appendix B: Keyboard Shortcuts

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

  1. Appendix C: .INI file format

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

  1. Appendix D: Saved Data Formats

ENLIGHTEN™ can save spectra in three data formats: CSV (row-ordered), CSV (column-ordered) and Excel (old-style .xls).

  1. Row-ordered CSV (Dash)

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.

  1. Column-ordered CSV

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

  1. Session Exports (Column-ordered)

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.

  1. Session Exports (Row-ordered)

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

  1. Appendix E: Label Templates

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:

SpectrometerState

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

EEPROM

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

Measurement Metadata

(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

  1. Appendix F: Administrative Features

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.

  1. EEPROM Updates

Full administrative access includes the following EEPROM options:

  1. Appendix G: Cypress Drivers

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.

  1. Appendix H: SPI Spectrometers

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.

  1. Zadig libusbK driver (Windows-only)

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:

  1. Appendix I: Order of Operations

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.

  1. Appendix J: Plugins

  1. User Interface

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.

  1. Loading a Plugin

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”).

  1. Creating a Plugin[g]

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:

  1. __init__

This function must accept plugin_manager as an argument. Plugin_manager is currently reserved for future capability.

  1. get_configuration

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.

  1. EnlightenPluginField

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.

  1. EnlightenPluginConfiguration

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.

  1. process_request

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.

  1. disconnect

This function just needs to include super.disconnect() as shown in the example above.

  1. Event Responses

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.