Software & Data Analysis
Recently, I developed a Python program called QCLight_FF (now at its version v2.0), to provide a fast, reliable and versatile data analysis tool for the optical, electrical and spectral characterization of Quantum Cascade Lasers operating in the Terahertz frequency region (THz QCLs).
In particular, the program is meant to compare the performance of lasers whose surface is patterned with a two-dimensional photonic structure and differ by their filling factor (FF). The FF is a geometric parameter which controls the scattering properties of the photonic system itself and allows tailoring the emission frequency, output power and far-field intensity pattern of the laser. Of course, the code can be generalized to organize such a comparison according to other structural parameters, so that different type of devices can be studied together.
QCLight_FF is written in Python 3.4 and is mainly based on the Numpy, Scipy and Matplotlib libraries. Currently, the software performs a number of data analysis operations on datafiles related to many lasers at once:
- simultaneous plotting and analysis of multiple LIV characteristics, i.e. the curves that relate the light intensity output L, the current I and the voltage V across the laser. These are measured with a computer-controlled lock-in system and saved in the LabVIEW Measurement format .lvm
- automated computation and plotting of the relevant figures of merit (threshold and maximum current/current density, peak optical output, slope efficiency, wall-plug efficiency)
- simultaneous analysis and plotting of the lasers’ FTIR emission spectra, expected in the comma-separated values format .csv, with the detection of the spectral lines and their full width at half maximum (FWHM)
Specific algorithms were devised and implemented to face different technical issues, for example for finding the lasing threshold condition, performing an appropriate fitting for the slope efficiency or recognizing the spectral peaks.
Moreover, I devised dedicated filename parsing functions for both the LIV files and the emission spectral files. These routines extract information about the device’s characteristics and the experimental conditions in which they were tested. Particular attention was paid to recognize possible typos in the filename and make the program stable w.r.t. them.
In case the device area is not known, the program reports all results in terms of current (in A) and displays the LIVs. Instead if the area is given, current densities J are computed in A/cm2 and LJV curves are shown. If the collection efficiency (CE) is known, it can be used to effectively evaluate the peak power output L (in mW) and compute the slope efficiency dL/dI and the wall-plug efficiency WP. Otherwise, only the peak lock-in signal in mV can be used and consequently not all the cited figures of merit can be evaluated.
Different diagnostic and control tools were implemented in the program to handle exceptions and examine all the significant execution steps where data analysis may need a closer look.
All the computed data, along with the core information for each laser, are displayed in real time on-screen (in the Python or IPython console) and also stored to a .txt file for future use.
The graphical output of the program execution consists of a series of windows displaying the LIV/LJV curves and related figures of merit, plus the emission spectra, as functions of the parameter FF. All of these figures can be interactively zoomed, moved and also saved as raster or vector images. Some examples are shown below.
Figure 1: Example of LJV curves of a set of QCLs displayed by QCLight_FF v2.0
Figure 2: Corresponding slope efficiencies in a separate window
Figure 3: Example of FTIR emission spectra plotted by QCLight_FF v2.0 labelled with the injected current density at acquisition time
I also have some new ideas to improve and extend the functionalities of this software. Stay tuned for future updates!