Welcome to some help for the LaserTRAM-DB - a dashboard for the time resolved analysis of laser ablation inductively coupled plasma mass spectrometry (LA-ICP-MS) data. You can always get to this page by clicking the Help button in the top left of the application. The application still works great with this document open so feel free to really utilize both those screens in your office 🤘.

This document aims to provide the user with a reference of how to correctly and efficiently use the application. It likely will not cover everything, but I will try to cover most situations in which a user might find themselves.

For a detailed description of the theory and math behind the python library lasertram - the backend processing engine of the application, please see either the lasertram documentation or the associated 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

General Thoughts

Below we will go through the layout of each tab and describe each widget.

LaserTRAM Preprocessing Tab

LaserTRAM PreprocessingTab

Here we have 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.

  1. Select Folder button:
    • This button prompts the user to select a folder that contains the raw .csv files output from the mass spectrometer for a given analytical session. It is recommended each analytical session gets its own directory.
  2. Selected folder display:
    • The directory chosen in A is displayed here. This is just a reminder to the user of where they are working and where their data are coming from.
  3. Mass Spectrometer radio buttons:
    • Broadly, which brand of mass spectrometer are you using. As each mass spectrometer company outputs data in different formats, it is important to choose this correctly so that the application can correctly read in the data. If your mass spectrometer is not listed, feel free to reach out to me and I can try to add support for it. Admittedly, much of this design work was done with data from a Thermo Fisher Scientific mass spectrometer, so if you have a different brand there may be some unforeseen issues. If you run into any, please reach out to me and I can try to get them resolved.
  4. Preprocess button:
    • Takes all the files in H and preprocesses them for use in the LaserTRAM tab. Briefly, it is extracting the timestamp of the analysis, the sample label (what you named it in the instrument software), the time in milliseconds since the start of the analysis, and the counts per second for each analyte. It then combines them all into one tabular format that is displayed in I.
  5. Save Preprocessed Data button:
    • Save the results of D to either an .xlsx or .csv file for later use in the LaserTRAM tab. I’ve found that .csv files provide the best save and load performance times, likely due to them being a much simpler file format than excel files. The format of this file is as follows:

      SampleLabel timestamp Time analyte_1 … analyte_n
      ‘ATHO-G-1’ 2022-05-10 23:08:59 13.24 100.03 200356.70

      where analyte_1 through analyte_n are the names of the analytes being measured (e.g. 7Li, 88Sr, etc.). Each row corresponds to a single sweep through the mass range for a given analysis i.e., one spot analysis will be comprised of many rows. The timestamp column is the time at which the analysis was recorded, and the Time column is the time in milliseconds since the start of the analysis. The SampleLabel column is a string that identifies the sample being analyzed.

  6. Send to LaserTRAM button:
    • Pass the preprocessed data in I to the LaserTRAM tab for further processing. This is just a shortcut to avoid having to save the preprocessed data and then upload it again in the LaserTRAM tab. It is important to note that this does not save the preprocessed data, so if you want to keep it for later use, make sure to click E before clicking this button. This is the most “performant” option for getting data from the raw files into the LaserTRAM tab as it avoids the need to save and load a file that is potentially tens of thousands of lines long.
  7. Preprocessing progress bar
    • Upon clicking D, this progress bar will update to reflect the progress of the preprocessing step. The text will change to reflect which file it is working on. For 500 files, this takes around 5-10 seconds.
  8. Selected folder file list:
    • Upon selection of a directory in A, this area populates with a list of all the .csv files in that directory. This is just a reminder to the user of what files are being preprocessed and where they are coming from. It also allows the user to quickly check if there are any files in there that shouldn’t be or if there are any missing files that should be there. This area supports single or multi selection of files, just like your file navigator does. This is important for J.
  9. Preprocessed data table:
    • A preview (first 500 rows) of the preprocessing step in D are displayed here. I’m not going to display the full table as it’s often tens of thousands of lines. It has the following format:

      SampleLabel timestamp Time analyte_1 … analyte_n
      ‘ATHO-G-1’ 2022-05-10 23:08:59 13.24 100.03 200356.70

      where analyte_1 through analyte_n are the names of the analytes being measured (e.g. 7Li, 88Sr, etc.). Each row corresponds to a single sweep through the mass range for a given analysis i.e., one spot analysis will be comprised of many rows. The timestamp column is the time at which the analysis was recorded, and the Time column is the time in milliseconds since the start of the analysis. The SampleLabel column is a string that identifies the sample being analyzed.

  10. File list editing button:
    • This button allows the user to edit the list of files displayed in H. It can be used to remove files that shouldn’t be processed. This is useful for ensuring that only the desired files are included in the preprocessing step.
  11. Session log:
    • This area is the “session log”. It records all important decisions the user makes and displays them in the log along with a timestamp that corresponds to when the application executes them. It will also display error messages that can be useful for debugging the application! On app closure, it will be saved to the directory chosen on application startup. Referencing this log can be useful to see what decisions are made during the data processing session and help bring transparency to what the application is doing.

