The GMRT off-line data analysis package was designed to (1) provide
efficient means for browsing the multi-dimensional dataset represented
by
(2) be
robust to changes in the database format (3) provide a higher level
astronomically useful view of the data, (4) provide a programming
environment which can be used by knowledgeable astronomers to write
novel instrumental debugging, data calibration and analysis tools, (5)
provide easy means of data selection and (6) provide a simple user
interface to the data analysis program.
The design for the entire software was therefore dominated by the following basic design goals:
In terms of the design of the libraries, this translates to a modular software with the API of each module carefully designed to mesh well with the other modules
In terms of software development, this translates into implementing generalized software solutions with a programmable interface.
With this, it is often possible to effectively perform a complicated data processing/filtering operation using a number of stand-alone programs without writing a monolith program (which is difficult both to write as well as maintain).
Since it is virtually impossible to write a data display software which satisfies all present and future needs, it is best to design the data analysis software such that external stand-alone display software can be used. This way, the task of development of display software (requiring very different software skills and professional motivation) is separated.
This also allows the freedom to use a display software that one is most familiar with and satisfies the needs. A large number of stand-alone plotting/data display software packages are now freely available. With such a design, one is not restricted to use locally designed specific display software allowing enormous scope for creativity and an unrestricted, independent development path.
The Object Oriented design methodology was used to design a hierarchical software where each layer hides the details of the layers below it via the interface presented by each layer. Data access, manipulation, extraction and selection mechanisms have, wherever possible, been implemented in a general form in the libraries (see Section 3.3) while keeping their usage as simple as possible at higher levels via their API.
The package is organized in the form of three layers of libraries over which a suite of application/data analysis programs are built. The lowest layer has been written in the C programming language while the rest of the software have been written in C++. With a lightweight wrapper (also written but almost never used), this lowest layer provides a FORTRAN interface for basic access to the LTA database. The user interface was designed as an embedded shell and is implemented as a set of four separate libraries including an arbitrary mathematical expression parser. An application using this interface provides an interactive shell which is largely independent of any external files.
Most application programs have been written as filters (which operate on an LTA database and produce an LTA database) . The user interface provides easy mechanisms for piping such filters to effectively perform complicated tasks.
The correlator output is first written in a shared memory resource provided by POSIX compliant operating systems. The program record, which is part of the Data Acquisition Software, converts the data in the shared memory format to the LTA-format. This program was modified to write the output LTA formatted visibility data to the standard output instead of writing to a disk file. As mentioned above, most off-line programs have been written to accept the input data from a pipe. This feature of the off-line software system can then be used, in combination with the modified record, for on-line data analysis by piping the data to the programs from the shared memory. Thus, all programs used for off-line data browsing, data validation, automatic detection of bad data, etc. (see Sections 3.5.1, 3.5.2, 3.5.3, 3.5.4) can also be used as on-line programs. The locally developed data display/plotting software also accepts plotting instructions and arbitrary data via UNIX sockets. The output of the off-line programs, along with embedded plotting instructions, can be easily supplied to the display software over UNIX sockets. Thus, with a combination of the data piping facility, modified record and the display software, the off-line software can be effectively used for on-line data display.