Squid Repository


UPDATE June 2021

SQUID 3.0: Introduction and Rationale

The Microsoft Excel add-ins SQUID and Isoplot, developed (until 2012) by Dr Ken Ludwig of the Berkeley Geochronology Center, have long been the de facto standard for the reduction and processing of machine data obtained from the SHRIMP. The software has been widely acclaimed for its unique combination of ease of use and underlying mathematical rigour, as well as the incorporation of increasingly more powerful features facilitating customisation and automation of specialised data-processing routines.

Unfortunately, the latest versions of the SQUID (2.50) and compatible Isoplot (3.75 and 3.76) add-ins are bound to Microsoft Excel 2003 which, as of April 2015, is no longer supported or distributed by Microsoft. An attempt by Geoscience Australia (GA) in 2013-14 to update the Visual Basic for Applications (VBA) code to enable the add-ins to function in Excel 2010 was unsuccessful, owing to (1) changes in the Excel object model post-2003, and (2) security flaws in Excel 2003 (remedied post-2003) which SQUID and Isoplot utilised for functionality.

In 2015-2016, GA collaborated with CIRDLES (the Cyber Infrastructure Research and Development Lab for the Earth Sciences, based at the College of Charleston, South Carolina, USA) to investigate the possibility of extracting and documenting the SQUID VBA code and reimplementing it in a more modern and platform-independent Java environment, following the lead of EARTHTIME community-driven U-Pb geochronology data-reduction software developments (e.g. ET_Redux) by CIRDLES in the fields of Isotope Dilution Thermal Ionisation Mass Spectrometry (IDTIMS) and Laser Ablation Inductively Coupled Plasma Mass Spectrometry (LA-ICPMS). Initial investigations were encouraging, and progress was documented and presented at the 8th International SHRIMP Workshop (Granada, Spain) in September 2016. These presentations comprised:

At the SHRIMP Workshop, GA and CIRDLES proposed a SHRIMP community-driven (and community-funded) collaborative project to pursue the reimplementation of the Excel-based SQUID 2.50 into a Java-based “SQUID 3.0”. This concept was approved by the assembled SHRIMP community, and in October 2016, GA circulated an initial Project Update, providing background and rationale for the project, detailing the benefits envisaged, and proposing both a governance framework and a quantum for funding by the international network of SHRIMP laboratories.


The aim of this project is to take SQUID 2.50 from its outdated and unsupported Excel 2003 platform, and develop an open-source, platform-independent re-implementation in Java. As part of this process, both the Java code and the data-processing algorithms (as implemented in SQUID 2.50 using Microsoft VBA) will be documented, to facilitate future refinement and improvement.


The new SQUID 3.0 software will be a Java application available as a download, or in a remote desktop environment via a web service. Its fundamental operation will be similar to SQUID 2.50: users will nominate an input Prawn Data XML (.xml) file, and obtain processed data in spreadsheet-type format. Development and documentation will be in English; however, Java supports internationalisation, and the groundwork will be laid for a future SQUID 3.0 release that can be ‘localised’ with respect to multilingual support.


Detailed documentation of the SQUID 2.50 VBA code is an important component of the project, and particular emphasis will be placed on deconstruction of the key arithmetical functions and subroutines. Algorithms of broad interest (e.g. those used to calculate isotopic ratios and their uncertainties, those used in the numerical evaluation of analytical expressions and their associated uncertainty propagation, and those associated with U–Th–Pb dates) will be individually deconstructed into Excel spreadsheets containing worked examples of ‘base level’ data processing (using only ‘Microsoft’ functions), and featuring testing against real SQUID 2.50 output at each point that it becomes available. These spreadsheets will be accompanied by written commentaries guiding researchers, teachers and students through each step of the calculations. In combination, these products will constitute valuable education resources, and define an easily-referenced baseline for future mathematical innovations in data processing.


The goal is to have an operational replacement for SQUID 2.50 (i.e. SQUID 3.0) by the time of the 9th International SHRIMP Workshop, to be held in Korea in September 2018. However, this will only be possible with appropriate funding.