LaserTRAM Tab

Here we have 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 Tab

  1. Upload Button:
    • When clicked this button prompts the user to upload data for processing of raw, counts per second (cps) data. It should have the following format (an example is provided in the first row):

      SampleLabel timestamp Time analyte_1 … analyte_n
      ‘ATHO-G-1’ 2022-05-10 23:08:59 13.24 100.03 200356.70

      where analyte_1 through analyte_n are the names of the analytes being measured (e.g. 7Li, 88Sr, etc.). Each row corresponds to a single sweep through the mass range for a given analysis i.e., one spot analysis will be comprised of many rows. The timestamp column is the time at which the analysis was recorded, and the Time column is the time in milliseconds since the start of the analysis. The SampleLabel column is a string that identifies the sample being analyzed.

  2. Spot selection dropdown:
    • This allows the user to toggle between all available spot analyses in the uploaded data. It will populate with all unique spot names when data are uploaded.
  3. Internal standard selection dropdown:
    • This allows the user to change the internal standard i.e., the analyte all data are normalized to. For more information please see the documentation.
  4. Record and Next button:
    • This button allows the user to save the normalized data for the current spot and automatically progress in the sample list to the next spot.
  5. Record and Stay button:
    • This button allows the user to save the normalized data for the current spot and not progress to the next spot.
  6. Skip and Next button:
    • This button allows the user to progress to the next sample in the list without saving any information about it. Useful for bad analyses or rapidly inspecting data.
  7. Save Report Table button:
    • This allows the user to save the data table Q as a csv or excel file. These data are immediately ready for import into the LaserCalc portion of the application.
  8. Background and ROI interval selection slider:
    • This slider has four nodes. The first two nodes control the start and stop of the background interval, respectively (gray region). The second two nodes denote the start and stop of the region of interest, respectively (green region). The background region is used to subtract from the overall signal. The region of interest is the area denoted by the user as the portion of the overall signal that reflects the material they want to calculate a concentration for. When moving the slider nodes the gray and green regions will update to reflect the values chosen. The data in N and P will also update to reflect these choices.
  9. Despike button:
    • When clicked data are despiked. For more information on this please see the documentation. As this is done to the normalized data, the data in N will be updated accordingly to reflect the despiked data.
  10. Show all button:
    • This button controls data visibility in L and N and works in conjunction with K. As the name implies, it forces all analyte signals to be shown on the plots in L and N.
  11. Hide all button:
    • This button controls data visibility in L and N and works in conjunction with J. As the name implies, it forces all analyte signals to be hidden on the plots in L and N.
  12. Raw data timeseries plot:
    • The raw, counts per second (cps), data for the spot chosen in B. Each analyte in the experiment is a different line as referenced by the legend, O. Gray and green areas denote background and region of interest, respectively.
  13. Plot toolbar:
    • This toolbar allows for interacting with the plots. As they are built with matplotlib, we refer the user to their documentation for more. In brief, it allows the user to pan, zoom, save, and interact with figures quite nicely.
  14. Normalized data timeseries plot:
    • This plot shows the data from the green region in L after it has had the background region subtracted from it and it has been normalized to the internal standard chosen in C. It automatically updates to reflect the values chosen on the sliders in H and whether or not data have been despiked using I.
  15. Timeseries plot legend:
    • This is the legend for L and N. Just like with plots, it also is interactive. Clicking on a legend entry will toggle that analyte’s visibility in both L and N. It supports the selection of multiple analytes. It can be utilized well with J and K.
  16. Uncertainties plot:
    • This plot shows the relative 1 standard error value for the data shown in N. Values are shown as percent. For more on this, please see the documentation
  17. Saved data table:
    • This table is populated after either D or E are clicked. When either of those buttons are clicked a lasertram.LaserTRAM.output_report() is appended for the current spot. An example of this output report can be seen in the documentation. It can be saved using F.
  18. Session log:
    • This area is the “session log”. It records all important decisions the user makes and displays them in the log along with a timestamp that corresponds to when the application executes them. It will also display error messages that can be useful for debugging the application! On app closure, it will be saved to the directory chosen on application startup. Referencing this log can be useful to see what decisions are made during the data processing session and help bring transparency to what the application is doing.

