IRAF

Last updated
IRAF
Original author(s) National Optical Astronomy Observatory
Developer(s) IRAF community volunteers
Initial release1984;40 years ago (1984)
Stable release
2.18  OOjs UI icon edit-ltr-progressive.svg / 5 April 2024;6 months ago (5 April 2024)
Repository
Operating system Linux, macOS, FreeBSD, Hurd
Platform x86-64, AArch64, x86, MIPS architecture, PowerPC, ARMv7, RISC-V, DEC Alpha, x32 ABI, Apple M1, LoongArch
Type Astronomical Analysis
License open-source license
Website https://iraf-community.github.io

IRAF (Image Reduction and Analysis Facility) is a collection of software written at the National Optical Astronomy Observatory (NOAO) geared towards the reduction of astronomical images and spectra in pixel array form. This is primarily data taken from imaging array detectors such as CCDs. It is available for all major operating systems for mainframes and desktop computers. IRAF was designed cross-platform, supporting VMS and UNIX-like operating systems. Use on Microsoft Windows was made possible by Cygwin in earlier versions, and can be today done with the Windows Subsystem for Linux. Today, it is primarily used on macOS and Linux.

Contents

IRAF commands (known as tasks) are organized into package structures. Additional packages may be added to IRAF. Packages may contain other packages. There are many packages available by NOAO and external developers often focusing on a particular branch of research or facility.

Functionality available in IRAF includes the calibration of the fluxes and positions of astronomical objects within an image, compensation for sensitivity variations between detector pixels, combination of multiple images or measurement of the redshifts of absorption or emission lines in a spectrum.

While IRAF is still very popular among astronomers, institutional development and maintenance was stopped. IRAF is now maintained as community software. [1] [2]

History

The IRAF project started in fall 1981 at Kitt Peak National Observatory. In 1982, a preliminary design and the first version of the Command Language (CL) were completed. The IRAF Group was founded. Designer of the IRAF system and chief programmer was Doug Tody. In 1983, Space Telescope Science Institute selected IRAF as the environment for their SDAS data analysis system and ported the system to VMS. The first internal IRAF release was in 1984. After a limited distribution of a few outside sites the first public release was 1987. [3]

In the middle of the 1990s, the "Open IRAF" project was started to address the problems that were seen at that time. This included language bindings, a way to use IRAF components without the full IRAF environment, new data types and dynamically loadable user code. [4] This project was never completed.

At the end of the 1990s, the IRAF development slowed down considerably, as the system was considered mature. The user support was transferred to a Web forum in 2005 and new development of the core system was officially decreased to a very low level. [5] However, voluntary work of the IRAF developers continued and they distributed some unofficial intermediary versions. [6]

From 2006 to 2009, a first effort was made to port IRAF to 64 bit at the Institute of Space and Astronautical Science Japan. [7] While this effort did not evolve into a new official IRAF version, it contributed significant portions to the 64-bit port by NOAO.

NOAO resumed development efforts in 2007, [8] porting the system to 64 bit and adding Virtual Observatory capabilities to it. This phase ended in 2013 with the release of version 2.16.1.

In 2017, the source code was transferred to GitHub. In an effort to package the IRAF software for Debian, it was cleaned up from the remaining non-free source code and is maintained solely by the community since then. After a few pre-releases, version 2.17 was released in early 2022. [9]

2023, NOIRLab (successor of NOAO) resumed some development and created their own release 2.18 with the scope limited to support the legacy Gemini data reduction pipeline. [10] The relevant changes were later merged into the community release 2.18. [11]

IRAF major versions [12]
VersionRelease dateRemarks
2.11984first internal release
2.2February 1986limited public release
2.3August 14, 1986support for STSDAS
2.4October 19, 1986
2.5July 8, 1987first public release
2.6February 24, 1988
2.7December 4, 1988
2.8June 30, 1989
2.9April 10, 1990
2.10July 7, 1992
2.11August 27, 1997
2.12January 25, 2002
2.132006unofficial releases by NOAO volunteers
2.14December 1, 2007
2.15November 22, 2010
2.16March 22, 2012last major release by NOAO
2.17January 4, 2022first community release
2.18April 5, 2024merge of NOIRLab changes

