Since starting the tutorial series on coding for atom probe analysis, I’ve moved my codebase (well, the public part of it) to a Github repository. This way, I can push code to everyone following the tutorials as we go. The codebase is steadily growing, with additions on volume analysis (iso-surfaces, volume rendering) and mass spectrum analysis this week. If you are with us, go to: https://github.com/peterfelfer/AtomProbeTutorials
The best thing to do is to install Github desktop and clone the repository. This way, you can update it with the push of a button. Also, feel free to contribute and send pull requests.
Everyone loves a sequel, right? Just kidding… Now all issues regarding broadcasting are solved and from tomorrow on we will begin to stream basic tutorials on coding your own atom probe analysis with Matlab and a number of other programs.
Tomorrow’s topic will be the basics: how do I get my data into Matlab, how do I handle and manipulate it and how do I do basic analysis (clipping, rotating, etc…). Watch it on my YouTube stream on 9:30 Central European Time every Friday if you want to be able to ask questions, otherwise you will be able to watch it later on my channel. All the code needed is on a Github named AtomProbeTutorials, which will be updated as we go if we need some more.
We already had 7 people joining us via YouTube last Friday, which I’d call a success. Btw.. we’ll stick to English from now on.
Many of you may have thought I am gone after a year of inactivity, but that’s definitely not the case. I have moved to the University of Erlangen Nürnberg, where I am heading my own atom probe group as a Junior Professor.
This means, I am trying to get everyone here on a good level when it comes to creating their own custom coded analysis. From this week on, we will be streaming the basics tutorials live to my YouTube channel, sharing it with the world. We will be starting from the basics of analysis, up to the more advanced topics such as local proxigrams and interfacial excess mapping later in the series. Tune in and ask your own questions or watch it later if you like!
The first stream will happen next week, Fri Jan 29, Central European Time. We will go through setting up the tools you need for analysis and doing some basic data treatment.
The starting point for any kind of data analysis in APT is knowing where objects like a phase or a thin layer etc. are. Most commonly this is done by analysis of the dataset cut into small cubes aka voxels. These voxels are then either directly visualised using volume rendering or via iso-surfaces. Iso-surfaces are much like height lines in a map; they connect points with equal ‘height’ values in a 3D voxelisation. Such ‘height lines’ don’t exist in an exact fashion in 3D, so we use an interpolation to trace them. In APT, usually the most basic is0-surface algorithm is used: the marching cubes algorithm.
With the programs from this tutorial you will be able to calculate 3D voxelisations from your point cloud data (aka APT data) and export the voxelisation int 8bit *.raw format. This is the smallest common denominator in volume rendering and can be read e.g. by Blender. From this data, we can do volume rendering of e.g. concentration fields. I also show how to calculate iso-surfaces in Matlab, which it has built-in and export them into *.obj, so you can do visualisation of your volume data and iso-surface together.
One of the most common tasks in atom probe analysis is the calculation of a proximity histogram (see this paper from Hellman et al.). This is actually a very simple task, only involving calculating the distance between each atom and the interface and turning this into a concentration histogram. This is commonly done from is0-surfaces, but in principle it can be done from any surface or interface (e.g. grain boundary) represented by a mesh (see this paper and other tutorials on how to create these). In the download package you’ll find the code to do that in Matlab.
When it comes to analyzing interfaces however, the concentration at the interface itself does not really have a meaning, because it’s influenced by local magnification (see Miller) and preferential retention (see paper). It’s therefore much more appropriate to use the interfacial excess, being the amount of excess atoms per unit area. This is not usually influenced by these artefacts. I have included a tool with graphical user interface to calculate the interfacial excess. You’ll find the principle on how this and other programs dealing with extracting values from curved surfaces, line objects such as dislocations work in this Ultramicroscopy paper.
In order to create analysis objects (stay tuned for the tutorials) we need to know where the boundary of the dataset is. This is to make sure that our analysis objects end exactly where the boundary is. In order to do that we can use either convex hulls or alpha hulls. Convex hulls can only delineate a boundary of a fully convex dataset, say if you have clipped a cube or sphere out of the original dataset. In this case it’s often better to just use the clipping object as the boundary, unless the clipping object goes beyond the dataset boundary.
Generally, it’s better to use alpha hulls (Edelsbrunner et al.). In this case spheres instead of planes are fitted to the dataset. This gives a proper outline of the dataset, also in regions where concavity is present. to find out more and learn how to use the programs that can achieve that, check out the tutorial below.
AtomBlend is a Blender plugin we have developed here in Sydney over the last few months by Vavara Efremova under the supervision of Anna Ceguerra, Simon Ringer and myself, Peter Felfer. Blender is a very powerful 3D visualisation and animation package and is widely used in professional computer graphics. The best thing about it: it’s free and open source, so get your copy at www.blender.org and check out the beginners tutorials on http://cgcookie.com/blender/.
AtomBlend is used to easily load our data into Blender for advanced visualisation, animation and analysis. You will see its only a few steps between you and beautiful 3D renders of your data.
AtomBlend takes *.pos files and *.rng files as an input, both of which you can easily produce using IVAS, Matlab or 3Depict. Below there are video tutorials on how to install and use it.
What I forgot to mention in the video is that you can switch between halo materials (circles as atoms) and vertex duplication (spheres as atoms) by switching on vertex duplication in the object tab. If you have both set up, that is.
Here’s a download link for the talk I gave on atom probe tomography of nanoparticles. I hope it will inspire other people to get into the lab and have a go at the problem. I am still very much learning how to do that too, so I hope to learn from all of you out there.
Also: here are the links to the papers on the nanoparticles that are already published (JACS and Angewandte Chemie).
JACS paper (with Prof. Kruse’s group)
This is the talk I gave on interfacial excess mapping at the APT&M conference 2014. IE mapping is used to analyse the distribution of chemical elements, isotopes or ions at an interface created using either DCOM or iso-surfaces.
There will be a paper in the proceedings ad I’ll make the programs available too…. stay tuned.