LaserTRAM Reprocessing Tab

Here we have an annotated LaserTRAM-renormalizing 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.

LaserTRAM reprocessing Tab

  1. Upload LT ready data button:
    • This button accomplishes the same goal as A in the LaserTRAM tab. When clicked this button prompts the user to upload data for processing of raw, counts per second (cps) data. It should have the following format (an example is provided in the first row):

      SampleLabel timestamp Time analyte_1 … analyte_n
      ‘ATHO-G-1’ 2022-05-10 23:08:59 13.24 100.03 200356.70

      where analyte_1 through analyte_n are the names of the analytes being measured (e.g. 7Li, 88Sr, etc.). Each row corresponds to a single sweep through the mass range for a given analysis i.e., one spot analysis will be comprised of many rows. The timestamp column is the time at which the sweep was recorded, and the Time column is the time in milliseconds since the start of the analysis. The SampleLabel column is a string that identifies the sample being analyzed.

  2. Upload LT processed data button:
    • This button is used to prompt the user to upload data from a previous LaserTRAM session i.e., the output saved from clicking Q in the LaserTRAM tab. It goes without saying that this dataset should reflect the same analytical session that is being uploaded in A. It need not have have all the samples processed.
  3. Select internal standard dropdown:
    • This allows the user to change the internal standard i.e., the analyte all data are normalized to. For more information please see the documentation.
  4. Despike Data radio button:
    • Whether or not to de-spike the data during re-processing. For more information on de-spiking the user is referred to the documentation. It defaults to False.
  5. Reprocess button:
    • “Redo” the LaserTRAM process for all the spots in H based on the data provided in G, the internal standard chosen in C, and de-spiking option chosen in D. Note, this will only reprocess spots found in H and ignore all those that exist in G but not H.
  6. Save reprocessed data button:
    • Save the re-processed data in I to either an excel or csv file for later use in the LaserCalc process. Each row corresponds to a lasertram.LaserTRAM.output_report() for each re-processed spot.
  7. Raw data table:
    • Raw counts per second data uploaded for reprocessing. It has the following format:

      SampleLabel timestamp Time analyte_1 … analyte_n
      ‘ATHO-G-1’ 2022-05-10 23:08:59 13.24 100.03 200356.70

      where analyte_1 through analyte_n are the names of the analytes being measured (e.g. 7Li, 88Sr, etc.). Each row corresponds to a single sweep through the mass range for a given analysis i.e., one spot analysis will be comprised of many rows. The timestamp column is the time at which the sweep was recorded, and the Time column is the time in milliseconds since the start of the analysis. The SampleLabel column is a string that identifies the sample being analyzed.

  8. Previously processed data table:
    • These data are analagous to those from Q in the LaserTRAM tab after they have been saved. It is populated after B is clicked.
  9. Re-processed data table:
    • These data are analogous to those from Q in the LaserTRAM tab. They represent the reprocessed data for the data uploaded in G for the spots and intervals derived from H using the internal standard chosen in C and de-spiking option chosen in D. It is populated after E is pressed.
  10. Session Log:
    • This area is the “session log”. It records all important decisions the user makes and displays them in the log along with a timestamp that corresponds to when the application executes them. It will also display error messages that can be useful for debugging the application! On app closure, it will be saved to the directory chosen on application startup. Referencing this log can be useful to see what decisions are made during the data processing session and help bring transparency to what the application is doing.

LaserCalc Tab

Here we have 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:

  1. a user specified calibration standard reference material
  2. 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.