Licensing

The licensing of IRAF generally follows the MIT license scheme. Older versions contained some non-free software. In particular, the NCAR graphics code restricted re-distribution of IRAF before it was removed in version 2.16. [13] Also, old versions used code taken from the Numerical Recipes book under a different license. This code was removed or replaced with Open Source in versions after 2.16.1. [14] This allowed the distribution of IRAF packages in mainstream Linux distributions like Debian [15] or Ubuntu.

System design

Four basic components make up the run-time IRAF system: [16]

Only the HSI is system dependent. All other components are portable by the use of the functions provided by the HSI. This way, porting to a new system requires only changes in this component. However, the initial design was implicitly based on the universal use of 32-bit data types and therefore the port to 64 bit required major efforts not only in the HSI but in all components of the system.

Application packages

Application Packages are recursively structured in subpackages and tasks. They can be divided into two classes: general system and basic dataprocessing utilities, and packages specific to astronomical data reduction and analysis. The tasks are dominantly written in SPP and CL.

System packages

The system packages are located in the base package of IRAF and provide tools for the CL, useful operating system utilities, and basic scientific utilities, f.e. for image processing:

dataio
Data format conversion (FITS, IRAF image format etc.)
images
General bitmap image processing and display
lists
List processing
plot
Vector graphics plotting utilities
softools
Software development and system maintenance tools
system
System utilities
utilities
Miscellaneous utilities, including nttools to handle tables.

Optical astronomy packages

The noao packages are used for the analysis of optical astronomy data. Most of these tasks are general, but the imred package also contains data reduction tasks for specific instruments. Some of the important packages are:

imred
Image reductions package, containing both general tasks for astronomical data reduction and for specific KPNO instruments
artdata
Artificial data generation package. May generate artificial catalogs, 2D and 2D spectra, create images from artificial stars, galaxies, noise and cosmic rays etc. for testing purposes.
astrometry
Astrometry package to obtain astrometric coordinates for objects in stellar fields
digiphot
Digital stellar photometry package
IRAF splot from the onedspec package at work. IRAF splot.png
IRAF splot from the onedspec package at work.
onedspec
One dimensional spectral data reduction and analysis package. One important task in this package is splot, a graphical tool for the analysis of spectra.
twodspec
Two dimensional spectral reduction and analysis package, the same operations for two-dimensional spectra (longslit, multispec)
surfphot
Galaxy isophotal analysis package
astcat
Astronomical catalog and surveys access package

External packages

One strength of IRAF was the existence of various external packages, which resolved specific problems or implemented specialized data reduction pipelines. Among the packages are

fitsutil
Utilities for single and multiple extension FITS files
sptable
IRAF package for tabular spectra
ctio
Tools for the Cerro Tololo Inter-American Observatory
stsdas
Software system from Space Telescope Science Institute for calibrating and analyzing data from the Hubble Space Telescope. The support of selected tasks from the stsdas package is continued in the st4gem package. The original tables package from STSci is now included as utilities.nttables in the system packages.
stecf
IRAF tasks developed at the Space Telescope European Coordinating Facility
rvsao
Radial Velocity Package by Smithsonian Astrophysical Observatory
wcstools
Image World Coordinate System Utilities by Jessica Mink
AXe Spectral Extraction
Spectral extraction and visualization software to process large format astronomical slitless spectroscopic images such as those obtained with the Advanced Camera for Surveys on the Hubble Space Telescope. The package consists of several tasks, each of which performs a specific reduction step on the data to produce the final, extracted spectra. The user can then analyse and control the spectra and, if necessary, re-run with slightly changed parameters until a satisfactory result is achieved. A deep ACS WFC grism image can contain detectable spectra of several thousands objects. Checking each individual spectrum is very tedious. To help users analyzing the full wealth of their data, the additional task aXe2web was developed to produce browsable web pages from reduced spectral data to enable many hundreds of spectra to be examined quickly and discerningly. The tool can be used for a quick look or as preview facilities in data pipelines, databases or even for virtual observatories. [17]
gemini
Data reduction pipeline for the Gemini Observatory

