Menu [toggle]

Tikiwiki Assistant

Thank you for installing Tikiwiki!

LoginTo begin configuring Tiki, please login as the Admin.

The Tikiwiki CommunityTo learn more, visit:

Tikiwiki DocumentationFor help, visit



An astronomical project generally proceeds in several steps:
  1. Come up with a GoodIdea?, and propose to obtain telescope time.
  2. Go to the telescope and obtain the data, or alternatively, download it from the archive of queue-based observatories.
  3. Calibrate (reduce) the data to remove instrumental artifacts.
  4. Apply statistical tests to distinguish genuine signals from noise.
  5. Measure some quantities from the data.
  6. Interpret the quantities according to a physical model.
  7. Write a paper describing the work, and interpreting the results in the context of other results and ideas.
  8. Present the results to other astronomers through conferences and lectures.
  9. Return to 1 with a new idea.

For the beginning astronomer, one may be working with an adviser that has already taken care of steps 1 or 2. For an undergraduate, it might only be expected that they will complete steps 3-4. Graduate students are expected to carry out all steps between 2-7, but will only be considered successful if they complete the whole cycle.

The tools that are needed depend on where the astronomer is in her career, and on the complexity of the project. Undergraduates generally need only a basic familiarity with computing. Knowing the UNIX environment (e.g., Linux, SunOS, the Mac OS X command line) is very helpful, because most tools that astronomers use are written by astronomers to work in the UNIX environment. Of course, you need to know some specific software that is used to analyze (reduce and measure) the data (see, e.g., a list at the ATNF (external link)):
  • Radio astronomers use AIPS or MIRIAD for imaging
  • Infrared, optical, and UV astronomers tend to use IRAF, or custom packages written in an interpretive language like IDL
  • X-ray astronomers use the HEASOFT tools, CIAO, or XMMSAS to reduce the data, and XSPEC, Sherpa, or ISIS to model it.
This list is not complete, but might be some day.
Knowing only the above tools, one can reduce individual observations. If you can pick interesting, compelling individual targets and build a career out of them, this is all you need to know. However, by learning some more computing, one can tackle progressively larger and more complex data sets.

In order to interpret observations, it is useful to have a package that handles statistics and plotting. You could write your own using any number of libraries (pgplot (external link) is a common one), but astronomers tend to use pre-written software. Old-school astronomers use SuperMongo (external link), although its scripting facilities are poor, and it lacks many useful statistical tools (but it has the best icon ever). People who spend much of their time building instruments generally have Windows machines (the drivers for the hardware are often unavailable for Mac OS or Linux), and sometimes do their data analysis with Excel. The big drawback there is that you will end up making spreadsheet files that many astronomers who have not bothered to install Microsoft products will have a hard time reading. Currently, most people are using IDL, and some are using Matlab (see MatlabvIdl ). These have steep learning curves, but that is more than made up for by their excellent plotting tools, wide range of statistical and mathematical functions, available third-party scripts for astronomical analyses, and flexible scripting languages. A few people at MIT wrote their own scripting language for astronomy (among other things), Slang (external link). Despite its several advantages, unless you are at MIT, you may find yourself not wanting to learn another language that has relatively few adherents.

If a large amount of data is to be analyzed, it is a good idea to learn a scripting language. UNIX shells (bash, tcsh) are good for looping over large numbers of files and running command-line programs (such as the HEASOFT tools) on. For simple tasks, I use tcsh, and call grep, awk, sed, and cut to run programs and to perform simple manipulations of file names.

A scripting language like Perl or Python is used when you also want to perform more complication actions: parsing file names to identify those take with specific data modes, obtaining information from log files created by command-line programs, and automatically creating tables of data from poorly-formatted output. If you are just starting with scripting, I would recommend Python, because its syntax results in programs that are easier to read at a later date, and it can be used to automate IRAF (external link) through the Pyraf (external link) package.

Serious programming with C++, C, or FORTRAN is needed if speed is important. I have used C when writing programs to perform Fourier transforms, because the memory handling of Perl and IDL are horrible (Python and Matlab might be better, but I haven't checked). I wrote in FORTRAN for a ray-tracing code that was going to be many, many times, because IDL would have been prohibitively slow. Complicated data pipelines and and modeling software for very large data sets (such as the CMB data from WMAP) are also best written in a proper programming language, for speed and efficiency.

In all of astronomy, if you are going to write your own software, you should learn to use programs the read and manipulate the raw FITS data. For programming languages, FITSIO (external link) does this task. Pyraf, Slang, the IDL astronomy library (libastro (external link)), and the Matlab FITS tools (Eran?) are good options for scripting languages. With shell scripts, I would recommend using the HEASOFT FTOOLs for simple manipulations. These let you think of your data in terms of vectors (i.e., for time series data) and arrays (i.e., for images), which is necessary if you are to write your own custom analysis routines.

Created by: MikeMuno. Last Modification: Friday 17 of October, 2008 11:46:27 CDT by MikeMuno.