Algotom is a Python package designed for tomography data processing. It offers a complete data processing pipeline; including reading and writing data, pre-processing, tomographic reconstruction, post-processing, data simulation, and calibration techniques. The package provides many utility methods to assist users in constructing a pipeline for processing their own data or developing new methods. Key features of Algotom include a wide range of processing methods such as artifact removal, distortion correction, speckle-based phase-contrast imaging, data reduction; and the capability of processing non-standard tomography acquisitions such as grid scans or helical scans. The software stands out for its readability, minimal dependencies, and rich documentation. Developed specifically for synchrotron-based tomographic beamlines, Algotom aims to maximize data quality, enhance workflow throughput, and exploit full beamline capabilities.
Algotom is a lightweight package. The software is built on top of a few core Python libraries to ensure its ease-of-installation. Methods distributed in Algotom have been developed and tested at synchrotron beamlines where massive datasets are produced. This factor drives the methods developed to be easy-to-use, robust, and practical. Algotom can be used on a normal computer to process large tomographic data. Some featuring methods in Algotom are as follows:
-
Methods in a full data processing pipeline: reading-writing data, pre-processing, tomographic reconstruction, and post-processing.
-
Methods for processing grid scans (or tiled scans) with the offset rotation-axis to multiply double the field-of-view (FOV) of a parallel-beam tomography system. These techniques enable high-resolution tomographic scanning of large samples.
-
Methods for processing helical scans (with/without the offset rotation-axis).
-
Methods for determining the center-of-rotation (COR) and auto-stitching images in half-acquisition scans (360-degree acquisition with the offset COR).
-
Practical methods developed and implemented for the package: zinger removal, tilted sinogram generation, sinogram distortion correction, simplified form of Paganin's filter, beam hardening correction, DFI (direct Fourier inversion) reconstruction, FBP (filtered back-projection) reconstruction, BPF (back-projection filtering) reconstruction, and double-wedge filter for removing sample parts larger than the FOV in a sinogram.
-
Utility methods for customizing ring/stripe artifact removal methods and parallelizing computational work.
-
Calibration methods for helical scans and tomography alignment.
-
Methods for generating simulation data: phantom creation, sinogram calculation based on the Fourier slice theorem, and artifact generation.
-
Methods for phase-contrast imaging: phase unwrapping, speckle-based phase retrieval, image correlation, and image alignment.
-
Methods for downsampling, rescaling, and reslicing (+rotating, cropping) 3D reconstructed image without large memory usage.
-
Direct vertical reconstruction for single slice, multiple slices, and multiple slices at different orientations.
- https://algotom.readthedocs.io/en/latest/toc/section3.html
- If users install Algotom to an existing environment and Numba fails to install due to the latest Numpy:
- Downgrade Numpy and install Algotom/Numba again.
- Create a new environment and install Algotom first, then other packages.
- Use conda instead of pip.
- Avoid using the latest version of Python or Numpy as the Python ecosystem taking time to keep up with these twos.
- https://algotom.readthedocs.io/en/latest/toc/section4/section4_5.html
- https://algotom.readthedocs.io/en/latest/toc/section1/section1_4.html
- https://algotom.readthedocs.io/en/latest/toc/section4.html
- https://github.com/algotom/algotom/tree/master/examples
-
While Algotom offers a complete set of tools for tomographic data processing covering pre-processing, reconstruction, post-processing, data simulation, and calibration techniques; its development strongly focuses on pre-processing techniques. This distinction makes it a prominent feature among other tomographic software.
-
To ensure that the software can work across platforms and is easy-to-install; dependencies are minimized, and only well-maintained Python libraries are used.
-
To achieve high-performance computing and leverage GPU utilization while ensuring ease of understanding, usage, and software maintenance, Numba is used instead of Cupy or PyCuda.
-
Methods are structured into modules and functions rather than classes to enhance usability, debugging, and maintenance.
-
Algotom is highly practical as it can run on computers with or without a GPU, multicore CPUs; and accommodates both small and large memory capacities.
- Nghia T. Vo - NSLS-II, Brookhaven National Lab, USA; Diamond Light Source, UK.
Algotom was used for some experiments featured on media:
-
Scanning Moon rocks and Martian meteorites using helical scans with offset rotation-axis. Featured on Reuters.
-
Scanning Herculaneum Scrolls using grid scans with offset rotation-axis respect to the grid's FOV (pixel size of 7.9 micron; total size of 11.3 TB). Featured on BBC. The latest updates on the scroll's reading progress are here.
-
Scanning 'Little Foot' fossil using two-camera detector with offset rotation-axis. Featured on BBC.