Friday, March 15, 2013

Changes in the new UPb DRS ("U_Pb_Geochronology3")

There are some noteworthy improvements in the latest release of the UPb DRS (U_Pb_Geochronology3), so I thought I should post a description of what's changed.

One of the biggest changes is that flexibility has been added in which isotopes have been measured - previous versions required 206, 207, 208, 232, and 238 (with an option for 204). This meant that users (particularly those with Nu multicollectors) that had not measured all of these isotopes needed a modified version of the DRS. The DRS is now able to run with any combination of masses, with the only restriction being that 206Pb and 238U must be included.

Another change has been to improve the DRS' ability to identify the names of the different masses measured, regardless of their input channel name. Again, this increased flexibility will hopefully mean that fewer users need to modify the DRS to get it to work with data from their machine (that said, because of complex collector arrays and the complications of .nrf files, users of Nu multi-collectors will probably still need to use a "shortcut" file).

Next, I took up the kind offer by Joe Petrus that 207Pb/206Pb ages be moved from the VizualAge add-on to the main UPb DRS. In addition to building in the age calculation I have also modified it so that it uses a lookup table instead of an iterative calculation. I was concerned that the iterative calculation was theoretically capable of producing spurious ages, whereas the lookup table should be immune to this problem. For those interested, the lookup table spans ages from 1 Ma to 4600 Ma, in increments of 0.1%. The age for a given 7/6 ratio is then read from the table using linear interpolation between these increments (which means the actual accuracy of the lookup table readouts will be much much better than 0.1%). The decay constants used in generating the lookup table are 9.8485E-10 (235U) and 1.55125E-10 (238U).

In addition to those big things, there were also some minor changes/fixes:

---A minor bug in the down-hole fitting window that meant that manually adjusting the fit parameters sometimes failed has been fixed.