LaserCalc Tab

  1. Upload data button:
    • This button prompts the user to upload data output from the LaserTRAM tab. Its format should be exactly that which is output from either G in the LaserTRAM tab or F in the LaserTRAM renormalizing tab. If this button is clicked before B, the button for uploading standard reference material known compositions, a message will pop up saying that the application is using “default” standard reference material concentrations. These are preferred values downloaded from GEOREM for the following standard reference materials:
      • BCR-2G
      • BHVO-2G
      • BIR-1G
      • GSA-1G
      • GSC-1G
      • GSD-1G
      • GSE-1G
      • NIST-610
      • NIST-612
      • BM9021-G
      • GOR128-G
      • GOR132-G
      • ATHO-G
      • KL2-G
      • ML3B-G
      • T1-G
      • StHs680-G
      • NIST-616
  2. Upload Standards button:
    • This button prompts the user to upload their own standards reference material database. An example for how this database should be structured can be found here. The main reasoning for this is to allow users to include standard reference materials that may not come included with the application (see above for list of included standard reference material compositions). Note, it will overwrite the default standards database, not add to it.
  3. Select Calibration Standard dropdown:
    • This dropdown is used to choose a calibration standard to use in calculating concentrations. This dropdown is populated after data have been uploaded using A by scanning all spot analyses and looking for matches to any of the standard reference materials included in the standards database (either uploaded by the user or default). Because of this it is imperative that standard reference material names have the correct GEOREM name somewhere in their “Spot” label otherwise the situation whereby no potential calibration standards are found may arise. Note…again…that a standard reference material is only a viable calibration standard if it contains published concentrations for every analyte in the experiment.
  4. Fill Selected input:
    • On value change, this input fills the selected cells in I with the value input here. This is useful for quickly filling a large range of cells with the same value. It supports filling either the concentration or uncertainty columns in I.
  5. Concentration Unit dropdown:
    • The unit to be used for the internal standard concentration in the unknown analyses. Options are “ppm”, “wt%”, or “wt% oxide”. It defaults to “ppm”. The combination of this dropdown value, the value in D, and the values in the middle column of I are used to establish the concentrations the internal standard in the unknown analyses when G is clicked. For more information the user is referred to the lasertram documentation.
  6. Drift Correction p-value input:
    • This value establishes how “lenient” the drift correction algorithm is applied to calibration standard data. Accepted values are between 0 and 1 as this value represents the p-value threshold for determining significance of a linear regression between calibration normalized ratios and time. In brief, values closer to 0 are more strict with respect to drift correction, and values closer to 1 force a drift correction for less linear relationships. For more information on this, please see the lasertram documentation
  7. Calculate Concentrations button:
    • This button calculates concentrations for the samples uploaded in I, using the concentrations and uncertainties of the internal standard also described in I, the calibration standard chosen in C, and the uploaded (or default) standards database in B. When clicked it will populate the tabs in J.
  8. Save Concentrations button:
    • This button, when clicked, prompts the user to save their LaserCalc session in the form of an excel workbook. Sheets within the workbook are as follows:
      • Raw: This is the data uploaded to LaserCalc in A. It represents the output from a LaserTRAM session. It contains information on the background and material of interest regions, what the internal standard was, and each analytes median normalized ratio over the region of interest.
      • GEOREM: This is the uploaded standards database from B or the default standards database used to determine concentrations for each analyte in the experiment for the calibration standard.
      • std_data: This sheet will contain the name of the calibration standard rather than std and will contain all the normalized ratios for each analysis of the chosen calibration standard (i.e., the data used to create N)
      • std_stats: This sheet will contain the name of the calibration standard rather than std and will contain all the statistics for the calibration standard generated which checking for drift in each analyte over time. This is analogous to the LaserCalc.calibration_std_stats attribute after LaserCalc.drift_correct() is run. See the lasertram documentation for more.
      • Unknown_concentrations: Calculated concentrations and their uncertainties in ppm for all unknown analyses. While concentrations are calculated for an element, not isotope (i.e., even though the mass spectrometer is measuring 88Sr, the final concentration calculated will be for the element Sr), we retain the isotope as a -isotope flag in the header in the event that multiple isotopes of the same element are measured (e.g., 86Sr and 88Sr ). These can easily be deleted with a find and replace in excel later. Columns with _interr represent the one standard deviation uncertainty that does not include the uncertainty in the calibration standard. This is suitable for comparing datasets that have all been processed using the same methodologies (i.e., comparing concentrations between measurements from the same analytical session). Columns with _exterr represent the one standard deviation uncertainty that includes the uncertainty in the calibration standard. In the vast majority of use cases this is the uncertainty you should report with your concentrations as it allows you to be comparable to data generated using other methodologies (i.e., processing tools, internal standards, calibration standards).
      • SRM_concentrations: This sheet has the same structure as the “Unknown_concentrations” sheet, however it contains concentrations and uncertainties for all identified secondary standard analyses. These are identified as those analyses that were potential calibration standards but not chosen to be the calibration standard.
      • SRM_accuracies: This sheet represents the accuracy of all secondary standard analyses for each element. These values are generated by taking the data from the “SRM_concentrations” sheet and dividing the concentration by the concentration for that standard reference material in the “GEOREM” sheet. Values are shown as a percent (i.e., 100 = your analysis and the GEOREM value are the same.)
  9. Uploaded data table:
    • After data are uploaded using A, this table populates with three columns:
      • Spot: Every individual spot analysis from the output of LaserTRAM that you want to calculate concentrations for.
      • int_std_concentration: This column is used for inputting the concentration of the internal standard for each unknown analysis. Based on the internal standard and the value of E the header will change to reflect what should be input. For example if your internal standard is 29Si and the value of E is “ppm”, the header will read “Si ppm”, meaning you should input your values as such. If, instead, E were “wt% oxide”, you would input your values as weight percent SiO2.
      • uncertainty (%): The percent uncertainty for each internal standard concentration.
  10. Output Concentrations table
    • This table has three tabs:
      • Unknowns: Calculated concentrations and their uncertainties in ppm for all unknown analyses. While concentrations are calculated for an element, not isotope (i.e., even though the mass spectrometer is measuring 88Sr, the final concentration calculated will be for the element Sr), we retain the isotope as a -isotope flag in the header in the event that multiple isotopes of the same element are measured (e.g., 86Sr and 88Sr ). These can easily be deleted with a find and replace in excel later. Columns with _interr represent the one standard deviation uncertainty that does not include the uncertainty in the calibration standard. This is suitable for comparing datasets that have all been processed using the same methodologies (i.e., comparing concentrations between measurements from the same analytical session). Columns with _exterr represent the one standard deviation uncertainty that includes the uncertainty in the calibration standard. In the vast majority of use cases this is the uncertainty you should report with your concentrations as it allows you to be comparable to data generated using other methodologies (i.e., processing tools, internal standards, calibration standards).
      • SRMs: This tab has the same structure as the “Unknowns” tab, however it contains concentrations and uncertainties for all identified secondary standard analyses. These are identified as those analyses that were potential calibration standards but not chosen to be the calibration standard.
      • Accuracies: This tab represents the accuracy of all secondary standard analyses for each element. These values are generated by taking the data from the “SRMs” tab and dividing the concentration by the concentration for that standard reference material in default standards database or the standards database uploaded in B. Values are shown as a percent (i.e., 100 = your analysis and the GEOREM value are the same.)
  11. Calibration Standard Analyte dropdown:
    • This dropdown allows the user to choose any analyte from the experiment. On value change, it plots the normalized ratio of that analyte for the calibration standard over time for the data uploaded in A.
  12. Calibration standard timeseries plot toolbar:
    • This toolbar allows for interacting with the plots. As they are built with matplotlib, we refer the user to their documentation for more. In brief, it allows the user to pan, zoom, save, and interact with figures quite nicely.
  13. Calibration standard statistics table:
    • This table is generated any time C is changed and will contain all the statistics for the calibration standard that are generated in checking for drift in each analyte over time. This is analogous to the LaserCalc.calibration_std_stats attribute after LaserCalc.drift_correct() is run. See the lasertram documentation for more.
  14. Calibration standard timeseries plot:
    • This plot shows the analyte selected in K for the calibration standard chosen in C over the duration of the experiment. Each marker represents an analysis of the standard selected in C and its uncertainty. Also on the plot are the lines for the mean of all analyses, and a regression line for the data with respect to time. If the value for the drift_correct column in M is False, the mean and standard error of the mean is what is used for calculating concentrations. If that value is True, then the regression is applied accordingly. For more detailed information please see the lasertram documentation.
  15. Session Log:
    • This area is the “session log”. It records all important decisions the user makes and displays them in the log along with a timestamp that corresponds to when the application executes them. It will also display error messages that can be useful for debugging the application! On app closure, it will be saved to the directory chosen on application startup. Referencing this log can be useful to see what decisions are made during the data processing session and help bring transparency to what the application is doing.