1 Introduction

 1.1 Background
 1.2 Rôle of KAPPA
 1.3 Functionality of KAPPA
 1.4 This document

1.1 Background

It is Starlink’s aim to provide maintainable, portable, and extensible applications packages that work in harmony by sharing a common infrastructure toolkit, standards, conventions and above all, a standard data format. Individual packages are no longer required to perform all functions, thus carry less inertia, and are more adaptable to outside developments. Additional functionality can be added piecemeal to the relevant package. New user interfaces, such as graphical, could be layered within the toolkit for obtaining parameters and so make the enhancement available to all applications that make use of those tools. An example of this approach has allowed us to access ‘foreign data formats’ throughout Starlink packages, because the packages use a common infrastructure library.

An important part of the rationalisation is that applications are unified by sharing the same basic data structure—the NDF  (Extensible n-dimensional Data Format). This contains an n-dimensional data array that can store most astronomical data such as spectra, images and spectral-line data cubes. The NDF may also contain information like a title, axis labels and units, error and quality arrays, and World Co-ordinate System information. There are also places in the NDF, called extensions, to store any ancillary data associated with the data array, even other NDFs.

1.2 Rôle of KAPPA

The backbone of the applications packages is Kappa (Kernel APplication PAckage). It provides general-purpose applications that have wide applicability, concentrating on image processing, data visualisation, and manipulating NDF components. Kappa provides facilities that integrate with specialised Starlink packages such as those for CCD reduction (Ccdpack), stellar and galaxy photometry (PHOTOM, EXTRACTOR, PISA, ESP), spectroscopy (ECHOMOP, FIGARO), polarimetry (POLPACK, TSP), format conversion (CONVERT), etc. Thus the functionality of Kappa should not be regarded in isolation.

In a wider context, Kappa offers facilities not in IRAF, for instance handling of data errors, quality masking, a graphics database, availability from the shell, as well as more n-dimensional applications, widespread use of data axes, and a different style. It integrates with instrument packages developed at UK observatories. With the automatic data conversion and the availability of Kappa and other Starlink packages from within the IRAF command language, you should be able to pick the best of the relevant tools from both systems to get the job done.

1.3 Functionality of KAPPA

1.3.1 Applications

Currently, Kappa has over 200 commands that are available both from the UNIX C-shell and from the ICL command language. They provide the following facilities for data processing:

There are also many applications for data visualisation:

1.3.2 General

Kappa handles bad pixels, and processes quality, variance, World Co-ordinate System (WCS), and other information stored within NDFs (SUN/33 and Section 8). In order to achieve generality Kappa does not process non-standard extensions; however, it does not lose non-standard ancillary data since it copies extensions to any NDFs that it creates. The standard extensions that Kappa recognises are the FITS airlock, that holds metadata in the form of FITS headers; and PROVENANCE that records the lineage of an NDF, much like a family tree.

Kappa can also process data in other formats, such as FITS and IRAF, using an automatic-data conversion facility (CONVERT, SSN/20).

Although oriented to image processing, many commands will work on NDFs of arbitrary dimension and others operate on both spectra and images, and cubes. Many applications handle all non-complex data types directly, for efficient memory and disc usage. Those that do not will usually undergo automatic data conversion to produce the desired result.

Kappa’s graphics are produced using the widely used PGPLOT package, and are thus device independent.

Most commands can be automatically re-invoked to process multiple NDFs by supplying a group of NDFs as input. Groups of NDFs can be specified using wild-cards, or by listing them explicitly either in response to a prompt or within a text file.

1.4 This document

This document is arranged as follows. First are two annotated Kappa tutorials to give you a quick summary of basic usage. The main text follows, which amplifies the points sketched in the demonstrations, and describes other functionality and modes of use illustrated with further examples. Finally, there are extensive appendices, including a classified list of commands and detailed descriptions of each command, which are also available on a quick-reference card.