Python information for CfA

These instructions apply to the Harvard/Smithsonian Center for Astrophysics.

Using Python the HEAD network

Using Python on the CF network

SciPy, matplotlib (and the rest) in CIAO on HEAD

First get into CIAO in the usual way:

source /soft/ciao/bin/ciao.csh         # tcsh
. /soft/ciao/bin/ciao.sh               # bash

Now set your local installation prefix to a directory of your choosing where you have write permission and make some directories:

set prefix=$HOME/ciaopy  # tcsh
prefix=$HOME/ciaopy      # bash

mkdir -p $prefix/bin
mkdir -p $prefix/build
mkdir -p $prefix/include
mkdir -p $prefix/lib

Set up a couple of paths. You’ll probably want to do something similar to this path setup in your shell startup file:

# tcsh
setenv PATH $prefix/bin:$PATH  # tcsh
setenv PYTHONPATH $prefix/lib/python2.7/site-packages

# bash
export PATH=$prefix/bin:$PATH
export PYTHONPATH=$prefix/lib/python2.7/site-packages

mkdir -p $PYTHONPATH

Now copy binary versions of the numerical libraries that are needed by SciPy. These have only been verified to work on CentOS-5 on the HEAD network:

cd $prefix/lib
tar xf /proj/sot/ska/export/lapack_blas_atlas_x86-64.tar.gz

Now go to the build directory and untar the source distributions for the SciPy and distribute packages:

cd $prefix/build
tar xf /proj/sot/ska/pkgs/scipy-0.10.0.tar.gz
tar xf /proj/sot/ska/pkgs/distribute-0.6.19.tar.gz

First build and install distribute. This provides setuptools and easy_install. It turns out that in this exercise easy_install works better than pip because it provides a --prefix option that works.

cd $prefix/build/distribute-0.6.19
ciaorun python setup.py install --prefix=$prefix

Now set up the configuration file to build SciPy from source:

cd $prefix/build/scipy-0.10.0

rm -f site.cfg
echo "[DEFAULT]" > site.cfg
echo "library_dirs = ${prefix}/lib" >> site.cfg
echo "include_dirs = ${prefix}/include" >> site.cfg
echo "[lapack_opt]" >> site.cfg
echo "libraries = lapack, f77blas, cblas, atlas" >> site.cfg
echo "[fftw]" >> site.cfg
echo "libraries = fftw3" >> site.cfg

Start building and go get a coffee or read a paper for a little while, hopefully less than a half hour:

rm -f build.log install.log
ciaorun python setup.py build --fcompiler=gnu95 >& build.log
ciaorun python setup.py install --prefix=$prefix >& install.log

Inspect build.log and install.log for errors (e.g. grep -i error build.log). If this looks OK then change to a different directory and start up sherpa or chips:

cd $prefix/build
sherpa

Now within sherpa do:

import scipy
import scipy.linalg
print(scipy.__version__)
print(scipy.linalg.eig([[1,2],[3,4]]))

Now quit and install the rest:

ciaorun easy_install --verbose --prefix=$prefix matplotlib
ciaorun easy_install --verbose --prefix=$prefix asciitable
ciaorun easy_install --verbose --prefix=$prefix pywcs
ciaorun easy_install --verbose --prefix=$prefix pyfits
ciaorun easy_install --verbose --prefix=$prefix atpy
ciaorun easy_install --verbose --prefix=$prefix aplpy
ciaorun easy_install --verbose --prefix=$prefix nose

Once again fire up sherpa or chips and do:

import numpy as np
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
import asciitable
import pyfits
import pywcs
import atpy
import aplpy

print(np.__version__)

x = np.linspace(0, 20, 100)
plt.plot(x, np.sin(x))

Hopefully you are done and have a CIAO Python that you can use for all your analysis!