This repository implements the Preconditioned Nested Primal-Dual (PNPD) method. It includes both the core PNPD package and some examples for testing its performance.
├── examples
│ ├── example_1
│ ├── example_2
│ └── example_3
└── PNPD
├── math_extras.py
├── plot_extras.py
├── schedulers.py
├── solvers.py
└── utilities.py
PNPD
: python package and supporting utilities.solvers.py
: implementation of the PNPD method and other solvers used for the examples.math_extras.py
: mathematical functions and utilities.plot_extras.py
: utilities for generating plots of results.schedulers.py
: scheduling functions for the non-stationary version of PNPD.utilities.py
: other generic utilities.
examples
: test scripts and examples for evaluating the PNPD method's performance.example_*
: each folder contains a suite of tests for a specific problem.
-
(Optional, recommended) Create a virtual environment to isolate dependencies (see python docs)
-
Move to the root folder of this repository:
cd path/to/repo
-
Install requirements with
pip install .
-
Move to an example folder (e.g.,
example_1
):cd ./examples/example_1
-
Generate the blurred image and point spread function (PSF) for the example
python init.py
-
Run a test, (e.g.,
PNPD_comparison.py
):python PNPD_comparison.py
-
Check the generated plots and results in
./examples/plots/
directory.