Python implementation of paper: High-fidelity intensity diffraction tomography with a non-paraxial multiple-scattering model.
This repository includes a highly flexible and easy-to-use Python package based on PyCUDA library, and code examples for simulation and reconstruction.
If you find this project useful in your research, please consider citing our paper:
J. Zhu, H. Wang, and L. Tian, "High-fidelity intensity diffraction tomography with a non-paraxial multiple-scattering model," Opt. Express 30, 32808-32821 (2022).
We propose a novel intensity diffraction tomography (IDT) reconstruction algorithm based on the split-step non-paraxial (SSNP) model for recovering the 3D refractive index (RI) distribution of multiple-scattering biological samples. High-quality IDT reconstruction requires high-angle illumination to encode both low- and high- spatial frequency information of the 3D biological sample. Our SSNP model can more accurately compute multiple scattering from high-angle illumination compared to paraxial approximation-based multiple-scattering models. We apply this SSNP model to both sequential and multiplexed IDT techniques. We develop a unified reconstruction algorithm for both IDT modalities that is highly computationally efficient and is implemented by a modular automatic differentiation framework. We demonstrate the capability of our reconstruction algorithm on both weakly scattering buccal epithelial cells and strongly scattering live C. elegans worms and live C. elegans embryos.
- Prepare the environment for PyCUDA library (the PyCUDA wiki page was not updated for a long time and hard to follow)
- Install a C/C++ compiler, and add it to your PATH (
gcc
for Linux andcl.exe
for Windows) - Install the CUDA library. If you prefer conda as virtual environment manager, you can install the
nvidia::cuda
package:
Note:conda install nvidia::cuda
scikit-cuda
cannot find some CUDA versions automatically on Windows. It's possible to change the related code inscikit-cuda
rather than reinstall an old version of CUDA, but do it at your own risk. - Install a C/C++ compiler, and add it to your PATH (
- Install the
ssnp
package in this repositorypip install "git+https://github.com/bu-cisl/SSNP-IDT#subdirectory=ssnp_pkg"
- Download the examples and run with Python
Project is licensed under the terms of the GPL-v3 license. see the LICENSE file for details