Metadata-Version: 2.1
Name: ssnp
Version: 0.0.2b1
Summary: Split-step non-paraxial beam propagation simulation package
Home-page: https://github.com/bu-cisl/ssnp
Author: Jiabei Zhu
Author-email: zjb@bu.edu
License: UNKNOWN
Keywords: simulation,optical engineering,beam propagation method
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: tifffile (>=2020)
Requires-Dist: imagecodecs (>=2020)
Requires-Dist: pycuda (==2020.1)
Requires-Dist: scipy (>=1.5)
Requires-Dist: scikit-cuda (>=0.5.3)

# SSNP

Split-step non-paraxial beam propagation method

## Features

* Forward model calculation based on CUDA
* Read/write data of common file type
* Gradient calculation
* Image reconstruction with regularization

## Reference

Sharma, A., & Agrawal, A. (2004). Split-step non-paraxial beam propagation method. *Physics and Simulation of Optoelectronic Devices XII*, 5349, 132. https://doi.org/10.1117/12.528172

Lim, J., Ayoub, A. B., Antoine, E. E., & Psaltis, D. (2019). High-fidelity optical diffraction tomography of multiple scattering samples. *Light: Science & Applications*, 8(1), 82. https://doi.org/10.1038/s41377-019-0195-1

## Changelog

### To do list in current version

* Support background refractive index (n0 > 1) in gradient computation

### 0.0.2.beta (developing)

* Add skcuda as a substitution of reikna (no need to compile FFT)
* Compute several illumination on the same object in a batch
* Support background refractive index (n0 > 1) in model computation
* Add stream parameter for async operation and related small tools
* Add cache to avoid unnecessary recompiling
* Fix errors:
    * data.write: fix unexpectedly changing input data when scaling before write

### 0.0.1 (Sep 7, 2020)

* Add gradient calculation support (tracking operations and doing autograd)
* Add config to set package-wise constant
* Add Multiplier class to generate auto-cached numpy/gpu array
* Add MATLAB .mat file read & write support (rely on scipy lib)