---The 238/235 ratio used in calculations is now a Global Variable that can be viewed and edited via the Edit Settings window (for now it's still the old accepted value of 137.88).

---The Global Variable that allowed setting the number of histogram bins has been removed to avoid clutter in the Edit Settings window (if anyone feels that it was useful I'd be happy to reinstate it, but I got the impression it wasn't being used).

And as always, any questions or discussions are welcomed on the Iolite forum...

Thursday, March 7, 2013

Iolite Wiki gets a facelift

The Iolite Wiki (http://iolite.earthsci.unimelb.edu.au/wiki/doku) has a shiny new theme, and is now more readable. We've updated parts of the online manual, which we recommend is your first port of call if you're new to Iolite.

You can also find example data files and more information on the Trace_Element_IS and U-Pb geochronology DRS.

If you have any questions about the manual, or anything on the wiki, feel free to post a new topic on the forum.


The Iolite Team

Thursday, February 28, 2013

More Iolite 2013 Workshop details



We've started preparing the Iolite 2013 Workshop, to be held in Florence, Italy, the weekend before the Goldschmidt Conference. Here is a brief list of some of the topics we will be covering:




  • An introduction to the Iolite data reduction flow
  • How to install and use Iolite
  • Loading and checking mass spec data in Iolite
  • Various data reduction examples (including trace elements and U-Pb geochronology)
  • How to use Iolite for solution analyses
  • Creating laser ablation images in Iolite
  • Error propagation and estimation
  • Creating and editing reference material files (i.e. how to use your own values for reference materials like NIST SRM 612 etc)
  • Creating and editing your own Data Reduction Schemes

If there's anything you'd like covered, or would like more information about the topics outlined above, head over to the forum and ask away!


The Iolite Team

Tuesday, January 29, 2013

Iolite Workshop - Florence Italy 24 - 25th August 2013

Below are some provisional details regarding the Iolite Workshop, to be held in conjunction with the Goldschmidt Conference in Florence, August 2013. The workshop runs for two days, and is aimed at users of all levels from complete novice to programmer.

The first day is perfect for beginners and all those who would like to get a good grounding in Iolite basics, and will have participants working through example datasets on the day. The second day will look at particular applications (e.g. UPb geochronology) and advanced topics, such as creating or customising your own data reduction schemes.


DATES: 9 am - 5 pm 24th August, 2013 & 10 am - 3 pm 25th August, 2013
CLOSING DATE FOR REGISTRATION: 24 July, 2013
PARTICIPANTS: Limited to 50

BYO laptop and charger. Laptop screens should have a resolution of at least 1280 x 800 px.

NOTE: Some of these details may change over the coming months. Please check back regularly for updates.

Monday, October 22, 2012

Iolite Community Development

*** Updated with interference goodness! ***

Seeing as it's been a while since we last posted to the blog, we thought it'd be a good idea to point out that the Iolite team aren't the only ones working on Iolite. There are others who are improving Iolite by adding their own features to make their data reduction easier or better in some way. Here's just a couple of examples:

Interference Calculator

Knowing what possible interferences may affect your data can be difficult to keep track off if you analyse a variety of matrix types. Some mass spectrometers come with software that lists interferences, but what if you're processing your data away from the mass spec? What if you'd like to know what resolution you'd need to resolve an interference? Well, Martin Schiller from StarPlan in Copenhagen (with others) has written an AddOn for Iolite that will give you all sorts of information about possible interferences for a given mass. It even plots the interferences with your isotope of interest in a 'Faraday view" which is a really neat way of visualising it. Check out this post for more details.


Keep Notes with a Notebook:

If you find yourself trying lots of different approaches during your data reduction, or even if you'd just like to note down what variables you've used, Iolite has you covered thanks to the AddOn written by John Creech from Victoria University. In this post, he describes how you can add a menu item to the Iolite menu which will pop up a notebook window where you can write in all your data reduction notes. Since is stays with the experiment (that is, within the .pxp file) it's always there when you're looking at your data, even if you move the experiment between computers or even send it to your collaborators. I've started using it and I think it's very handy.



VizualAge

One of the most popular uses of Iolite is its U-Pb data reduction abilities. This has been expanded upon by Joe Petrus at Laurentian University who wrote VizualAge. If you don't know about VizualAge, you should check out the paper they published in the latest issue of Geostandards and Geoanalytical Research:

Petrus, J.A. & Kamber, B.S. (2012) VizualAge: a novel approach to laser ablation ICPMS U-Pb geochronology data reduction. Geostandards and Geoanalytical Research 36, 3 p. 247-269.

It's a pretty large paper and full of examples. Well worth a read. You can download VizualAge from Joe's webpage here.




Log Data Reader

A lot of analysts are realising how important metadata are. Instrument settings like vacuum pressure readings, lens settings and gas flows can all influence the quality of our data. The trouble is, they can be hard to keep track of, even if they are recorded in a human readable format. One step towards being able to evaluate your metadata along with your measurements is the Log Data Reader AddOn written by Martin Schiller and John Creech. So far it can read Nu Plasma and Thermo log files. Check out this post for more info.

That's just the tip of the iceberg. If you have written any additional code snippets to help you while using Iolite, we encourage you to post them to the forum where others can use them, and possibly even build on them too.


Iolite: upcoming developments

Meanwhile, Chad and I are busy working on core developments for Iolite. We're looking at some pretty fundamental changes that will probably be released as Iolite version 3. This will include upgrades to raw data importers, some really nifty improvements to how time resolved data are treated by Iolite, and a whole new user interface. Iolite v3 is a little way off, but in the meantime, we'll be releasing importers for Spectro machines and the iCAP Q, and a deconvolution tool we're writing a paper on, a new laser mapping procedure (previewed at the IGC conference in Brisbane in August), along with a few other data visualisation tools, and the usual bug fixes.

Don't forget that we're hoping to run a workshop at the Goldschmidt conference in Florence Italy in 2013, which will run over one and a half days. Hopefully this will give us enough time to take users from absolute beginners to confident gurus, with plenty of example applications.

As always, if you have any questions or comments, feel free to start a new topic on the Iolite forum.


The Iolite Team

Thursday, April 26, 2012

CellSpace images tutorial

The Iolite team and Ash Norris from Resonetics have been working on a new way of creating images. We take the spatial information recorded in laser log files and combine that with mass spec data to produce images of composition versus sampling position in the laser cell. This has some great advantages:
-images don't need to be of regular shape;
-image scans don't have to be sequential (so you can measure your reference materials between scans, or several times over the course of collecting an image);
-and, you can plot your laser ablation image over mapped images of your sample collected by other means, such as photomicrographs, SEM images etc.

Here's a tutorial, using an otolith (part of a fish's auditory system) to illustrate how to create a CellSpace image, and how it can be displayed over another image. You can download the example files from this page (at the bottom) to follow along. And if you're not familiar with using laser log files, you might want to visit this page first.

[Note: Aglient users may have issues synching the example laser log file and Agilent data. If so, please delete the AgilentDateFormat.txt file in the "Other Files" subfolder within your Iolite folder and try importing the example data again.]

And just to illustrate how this approach can save time, here's a figure of how the image scan lines were arranged (green lines in right-most image) over the otolith (shown without scan lines on left and center). You can see we mostly avoid the epoxy mount, saving time and reducing the amount of gunk put into the mass spec:



Unfortunately the mouse position was not captured very well by the recording software. If you have any questions, feel free to post on the forum.

Wednesday, March 21, 2012

Programming Basics for Iolite

We're getting a lot of users that want to customise the way Iolite processes their data, which is really exciting as it's exactly why we built Iolite in the way that we did. But we realise that there may be many more that just find getting into the programming code a little too intimidating, or that have started to take a look but would like a few more tips.

So the aim of this post is to give a really basic introduction to how to read and understand the programming code in Iolite – it's aimed at someone with no experience with programming, so hopefully it will give confidence to those people wanting to start looking at the code behind a DRS.

The first step is to find the programming code for a DRS. To do this, go to the Iolite dropdown menu and select "Edit the active data reduction scheme" (note that you need to have a DRS selected prior to doing this). If you'd like to make changes to a DRS we'd recommend making your own DRS so that you can keep the original – the easiest way to do this is by activating a DRS that you'd like to use as a template, then selecting "Create a new data reduction scheme" from the Iolite dropdown.

Once you've selected "Edit the active data reduction scheme" a window should pop up containing the programming code. The first thing you'll notice is that it's quite colourful - this is some helpful colour coding to make it easier to identify different types of things in the text.





Red text contains comments, which don't actually do anything except explain what the code is doing. You'll notice that all comments are preceded by "//", this is IgorPro's way of identifying comments in the text, so if you put "//" anywhere on a line then everything to the right of it will be ignored by IgorPro. This is of course really useful for anyone wanting to explain what lines or sections of code do. Obviously good commenting is therefore fundamental to making code that someone else can easily read and understand.

Blue text can be thought of as defining concrete things, like functions, strings, variables and waves.

Green text indicates something that will be printed, either in the history window, a popup window or on a graph. Green text is always bounded by quotation marks.

Black text is normal text, so if you write a simple equation or refer to things (e.g., a variable) that already exist then these will be black.

There are some other colours (e.g. the purple at the top of the window), but the main colours are those listed above

Another visual aid is indentation, which is a way of denoting increasingly local code. So a first level of indentation may be for all text within a function, then a further level within that may be for a loop that runs within the function, and maybe even a 3rd level of indentation (for example if there's an "if" statement within the loop).

Igor Pro has fantastic help for programming, and instead of attempting to describe things like loops and "if" statements I'd recommend using the built-in help. To do this is really simple, just right click on anything you'd like to know more about and select "Help for …..". This right-click menu also has some other great features, like the ability to insert a template for a function, which makes it much easier to use the correct syntax.

Having said that, here's a very quick summary of the main objects you'll want to use:

String = stores text
Variable = stores a number
Wave = stores a list of numbers (or text). Waves can be thought of as a single column in a table, or a line graph. Things can get pretty complicated once waves are involved, but we've done our best to keep things simple in the DRS code, and in most cases you can operate with a wave in a very similar fashion to a variable.

It's also important to think about the order that things are laid out. When Igor Pro executes the code it runs down the code one line at a time, so things have to be laid out vertically in the order that you want them to happen (although this simple flow may look more complicated once things like loops are involved). For a given line equations are read using normal mathematical hierarchy, regardless of the order things are laid out in, so brackets will be multiplication before addition, etc.

Some programming languages are case sensitive, so a variable called "Bob" would be different to another called "bob", but Igor Pro isn't like that. You can vary between upper and lower case in the code and it generally won't make any difference. Similarly, the code isn't sensitive to spaces or blank lines, so both "X = 2 + 5" and "X= 2+5" will give the same answer (an exception to both of these things is green text - it's sensitive to both capitals and spaces).

Finally, it's handy to know that things need to be defined prior to using them. For example, if you want to store a number you can do this in a "variable", but you'll need to let Igor Pro know that you'd like to make a variable and what name it should have.
 
In a similar way, instead of creating something, you could just make a connection to something that already exists. For example, if you want to perform calculations on a wave that already exists you would need to give it a label in the function, in combination with telling Igor Pro where it's located (there's an Iolite function called "IoliteDFPath" for making the location part easy).


So, hopefully the above basic bits and pieces will help a few more people venture into the DRS code, even if it's just to have a look around. And of course there is a huge amount of detail not covered here, so if you have any questions, whether very basic or more advanced, feel free to ask us on the forum and we'll do our best to help.

Happy programming!