Skip to main content

Algotom

Data processing (ALGO)rithms for (TOM)ography.

GitHub Workflow Status Downloads Conda GitHub code size in bytes Conda GitHub issues Conda Coverage

logo

Algotom is a Python package designed for processing tomographic data. It offers a complete processing pipeline and workflow, including reading and writing data, pre-processing, tomographic reconstruction, post-processing, data simulation, and calibration techniques. The package provides numerous utility methods to assist users in constructing pipelines 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, and data reduction, as well as the capability to process non-standard tomography acquisitions such as grid 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 fully exploit beamline capabilities.

Features

Algotom is a lightweight package with minimal dependencies. 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.

    pipe_line

  • 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.

    grid_scan

  • Methods for processing helical scans (with/without the offset rotation-axis).

    helical_scan

  • 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.

    pipe_line

  • 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.

    simulation

  • Methods for phase-contrast imaging: phase unwrapping, speckle-based phase retrieval, image correlation, and image alignment.

    speckle

  • Methods for downsampling, rescaling, and reslicing (+rotating, cropping) 3D reconstructed image without large memory usage.

    reslicing

  • Direct vertical reconstruction for single slice, multiple slices, and multiple slices at different orientations.

    vertical_slice1

    vertical_slice1

Installation

  • 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.

Usage

Development principles

  • 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.

Update notes

Author

  • Nghia T. Vo - NSLS-II, Brookhaven National Lab, USA; Diamond Light Source, UK.

Highlights

Algotom was used for some experiments featured on media:

Release files for algotom 1.7.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for algotom 1.7.0
File Size Uploaded
algotom-1.7.0.tar.gz 115.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for algotom 1.7.0
File Interpreter ABI Platform
algotom-1.7.0-py3-none-any.whl Python 3 none any Details

Total release size: 235.3 kB

Release files / algotom-1.7.0.tar.gz

Download URL algotom-1.7.0.tar.gz
Size 115.7 kB
Tags Source
SHA-256 checksum
How to use checksums
dc24659800f3fab9edc4e68a755a0c2626b0763aea2e26ccbeea625705aeb586
BLAKE2b-256 checksum
How to use checksums
ae6282b54dee9eacf0f092d36879b516b378fbb0003f82bae77dc67642b5c84b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.13

Release files / algotom-1.7.0-py3-none-any.whl

Download URL algotom-1.7.0-py3-none-any.whl
Size 119.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
77b1f1fa1a8ce014d761cbc9b72a4e612fdca7bdeea357298a2f7aafff666955
BLAKE2b-256 checksum
How to use checksums
c9d66a01ea6754f2a57b8137e86c59580a6c4408f8966115a5ddc01936fc45fb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.13

Release history Release notifications | RSS feed

This release

1.7.0 This release

2 release files

1.6.0

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page