Technical Approach

The process of porting Excel/VBA-based SQUID 2.50 to Java-based SQUID 3.0 has several technical facets:

  • Documenting the VBA arithmetic and algorithms, and replicating them faithfully in Java.
  • Documenting the logic used in the VBA code to ensure that the VBA arithmetic is sequenced correctly, and translating this logic to the Java implementation.
  • Establishing the full range of functionality and customisation available to users of SQUID 2.50, and scoping and prioritising these features for inclusion in SQUID 3.0.
  • Investigating the range of generalised Isoplot functions utilised by SQUID 2.50, and reimplementing these in Java.

As of March 2017, we have begun scoping requirements for SQUID 2.50 ‘Task’-style customisation in SQUID 3.0, and a small number of key Isoplot functions have been ported to Java. However, most of our efforts to date have been focused on elucidation and replication of SQUID 2.50 arithmetic, with only minimal treatment of user-defined parameters. The Java software development embodying the arithmetic ‘engine’ of SQUID 3.0 is named Calamari.

Accompanying Documentation

This series of wiki pages presents a brief overview of Calamari and its reporting functionality, followed by detailed elucidation of the SQUID 2.50 arithmetical procedures deconstructed as of March 2017. Much of the detailed description takes the form of commentary intended to accompany downloadable Excel workbooks (XLS files) in which the calculations have been ‘hand-worked’ using only ‘core’ Microsoft functions. In each case, the relevant XLS file is linked.

As of March 2017, this Homepage is accompanied by seven sections of documentation, best read or considered in the following order:

A. Software Development: Calamari
B. Preliminary: Total ion counts and total SBM counts
C. Step 1: Transform XML into condensed and reformatted ‘total counts at peak’ worksheet
D. Step 2: Background- and SBM zero-corrections, and ‘total CPS’ columns
E. Step 3: Calculation of interpolated ratios of measured species
F. Step 4: Calculation of ‘mean’ ratio for each measured species for each analysis
G. Synthesis of Steps 1–4: Cell-by-cell comparisons of SQUID 2.50 and Calamari output

Development - May 2017 - June 2021

Squid3 development is hosted on GitHub.com and is iterative and community-driven.

Please visit wiki.

Click to View New HowTo Videos

We encourage you to download and evaluate the latest release, the “.jar” file found here.
Squid3 requires Oracle’s Java 1.8. Java 1.9 and 1.10 are no longer supported and Java 1.11 through 1.17 involve major architectural changes that we have elected to avoid until 2024-2025. You can read here about the community’s plans for Java.

UPDATE JAN 2021 Liberica OpenJDK 8 also works: be sure to download the “full jre” or “full jdk”.

To contribute issues and feedback, please join GitHub here. While using Squid3, the help menu provides a link that initializes a new GitHub issue for you - please use freely.

The current versions - Squid3-1.6.n.jar - provide full workflow support for processing and interpreting Shrimp data outputs in the form of Prawn xml files and ‘OP’ files including project, data, task, expressions, visualizations, reports, and parameters management. Squid3 provides for creating and saving Squid3 Project files that have an extension of “.squid” and are intended to save the current state of work on a project. The workflow is mapped left to right in the menus, as described below.

The Project menu provides for creating new GEOCHRON and RATIO projects. The functionality for RATIO projects is still under development - please feel free to contribute ideas. A new GEOCHRON project can be created from a single Prawn XML file, from a single Prawn XML file zipped, from merging two Prawn XML files, or from an ‘OP’ file. A special demonstration Squid3 project is available from this menu, thanks to @NicoleRayner. The project manager allows for naming the project, naming the analyst, and reviewing statistics about the loaded data as well as keeping notes about the project.

    All data-processing parameters are specified on the Project Manager page: whether or not to normalize counts for SBM; ratio calculation method; preferred index isotope, constraints on weighted means of reference materials; the common lead model for reference materials; and the physical constants model to be used in the project. Note on parameter models: See below for how to manage these models from the Parameters menu item. Changing these model selections updates all the dependent calculations within the Squid3 task. The currently-used names and values from these models are listed in the Expressions Manager left-hand panel and display as read-only expressions. The ‘notes’ window in the Expressions manager provides additional info about each model value. Models selected for a task are saved with the Squid3 Project (.squid) file so if anyone opens a .squid file, the included models will be added to the local store of models available to Squid3, if not already present.

