pixell
is a library for loading, manipulating and analyzing maps stored in rectangular pixelization. It is mainly targeted for use with maps of the sky (e.g. CMB intensity and polarization maps, stacks of 21 cm intensity maps, binned galaxy positions or shear) in cylindrical projection, but its core functionality is more general. It extends numpy's ndarray
to an ndmap
class that associates a World Coordinate System (WCS) with a numpy array. It includes tools for Fourier transforms (through numpy or pyfft) and spherical harmonic transforms (through libsharp2) of such maps and tools for visualization (through the Python Image Library).
- Free software: BSD license
- Documentation: https://pixell.readthedocs.io.
- Tutorials
- Python>=3.6
- gcc/gfortran or Intel compilers (clang might not work out of the box), if compiling from source
- libsharp2 (downloaded and installed, if compiling from source)
- automake (for libsharp2 compilation, if compiling from source)
- healpy, Cython, astropy, numpy, scipy, matplotlib, pyyaml, h5py, Pillow (Python Image Library)
Make sure your pip
tool is up-to-date. To install pixell
, run:
$ pip install pixell --user
$ test-pixell
This will install a pre-compiled binary suitable for your system (only Linux and Mac OS X with Python>=3.6 are supported). If you require more control over your installation, e.g. using your own installation of libsharp2
, using Intel compilers or enabling tuning of the libsharp2
installation to your CPU, please see the section below on compiling from source. The test-pixell
command will run a suite of unit tests.
For compilation instructions specific to NERSC/cori, see NERSC.
For compilation instructions specific to Mac OS X, see MACOSX (h/t Thibaut Louis).
For all other, below are general instructions.
First, download the source distribution or git clone
this repository. You can work from master
or checkout one of the released version tags (see the Releases section on Github). Then change into the cloned/source directory.
libsharp2
is installed automatically by the setup.py you will execute below. The installation script will
attempt to automatically git clone the latest version of libsharp2
and compile it. If
instead you want to use an existing libsharp2
installation, you can do so by
symlinking the libsharp2
directory into a directory called _deps
in the
root directory, such that pixell/_deps/libsharp2/build/include/libsharp2/sharp.h
and
pixell/_deps/libsharp2/build/lib/libsharp2.so
exist. If
you are convinced that the libsharp2 library is successfully
compiled, add an empty file named
pixell/_deps/libsharp2/success.txt
to ensure pixell's setup.py
knows of your existing installation.
If not using Intel compilers (see below), build the package using
$ python setup.py build_ext -i
You may now test the installation:
$ py.test pixell/tests/
If the tests pass, either add the cloned directory to your $PYTHONPATH
, if you want the ability for changes made to Python source files to immediately reflect in your installation, e.g., in your .bashrc
file,
export PYTHONPATH=$PYTHONPATH:/path/to/cloned/pixell/directory
or alternatively, install the package
$ python setup.py install --user
which requires you to reinstall every time changes are made to any files in your repository directory.
Intel compilers require you to modify the build step above as follows
$ python setup.py build_ext -i --fcompiler=intelem --compiler=intelem
On some systems, further specification might be required (make sure to get a fresh copy of the repository before trying out a new install method), e.g.:
$ LDSHARED="icc -shared" LD=icc LINKCC=icc CC=icc python setup.py build_ext -i --fcompiler=intelem --compiler=intelem
If you have write access to this repository, please:
- create a new branch
- push your changes to that branch
- merge or rebase to get in sync with master
- submit a pull request on github
If you do not have write access, create a fork of this repository and proceed as described above. For more details, see Contributing.