iolite Python for LA-ICP-MS Course

Hello, welcome to the iolite course.

Week 1

Introduction

The textbook Python 4 Everybody is avilable here. For this week, you just need to read up to the end of the chapter on Loops and Iterations. We recommend completing all the exercises in the text book. You can post questions or comments about this week’s content here.

Here are the links from the video:

[1] Anaconda python: Anaconda for Python.

[2] Python homepage: Python.

[3] Atom text editor: Atom.

[4] Notepad ++ : Notepad ++.

Week 2

The Basics - Continued

There is no assignment for this week.

Week 3

iolite’s Python API and Import/Export

In this week, we’ll cover the basics of iolite’s API, as well as write our first plugin: an importer for iolite.

Writing an importer:

Although this is quite a long video, some of the concepts shown will be valuable for any data science application. For example, we’ll be loading csv file data into a Pandas dataframe. We’ll also be manipulating date and time data as strings and as python DateTime objects. The video will also show how I debug in iolite to find errors etc.

Week 3 assignment

This week your assignment is to write an importer module for the example data file.

You can download the importer template used in the example here

You can download the data file for the assignment here

This assignment is due by 2021-12-14 (Australian time). Please add it to your student folder in DropBox (in a new subfolder called “Assignment_2” exactly) by then to participate in the peer assessment process.

Week 4

Introduction to Qt, matplotlib and QA/QC modules for iolite

This week’s lesson includes essential Qt user interface concepts, plotting with matplotlib, and writing QA/QC modules for iolite.

Week 4 assignment

This week the assignment is to write a QA/QC module for your own data or one of the example datasets provided above. We have suggested a couple of QA/QC module ideas for you to implement. You can choose one of these or design your own. If you choose to design your own, please get in touch first to be sure your idea is feasible in 1 week.

Ideas:

  • A module that checks the uncertainty of each selection in a specified group. If they are all greater than a specified value, the module should have an error status. If only 1 misses the target, the module should have a warning status.
  • A module that checks the LODs of each selection in a specified group. If they are all greater than a specified value, the module should have an error status. If only 1 misses the target, the module should have a warning status.

This assignment is due by 2021-12-21 (Australian time). Please add it to your student folder in DropBox (in a new subfolder called “Assignment_3” exactly) by then to participate in the peer assessment process.

Week 5

Data Reduction Scheme modules for iolite

In this week’s lesson, we’ll discuss how to create a custom Data Reduction Scheme for iolite v4. Examples for most common DRS operations (baseline subtraction, creating ratios, interference corrections etc) are provided. If you have any questions about this lesson, please post to the forum here.

Week 5 assignment

This week’s assignment is to write a very basic Pb isotope DRS, as per the lesson video. You only need to process the 208Pb/206Pb ratio, corrected for baselines and mass fractionation. The example dataset you need can be downloaded here.

This assignment is due by 2022-01-14 (Australian time). Please add it to your student folder in DropBox (in a new subfolder called “Assignment_4” exactly) by then to participate in the peer assessment process.

Week 6

Image inspector scripts

This week we review what image inspectors are and why they’re useful before covering the relevant parts of the API and what goes into an inspector script. A range of examples are provided, including, recreating Figures 1 and 6 from Toth (1980), Figure 2 from Petrus et al. (2017), and a magnifier to help study a Mn crust image in detail. If you have any questions about this lesson, please post to the forum here.

Documentation and Additional Resources

Note that the imaging APIs are not yet included on https://iolite.xyz/docs/api as they’re still being finalized. The best resource on the current state of the API are the slides that go with this week’s lesson (linked below).

[1] Toth, J. R. (1980) Deposition of submarine crusts rich in manganese and iron. Geological Society of America Bulletin, 91(1), 44-54.

[2] Petrus et al. (2017) A new approach to laser-ablation inductively-coupled-plasma mass-spectrometry (LA-ICP-MS) using the flexible map interrogation tool ‘Monocle’. Chemical Geology, 463, 76-93.

[3] Slides

[4] Examples

[5] Gabbros dataset

[6] Titanite dataset

Week 6 assignment

