OOF Reduction Software

Licensing, No Warranty, Support

The OOF data reduction software is made available under the terms of the GPL V2 or (at licensee’s option) latter licences. For details of the licence see the files named “COPYING” in each of the distribution packages.

Please note that there is no warranty of any sort for this software. Consult the text of the GPL for details of the no warranty condition.

I am not funded to provide support for this software. If you wish direct question to me feel free to email, but understand if I do not have the time to reply.

Also, please note that this is primarily a research system that has grown during investigation and application of the OOF technique. As such, it is not designed to be an “end-user” system. Unless you can do C++ or Python programming it will be completely useless for you.

History of the OOF data reduction software

Phase retrieval holography with astronomical sources was initially investigated at the JCMT by R. E. Hills, A. N. Lasenby and collaborators in the early 1990’s. In 2000 I begun work with R. E. Hills and J. S. Richer on continuing these investigations.

The first generation of the OOF system that I wrote was designed to work within the software package that J. S. Richer wrote for reduction of with-phase holography for the JCMT. It was written in C++ and partially in TCL, and interacted with the user through the TCL interpreter.

The second generation system was re-written to be independent of the JCMT with-phase holography system. It also introduced interaction with user with Python rather than TCL. I begun work on second generation system in 2002.

The third generation system was a substantial re-write and redesign that improved the modularity of the system, reduced the number of dependencies and improved installation. It was written in a combination of C++ and Python. Work on the third generation system begun in 2005. This is the version most currently most commonly deployed in observatories.

The fourth generation system is a rewrite in NumPy/Python. The work begun on this system in 2018.

Python/NumPy Version

The motivation of this version is increase readability and reduce maintenance effort re-implementing based on the Python NumPy and SciPy software packages. This version removes all custom C and C++ code and the code base is far smaller than the C++ version.

The NumPy/Python version is available in the current source code (https://github.com/bnikolic/oof ) in the oofpy subdirectory.

C++/Python Version

Installation, setup

There is some additional information on using and building OOF software here http://wiki.gb.nrao.edu/bin/view/PTCS/OOFHolographyInstructions


Build system:

  • Standard autotools build system is used (autoconf/automake/libtool).

Required compilers:

  • C, C++ and Fortran compilers are required. GCC versions 3 and 4 in routines use. It appears that gfortran 4.1 does not work, so g77 is required.

Pre-required packages for the OOF holography software:

  • Python 2.4 or later
  • FFTW v.2
    • Note that FFTW v.3 is not compatible with FFTW2 and will not work in place of FFTW v.2. It should however be possible to have both installed on the system if required.
  • SWIG 1.3.31 or later
  • GSL V 1.6 or later
  • Boost C++ libraries v. 1.30.0 or later
  • CFitsIO

Following Python Libraries:

  • numarray

  • pyfits

    ** Note: Problems have been reported with pyfits + numpy. If pyfits

    V1.1 and numpy is installed then pyfits will use numpy by default. This is the pyfits+numpy configuration and it is not backward compatible with pyfits+numarray


The build system of the OOF software is the standard autotools chain, invoked by the “./configure” command. Because the system is distributed as five separate components, it is necessary to configure each separately. This may be conveniently done using a script as below.

The following bash script illustrates the build procedure:

# Bojan Nikolic bojan@bnikolic.co.uk
# Bash script that illustrates building the OOF application

# Note: we are now using the pkg-config utility, simplifying
# installation considerably

export PKG_CONFIG_PATH=${OOFPREFIX}/lib/pkgconfig/

COMPS="bnlib-1.2.1 bnfits-1.2 astromap-1.2 bnmin1-1.3 oof-1.2"

for x in ${COMPS}
  if  [ -e ${x}.tar.bz2 ] ;  then
  tar xvjf ${x}.tar.bz2  &&
  (cd ${x} &&
      ./configure --prefix=${OOFPREFIX} ${BOOSTFLAG} &&
      make install
      echo "Cant find ${x} !!!"

Sample data

If you wish to try reducing a typical OOF observation, I have posted a sample file. This is beam-differenced Q-band observation at the GBT taken in the spring of 2005.

Current version: V1.4


The versions of components comprising each release are a more definitive description of a build of the OOF system then the version shown in titles of these sections. So please cite versions of each component in any communication.

These are the components of the OOF software V1.4:

Previous version: V1.3

These are the components of the OOF software V1.3:

Previous version: V1.2

These are the components of the OOF software V1.2:

Previous version: V1.1p1

These are the components of the OOF software V1.1p1:

Previous version: V1.1

These are the components of the OOF software V1.1:

Older versions

Versions prior to 1.1 are not being made available at this time.


You can find a little more about the inference routines “BNMin1” on these web pages