PyRAF
PyRAF is a new command language for running IRAF tasks that is based on the Python scripting language. It gives users the ability to run IRAF tasks in an environment that has all the power and flexibility of Python. PyRAF can be installed along with an existing IRAF installation; users can then choose to run either PyRAF or the IRAF CL.
More information can be found here. The current release of PyRAF is v1.2 and can be downloaded from here. The release notes can be found here.
Required Supporting Packages
As a convenience all supporting packages are available here. For our purposes, all packages were available via apt-get.
If you haven't installed all supporting packages, we suggest that you follow the order in which they are listed below:
- IRAF
- TABLES/STSDAS v3.4
- Tcl/Tk - v8.3 or higher
- Readline
- Python - v2.3 or higher (with readline and _tkinter modules enabled)
- Numeric - v23.8
- libf2c (Note: the package on our web site has a change that allows it to work on 64bit Linux platforms)
- Pmw 1.2
Some platforms have most of these packages already installed in their system directories. To test whether your Python installation has all modules needed, start Python and try to import them:
iraf@metis% python Python 2.4.2 (#2, Sep 30 2005, 21:19:01) [GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import readline >>> import Tkinter >>> Tkinter._test() >>> import Numeric >>> import Pmw If you don't get an ImportError, this means that Tcl, Tk, Readline, Python, Numeric and Pmw are already installed on the system. Readline5: cdelacruz@metis:~$ sudo apt-get install libreadline5 cdelacruz@metis:~$ sudo apt-get install libreadline5-dev Numeric: cdelacruz@metis:~$ sudo apt-get install python2.4-numeric cdelacruz@metis:~$ sudo apt-get install python2.4-numeric-ext In addition Pydrizzle/Multidrizzle require: Pmw: cdelacruz@metis:~$ sudo apt-cache search Pmw python-pmw - Pmw -- Python MegaWidgets python-pmw-doc - Pmw -- Python MegaWidgets cdelacruz@metis:~$ cdelacruz@metis:~$ sudo apt-get install python-pmw cdelacruz@metis:~$ sudo apt-get install python-pmw-doc cdelacruz@metis:~$ sudo apt-get install python2.4-tk libf2c: f2c - A FORTRAN 77 to C/C++ translator, plus static & shared libs. fort77 - Invoke f2c like a real compiler carlos@phobos:~$ sudo apt-get install f2c
PyRAF Installation:
Create directory, /usr/local/pyraf/, and uncompress source: cdelacruz@metis:/usr/local/pyraf$ sudo tar xf stsci_python_v2.2.tar iraf@metis% tar -xf stsci_python_v2.2.tar cdelacruz@metis:/usr/local/pyraf$ su iraf
Numarray Installation:
metis:/usr/local/pyraf> cd stsci_python/numarray-1.4.1 metis:/usr/local/pyraf/stsci_python/numarray-1.4.1> python metis:/usr/local/pyraf/stsci_python/numarray-1.4.1> sudo python setup.py config install --gencode metis:/usr/local/pyraf/stsci_python> sudo python setup.py install --with-f2c=/usr/bin/ ***Try using: carlos@phobos:/usr/local/pyraf/stsci_python$ sudo python setup.py install --with-f2c=/usr/local/pyraf/stsci_python/libf2c/ apt-get install python2.4-dev sudo apt-get install python2.4-numarray python-numarray-doc
PyRAF Setup
After a default installation the pyraf startup script is located in the same directory with the python executable, so this directory has to be on the search path. Modify the environment variable $PATH if necessary. If the software was installed in a personal directory, with either "--home=" or "--prefix=", then the startup script is located in /bin. If "--local=", then pyraf's startup script is in /pyraf. In order to run PyRAF conveniently, you can define an alias or create a symbolic link to the startup script.
%alias pyraf <install_dir>/bin/pyraf %cd /usr/local/bin (or some other directory on PATH) %ln -s /bin/pyraf pyraf
Note for Linux users: There is a problem running iraf on some Linux systems (Fedora, RHEL, possibly others). Quote from the iraf web site:
" Specifically, pointers allocated in the normal course of a task may occasionally be at an address outside the user's per-process stack space, resulting in a "memory has been corrupted" or "segmentation violation" error. The workaround is to remove the stacksize limit in the user's shell with a command such as:
%limit stacksize unlimited # for tcsh users %ulimit -s unlimited # for bash users
As a preventive measure against this problem, the CL startup script was modified to implement this change and so most users who only use IRAF from the CL will not need to take any special action."
PyRAF does not use the CL start up script, so you will need to have this command in your unix start up files (for example ~/.login). Testing The Installation After you finish the installation of all packages, you can run the script stsci_python/test22.py to check the integrity and version compatibility of the installation.
Note: This script must be run from a directory other than stsci_python, for example your home directory.
%cp stsci_python/test22.py ~ %cd %python test22.py
Testing and Alternate Installation
Testing
IRAF/PYRAF errors:
(1) Testing redhat binairies:
tv> display pat4.fits
ERROR: Cannot open device (node!imtool,,512,512)
cdelacruz@metis:~$ pyraf
setting terminal type to ...
xgterm ncols=80 nlines=40
NOAO PC-IRAF Revision 2.12.2a-EXPORT Wed Jul 14 20:45:34 MST 2004
This is the EXPORT version of PC-IRAF V2.12 supporting most PC systems.
Welcome to IRAF. To list the available commands, type ? or ??. To get
detailed information about a command, type `help command'. To run a
command or load a package, type its name. Type `bye' to exit a
package, or `logout' to get out of the CL. Type `news' to find out
what is new in the version of the system you are using. The following
commands or packages are currently defined:
clpackage/:
apropos images/ obsolete/ stsdas/ utilities/
clpackage/ language/ plot/ system/
dataio/ lists/ proto/ tables/
dbms/ noao/ softools/ user/
PyRAF 1.2 (2005Nov01) Copyright (c) 2002 AURA
Python 2.4.2 Copyright (c) 2001-2005 Python Software Foundation.
Python/CL command line wrapper
.help describes executive commands
--> images
--> tv
--> display pat4.fits
PANIC in `/usr/local/iraf/iraf/bin.linux/x_tv.e': Memory has been corrupted
Killing IRAF task `display'
Traceback (innermost last):
File "<CL script CL1>", line 1, in ?
iraf.display('pat4.fits', _save=1)
IrafError: Error running IRAF task display
('Not a legal IRAF pipe record', 32, 'Broken pipe')
-->
Issued the following command at prompt:
limit stacksize unlimited (for csh)
ulimit -s unlimited (for bash)
* The new 2.3 release handles this issue.
--> display pat4.fits
Killing IRAF task `display'
Traceback (innermost last):
File "<CL script CL1>", line 1, in ?
iraf.display('pat4.fits', _save=1)
IrafError: Error running IRAF task display
IRAF task terminated abnormally
ERROR (742, "Cannot open device (node!imtool,,512,512)")
-->
* Solution was to install the ds9 binary, 4.0b8. If X11iraf is required,
use the redhat binaries;
run the install script but modify the directory names (redhat >>> linux).
Alternate Installation
For Pyraf installation, downloaded all the following dependant packages:
- libf2c.tar
- Numeric-24.2.tar
- Pmw.1.2.tar
- Python-2.4.2.tgz
- readline-4.3.tar.gz
- stsci_python-2.3.tar.gz
- tcl8.3.5-src.tar
- tk8.3.5-src.tar.gz
Create the installation directory:
/usr/local/pyraf
Extract all packages to the pyraf directory
Created a directory where all compiled binaries will be installed:
/usr/local/pyraf/install
Compile and install tcl:
gunzip -d tcl8.3.5-src.tar.gz tar xvf tcl8.3.5-src.tar cd tcl8.3.5/unix ./configure --enable-shared --prefix=/usr/local/pyraf/install make make install
Compile and install Tk:
gunzip -d tk8.3.5-src.tar.gz tar xvf tk8.3.5-src.tar cd tk8.3.5/unix ./configure --enable-shared --prefix=/usr/local/pyraf/install make make install
Install readline:
gunzip -d readline-4.3.tar.gz tar xvf readline-4.3.tar cd readline-4.3 ./configure --prefix=/usr/local/pyraf/install make make install
Install Python:
gunzip -d Python-2.3.4.tar.gz
tar xvf Python-2.3.4.tar
cd Python-2.3.4
./configure --prefix=/usr/local/pyraf/install
edit /Python-2.3.4/Modules/Setup
# *** Always uncomment this (leave the leading underscore in!):
_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \
# *** Uncomment and edit to reflect where your Tcl/Tk libraries are:
-L/usr/local/pyraf/install/lib \
# *** Uncomment and edit to reflect where your Tcl/Tk headers are:
-I/usr/local/pyraf/install/include \
# *** Uncomment and edit to reflect where your X11 header files are:
-I/usr/X11R6/include \
# *** Or uncomment this for Solaris:
# -I/usr/openwin/include \
# *** Uncomment and edit for Tix extension only:
# -DWITH_TIX -ltix8.1.8.2 \
# *** Uncomment and edit for BLT extension only:
# -DWITH_BLT -I/usr/local/blt/blt8.0-unoff/include -lBLT8.0 \
# *** Uncomment and edit for PIL (TkImaging) extension only:
# (See http://www.pythonware.com/products/pil/ for more info)
# -DWITH_PIL -I../Extensions/Imaging/libImaging tkImaging.c \
# *** Uncomment and edit for TOGL extension only:
# -DWITH_TOGL togl.c \
# *** Uncomment and edit to reflect your Tcl/Tk versions:
-ltk8.3.5 -ltcl8.3.5 \
# *** Uncomment and edit to reflect where your X11 libraries are:
-L/usr/X11R6/lib \
# *** Or uncomment this for Solaris:
# -L/usr/openwin/lib \
# *** Uncomment these for TOGL extension only:
# -lGL -lGLU -lXext -lXmu \
# *** Uncomment for AIX:
# -lld \
# *** Always uncomment this; X11 libraries to link with:
-lX11
make
make install
Install Numeric:
gunzip -d Numeric-23.8.tar.gz tar xvf Numeric-23.8.tar cd Numeric-23.8 /usr/local/pyraf/install/bin/python setup.py install
Install Pmw:
gunzip -d Pmw.1.2.tar.gz tar xvf Pmw.1.2.tar cp -r /usr/local/pyraf/Pmw. .
Install libf2c:
gunzip -d libf2c.tar.gz tar xvf libf2c.tar cd libf2c make -f makefile.u
Install Pyraf:
gunzip -d stsci_python_v2.2.tar.gz tar xvf stsci_python_v2.2.tar cd stsci_python/ mkdir libf2c cp ../libf2c/f2c.h libf2c/ cp ../libf2c/libf2c.a libf2c/ cd /numarray-1.4.1 /usr/local/pyraf/install/bin/python setup.py install --with-f2c=/usr/local/pyraf/stsci_python/libf2c
Add path /usr/local/pyraf/install/bin/python to PATH.
Pyraf Installation (without stsci Python modules)
Compiled the Python Installer:
cdelacruz@io:~/pyraf/pyraf-1.2.1$ python setup.py install --local=/opt/pyraf/1.2.1/modules
Following error occurs:
src/sscanfmodule.c:79:20: error: Python.h: No such file or directory
Installed Python-Dev package:
cdelacruz@io:~/pyraf/pyraf-1.2.1$ sudo apt-get install python2.4-dev
Compiled the Python Installer:
cdelacruz@io:~/pyraf/pyraf-1.2.1$ python setup.py install --local=/opt/pyraf/1.2.1/modules Compiled with no issues.
Created a simlink to the compiled binary under /usr/local/pyraf:
sudo ln -s /opt/pyraf/current/modules/pyraf/pyraf pyraf
