Cambridge > Cavendish Lab > MRAO

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.

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. This is the current generation. It is written in a combination of C++ and Python.

Installation, setup

There is some additional information on using and building OOF software on this wiki page


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
# 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.3

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.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