This week’s assignment is to write an image inspector to be used with one of the datasets above or your own data. We have two options for you to choose from or you can come up with your own idea.

Options:

  1. A spider diagram. This will involve collecting the data for several channels, normalizing it, and presenting it to the user. You can decide whether you want to plot individual datapoints, means, all ROI, etc.
  2. A Tera-Wasserburg concordia diagram. This will involve calculating the concordia curve, plotting time markers (if you wish), and drawing error ellipses. We suspect this option is a bit more difficult.
  3. Your own idea! (If you’re not sure it is possible please email us first to check)

This assignment is due by 2022-01-21 (Australian time). Please add it to your student folder in DropBox (in a new subfolder called “Assignment_5” exactly) by then to participate in the peer assessment process.

Week 7

Database Interactions

This week we discuss how to interact with iolite’s database, and how to use this to calculate long-term results and to create a dashboard for your lab.

Week 7 assignment

This week’s assignment is to write a dashboard either using your own data or using the example database. The output of this assignment is a dashboard image, showing your dashboard. Please contact us if you’re unsure about whether any features you want to add are possible.

This assignment is due by 2022-02-18 (Australian time). Please add it to your student folder in DropBox (in a new subfolder called “Assignment_6” exactly) by then to participate in the peer assessment process.

Week 8

User Interface Plugins

This week we discuss the various ways you can create user interface (UI) plugins and integrate them into iolite’s main window. The examples cover a range of concepts, including:

  1. Actions with keyboard shortcuts to perform selection manipulation.
  2. A “live” plot with its user interface created interactively.
  3. Custom painting a dock widget to provide spatial context for the current selection, and
  4. A reference material data explorer, complete with periodic table, data table, and plot.

Documentation and Additional Resources

[1] Standalone Qt Designer

[2] Font Awesome cheatsheet

[3] Example UI plugins

Week 8 assignment

For this week’s assignment, we strongly encourage you to come up with your own idea that will benefit your data/workflow by taking advantage of all you’ve learned during this course. If you are having trouble coming up with an idea, but still want to do an exercise for practice, I’ve included a few ideas below. Please contact us if you’re unsure how to implement your idea.

  1. Adapt your spider diagram image inspector (if you created one, or start fresh) into a UI plugin that responds to the active selection rather than an ROI.
  2. Create a spline explorer – this might involve selecting a channel and group then displaying each of the different spline types together so you can see how they’re similar or different. Note: you can use data.spline(…) to calculate a spline.
  3. Create some shortcuts for selection manipulation, e.g.: split in half, join with nearest and/or align with data.

This assignment is due by 2022-02-28 (Australian time). Please add it to your student folder in DropBox (in a new subfolder called “Assignment_7” exactly) by then to participate in the peer assessment process.

Peer assessment

Week 2

Here is the peer-assessment table. Please find your student number in column 1, and then column 2 and 3 are the assignments you should review. Each review should only take about 5 minutes. You should read through the code and check that it makes sense, then try running it, and then try breaking it. If you find something that breaks it, please include that in your feedback, along with a possible solution (if you have one). As always, be nice! And please ask us if you have any questions.

Student No Review 1 Review 2
7 33 146
10 152 76
14 146 18
16 85 33
18 141 14
19 44 158
21 7 58
22 133 140
24 111 7
30 24 113
33 41 133
40 103 16
41 136 22
44 53 10
53 113 136
58 22 71
64 89 53
71 40 21
76 10 30
85 64 103
89 140 24
103 71 41
111 76 85
113 156 111
133 58 64
136 16 156
140 14 44
141 18 19
146 158 40
152 30 141
153 21 89
156 153 152
158 19 153

Week 4

Here is the peer-assessment table. Please find your student number in column 1, and then column 2 and 3 are the assignments you should review. You should read through the code and check that it makes sense, then try running it, and then try breaking it. If you find something that breaks it, please include that in your feedback, along with a possible solution (if you have one). As always, be nice! And please ask us if you have any questions.

Student No Review 1 Review 2
7 130 93
14 140 21
21 41 14
41 7 58
58 21 136
93 136 113
113 7 130
130 93 41
136 58 153
140 113 153
153 14 140