Many of these packages are however not maintained anymore. [18] Porting to 64 bit also required significant effort and not all external packages were ported and therefore only usable in a 32-bit environment.

User-defined tasks

IRAF allows users to write their own tasks in two main ways. One is by writing non-compiled procedure (Command Language, CL) scripts. The second is through compiled subset pre-processor (SPP) programs. Tutorial documents exist for both methods. [19]

IRAF specific languages

Command language

The Command Language (CL), serves as a command and runtime supportive interface between the user at his computer terminal and the application programs he is executing. The user types his commands to the CL and it does whatever task and file manipulations are necessary to carry out the commands. In later versions, the original CL was extended to ECL, which has an editable command line as its main advantage. A version that enabled direct access to the Virtual Observatory (VOCL) was developed too.

The CL primarily serves as a shell and organizes the work with the system and the applications. There are three types of tasks the CL can execute: native tasks, which are part of compiled IRAF executables, scripts (CL tasks which are tasks written in CL), and foreign tasks, external programs or scripts that are executed by the CL. For each task, a parameter file may exist. It contains a description of each of the parameters used by the task that should be known and managed by the CL. [20]

Here is a simple Hello World script in CL:

{print('Hello,world!!')}

CL scripts have usually the suffix .cl, which may cause conflicts with Common Lisp code files.

Subset preprocessor language

The subset preprocessor language (SPP) implements a subset of the IRAF preprocessor language that was planned in the early days of IRAF. The SPP language is based on the Ratfor language. The lexical form, operators, and control flow constructs are identical to those provided by Ratfor. The major differences are the data types, the form of a procedure, the addition of inline strings and character constants, the use of square brackets for arrays, and the task statement. The i/o facilities provided are quite different. [21]

The xc program, provided with IRAF, translates SPP programs into Fortran 66, and from there with f2c into C code.

The preprocessor is complemented with mkpkg, a make like build automation tool, generic, a tool to translate generic types into type dependent source code, and xyacc, a modified yacc to produce SPP output.

Here is a simple Hello World program in SPP:

taskhello# CL callable taskprocedurehello()# common procedurebegincallprintf("hello, world\n")end

SPP programs have usually the suffix .x, those which need to be preprocessed with the generic tool have .gx.

Supplementary software

A full IRAF working environment usually requires two other applications: an extended xterm window with a graphics windows (called xgterm and distributed in a separate x11iraf package) and an image display program referred to as an "image server". The two most popular image servers are SAOImageDS9 (by SAO) and ximtool (NOAO, also distributed in the x11iraf package). [22]

As an alternative of xgterm and the Command Language, the Python package PyRAF can be used. PyRAF is able to translate CL scripts into Python scripts. It also provides a graphics window (based on Tk or on Matplotlib). As command shell, either the Python or IPython command shell can be used, or a special mode resembling much of the look and feel of the CL command shell. [23]

See also

Related Research Articles

An integrated development environment (IDE) is a software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, and a debugger. Some IDEs, such as IntelliJ IDEA, Eclipse and Lazarus contain the necessary compiler, interpreter or both; others, such as SharpDevelop and NetBeans, do not.

troff, short for "typesetter roff", is the major component of a document processing system developed by Bell Labs for the Unix operating system. troff and the related nroff were both developed from the original roff.

<span class="mw-page-title-main">Wolfram Mathematica</span> Computational software program

