Skip to content

QCLM

QCLM (Quantum Cascade Laser Microscopy) is an open toolkit for hyperspectral infrared imaging. It has two parts:

  • a desktop app for instrument control, live acquisition and spectral analysis
  • a backend that runs on your machine: it builds and calibrates spectral cubes, stores your data and runs classification

You install the desktop app like any other application and start the backend with a single Docker command.

Then follow Installation and Backend setup. Getting to a first scan takes about ten minutes.

What you can do with it

  • Control the instrument. Tune the laser by wavenumber, set the pulse rate, coadds and frame rate, and move the X/Y/Z stage. Choose single-wavelength, full hyperspectral or discrete (sparse) wavelength scans.
  • Watch acquisitions live. Frames stream into the viewer as they are captured, and a spectral profile follows the cursor.
  • Open existing data. Import sessions saved as ENVI (.hdr), HDF5, NetCDF, NumPy (.npy), TIFF, Zarr or raw binary.
  • Calibrate and clean. Apply white/dark reference correction, destriping, normalization, band cropping, downsampling and ROI cropping.
  • Mask and select regions. Draw ROIs and sub-ROIs, threshold, combine and clean masks, and define a measurement ROI.
  • Reduce dimensionality. Run MNF or PCA transforms, view eigenvalue plots, pick bands by correlation, and extract end-members with the Pure Pixel Index (PPI).
  • Compute spectral indices. Use the built-in RABD, RABA, ratio and mean-reflectance indices, or define your own and export the maps and plots.
  • Classify. Run a classification model on a cube and compare models side by side.
  • Automate. Run batch preprocessing and batch index computation over whole folders, and export or import complete projects.

Project status

QCLM is under active development.

  • Simulated laser: the backend currently drives a simulated laser and detector, so you can learn the full workflow without hardware. Drivers for real instruments plug in behind the same interface.
  • Placeholder classifier: the bundled classification model is a simple reference model (a threshold classifier) that shows the inference workflow. It is not trained for any particular sample type.

How it fits together

flowchart LR
    A["QCLM desktop app"] -- "REST + live events" --> G["API gateway :8080"]
    subgraph B["Backend (Docker, on your machine)"]
        G --> E[Experiment]
        G --> Q[Acquisition]
        G --> P[Processing]
        G --> I[Inference]
        G --> M[Metadata]
        G --> D[Data storage]
        Q -- frames --> K[(Kafka)]
        K --> P -- cubes --> K --> I
    end

The desktop app only talks to the gateway. By default that is http://localhost:8080, but you can point the app at a backend on another machine in your lab. System architecture explains each service.

Next steps

  1. Install the desktop app
  2. Start the backend
  3. Do a first run