The Data menu - 1) Manage Sample Names, 2) Manage Spots and Reference Materials, and 3) Audit Raw Data for all data files. For Prawn data files, it also provides for saving and swapping out data files. ‘Manage Sample Names’ automates with overrides the naming of samples based on delimeters or leading character counts. ‘Manage Spots and Reference Materials’ supports editing spot names, filtering spots by name, and setting both the project’s reference material spots and concentration reference material spots by using the same filtering feature. The reference material models are selected here as well. The context menu on the left-side list is accessed by a right-mouse click and has items for removing a spot and splitting the data file into two files. Any modifications to the data file can be saved to a new file if needed. Note that saving the project preserves the changes to the data within the project file but without changing the source data file. ‘Audit masses’ provides time-based views of masses and is configuable to show mass diferences as well.

The Task menu - 1) ‘View Current Task’ provides for the user to configure the metadata about a task including choosing directives for daughter/parent ratios. Additional editing of the task is available via the ‘Edit Current Task’ button at the bottom of the view task page. The task editor provides for editing the masses, the index of the background mass, the ratios using these masses, the directives, and the four special expressions: Uncor_206Pb238U_CalibConst, Uncor_208Pb232Th_CalibConst, 232Th238U_RM, and ParentElement_ConcenConst. Please note that Squid3 in GEOCHRON Mode requires mass labels 204, 206, 207, 208 and ratios 204/206, 207/206, and 208/206 as they inhabit the built-in expressions engine. In order to use this task with the current data file, the count of masses must match and Squid3 will alert the user if they do not.

    The ‘Directives’ allow switching between using the primary ages of 206/Pb/238U or 208Pb/232Th and whether to directly calculate 208Pb/232Th - these are the pair of choices that Squid2.5 also makes available. These choices interact with the list of preferred index isotopes shown - ‘208Pb’ is only available when the primary age is 206Pb/238U and the calculation of 208Pb/232Th is indirect. Also, if ‘208Pb’ is selected, the directives cannot be changed.

    2) ‘New Task from …’ a) current task without custom expressions, b) current task including custom expressions, c) empty task - will each open the task editor. 3) ‘Browse, load, or edit task files …’ a) from Squid3 Built-In Tasks Library, b) Squid3 Custom Tasks Folder, c) Squid2.5 Custom Tasks Folder - each provide access to a list of tasks with their details, which can then be edited or used directly in the current task, provided the mass counts align.

The Isotopes menu: 1) ‘Map Isotopes from Data to Task’ provides for mapping the isotope or mass labels provided by the data file for each mass staton to the task’s isotope or mass labels. Tasks generally refer to masses using integers such as ‘204’ or simple decimals such as ‘195.8’, whereas the labels for the mass stations recorded in the data file usually have several significant digits of atomic mass, such as ‘195.75123’. The background mass can be specified here or in the task editor. After clicking the orange button at the bottom to copy the labels, the columns D (Data Isotope Label) and T (Task Isotope Label) will contain the same values.

