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.
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.
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.shWe 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.
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.
If you use tomo_TV for your research, we would appreciate it if you cite to the following papers:
- Real-time 3D analysis during electron tomography using tomviz
- Imaging 3D Chemistry at 1 nm resolution with fused multi-modal electron tomography
Issue Tracker: https://github.com/jtschwar/tomo_TV/issues
Feel free to open an issue if you have any comments or concerns.
email: [email protected] website: https://jtschwar.github.io