Commit 0336e405 authored by Jochen Schulz's avatar Jochen Schulz
Browse files

update readme, incorperate website

parent 4930fd3f
stages:
- build
- docs
- deploy
tarball:
stage: build
only:
- tags
script:
- mkdir -p tarball
- git archive --prefix=ProxPython/ HEAD | gzip > tarball/proxpython-$CI_COMMIT_TAG.tar.gz
artifacts:
paths:
- tarball
docs:
stage: build
only:
......@@ -30,4 +19,3 @@ deploy:
- tags
script:
- rsync -ai docs/build/html/ /var/www/num/proxtoolbox/versions/$CI_COMMIT_TAG
- rsync -ai tarball/ /var/www/num/proxtoolbox/tarballs/$CI_COMMIT_TAG
# ProxToolbox
- TOC
{:toc}
The ProxToolbox is a collection of modules for solving mathematical problems
using fixed point iterations with proximal operators. It was used to generate
many if not all of the numerical experiments conducted in the papers in the
ProxMatlab Literature folder.
For a complete listing of papers with links, go to
http://vaopt.math.uni-goettingen.de/en/publications.php.
This site is maintained by the Working Group in Variational Analysis of the
This site is maintained by the Working Group in Variational Analysis of the
Institute for Numerical and Applied Mathematics at the University of Göttingen.
<center>
<video width="320" height="240" controls>
<source src="https://num.math.uni-goettingen.de/proxtoolbox/media/JWST.mp4" type="video/mp4">
<source src="https://num.math.uni-goettingen.de/proxtoolbox/media/JWST.ogg" type="video/ogg">
<source src="https://num.math.uni-goettingen.de/proxtoolbox/media/JWST.webm" type="video/webm">
Your browser does not support the video tag.
</video>
<p>Video: Representative iterate of a noisy JWST test wavefront recovered with the
Douglas-Rachford algorithm.</p>
</center>
Additional binary data
## Python version
Current
Phase (28mb): http://vaopt.math.uni-goettingen.de/data/Phase.tar.gz
Ptychography (417mb): http://vaopt.math.uni-goettingen.de/data/Ptychography.tar.gz
CT (1.7mb): http://vaopt.math.uni-goettingen.de/data/CT.tar.gz
`Documentation <https://num.math.uni-goettingen.de/proxtoolbox/versions/0.2>`__
The binary data need to be unpacked in the InputData subdirectory source code.
For example, the Phase data in ProxPython would be in ProxPython/InputData/Phase.
The documentation includes a tutorial.
# Acknowledgements
### Older versions
Main Author: Russell Luke, University of Göttingen
- 0.1 (`Source <https://num.math.uni-goettingen.de/proxtoolbox/tarballs/0.1/proxpython-0.1.tar.gz>`__,
`Documentation <https://num.math.uni-goettingen.de/proxtoolbox/versions/0.1>`__)
Contributors:
Sylvain Gretchko, Inst. for Numerical and Applied Math, Universität Göttingen (python),
Matthijs Jansen, I. Institute for Physics, University of Göttingen (Orbital Tomography);
Alexander Dornheim, Inst. for Numerical and Applied Math, Universität Göttingen (python);
Stefan Ziehe, Inst. for Numerical and Applied Math, Universität Göttingen (python);
Rebecca Nahme, Inst. for Numerical and Applied Math, Universität Göttingen (python);
Matthew Tam, CARMA, University of Newcastle, Australia (Ptychography);
Pär Mattson, Inst. for Numerical and Applied Math, Universität Göttingen (Ptychography);
Robin Wilke, Inst. for X-Ray Physics, Univesität Göttingen (Ptychography and Phase);
Robert Hesse, Inst. for Numerical and Applied Math, Universität Göttingen;
Alexander Stalljahn, Inst. for Numerical and Applied Math, Universität Göttingen (Sudoku).
## Matlab version (3.0, August 2017)
Funding:
`Source <http://vaopt.math.uni-goettingen.de/en/software/ProxMatlab-Release3.0.tar.gz>`__
This has grown over the years and has been supported in part by:
For help with the Matlab version, see the :code:`README` file in the ProxMatlab
source.
NASA grant NGT5-66; the Pacific Institute for Mathematical Sciences (PIMS);
USA NSF Grant DMS-0712796;
German DFG grant SFB-755 TPC2;
German Israeli Foundation (GIF) grant G-1253-304.6/2014.
## Demos Accompanying Publications:
- Cone and Sphere benchmark (`Source <http://vaopt.math.uni-goettingen.de/en/software/ProxMatlab-Cone_and_Sphere.tar.gz>`__):
The demos are in the subfolder Cone_and_Sphere. These are the codes generating the benchmarks in the article
`Optimization on Spheres: Models and Proximal Algorithms with Computational Performance Comparisons <https://epubs.siam.org/doi/abs/10.1137/18M1193025>`__
by D.R. Luke, S. Sabach and M. Teboulle, SIAM J. Mathematics of Data Science, 1(3), 408-445 (2019).
- Nanoscale Photonic Imaging demos (`Source <http://vaopt.math.uni-goettingen.de/en/software/ProxMatlab-Cone_and_Sphere.tar.gz>`__):
The demos are in the subfolder Nanosclae_Photonic_Imaging. These are the codes accompanying the tutorial chapter by D. R. Luke
'Proximal Methods for Image Processing' pp. 165-202 (2020).
In T. Salditt, A. Egner and D.R. Luke (eds) `Nanoscale Photonic Imaging <https://link.springer.com/book/10.1007/978-3-030-34413-9>`__.
Topics in Applied Physics, vol 134. Springer, Cham.
Additional binary data
*********************************
* [Phase (28mb)](https://vaopt.math.uni-goettingen.de/data/Phase.tar.gz)
* [Ptychography (417mb)](https://vaopt.math.uni-goettingen.de/data/Ptychography.tar.gz)
* [CT (1.7mb)](https://vaopt.math.uni-goettingen.de/data/CT.tar.gz)
# Getting started
The binary data need to be unpacked in the `InputData` subdirectory source code.
For example, the `Phase` data in ProxPython would be in `ProxPython/InputData/Phase`.
*********************************
## Acknowledgements
**Main Author**: Russell Luke, University of Göttingen
**Contributors**:
Sylvain Gretchko, Inst. for Numerical and Applied Math, Universität Göttingen (python),
Matthijs Jansen, I. Institute for Physics, University of Göttingen (Orbital Tomography);
Alexander Dornheim, Inst. for Numerical and Applied Math, Universität Göttingen (python);
Stefan Ziehe, Inst. for Numerical and Applied Math, Universität Göttingen (python);
Rebecca Nahme, Inst. for Numerical and Applied Math, Universität Göttingen (python);
Matthew Tam, CARMA, University of Newcastle, Australia (Ptychography);
Pär Mattson, Inst. for Numerical and Applied Math, Universität Göttingen (Ptychography);
Robin Wilke, Inst. for X-Ray Physics, Univesität Göttingen (Ptychography and Phase);
Robert Hesse, Inst. for Numerical and Applied Math, Universität Göttingen;
Alexander Stalljahn, Inst. for Numerical and Applied Math, Universität Göttingen (Sudoku).
**Funding**:
This has grown over the years and has been supported in part by:
* NASA grant NGT5-66; the Pacific Institute for Mathematical Sciences (PIMS);
* USA NSF Grant DMS-0712796;
* German DFG grant SFB-755 TPC2;
* German Israeli Foundation (GIF) grant G-1253-304.6/2014.
## Getting started
The easiest way to use ProxPython is to run some of the included demos.
There are different families of experiments and various demos.
All the demos are located in the ProxPython/demos folder. For convenience,
all the Nanoscale Photonic Imaging demos have been grouped together
in the ProxPython/Nanoscale_Photonic_Imaging folder.
in the `ProxPython/Nanoscale_Photonic_Imaging` folder.
To run a demo, open a command line. Assuming ProxPython is in your current folder,
change your current folder to demos by
cd ProxPython/demos
``` bash
cd ProxPython/demos
```
Then just type
python3 demo_name
``` bash
python3 demo_name
```
to run the demo called "demo_name".
For example,
python3 JWST_RAAR.py
``` bash
python3 JWST_RAAR.py
```
will run the RAAR algortihm on the JWST experiment.
*********************************
# Structure
*********************************
## Structure
What is the basic structure of ProxPython?
I. proxtoolbox folder
This is the heart of the proxtoolbox. Most of the code is found here.
This is the heart of the proxtoolbox. Most of the code is found here.
There are four subfolders:
1. experiments
This folder contains the different experiments to which the
This folder contains the different experiments to which the
proxtoolbox can be applied. It defines the abstract Experiment
class which contains all the information that describes a given
experiment. Essentially, this class loads or generates the data
......@@ -99,41 +148,41 @@ There are four subfolders:
this data. This class is meant to be derived from to implement
concrete experiments.
There are currently four families of experiments: the phase retrieval
experiments, computed tomography (CT), ptychography, and Sudoku.
experiments, computed tomography (CT), ptychography, and Sudoku.
The orbital tomography experiment will be integrated soon.
2. algorithms
The proxtoolbox allows the use of different algortihms.
The proxtoolbox allows the use of different algortihms.
This folder contains the abstract Algorithm class and
various concrete classes.
various concrete classes.
At moment the following algortihms have been implemented:
- AP: Alternating Projections
- AvP: Averaged Projections
- CDRl: relaxed version of a cyclic averaged
- CDRl: relaxed version of a cyclic averaged
alternating reflections method (CAAR) proposed by
Borwein and Tam, Journal of Nonlinear and Convex Analysis
Volume 16, Number 4. The relaxation is the relaxed
Douglas Rachford algorithm proposed and analysed by Luke,
Inverse Problems, 2005 and SIAM J. on Optimization, 2008)
- CP: Cyclic Projections
- DRAP: a type of hybrid Douglas-Rachford and Alternating projections
proposed by Nguyen H. Thao, ``A convergent relaxation of the
- DRAP: a type of hybrid Douglas-Rachford and Alternating projections
proposed by Nguyen H. Thao, ``A convergent relaxation of the
Douglas--Rachford algorithm", Comput. Optim. Appl., 70
(2018), pp. 841--863.
- DRl: Douglas-Rachford-lambda (same as RAAR below)
- HPR: (Heinz-Patrick-Russell algorithm.
See Bauschke,Combettes&Luke, Journal of the Optical
- HPR: (Heinz-Patrick-Russell algorithm.
See Bauschke,Combettes&Luke, Journal of the Optical
Society of America A, 20(6):1025-1034 (2003))
- PHeBIE: Proximal Heterogenious Block Implicit-Explicit (PHeBIE)
- PHeBIE: Proximal Heterogenious Block Implicit-Explicit (PHeBIE)
minimzation algorithm as proposed in the paper
"Proximal Heterogeneous Block Implicit-Explicit Method and
Application to Blind Ptychographic Diffraction Imaging",
R. Hesse, D. R. Luke, S. Sabach and M. K. Tam,
R. Hesse, D. R. Luke, S. Sabach and M. K. Tam,
SIAM J. on Imaging Sciences, 8(1):426--457 (2015))
- QNAvP: Quasi-Newton Accelerated Averaged Projections
- RAAR: Relaxed Averaged Alternating Reflection algorithm.
- RAAR: Relaxed Averaged Alternating Reflection algorithm.
For background see:
D.R.Luke, Inverse Problems 21:37-50(2005)
D.R. Luke, SIAM J. Opt. 19(2): 714--739 (2008))
......@@ -146,45 +195,32 @@ There are four subfolders:
4. utils
Contains some utilities, mostly for loading and processing data.
*********************************
# II. InputData
*********************************
## II. InputData
When you first download the proxtoolbox this folder should be empty.
When you call a ART/Phase/Ptychography demo the first time, you are asked if you
want to automatically download the InputData for ART, phase or ptychography.
If this does not work you need to download the data manually from:
CT (1.7mb): http://vaopt.math.uni-goettingen.de/data/CT.tar.gz
Phase (28mb): http://vaopt.math.uni-goettingen.de/data/Phase.tar.gz
Ptychography (417mb): http://vaopt.math.uni-goettingen.de/data/Ptychography.tar.gz
* [Phase (28mb)](https://vaopt.math.uni-goettingen.de/data/Phase.tar.gz)
* [Ptychography (417mb)](https://vaopt.math.uni-goettingen.de/data/Ptychography.tar.gz)
* [CT (1.7mb)](https://vaopt.math.uni-goettingen.de/data/CT.tar.gz)
Extract the data and store it in
InputData/CT/
``` bash
InputData/Phase/
InputData/Ptychography/
InputData/CT/
```
*********************************
# III. Demos
********************************
# III. Demos
All the demos are located in the demos folder. For convenience,
all the Nanoscale Photonic Imaging demos have been grouped together
in the ProxPython/Nanoscale_Photonic_Imaging folder. To run a demo,
change your current folder to demos or Nanoscale_Photonic_Imaging and
in the ProxPython/Nanoscale_Photonic_Imaging folder. To run a demo,
change your current folder to demos or Nanoscale_Photonic_Imaging and
type
python3 demo_name
Depending on your operating system, you may have to type the following:
py demo_name
``` bash
python3 demo_name
```
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment