Skip to main content

nDTomo software suite

Project description

nDTomo

nDTomo Software Suite

nDTomo is a Python-based software suite for the simulation, visualization, pre-processing, reconstruction, and analysis of chemical imaging and X-ray tomography data, with a focus on hyperspectral datasets such as X-ray powder diffraction computed tomography or XRD-CT.

It includes:

  • A suite of notebooks and scripts for advanced processing, sinogram correction, CT reconstruction, peak fitting, and machine learning-based analysis
  • A PyQt-based graphical user interface (GUI) for interactive exploration and analysis of hyperspectral tomography data
  • A growing collection of simulation tools for generating phantoms and synthetic datasets

The software is designed to be accessible to both researchers and students working in chemical imaging, materials science, catalysis, battery research, and synchrotron radiation applications.

📘 Official documentation: https://ndtomo.readthedocs.io

XRD-CT

Key Capabilities

nDTomo provides tools for:

  1. Interactive visualization of chemical tomography data via the nDTomoGUI
  2. Generation of multi-dimensional synthetic phantoms
  3. Simulation of pencil beam CT acquisition strategies
  4. Pre-processing and correction of sinograms
  5. CT image reconstruction using algorithms like filtered back-projection and SIRT
  6. Dimensionality reduction and clustering for unsupervised chemical phase analysis
  7. Pixel-wise peak fitting using Gaussian, Lorentzian, and Pseudo-Voigt models
  8. Peak fitting using the self-supervised PeakFitCNN
  9. Simultaneous peak fitting and tomographic reconstruction using the DLSR approach with PyTorch GPU acceleration

XRD-CT

Figure: Comparison between X-ray absorption-contrast CT (or microCT) and X-ray diffraction CT (XRD-CT or Powder diffraction CT) data acquired from an NMC532 Li ion battery. For more details regarding this study see [1].

Included Tutorials

The repository includes several example notebooks to help users learn the API and workflows:

Binder Tomography Reconstruction (GoogleColab)

Notebook Filename Topic
tutorial_phantoms.ipynb Generating and visualizing 2D/3D phantoms
tutorial_pencil_beam.ipynb Simulating pencil beam CT data with different acquisition schemes
tutorial_detector_calibration.ipynb Calibrating detectors and integrating diffraction patterns using pyFAI
tutorial_texture_2D_diffraction_patterns.ipynb Investigating the effects of texture on 2D powder patterns
tutorial_sinogram_handling.ipynb Pre-processing, normalization, and correction of sinograms
tutorial_ct_recon_demo.ipynb CT image reconstruction from sinograms using analytical and iterative methods
tutorial_dimensionality_reduction.ipynb Unsupervised learning for phase identification in tomography
tutorial_peak_fitting.ipynb Peak fitting in synthetic XRD-CT datasets
tutorial_peak_fit_cnn.ipynb Peak fitting in GPU using a self-supervised PeakFitCNN
tutorial_DLSR.ipynb Simultaneous peak fitting and CT reconstruction in GPU using the DLSR method

Each notebook is designed to be standalone and executable, with detailed inline comments and example outputs.

Note:

  • Binder is built with CPU-only support (including torch) and can be used to run all notebooks. However, some notebooks may take longer to execute due to the lack of GPU acceleration.

  • Google Colab provides GPU support and torch is preinstalled. You will also need to install nDTomo at the beginning of each notebook session.

Graphical User Interface (nDTomoGUI)

The nDTomoGUI provides a complete graphical environment for:

  • Loading .h5 / .hdf5 chemical imaging datasets
  • Visualizing 2D slices and 1D spectra interactively
  • Segmenting datasets using channel selection and thresholding
  • Extracting and exporting local diffraction patterns
  • Performing single-peak batch fitting across regions of interest
  • Generating a synthetic XRD-CT phantoms for development tests
  • Using an embedded IPython console for advanced control and debugging

The GUI is described in more detail in the online documentation and supports both novice and expert workflows.

Launch with:

conda activate ndtomo
nDTomoGUI

Installation Instructions

To make your life easier, please install Anaconda. The nDTomo library and all associated ode can be installed by following the next three steps:

1. Install astra-toolbox

An important part of the code is based on astra-toolbox, which is currently available through conda.

It is possible to install astra-toolbox from sources (i.e., if one wants to avoid using conda), but it is not a trivial task. We recommend creating a new conda environment for nDTomo.

Create a new environment and first install astra-toolbox:

conda create --name ndtomo python=3.11
conda activate ndtomo
conda install -c astra-toolbox -c nvidia astra-toolbox

2. Install nDTomo from GitHub

To install using Git:

pip install git+https://github.com/antonyvam/nDTomo.git

For development work (editable install):

git clone https://github.com/antonyvam/nDTomo.git && cd nDTomo
pip install -e .

For local installation after downloading the repo:

Navigate to where the setup.py file is located and run:

pip install --user .

or:

python3 setup.py install --user

3. Install PyTorch

The neural networks, as well as any GPU-based code, used in nDTomo require Pytorch which can be installed through pip.

For example, for Windows/Linux with CUDA 11.8:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

Launching the GUI

After installing nDTomo, the graphical user interface can be launched directly from the terminal:

conda activate ndtomo
python -m nDTomo.gui.nDTomoGUI

Diamond Light Source

As a user at the Diamond Light Source, you can install nDTomo by doing:

git clone https://github.com/antonyvam/nDTomo.git && cd nDTomo
module load python/3
python setup.py install --user

Citation

We are currently preparing a manuscript for nDTomo. In the meantime, if you use parts of the code, please cite the work using the following:

Vamvakeros, A., Papoutsellis, E., Dong, H., Docherty, R., Beale, A.M., Cooper, S.J., Jacques, S.D.M.J., nDTomo: A Python-Based Software Suite for X-ray Chemical Imaging and Tomography, 2025, https://github.com/antonyvam/nDTomo

References

[1] A. Vamvakeros, D. Matras, T.E. Ashton, A.A. Coelho, H. Dong, D. Bauer, Y. Odarchenko, S.W.T. Price, K.T. Butler, O. Gutowski, A.-C. Dippel, M. von Zimmerman, J.A. Darr, S.D.M. Jacques, A.M. Beale, Small Methods, 2100512, 2021. https://doi.org/10.1002/smtd.202100512

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ndtomo-2025.5.tar.gz (54.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ndtomo-2025.5-py3-none-any.whl (54.2 MB view details)

Uploaded Python 3

File details

Details for the file ndtomo-2025.5.tar.gz.

File metadata

  • Download URL: ndtomo-2025.5.tar.gz
  • Upload date:
  • Size: 54.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ndtomo-2025.5.tar.gz
Algorithm Hash digest
SHA256 aac08ccea0739716d315641e0600f1fdb2c9274804e5d8e07a9ac670d5216efa
MD5 8fbc73774059135e4c0d0fb95184c54c
BLAKE2b-256 f6ae87bdb42ff8fb7870eea02467f1d677c006eb48d7356e25bcad0335f1974c

See more details on using hashes here.

File details

Details for the file ndtomo-2025.5-py3-none-any.whl.

File metadata

  • Download URL: ndtomo-2025.5-py3-none-any.whl
  • Upload date:
  • Size: 54.2 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for ndtomo-2025.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3a2079c821cf3ba7eb4bb86a5e711dded3d999892558ae27bcd26ab48d98f2f3
MD5 01fec4fd4cafc18a6bc9f96731c7d3d1
BLAKE2b-256 0cf37f35afe7f694aeff55eaf7814b4a461b389eb62f16328e287db356236932

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page