In the architecture of the Astro-WISE system, three main components are identified: a file server, a database, and a high-performance computing cluster.

The file server stores FITS-files, while the database keeps track of the relations between these files and their processing history. It is also through this database that decisions are made about which files to retrieve during the various processing steps. The compute cluster is used to process the data. During processing, requests are made to the database for the raw science data and for the necessary calibration files, which are then retrieved from the fileserver.


The software consists of code written in Python, and includes an interactive command line environment (AWE, see HOW-TO Use the awe-prompt), along with web services for viewing and editing the database (see Web Services). On a lower level a number of existing C programs are used, such as SExtractor, LDAC, SWarp and eclipse (see Interfaces to other programs).

Python and Object Oriented Programming

The code for the Astro-WISE system is written in Python, which is a language highly suitable for Object Oriented Programming (OOP). As a result of the OOP style in which the code is written, classes are associated with the various conventional calibration images. For example, in our system, bias exposures become instances of the RawBiasFrame class, and twilight flats become instances of the RawTwilightFlatFrame class. These instances of classes are the ‘objects’ of OOP.

Classes may have incorporated methods and atttributes. Methods perform a task on the object they belong to, while attributes are properties such as constants, flags, or links to other objects that may be needed by methods. In the system various recipes have been coded that control the creation of instances of these classes. There may be different ways to create an instance (object) of a class, depending on which attributes are set to what values, and which methods are used. A ColdPixelMap object for example, can be created by using a DomeFlatFrame or a TwilightFlatFrame object as input.

Within the Object Oriented Programming style, inheritance is an important concept. Classes can inherit attributes and methods from other classes. In the above example, the ColdPixelMap class has an attribute ‘flat’, which must be an object of the BaseFlatFrame class; DomeFlatFrames and TwilightFlatFrames (these are master dome- and twilight images) inherit from the BaseFlatFrame class and hence are both allowed as input.

There is a significant amount of on-line documentation available for Python. See the Python web site http://www.python.org.