Expressions menu - 1) ‘Manage Expressions’ has a left panel organized by expression type that provides for sorting the expressions within each list by Name, Execution order, or Target spot set - reference material, concentration reference material, and unknowns - denoted by left-hand superscripts of R or C, and U. All of the built-in expressions have been named in a consistent fashion per issue #164 discussions and have explanatory text in their ‘notes’ panel provided by @sbodorkos . Of particular note (idea thanks to @NicoleRayner ) is that the expressions targeting reference materials only are suffixed by “_RM”. The tab for ‘Unhealthy Expressions / Mismatched Targets’ will appear in red red if any are present. Squid3 supports the assignment of a sample - a group of unknowns - as the target of custom expressions - see the drop down box populated with the sample names to the right of the unknown samples checkbox. The drop down only appears if unknowns is checked and reference material is not checked.

    Squid3 operates under the hood with units of annum and 1-sigma absolute uncertainties as defaults. Squid3 provides a context for SHRIMP geochronology in the peek window of the expressions manager that displays ages and their absolute uncertainties in Ma as well as concentrations in ppm, and displays both absolute and percent uncertainties. Expression grammar has been simplified so that the only times that the surrounding '["..."]' brackets and quotes are needed is for isotopes, as in TotalCPS(["206"]), for ratios, as in ["204/206"], for expression names that use other that any combination of letters,digits, and the underscore, and finally for all expressions where you seek the absolute (±) or percent (%) uncertainty, as in [±"204/206"]. The expression audit includes an audit of the target spots for compatibility - it checks and reports whether the target choice of Reference Material and / or Unknowns matches at every level of an expression. Thanks to @sbodorkos for the suggestion.

Common Pb menu - 1) ‘Unknowns: 204 Count Corrections & Assign Common Pb Ratios’ provides for customizing how Squid3 handles common Pb for Unknowns.

Interpretations menu - 1) ‘Reference Materials’ and 2) ‘Unknowns’ provide Wetherill and Tera-Wasserburg Concordia diagrams produced by Topsoil, customizable weighted means with plots, and a generic plotting function for any two expressions using reference materials.

Reports menu - 1) ‘Custom Report Builder’ provides built-in reports for Reference Materials, Unknowns, and Weighted Means. The report builder supports custom categories with drag and drop columns from the left-side list of available expressions and drag and drop ordering of categories and columns. Reports can be viewed or saved as ‘.csv’ files into the project’s Squid3ProjectReports folder that is created in the same folder in which the current Squid3 project is saved. 2) ‘Summary Expressions and Values’ creates reports for Reference Materials and Unknowns detailing the summary expressions defined for each. 3) ‘Project Audit’ and 4) ‘Task Audit’ produce meta-data reports for each. 5) ‘Generate all Reports’ produces all reports into the project’s Squid3ProjectReports folder mentioned above. 6) ‘Miscellaneous Reports’ provides a variety of reports of interest.

Archiving menu is not yet active. We seek input from the community as to how archiving might be implemented.

Parameters menu - 1) ‘Reference Material Models’, 2) ‘Common Pb Models’, and 3) ‘Physical Constants Models’ each open the Parameters Manager to the appropriate tab. Squid3 provides several documented default models in each category. Models can be created, imported from ‘xml’ files, and exported as ‘xml’ files. Parameter models used in a Squid3 project remain with the ‘.squid’ project file so that opening that file provides access to the contained models. Note that reference material models can be based on TIMS-generated ratios with calculated apparent ages or using a simplified approach to support the transition from Squid2.5 that provides the requisite “Reference Dates”, inspired by input from @NicoleRayner.

About menu - 1) ‘About Squid3’ summarizes Squid3’s purpose and identifies collaborators and financial supporters. 2) ‘How to cite Squid3’ provides a link to our latest publication. 3) ‘Squid3 Github Repository’ provides a link to this repository. 4) ‘Squid3 Development Notes’ links to a wiki documenting the porting of Squid2.5 to Squid3. 5) ‘CIRDLES.org” links here, the home of the College of Charleston development team. 6) ‘Topsoil Github Repository’ links to Topsoil, used to provide Concordia diagrams in Squid3.

Help menu - 1) ‘Introduction and Guide to Menu’ opens this document. 2) ‘Video Tutorials’ features YouTube videos produced by @NicoleRayner and found here. 3) ‘Contribute an Issue on Github’ is a shortcut to creating a new issue with key metadata automatically supplied.

Thank you in advance for any suggestions you contribute. We are available for walk-throughs, etc. if needed to help convince you to participate and contribute.

Additional features will appear over time and may not be documented here concurrently. Please be patient and contribute your ideas via the issues tracker.

Please volunteer to help with documentation, how-to videos, coding, etc.

Updated 20 November 2020.