|Seeing Ancient Stars
Visualization of the Almagest Catalog
|Written around 150 A.D., Ptolemy's Almagest was the
culmination of ancient Greek mathematical astronomy and remained the fundamental
astronomical text in the Near East and Europe for 1400 years.
Books VII and VIII of the Almagest contain a catalog of 1022 stars divided into 48 constellations. The catalog survives today in several dozen manuscripts in Greek, Arabic, and Latin, the oldest of which date from the ninth century. Reconstruction of the original catalog from these imperfect copies involves identifying the stars, reconciling differences between the manuscripts, and attempting to explain discrepancies between the catalog and the sky.
Almagest Stars is a Windows and Linux program that plots the stars of the Almagest catalog overlaid on a visually realistic rendering of the night sky. For each star, the program can display Ptolemy's description of the star's position within the figure of the constellation, his values for its longitude, latitude, and magnitude, and the modern identification of the star.
With a single keystroke, you can compare the data from three different reconstructions of the catalog: the 1913 German translation of the Almagest by Karl Manitius (updated in 1963), the 1915 work on the catalog by C.H.F. Peters and Edward Knobel, and the modern consensus represented by the 1984 English translation of the Almagest by G.J. Toomer and the 1990 monograph on the catalog by Gerd Grasshoff.
Get Almagest Stars
How It Works
When the program starts, it loads a modern bright star catalog and three versions of the Almagest catalog. It then displays a view of Ursa Minor, the first constellation listed in the Almagest, using data from the Toomer/Grasshoff catalog.
The display contains a coordinate grid, a star field, and a set of circles, lines, and numbers. The grid marks ecliptic longitude and latitude, the coordinates used in the Almagest. The circles are Almagest stars, which are numbered consecutively within each constellation. The circles have a radius of one degree, providing a scale for judging the catalog's positional accuracy, and their brightness varies with the listed magnitude. Lines connecting the centers of the circles to stars in the field indicate the modern identification of each Almagest star.
The field stars are taken from the Yale Bright Star Catalog, with proper motions from Hipparcos for all but a handful of stars. The positions of the Yale stars are reduced to the epoch claimed for the catalog by Ptolemy—the first day of the Egyptian year in which the Roman emperor Antoninus began his reign, July 20, 137 A.D. (Julian). You can change this epoch, and you can precess the Almagest star catalogs by adding a longitude correction (keyboard shortcut e).
The arrow keys are used to move things. Initially, they move the imaginary camera. The right arrow key pans the view to the right, and the up arrow key pitches the view upward. Holding down the Shift key while using the arrow keys increases the movement by a factor of 10. Using the Ctrl key with the left and right arrows allows you to tilt the view. You can also zoom in and out using the angle bracket keys (< and >).
In addition to moving the view, the arrow keys can be used to nudge the Almagest stars (keyboard shortcut s) a tenth of a degree at a time. The positions in the Almagest include systematic errors. Nudging the Almagest stars to produce a better fit with the Yale stars gives you an idea of the magnitude of these errors for each constellation. Keyboard shortcut v (for view) returns the arrow keys to their default behavior.
The Almagest star shift can be reset to its default (Shift+s), or it can be set to 0 (Ctrl+s), and the view can be reset to its default direction, tilt, and zoom (Shift+v).
Each of the drawing elements (the Yale stars, circles, numbers, lines, and grid) can be turned off. Their visibility is tied to the number keys 1 through 6. In a couple of cases, turning off an element causes others to be drawn differently. When the circles are visible, the numbers are drawn outside the circles, toward the lower right, but when the circles are turned off, the numbers are drawn right next to the star position. And when both the circles and the Yale stars are turned off, the Almagest stars are drawn as points.
This latter configuration is an especially effective way of comparing the Almagest catalog to the modern one. Turn off the circles (2) and then repeatedly toggle the visibility of the Yale stars (1). Try this with the lines and numbers turned off as well.
Clicking anywhere in the window opens a dialog listing the stars near that position. If you click inside one of the Almagest star circles (or within a degree of an Almagest star, if the circles are turned off), the Almagest catalog data for that star is also displayed in the dialog. The data displayed in the dialog is described in detail in the Reference section.
The text in the dialog can be selected and copied to the clipboard. You can click elsewhere in the window without first closing the dialog. The dialog will jump to the new position and display new data. To close the dialog, click the Close button or hit the Esc or Enter keys.
Although the imaginary camera can be pointed in any direction, the program displays the Almagest stars in only one constellation at a time. The name of the current constellation is shown in the lower left corner of the window. To see a different constellation, page through the constellation list using the Page Up and Page Down keys, or go directly to the one you want by right-clicking anywhere in the window and selecting the constellation from the pop-up menu.
The program allows you to see three different versions of the Almagest catalog and to switch between them instantly. To see a different version of the catalog, press F1 (the default), F2, or F3. By blinking between catalogs, you can immediately see where they differ. You can even switch catalogs while the Info dialog is open. The dialog text is updated to reflect the contents of the current catalog. The source of the current catalog is shown at the bottom of the window.
The program is distributed with three catalogs that it loads when it starts. You can load a new catalog (c) into one of the three slots (the one currently being displayed). Use this to load Keith Pickering's catalog, catpick.dat. It's also fairly easy to create a custom catalog by modifying an existing catalog in a text editor. The file format is described in the Reference section.
The numbers in the lower right corner of the window are the ecliptic longitude and latitude of the mouse cursor. The numbers in the lower left are the parameters of the view:
The program can print (p) the current view as a black-on-white star chart. The field of view, visible display elements, and current catalog in the printed chart are all identical to those of the window.
Pressing h (for help) opens the user guide Web page (readme.html) in a window in your preferred Web browser. Under Windows, this is the browser associated with the .html file extension. In the Linux version, you'll be asked once for the filename of the browser you'd like to use (usr/bin/firefox, for example).
To quit the program, press Esc or choose Exit from the popup menu. Before quitting, the program writes a short text file (ptolemy.cfg in Windows, ~/.almstars in Linux) that stores the window position and size, the view and shift parameters for each constellation, and other information about the program's state. The program loads this file the next time it runs, so that it remembers these settings between sessions.
The program is designed to run well on modest hardware. I wrote and used the Windows version on an old Intergraph TDZ-2000 with the following specifications:
The program and data files use about 0.7 MB of disk storage.
A printer isn't required, but the program can print its display if a printer is available. For Windows, the print driver only needs to support the most basic GDI drawing functions (MoveToEx, LineTo, Rectangle, Ellipse, and TextOut). The Linux version produces a vector graphics file in PDF format using cairo.
The Windows version does not require additional drivers, ActiveX controls, database engines, OpenGL support, Internet Explorer components, or compiler-specific runtime libraries. It relies solely on the graphics capabilities and user interface tools available in the standard Windows installation. Nor does it require an installer. It doesn't read or write the Windows registry, and it doesn't depend on being installed in a specific directory. It can be run as-is from removable media without having to be copied to a local hard drive.
The Linux version uses GTK+ 2 as its interface toolkit. It should work with GTK+ version 2.4.0 (March 2004) or later. The PDF output relies on cairo 1.0 or later, but cairo is evolving rapidly, and for the highest quality output, you'll want to update to the most recent available version. Prior to beta version 1.3.14, text output could be corrupted when printing from some versions of Acrobat Reader, and prior to 1.2, cairo was falling back to writing bitmaps in PDFs rather than generating real vector output.
The Linux version of Almagest Stars is provided as source code. In order to build the binary for your system, you'll need not only the GTK+ libraries but also the developer components of GTK+ (primarily the C headers), which some Linux distributions don't install by default.
The program and its data files are supplied in a .zip archive file named almstars.zip. To install the program, simply download and unzip the archive file into any convenient directory.
If you're using Windows XP, you can use its built-in Zip archive extraction features. Double-click on almstars.zip and in the window that appears, click on Extract all files and follow the directions. If you're using an earlier version of Windows and don't already have a Zip extraction utility, you can download a free trial version of WinZip. The archive was created using WinZip 7.0, but any unzip utility should be able to extract its contents.
You can create a desktop shortcut icon by right-clicking on the program file (ptolemy.exe) and selecting Create Shortcut on the popup menu. After dragging this file onto your desktop, you can rename it Almagest Stars (or whatever you like).
When it starts, Almagest Stars needs to be able to find its data files (the three Almagest catalog files with .dat filename extensions and the modern catalog, catb.bin). It searches for these first in the current directory and then in the directory where ptolemy.exe is located. The easiest approach is to store the program and data files together. You can put them in different directories if you like, but the directory containing the data files must be made current before running the program.
You can set the current directory for the program in your desktop shortcut. Right-click the icon, select Properties from the popup, select the Shortcut tab, and enter the data file directory in the edit field labeled Start In.
The first time you run Almagest Stars on a current Windows XP machine, Windows may complain that it can't verify the publisher of the software and ask you whether you really want to run it. This is a normal precautionary message for program files downloaded from the Internet. It just means that I didn't purchase a digital signature for the program from Verisign.
The program source code and data files are supplied in a tarball, almstars-1.1.tar.gz, created by GNU's autotools. The archive contains the standard set of text files (AUTHORS, COPYING, and so on), including an INSTALL file with detailed installation instructions. The program installs in the usual way for autotool software distributions.
Extract the contents of the archive in any temporary location using something like
tar zxf almstars-1.1.tar.gz
Then cd to the almstars-1.1 directory and run the following three commands.
./configure make make install
The first runs a shell script that creates makefiles tailored to your system. The second compiles and links Almagest Stars. The third installs the program and its data files in "the usual place," which in most cases will be /usr/local/bin for the binary and /usr/local/share/almstars for the data files. Unless you change the installation location (and this is an option in the configure script), you'll most likely need administrator privileges to run the third command.
After running make install, you should be able to start the program simply by typing almstars at a shell prompt. You can also add the program to your desktop's applications menu. How you do that depends on which desktop you're running.
In KDE, right-click on the main applications menu to open the KDE Menu Editor, then right-click on one of the menus in the left pane to add Almagest Stars as an item in that menu. Click on the icon button next to the Name: field to add the program's icon image, almstars.png, which you'll find with the program's data (typically in /usr/local/share/almstars).
Recent versions of Gnome lack a graphical method for editing the applications menu, but it's not too difficult to do this with a couple of commands and a text editor. The tarball includes a file named almstars.desktop. (Note: file browsers like Nautilus may display this as Almagest Stars, since .desktop files are analogous to shortcut files in Windows.) This is a text file that describes the program, lists its icon image, and tells the desktop where the program belongs in the menu tree. The only trick is to put this file in a place where it'll be seen by Gnome. Try
to see the search path for .desktop files. If you installed the program in /usr/local/bin, the best place for almstars.desktop might be /usr/local/share/applications, if that's on the search path. The next time you start the desktop, Almagest Stars should appear in the menu, most likely in a category called Education or Edutainment. If the icon for the program isn't displayed, edit almstars.desktop to change the path for the almstars.png image file.
The Windows binary of Almagest
Stars will also run in wine, although
you may want to coerce wine's font substitutions. Install the program as you would in Windows. The display in Almagest Stars uses
Tahoma, a sans-serif font designed for screen legibility, and the Info dialog uses the
fixed-pitch Courier New. For newer versions of wine, if you happen to have access to a
Windows installation, you can just copy the .ttf files for these fonts into
The Almagest Stars user interface is designed to be lightweight and nimble. A pop-up menu, opened by right-clicking anywhere in the window, provides access to most of the program's operations, and this is the best way to jump to a specific constellation. But the preferred, faster method of interacting with the program is through the keyboard. Key presses give you instant access to the three catalogs and the choice of drawing elements, allowing you to rapidly blink between different settings.
A chart of the keyboard commands is provided below.
The program can display Almagest data from three different catalogs. You can instantly switch catalogs using the function keys.
You can also load a custom catalog into one of the three catalog slots.
The ecliptic and equatorial coordinate systems slowly rotate over long time spans because of changes in the Earth's orientation. The largest effect is precession, a slow wobble of the Earth's axis that causes a rotation in ecliptic longitude of 1 degree every 71.6 years. Some stars also move perceptibly over very long time spans. A star's position therefore has a time coordinate in addition to its spatial coordinates.
The positions in the field star catalog (catb.bin) used by Almagest Stars are expressed in J2000 coordinates, the positions of the stars relative to the equatorial coordinate system on January 1, 2000. By default, the program converts (reduces) these positions to the epoch of the Almagest, July 20, 137 AD. You can change this.
Ptolemy believed that, due to precession, the stars had moved 2º40' in the 270 or so years separating his observations from those of Hipparchus. To explore the possibility that the Almagest positions are derived from Hipparchus, one would need to precess the field stars to the time of Hipparchus, and also to subtract 2º40' from the longitudes recorded in the Almagest. The epoch option allows you to do both.
The date field of the epoch dialog accepts dates in a number of different formats.
The era may be BC or BCE, AD or CE. If the year appears without the month, it may be fractional. If it appears without the era, it may be negative. To distinguish them from days and years, months must be entered as their three-letter abbreviations. Days and months must precede the year.
There is no year 0, and for negative years, the fractional part denotes the positive offset from the start of the year. The fractional year -1.2 is in February of 1 BC, not November of 2 BC. This is contrary to the strictly arithmetical interpretation, and it may contradict conventions used elsewhere, but it seems more intuitive.
The longitude and latitude may be entered in degrees and minutes, separated by a space, colon, semicolon, or comma, or in fractional degrees. 2:40, 2;40, 2 40, and 2.667 are all interpreted as 2º40'. The coordinates are rounded to the nearest minute regardless of how they are entered.
Although you can point the program's virtual camera at any part of the sky, the program displays data from the Almagest one constellation at a time. The keyboard can be used to traverse the list of 48 constellations in Almagest order. To go directly to a constellation, select it from the pop-up menu.
Pressing the arrow keys can have two different meanings, depending on the current context, or mode. The current mode is indicated by a + next to "View" or "Shift" in the status line at the bottom of the window.
View directions and shift amounts for each constellation are stored in the configuration file. These are the values the program starts with and the ones it returns to when the view or shift are reset. The current values for all constellations are saved when the program exits, so that it remembers your view and shift values between sessions.
You control what part of the sky is visible in the Almagest Stars display by manipulating a virtual camera. You can change the camera's direction, tilt, and zoom. The direction is defined by the ecliptic longitude and latitude at the center of the field of view. The tilt is a rotation around the camera's viewing axis, measured in degrees. The zoom is a value related to the ratio of the focal length and the aperture height (film or sensor size) of real cameras. This is also displayed in the status line as horizontal and vertical fields of view, in degrees.
On U.S. keyboards, the angle bracket characters are the shifted comma and period (, and .) keys, which are synonyms for the brackets in the program. In other words, when using a U.S. keyboard mapping, you don't have to use the Shift key to zoom.
If the directions seem counterintuitive, it will help to keep the camera metaphor in mind. The left arrow key appears to make the stars move to the right, but you're actually moving the camera to the left. Things get more interesting at high tilt angles, where the left arrow key might make the stars appear to move up or down. You may also notice something odd happen when the view is pointed at one of the poles: changes in longitude and tilt have identical effects. This is gimbal lock, a serious problem for gyroscopes, but it has no lasting effect on the program. As soon as you move the view away from the poles, your third degree of rotational freedom returns.
Most of the constellations in the Almagest appear to be offset from their true positions in the sky. With the arrow keys in shift mode, you can move the Almagest stars so that they align more closely with the field stars. The shift is an offset in degrees of ecliptic longitude and latitude, and all of the stars in the current constellation are shifted by the same amount.
The simplest interpretation of the offsets is that they represent systematic errors in the Almagest positions for the constellation, a major source of which is Ptolemy's overly conservative value for the precession in longitude.
The interface is designed to allow you to rapidly alternate between different views of the data. The graphical elements of the display can be individually toggled on and off by hitting an associated number key.
The colors used to draw the numbers and grids are somewhat dark by default, but this can be changed. Color options are available in the pop-up menu.
The data displayed in the Info dialog is divided into two parts. Depending on where you click in the window, one or both parts may be empty. The upper part lists the data for a star in the Almagest catalog, and the lower part lists data for up to five nearby stars from the bright star catalog, sorted by a combination of proximity and brightness.
73 Draco 30 Der an diese nach dem Schwanz hin anschliessende 4787 5 kap Dra 109º10' 61º15' 3.0 ---------------------------------------- 4787 5 kap Dra 109º45' 61º27' 3.87 4795 6 Dra 109º26' 61º40' 4.94 4765 4 Dra 110º22' 60º54' 4.95
The first line identifies the Almagest star by both Baily number (on the left) and the ordinal within the constellation. The former, as in modern catalogs, is a running ordinal, attributed to Francis Baily, that uniquely numbers each entry in the Almagest catalog. It is listed by Peters and Knobel, and it is the only Almagest star identification in Grasshoff's Appendix B. Toomer, however, follows Manitius in numbering only within each constellation, so you need both numbers when consulting the sources of the catalogs.
The second line is Ptolemy's description of the star's location within the figure of the constellation. Occasionally this also includes remarks about relative brightness or color. The description is given as it appears in the catalog source. The Manitius catalog's descriptions are in German, those from Peters/Knobel are in Latin, and those from Toomer are in English.
The line following the description contains the modern identity of the star and the longitude, latitude, and magnitude as given in the Almagest. (These values do not reflect the amount that the Almagest stars have been shifted, but they do include the corrections entered on the Set Epoch dialog.) The modern identification comprises the HR (Harvard Revised) number in the Yale Bright Star Catalog, the Flamsteed number, the Bayer letter, and the constellation.
The second part of the data lists the corresponding Yale catalog information for stars within one degree of the clicked position.
The three Almagest catalog files (cat1.dat, cat2.dat, cat3.dat) are 7-bit ASCII text files with Windows (0Dh 0Ah) line endings. They can be examined in Wordpad (turn off word wrap) or any other text editor. They can also be loaded into most spreadsheet programs by telling them that the data is in fixed-length fields delimited by spaces.
The first line identifies the file as an Almagest Stars catalog and names the catalog:
Almagest Catalog: catalog-name
This is followed by 1028 variable-length lines. Each line is a star record containing the following fields.
Bytes Format Units Explanation --------------------------------------------------------- 1- 4 I4 [1-1028] Baily number 6- 8 A3 constellation abbreviation 10-11 I2 [1-45] index within constellation 13-15 I3 deg longitude degrees 17-18 I3 arcmin longitude minutes 20 A1 latitude minus 21-22 I2 deg latitude degrees 24-25 I2 arcmin latitude minutes 27-29 F3.1 magnitude 31-34 I4 [1-9110] HR number 36-47 A12 modern Bayer/Flamsteed ID 49- A? description
The constellation abbreviation is the standard three-character IAU designation. Argo Navis, which isn't an official constellation, is abbreviated Arg.
Ptolemy's magnitudes are integers, but he sometimes indicated intermediate values by qualifying these numbers with 'meizon' (greater) or 'elasson' (less). This is reflected in the catalog magnitude by subtracting or adding 0.3. A few of the magnitudes were described as faint or nebulous, rather than by number. These are encoded as magnitudes of 6.5 and 7.0, respectively.
The spelling of the German in cat3.dat (the Manitius catalog) was changed slightly to conform to the limitations of 7-bit ASCII. Umlauts (ä, ö, ü) are replaced by trailing e (ae, oe, ue) and the ezsett or sharp S (ß) is replaced by ss. The ligature æ appearing in the Latin star descriptions in the Peters and Knobel catalog is rendered in cat2.dat as ae. In a couple of cases, Peters and Knobel use untranslated Greek words in the descriptions, and these are transliterated in the usual way (see the Project Gutenberg guide, for example).
The modern catalog is based on the machine-readable Yale Bright Star Catalog, 5th revised ed. (D. Hoffleit and W. Warren, 1991), with proper motion and parallax from the Hipparcos catalog (ESA, 1997). It contains all 9096 stars from the BSC.
This section lists changes and bug fixes by publication date. When the program starts, and when you select the About item from the pop-up menu, a small banner window is displayed with a build date that can be compared to the dates here. In the Windows version, this is the date I built the binary, while in the Linux version, it's the date you built it.
© Ernie Wright