Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Cuda/C++ library for Regularized 2D and 3D Tomography Reconstructions.

License

Notifications You must be signed in to change notification settings

jtschwar/tomo_TV

Repository files navigation

tomo_TV

Python and C++ toolbox for tomographic data processing and developing iterative reconstruction algorithms. Specifically, this repository provides a selection of various data models and regularizers for simple python development. Tomo_TV also contains supports experiments where data is 'dynamically' collected to facilitate real-time analysis of tomograms.

Features

2D and 3D reconstruction algorithms implemented purely in Cuda/C++ wrapped in Python functions. These scripts can either perform simulations or reconstruct experimental data. Available algorithms include:

  • Weighted Backprojection (WBP)
  • Simultaneous Iterative/Algebraic Reconstruction Technique (SIRT/SART)
  • KL-Divergence / Expectation Maximization for Poisson Limited Datasets
  • FISTA
  • ASD - POCS

All reconstruction routines support execution on multiple GPUs, enabling fast and scalable processing of large volumetric datasets.

Installation

To build the reconstruction package, clone the repository and run the build script.

git clone --recursive https://github.com/jtschwar/tomo_TV.git
cd tomo_TV

chmod +x build.sh
./build.sh

Quickstart

We can either use non-multimodal reconstruction algorithms:

from tomofusion.gpu.reconstructor import TomoGPU

# Load the Tilt Series and Tilt Angles
# Tilt Series needs to be in (Nx,Ny,Nangles) where Nx is the tilt-axis
# Tilt Angles is a 1D Vector with Nangles elements

# Create Reconstruction object, run reconstruction algorithm and return algorithm
tomoengine = TomoGPU(tilt_angles, tilt_series)
tomoengine.fista(Niter=50, lambda_param=1e-1, show_convergence=True)
vol = tomoengine.get_recon() # ( Optional: tomoengine.display_recon() )

or fused mutli-modal implementation:

from tomofusion.chemistry.reconstructor import ChemicalTomo
# Add the Chemical Tilt Series to a Dictionary
chem = {'C': carbon_tilt_series, 'Zn': zn_tilt_series}
tomoengine = ChemicalTomo(adf, adf_angles, chem, chem_angles)
tomoengine.data_fusion() 
vol = tomoengine.get_recon() # ( Optional: tomoengine.display_recon() )

Example ADF and spectral tomography datasets are available for download from Zenodo to help you get started with running these reconstructions. We provide a sample jupyter notebook (demo.ipynb) which outlines the reconstruction process for all these algorithms both with simulated and experimental datasets.

Alignment

For automated tilt series alignment using projection matching algorithms, refer to our companion package: projection_refinement. This tool provides fiducial-free alignment that integrates directly with the tomo_TV reconstruction pipeline.

References

If you use tomo_TV for your research, we would appreciate it if you cite to the following papers:

Contribute

Issue Tracker: https://github.com/jtschwar/tomo_TV/issues

Feel free to open an issue if you have any comments or concerns.

Contact

email: [email protected] website: https://jtschwar.github.io

About

Cuda/C++ library for Regularized 2D and 3D Tomography Reconstructions.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5