Rapid Development of Interferometric Software Using MIRIAD and Python - Williams, Peter K. G.; Law, Casey J.; Bower, Geoffrey C. (Publications of the Astronomical Society of the Pacific, 2012)
ABSTRACT State-of-the-art radio interferometers are complex systems that unleash torrents of data. If current and planned instruments are to routinely meet their performance goals, standard analysis techniques must be significantly improved, becoming simultaneously more sophisticated, more automatic, and more scalable. While there is no shortage of ideas for next-generation algorithms, there is a shortage of development resources, so it is vital that programming environments for interferometric software allow for rapid, flexible development. We present an open-source software package, miriad-python, that provides access to the MIRIAD interferometric reduction system in the Python programming language. The modular design of MIRIAD and the high productivity and accessibility of Python provide an excellent foundation for rapid development of interferometric software. Several other projects with similar goals exist, and we describe them and compare miriad-python with them in detail. Along with an overview of the package design, we present sample code and applications, including the detection of millisecond astrophysical transients, determination and application of nonstandard calibration parameters, interactive data visualization, and a reduction pipeline using a directed acyclic graph dependency model analogous to that of the traditional UNIX tool make. The key aspects of the miriad-python software project are documented. We find that miriad-python provides an extremely effective environment for prototyping new interferometric software, though certain existing packages provide far more infrastructure for some applications. While equivalent software written in compiled languages can be much faster than Python, there are many situations in which execution time is profitably exchanged for speed of development, code readability, accessibility to nonexpert programmers, quick interlinking with foreign software packages, and other virtues of the Python language.