Reconstruction ecosystem#
HTTomo exposes two main reconstruction pathways: a CPU pathway through
TomoPy and a GPU pathway through HTTomolibGPU and TomoBAR. Their pipeline
entries have the same method and module_path structure, but the
packages below those entries have different responsibilities.
The module_path identifies the public function called by HTTomo. It does
not necessarily identify the library that performs every numerical operation.
For example, a pipeline calls httomolibgpu.recon.algorithm.FBP3d_tomobar;
HTTomolibGPU prepares the call, while TomoBAR and ASTRA perform parts of the
reconstruction.
Pathways at a glance#
Pathway |
Pipeline entry |
Execution |
Implementation |
Main dependencies |
|---|---|---|---|---|
TomoPy |
|
CPU, using NumPy arrays |
TomoPy selects the reconstruction implementation from its
|
TomoPy and its numerical/compiled dependencies; HTTomo distributes work between MPI processes. |
TomoBAR |
|
NVIDIA GPU; most 3D methods use CuPy arrays |
HTTomolibGPU provides the public pipeline methods. TomoBAR supplies direct and iterative reconstruction, using ASTRA or its CuPy Fourier implementation according to the method. |
HTTomolibGPU, TomoBAR, ASTRA Toolbox, CuPy, CUDA and a compatible NVIDIA driver. |
httomo-backends supports both pathways, but it is not a numerical
reconstruction library. It provides HTTomo with method metadata, such as the
processing pattern, memory estimator, padding and output dimensions, and it
generates the method templates.
The GPU pathway#
The diagram shows how HTTomolibGPU presents one pipeline-facing API above the GPU reconstruction components. ASTRA supplies projection and backprojection operators, TomoBAR supplies reconstruction algorithms and CuPy provides CUDA-compatible arrays and kernels. Not every method uses every component: the log-polar method, for example, follows TomoBAR’s Fourier/CuPy route rather than the ASTRA route.
Fig. 21 The GPU reconstruction layers used by HTTomo. The boxes link to the corresponding project documentation.#
HTTomolibGPU method |
Type |
Data and execution model |
Numerical implementation |
|---|---|---|---|
|
Analytical FBP |
GPU, reconstructed slice by slice; NumPy input and output |
TomoBAR’s two-dimensional direct-method wrapper calls ASTRA’s
|
|
Analytical FBP |
GPU volume using CuPy arrays |
TomoBAR applies CuPy-based filtering and uses ASTRA for GPU backprojection. |
|
Analytical log-polar |
GPU volume using CuPy arrays |
TomoBAR performs Fourier inversion on log-polar grids using CuPy; this computational route does not use ASTRA projection operators. |
|
Iterative |
GPU volume using CuPy arrays |
TomoBAR implements the iteration and uses ASTRA’s GPU forward and backprojection operators. |
|
Regularised iterative |
GPU volume using CuPy arrays |
TomoBAR combines data-fidelity iterations, ASTRA projection operators and CuPy regularisers. |
ASTRA remains a package dependency of TomoBAR even when a particular method,
such as LPRec3d_tomobar, does not use ASTRA in its computational path.
The method name therefore describes the pipeline-facing implementation, not
the complete dependency graph.
The CPU pathway#
The TomoPy pathway is shorter: HTTomo passes NumPy data to
tomopy.recon.algorithm.recon and the algorithm parameter selects the
TomoPy reconstruction implementation. TomoPy may use compiled CPU kernels and
local threads, while HTTomo remains responsible for MPI distribution,
pipeline ordering and I/O.
Use this pathway for a CPU-only system, a small reconstruction, or when a
TomoPy algorithm is specifically required. See the tomopy_gridrec entry
in Choose a pipeline for a complete CPU example.
Choosing and troubleshooting a pathway#
Choose the algorithm first, then confirm that the required execution stack is available:
use an analytical method for a fast baseline and an iterative method when the data or reconstruction objective needs it;
use the TomoPy pathway when CUDA is unavailable;
use a TomoBAR pathway for the GPU volume methods and regularisation options;
check Version compatibility before changing HTTomo, HTTomolibGPU, TomoBAR, ASTRA or CuPy independently; and
validate the finished pipeline with
python -m httomo check PIPELINE INPUTbefore a production run.
For parameter names and defaults, use Available methods. For the role of the processing libraries outside reconstruction, see Processing libraries.