PURIFY
Next-generation radio interferometric imaging
|
PURIFY is an open-source collection of routines written in C++
available under the license below. It implements different tools and high-level to perform radio interferometric imaging, i.e. to recover images from the Fourier measurements taken by radio interferometric telescopes.
PURIFY leverages recent developments in the field of compressive sensing and convex optimization. Low-level functionality to solve the resulting convex optimisation is factored into the open-source companion code, SOPT, also written by the authors of PURIFY. For further background please see the reference section.
This documentation outlines the necessary and optional dependencies upon which PURIFY should be built, before describing installation, testing and usage details. Contributors, references and license information then follows.
PURIFY is written in C++11
. Required software and libraries, and their minimum supported versions, are listed below. The build system will attempt to automatically download and build the automatically included libraries. (an internet connection is required for this).
C++
dependencies:
C++
C++
linear algebra.C
and Fortran
subroutines for reading and writing data files in FITS (Flexible Image Transport System) data format.C++
.C++
unit-testing framework only needed for testing.C++
micro-benchmarking framework only needed for benchmarks.For examples on how to install dependencies on Ubuntu and MacOS, see the cmake.yml.
If the dependencies are already available on your system, you can also install PURIFY manually like so
On MacOS, you can also install most of the dependencies with Homebrew e.g.
The SOPT library includes an interface to ONNXrt for using trained models as priors in the Forward-Backward optimization algorithm. To build PURIFY with ONNXrt capability, you need to enable ONNXrt
support also in SOPT using the onnxrt
option when running the cmake
command.
To check everything went all right, run the test suite:
The main purify
executable lives either in the build directory or in the in the bin
subdirectory of the installation directory. purify
has one required argument, it a string for the file path of the config file containing the settings.
purify path/to/config.yaml
.
A template with a description of the settings is included in the data/config
directory. When purify
runs a directory will be created, and the output images will be saved and time-stamped. Additionally, a config file with the settings used will be saved and time-stamped, helping for reproducibility and book-keeping.
The CI workflow has a manual dispatch trigger which allows you to log into the job while it's running. You can trigger it in actions. Run the workflow and set debug_enabled=true
to enable the tmate
step in the CI workflow. Once the workflow is running, open the job in actions. You should see it printing out a line with a ssh
command. Run it in terminal to log into the GitHub Actions runner.
A Dockerfile is available on DockerHub. We are currently not maintaining it, and cannot guarantee it is up to date. Use the below documentation at your own risk.
If you want to use Docker instead, you can build an image using the Dockerfile available in the repository or pulling it from DockerHub.
or
Then to use it, you should mount the directory with your data and config files to /mydata
in the container. To run the container and mount the directory is with:
That will start a shell inside the container in the /mydata
directory where you can see all the files from your /full/path/to/data
. There you can run purify
as shown above.`
Check the contributors page (github).
If you use PURIFY for work that results in publication, please reference the webpage and our related academic papers:
PURIFY Copyright (C) 2013-2019
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details (LICENSE.txt).
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
For any questions or comments, feel free to contact Jason McEwen, or add an issue to the issue tracker.
The code is given for educational purpose. The code is in beta and still under development.