flexTOMO

This project is a part of the larger X-ray tomographic reconstruction toolbox comprised of flexDATA,, flexTOMO and flexCALC. flexTOMO provides a wrapper around the GPU-accelerated tomographic reconstruction toolbox ASTRA. The main purpose of this project is to provide an easy way to use cone-beam forward- and back-projectors. Another purpose is to collect various algebraic reconstruction algorithms, providing support for large disk-mapped arrays (memmaps) and subsets that allow to both accelerate convergence and to save RAM.

Getting Started

We recommend that the user installs conda package manager for Python 3.

Installing with conda

conda install flextomo -c cicwi -c astra-toolbox -c nvidia

Installing with pip

pip install flextomo

Installing from source

git clone https://github.com/cicwi/flextomo.git
cd flextomo
pip install -e .

Running the examples

To learn about the functionality of the package check out our examples/ folder. Examples are separated into blocks that are best to run in VS Code / Spyder environment step-by-step.

Modules

flexTOMO is comprised of two modules:

  • flextomo.phantom: A very simple modelue with a few phantom object generators

  • flextomo.project: Main module that contains forward- and back-projectors, and algebraic reconstruction algorithms

Typical usage:

# Import:
import numpy

from flextomo import project
from flextomo import phantom

# Initialize projection images:
proj = numpy.zeros([512, 361, 512], dtype = 'float32')

# Define a simple projection geometry:
geom = geometry.circular(src2obj = 100, det2obj = 100, det_pixel = 0.01, ang_range = [0, 360])

# Create phantom and project into proj:
vol = phantom.abstract_nudes([512, 512, 512], geom, complexity = 10)

# Forward project:
project.forwardproject(proj, vol, geometry)

Authors and contributors

  • Alexander Kostenko - Initial work

  • Willem Jan Palenstijn - Packaging, installation and maintenance

  • Alexander Skorikov - Packaging, installation and maintenance

See also the list of contributors who participated in this project.

How to contribute

Contributions are always welcome. If you have any issues, questions, or remarks, then please open an issue on GitHub.

License

This project is licensed under the GNU GENERAL PUBLIC License - see the LICENSE.md file for details

Acknowledgments

  • To Willem Jan Palenstijn for endless advices regarding the use of ASTRA toolbox.