Copyright 2016-2017, All rights reserved
Technical University of Denmark, Kongens Lyngby, Denmark
Code written by A.C. Jakobsen, A. Cereser
Recon3D is a set of algorithms developed to analyze data collected using dark field X-ray microscopy (DFXRM). DFXRM is a non-destructive technique which allows to select a single grain embedded in a polycrystalline sample and to reconstruct, in 3D, its shape and how crystal orientations are distributed in its interior. The technique has a spatial resolution of about 100 nm and an angular resolution superior to what provided by transmission electron microscopy (TEM).
From the images collected at different sample rotation angles $\omega$, and at different rocking and rolling angles $\phi$ and $\chi$, Recon3D returns
- A 3D reconstruction of the shape of the grain investigated using DFXRM
- A 3D map showing how crystal orientations and strain are distributed in the sample
The white paper outling the principles used for developing the softwrae can be found here.
Recon3D is designed to consider, as input, topo-tomo data sets from ID06 at ESRF. The program takes data where a sample is rotated around the diffrx and at every point, a mosaicity scan is done. This is done through a forward projection algorithm to calculate a given voxel's reflected spot position on the detector.
Future versions will be able to do reconstruction based on strain datasets.
Running Recon3D requires having Miniconda2 and Fable on your Panda2 account. To install the packages, run the script available here. If you get an error message and need to change a permission path, check this tip.
From raw data to 3D reconstruction
The manual describing how to get a 3D reconstruction from a topotomo dataset is available here.
Note on MPI usage
If mpirun is available (as on Panda2), multiple instances of getdata.py or recon3d.py can be run in parallel. This will increase the speed. The maximum number of processes that can be run in parallel depends on the available memory. If you get a memory error (not enough memory available or similar), you should:
- Close the current terminal window, or log out from the current ssh session. This will force the memory to be cleaned.
- If the problem persists, lower the number of MPI instances.
How to contribute
This software is covered by the GNU General Public License.