Dashboard for Time Resolved Analysis of LA-ICP-MS Data
Project description
LaserTRAM-DB
Welcome to LaserTRAM-DB, a PyQt6-based graphical user interface for processing LA-ICP-MS (Laser Ablation Inductively Coupled Plasma Mass Spectrometry) data using the lasertram library.
Migrating from previous versions
Previously, LaserTRAM-DB had been built using Plotly-Dash and hosted on GitHub. That repository has now been archived and all current development will be happening in this repository, as all new dev work by me will be done on USGS time, rather than when I was a grad student. It is HIGHLY recommended you abandon using the GitHub version of the dashboard as it is no longer supported and switch over to this one.
Motivation
LaserTRAM-DB is a dashboard for the complete processing pipeline of Laser Ablation Inductively Coupled Plasma Mass Spectrometry (LA-ICP-MS) data in complex materials such as geologic samples. As LA-ICP-MS data in geologic samples frequently have multiple phases, inclusions, and other compositional complexities within them that do not represent the material of interest, user interaction is required to filter unwanted signals out of the overall ablation signal. LaserTRAM-DB allows the user to filter which portion of the ablation peak is utilized in calculating concentrations, subsequently allowing for more accurate data to be obtained. It allows easy inspection of any sort of calculation done to the data and just about everything is exportable from tables and figures displayed within the dashboard.
Installation
It is recommended you do this in a fresh virtual environment. For example, using conda:
# create lasertramdb virtual environment
# using specifically python 3.13
conda create -n lasertramdb python=3.13
Then with your virtual environment activated clone the repository to your local machine wherever you like:
# Clone or download the repository
# and navigate to it on your machine
cd lasertramdb
conda activate lasertramdb
# install normally
pip install .
# Or install in development mode with dev dependencies
pip install -e ".[dev]"
Launching the Application
# with the virtual environment activated
# and library installed
lasertramdb
Basic Structure
The dashboard is comprised of four parts:
Note to get more information all the annotated widgets below, with the installation complete, simply activate your virtual environment and:
lasertramdb --help
The first time you run this command, it will take a bit to start up as it is compiling the application. After that, it should start up much faster.
Preprocessing
Below is an annotated LaserTRAM preprocessing tab from LaserTRAM-DB. This tab is used for taking a folder of .csv files, each containing the raw counts per second data for a single spot analysis, and combining them into one coherent dataset that can then be processed using the LaserTRAM tab. Each .csv file is the untouched file off the mass spectrometer for a single spot analysis. Rather than dealing with a collection of hundreds of files, this tab allows the user to consolidate all that information into one place.
LaserTRAM
Below is an annotated LaserTRAM tab from LaserTRAM-DB. This tab is used for determining which portion of a signal is utilized for further processing. As many geologic materials contain heterogeneities, this time resolved analysis is crucial in accurately calculating concentrations for materials of interest. Everything in this tab is designed to make that process efficient and quantifiable.
LaserTRAM reprocessing
Below is an annotated LaserTRAM-reprocessing tab from LaserTRAM-DB. This tab is used for "redoing" the lasertram process with already chosen intervals (i.e., the results of a previous experiemnt). Its purpose is to allow the user to use intervals from a previous session to either re-normalize to a different internal standard, apply (or not) a despiking algorithm to the data, or both! The overall goal is to make it such that the most time consuming part of laser ablation data processing - the choosing of ablation intervals that reflect the material of interest - is only done once.
LaserCalc
Below is an annotated LaserCalc tab from LaserTRAM-DB. The purpose of this tab is to take data that have been filtered for the desired signal region and normalized to an internal standard and calculate concentrations based on the known concentrations of:
- a user specified calibration standard reference material
- the internal standard in the unknown analyses.
For more information on the math behind this, the user is referred to the lasertram documentation. There are also widgets within the LaserCalc tab for inspecting the behavior or analytes in the calibration standard over time. As these data are extremely important in calculating final concentrations, checking their quality and behavior over an analytical session helps maximize final concentration quality.
Usage
After installation, to fire up the application run from the command line (within whichever envrironment the dashboard is installed. The first time you run this command, it will take a bit to start up as it is compiling the application. After that, it should start up much faster.):
lasertramdb
Or from Python:
from lasertramdb.app import main
main()
On application startup a File Dialog will prompt the user to choose a directory. This will be the "home" directory for the data processing session and the default location that all other File Dialogs will open up to and save files to. It is also where each session log file will be saved. This can be updated at any point in the session.
Workflow
It is recommended that users first become familiar with basic laser ablation ICP-MS data processing workflows. This can be done by referencing the lasertram documentation. Specifically the following sections:
In many ways you can think of this dashboard as a graphical user interface for the lasertram library where the widgets help you efficiently inspect how choosing different ablation intervals, internal standards, and calibration standards affect your final calculated concentrations.
Demo Videos
Coming Soon
For now we refer users to the old videos here, as much of the logic and general workflow can be found there.
Referencing
The underlying math and data structures are outlined in the following manuscript:
Lubbers, J., Kent, A. J., & Russo, C. (2025). lasertram: A Python library for time resolved analysis of laser ablation inductively coupled plasma mass spectrometry data. Applied Computing and Geosciences, 25, 100225. https://doi.org/10.1016/j.acags.2025.100225
The dashboard itself is also citeable:
Lubbers, J., (2026). lasertramdb, version 2.0.0: U.S. Geological Survey software release https://doi.org/10.5066/P14VNQMY
Contributing
I am more than happy to have contributors. If you feel that you have ideas you would like implemented or want to help contribute please reach out:
Maintainer: Jordan Lubbers jlubbers at usgs dot gov
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lasertramdb-2.0.0.tar.gz.
File metadata
- Download URL: lasertramdb-2.0.0.tar.gz
- Upload date:
- Size: 6.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ab68cf61b4c2e8618c027e6ca66292fb7d26d61f84bd849db9fa5ca76f267e1
|
|
| MD5 |
0b0acb2bba40c4db7b24c7aedafc2deb
|
|
| BLAKE2b-256 |
d12a898d0f2927bf23744f0d447449b6d0e42c46b7e8393b3ec906b20b607776
|
File details
Details for the file lasertramdb-2.0.0-py3-none-any.whl.
File metadata
- Download URL: lasertramdb-2.0.0-py3-none-any.whl
- Upload date:
- Size: 6.0 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6936bceda2c0cbc5fe8e8106b0de82aebf4e214e39c4c12d382aaa438e81397
|
|
| MD5 |
3a73f1421da4b3b953679f88eb508f79
|
|
| BLAKE2b-256 |
1ce6fbd76c2d48a6f8927f9983040db06e512beb77bda4a525e4f5a10a8481f2
|