Wolfram Mathematica is a software system with built-in libraries for several areas of technical computing that allow machine learning, statistics, symbolic computation, data manipulation, network analysis, time series analysis, NLP, optimization, plotting functions and various types of data, implementation of algorithms, creation of user interfaces, and interfacing with programs written in other programming languages. It was conceived by Stephen Wolfram, and is developed by Wolfram Research of Champaign, Illinois. The Wolfram Language is the programming language used in Mathematica. Mathematica 1.0 was released on June 23, 1988 in Champaign, Illinois and Santa Clara, California.

In computer science, a preprocessor is a program that processes its input data to produce output that is used as input in another program. The output is said to be a preprocessed form of the input data, which is often used by some subsequent programs like compilers. The amount and kind of processing done depends on the nature of the preprocessor; some preprocessors are only capable of performing relatively simple textual substitutions and macro expansions, while others have the power of full-fledged programming languages.

A programming tool or software development tool is a computer program that software developers use to create, debug, maintain, or otherwise support other programs and applications. The term usually refers to relatively simple programs, that can be combined to accomplish a task, much as one might use multiple hands to fix a physical object. The most basic tools are a source code editor and a compiler or interpreter, which are used ubiquitously and continuously. Other tools are used more or less depending on the language, development methodology, and individual engineer, often used for a discrete task, like a debugger or profiler. Tools may be discrete programs, executed separately – often from the command line – or may be parts of a single large program, called an integrated development environment (IDE). In many cases, particularly for simpler use, simple ad hoc techniques are used instead of a tool, such as print debugging instead of using a debugger, manual timing instead of a profiler, or tracking bugs in a text file or spreadsheet instead of a bug tracking system.

<span class="mw-page-title-main">BRL-CAD</span> Computer-aided design software

BRL-CAD is a constructive solid geometry (CSG) solid modeling computer-aided design (CAD) system. It includes an interactive geometry editor, ray tracing support for graphics rendering and geometric analysis, computer network distributed framebuffer support, scripting, image-processing and signal-processing tools. The entire package is distributed in source code and binary form.

Hard coding is the software development practice of embedding data directly into the source code of a program or other executable object, as opposed to obtaining the data from external sources or generating it at runtime.

<span class="mw-page-title-main">Starlink Project</span>

The Starlink Project, referred to by users as Starlink and by developers as simply The Project, was a UK astronomical computing project which supplied general-purpose data reduction software. Until the late 1990s, it also supplied computing hardware and system administration personnel to UK astronomical institutes. In the former respect, it was analogous to the US IRAF project.

The Apple Developer Tools are a suite of software tools from Apple to aid in making software dynamic titles for the macOS and iOS platforms. The developer tools were formerly included on macOS install media, but are now exclusively distributed over the Internet. As of MacOS 14.6.1, Xcode is available as a free download from the Mac App Store.

The Space Telescope Science Data Analysis System (STSDAS) is an IRAF-based suite of astronomical software for reducing and analyzing astronomical data. It contains general purpose tools and packages for processing data from the Hubble Space Telescope. STSDAS is produced by Space Telescope Science Institute (STScI). The STSDAS software is generally in the public domain, however some routines were taken from the Numerical Recipes and other books and cannot freely distributed.


This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.

Astronomical Image Processing System++ is a software package whose development was started in the early nineties, written almost entirely in C++, and which initial goal was to replace the by then already aging AIPS software. It has now been reborn as CASA and is the basis of the image processing systems for several next-generation radio telescopes including ALMA, eVLA, and ASKAP.

<span class="mw-page-title-main">Astronomical Image Processing System</span>

The Astronomical Image Processing System (AIPS) is a software package to support the reduction and analysis of data taken with radio telescopes. Developed predominantly for use with the then under-construction VLA, the generality inherent in its design allowed it to become the standard data-reduction package for most radio interferometers, including VLBI. Limited single-dish capability is also featured. Although partially replaced by CASA, it continues to evolve and remains in use.

The Wing Python IDE is a family of integrated development environments (IDEs) from Wingware created specifically for the Python programming language with support for editing, testing, debugging, inspecting/browsing, and error-checking Python code.

