This is the installation guide for the ePESSTO+ data-reduction pipeline, used to reduce data (photometry and spectroscopy) obtained with the New Technology Telescope (NTT). This new pipeline is compatible with Python 3 and 64bit archs, and finally solves the issues with the Mac M1 chip. Thanks to the community that has made IRAF compatible with the latest OS and computers.
Thanks to Ken for pointing out that Iraf/Pyraf versions compatible with Python 3 existed. Thanks to Carys and Cosimo that helped test the new version of the pipeline and find solutions to different issues that were found.
The installation instructions are taken from here: https://iraf-community.github.io/install.html. For more information about the latest release at the time I wrote this, check here: https://github.com/iraf-community/iraf/releases. If you are interested in the very latest release (v2.18), check https://iraf.noirlab.edu/release (note that this hasn't been tested with the pipeline!).
The distributed binaries require the readline or libedit, curl, and expat libraries to be installed.
On Debian and its derivatives (Ubuntu, Mint, Devuan, Raspbian etc.):
sudo apt install gcc make flex
sudo apt install libcurl4-openssl-dev libexpat-dev libreadline-dev
On Fedora and its derivatives (Redhat, Scientific Linux etc.)
sudo dnf install gcc make perl flex
sudo dnf install libcurl-devel expat-devel readline-devel
On MacOS X, you need to have the XCode tools installed. If you haven't, you can install them with:
xcode-select --install
Click "Install" to download and install Xcode Command Line Tools.
The source distribution file is built as a tarball with the package name and version as base directory. Thus, distribution files can be unpacked with the command
tar zxf /<path>/iraf-2.17.tar.gz
cd iraf-2.17/
In the source directory, execute the install script to create needed links:
./install # execute the install script
The script will prompt you for the path to the default image
directory, the cache directory and the binary files directory.
Usually, you can everywhere use the default settings when asked from
the install script. You will need to include the binary files
directory in your PATH before proceeding to the <make>
step.
The iraf command shortcut also needs to be added.
In BASH this can be done with the command:
export PATH=/path/to/iraf/bin/:$PATH
export iraf=/path/to/iraf/
where </path/to/iraf/bin/>
is the binary files path specified to
the install script and </path/to/iraf/>
where iraf is installed.
Now you can configure the system for the proper architecture and build:
make <arch>
make sysgen 2>&1 | tee build.log # this takes some time (~17 min. for me) and prints lots of warnings
For <arch>
, use the proper IRAF architecture name:
<arch> |
Operating system | Supported CPU types |
---|---|---|
linux64 |
Linux 64 bit | x86_64, arm64, mips64, ppc64, riscv64, alpha |
linux |
Linux 32 bit | i386, x32, arm, mips |
macos64 |
macOS 64 bit | arm64 |
macintel |
macOS 64 bit | x86_64 |
macosx |
macOS 32 bit | i386 |
freebsd64 |
FreeBSD 64 bit | x86_64 |
freebsd |
FreeBSD 32 bit | i386, arm |
hurd |
GNU HURD 32 bit | i386 |
Note that Cygwin and big endian architectures like macosx/ppc are not supported anymore.
IRAF comes with a small set of basic tests to ensure that the build works fine. To execute the tests, run:
./test/run_tests
The details of the tests are described here.
We will create an anaconda environment with python 3, the necessary dependencies taken from the stsci/astroconda channel and the SWarp package:
conda config --add channels http://ssb.stsci.edu/astroconda
conda create -n pessto python=3.7 stsci # be patient, this takes some time to finish as well
conda activate pessto
conda install -c conda-forge astromatic-swarp
pip install PyObjC # necessary for macOS only
The installation instructions are taken from here: https://iraf-community.github.io/pyraf.html. Once the anaconda environment has been created, we can proceed to install PyRAF:
conda activate pessto
pip3 install pyraf
If you get an error complaining about X11 not being found during the installation of pyraf, please follow the instructions on https://github.com/iraf-community/x11iraf to install it.
For now, the best option is to install the pipeline by cloning the repository and using the pessto conda environment with python 3:
git clone https://github.com/svalenti/pessto.git
cd pessto/trunk
conda activate pessto # unless you are already using the pessto environment
python setup.py install
The latest Mac computers with the M1 chip have an issue when using the pyraf display: the cursor freezer when hovered over the display.
To solve this, I found a workaround in iraf-community/pyraf#107. To make life easier for the user,
there is a script included in the repository (fix_cursor_macos.py
). Simply run this script using your anaconda environment used to
install the pipeline:
conda activate pessto
pip install certifi # to install certificates for macOS
python fix_cursor_macos.py
This will download the Ptkplot.py
file from the repository and replace your local copy of this file (in your anaconda environment), which
is the one "causing" the issue. The changes replace the red cross that appears on the pyraf display with a more modest one (a small price for a
solution).
Note: If you get any error, please check the Common Issues section below.
If you want to reduce SOFI photometry, SExtractor needs to be installed. For MacOS, this can be easily done with the following command (thanks Lluís):
brew install sextractor
For Linux systems, this might take a few more steps. I tried sudo apt-get install sextractor
, but this does not work
(on Ubuntu 22.04 at least). However, in https://sextractor.readthedocs.io/en/latest/Installing.html is explained how to
install from source. The steps are summarised below:
# dependencies
sudo apt-get update
sudo apt-get install -y libgl1-mesa-glx sextractor scamp libatlas-base-dev libatlas3-base libfftw3-3 libfftw3-dev libtool autoconf
git clone https://github.com/astromatic/sextractor.git
cd sextractor
sh ./autogen.sh
./configure
make -j
sudo make install
First, you need to download the test data, which you can do manually from the wiki page or using gdown
as I show below:
mkdir pessto_test
cd pessto_test
pip install gdown
gdown --id 1KSDqJLKURIoVxvFEfLUPoQmz0x-mHAnv
tar zxf PESSTO_Pipeline_Installation_Test_Data.tgz
rm PESSTO_Pipeline_Installation_Test_Data.tgz
Now you can run the test in the usual way:
PESSTOFASTSPEC -i EFOSC.2012-04-12T00\:21\:13.429.fits
Note that this only tests the EFOSC2 reduction part, not SOFI!
Note that some of these issues should have already been fixed in v3.0.0.
Many MacOS users have encountered the same error output (e.g., issues #46 #52, #53, #57):
...
...
libc++abi.dylib: terminating with uncaught exception of type NSException
Abort trap: 6
PANIC in `/Users/.../noao/bin.macosx/x_apextract.e': Write to IPC with no reader
If your error looks similar to this one, make sure that you are using the correct matplotlib backend (TKAgg). You can manually add this line every time you import matplotlib:
import matplotlib
matplotlib.use("TKAgg")
or modify your ~/.matplotlib/matplotlibrc
file, adding:
backend : TKAgg
If the file doesn't exist, create one.
MacOS needs an additional package which can be installed with the following command:
pip install PyObjC
For more information about PyObjC, check this link.
MacOS users might get the following error:
urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate
To solve this problem, the certificates need to be installed. Check this link for possible solutions.
If you get an error like:
Traceback (most recent call last):
File "xxxxxxx.py", line x, in <module>
import pyraf
...
...
...
File ".../anaconda3/envs/pessto/lib/python3.7/site-packages/pyraf/sqliteshelve.py", line 108, in __getitem__
return pickle.loads(result[0])
ValueError: unsupported pickle protocol: 5
To make life easier for the user, there is a script included in the repository (fix_pickle_macos.py
) to fix this. Simply run these commands:
conda activate pessto
pip3 install pickle5
python fix_pickle_macos.py
or you can manually fix this by going to the file sqliteshelve.py
(under ~/anaconda3/envs/pessto/lib/python3.7/site-packages/pyraf/
) and change import pickle
for import pickle5 as pickle
(hopefully, this should be fixed in future pyraf versions).
The pipeline installation does not work with miniconda, so full anaconda should be installed.
The default shell in Ventura MacOS is zsh
, but the pipeline does not seem to work with it. Try switching e.g. to bash
.
To report any problem, open an issue (preferred option) or contact me directly at t.e.muller-bravo@ice.csic.es or via Slack.