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.
Documentation and Additional Resources¶
[1] Pandas read_csv fuction documentation
[2] iolite's data manager documentation
[3] iolite file metadata object
[4] iolite sample metadata object
[5] iolite time series data object
[6] Seconds since epoch wikipedia page
[7] Converting strings to python datetime objects
[8] Regex101.com
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.
Documentation and Additional Resources¶
[1] When to Use a List Comprehension in Python
[3] How to Use Python Lambda Functions
[5] Widget Classes
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.
Alternatively, you download this movie file (~1.8 GB size) here.
Documentation and Additional Resources¶
[1] Data Reduction Schemes Python API.
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:
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.
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.
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.
Documentation and Additional Resources¶
[1] Python 4 Everybody Database Chapter
[5] Example database scripts (synthetic database and dashboard)
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:
Actions with keyboard shortcuts to perform selection manipulation.
A "live" plot with its user interface created interactively.
Custom painting a dock widget to provide spatial context for the current selection, and
A reference material data explorer, complete with periodic table, data table, and plot.
Documentation and Additional Resources¶
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.
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.
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.
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.