The following outline is provided as an overview of and topical guide to the Perl programming language:

<span class="mw-page-title-main">Astropy</span> Python language software

Astropy is a collection of software packages written in the Python programming language and designed for use in astronomy. The software is a single, free, core package for astronomical utilities due to the increasingly widespread usage of Python by astronomers, and to foster interoperability between various extant Python astronomy packages. Astropy is included in several large Python distributions; it is part of package managers for Linux and macOS, the Anaconda Python Distribution, Enthought Canopy and Ureka.

The following table compares notable software frameworks, libraries and computer programs for deep learning.

References

  1. "Data reduction / Software | NOIRLab Science". www.noirlab.edu. Retrieved 2022-12-11.
  2. "IRAF 2.17". IRAF Community Distribution. Retrieved 2022-12-11.
  3. Fitzpatrick, Mike (September 2012). "IRAF: Lessons for Project Longevity". ASP Conference Series. 461: 595. Bibcode:2012ASPC..461..595F.
  4. Heck, Andre, ed. (2000). Information handling in astronomy. Springer Science+Business Media. pp. 83–85. ISBN   978-94-010-5871-1.
  5. Boroson, Todd (September 2005). "Data Products and Software at NOAO — Some Changes Coming". NOAO-NSO Newsletter. No. 83. pp. 10–12.
  6. Smith, Chris; Fitzpatrick, Mike (September 2007). "IRAF 2.14". NOAO-NSO Newsletter. No. 91. p. 28.
  7. Yamauchi, Chisato (August 2008). "Porting the IRAF to x86_64 OS". ASP Conference Series. 394: 666–669. Bibcode:2008ASPC..394..666Y.
  8. Fitzpatrick, Mike; Smith, Chris (December 2007). "IRAF V2.14 and Ximtool Releases". NOAO-NSO Newsletter. No. 92. pp. 21–22.
  9. "IRAF 2.17 Release Notes — IRAF 2.17 documentation". iraf.readthedocs.io. Retrieved 2024-04-23.
  10. Fitzpatrick, Michael; Placco, Vinicius; Bolton, Adam; Merino, Brian; Ridgway, Susan; Stanghellini, Letizia (2024-01-03). "Modernizing IRAF to Support Gemini Data Reduction". arXiv: 2401.01982 [astro-ph.IM].
  11. "IRAF 2.18 Release Notes — IRAF 2.18 documentation". iraf.readthedocs.io. Retrieved 2024-04-11.
  12. "IRAF Release Notes" . Retrieved 2022-03-13.
  13. "IRAF V2.16 Release Notes" . Retrieved 2023-03-19.
  14. "License problems in IRAF". IRAF Community Distribution. Retrieved 2022-12-10.
  15. "Debian -- Details of package iraf in bullseye". packages.debian.org. Retrieved 2022-12-10.
  16. Tody, Doug (January 1986). Crawford, David L. (ed.). "The IRAF Data Reduction and Analysis System" (PDF). Proc. SPIE Instrumentation in Astronomy. Instrumentation in Astronomy VI. VI: 627–733. Bibcode:1986SPIE..627..733T. doi:10.1117/12.968154.
  17. ST-ECF page for aXe
  18. "External packages". IRAF Community Distribution. Retrieved 2022-12-10.
  19. "IRAF documentation — IRAF 2.17 documentation". iraf.readthedocs.io. Retrieved 2022-12-10.
  20. "CL Programmer's Manual — IRAF 2.17 documentation". iraf.readthedocs.io. Retrieved 2022-12-11.
  21. "SPP Reference Manual — IRAF 2.17 documentation". iraf.readthedocs.io. Retrieved 2022-12-11.
  22. "X11IRAF – Graphical tools to work with IRAF". IRAF Community Distribution. Retrieved 2022-12-11.
  23. "The PyRAF Tutorial — PyRAF 2.2 documentation". pyraf.readthedocs.io. Retrieved 2022-12-11.