Skip to main content

pixell

Project description

pixell

https://github.com/simonsobs/pixell/workflows/Build/badge.svg https://readthedocs.org/projects/pixell/badge/?version=latest https://codecov.io/gh/simonsobs/pixell/branch/master/graph/badge.svg?token=DOIG32B6NT https://badge.fury.io/py/pixell.svg

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).

Dependencies

  • Python>=3.7

  • 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)

Installing

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.7 are supported). Note that you need ~/.local/bin to be in your PATH for the latter test-pixell to work.

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.

Compiling from source (advanced / development workflow)

For compilation instructions specific to NERSC/cori, see NERSC.

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.

Existing libsharp installation (optional)

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.

Run setup.py

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

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

Contributions

If you have write access to this repository, please:

  1. create a new branch

  2. push your changes to that branch

  3. merge or rebase to get in sync with master

  4. 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.

History

0.16.0 (2022-06-08)

Changes relative to 0.15.3 include:

  • Wavelet analysis

  • Fast C-based source simulation

  • Fast vectorized radial profile binning

  • Fixes and improvements to HDF5 I/O

  • Fixes to OSX support

0.15.3 (2022-02-12)

Changes relative to 0.15.1 include:

  • New wheels that fix numpy binary incompatibility errors

0.15.1 (2022-01-23)

Changes relative to 0.14.3 include:

  • More flexible enmap.read_map_geometry

  • Add Python 3.10 support, drop Python 3.6 support

0.14.3 (2021-12-13)

Changes relative to 0.14.2 include:

  • Updates to enmap.insert, UHTs and WCS string accuracy

0.14.2 (2021-11-23)

Changes relative to 0.14.1 include:

  • An important bugfix for enmap.downgrade when the op argument is passed. This bug has been present since v0.14.0 and in commits on master since Aug 12, 2021.

0.14.1 (2021-11-16)

Changes relative to 0.13.2 include:

  • A breaking change to map2alm where it no longer approximates WCS if ring weights are unavailable

  • Miscellaneous bug fixes

  • ducc0 FFT support and fast rotate_alm

  • Tiled map support

  • New healpix <-> rectpix reprojection API

0.13.2 (2021-07-16)

Changes relative to 0.13.1 include:

  • Added binaries for MacOS 11 Big Sur

0.13.1 (2021-07-08)

Changes relative to 0.13.0 include:

  • Fixes to the MacOS wheel building

0.13.0 (2021-07-08)

Changes relative to 0.12.1 include:

  • Matched filtering in a new analysis module

  • Conjugate gradients solver

  • Discrete cosine transforms

  • Miscellaneous bug fixes

0.12.1 (2021-04-30)

Changes relative to 0.12.0 include:

  • Patch to fix numpy binary incompatibility issues caused by changes to the numpy C API. We now require numpy >1.20.

0.12.0 (2021-04-13)

Changes relative to 0.11.2 include:

  • We now use libsharp2 instead of libsharp, which has signficantly faster SHTs

  • Major breaking change: the meaning of the “iau” flag has been corrected and reversed. The default behaviour of map2harm and other functions using this flag will be different.

  • Unified harmonic transforms module

  • postage_stamp removed in favor of thumbnails

  • Adjoint harmonic transforms

0.11.2 (2021-02-04)

Changes relative to 0.11.0 include:

  • Bug-fix for when using rmax in distance_transform

0.11.0 (2021-02-02)

Changes relative to 0.10.3 include:

  • Bug-fix for enmap.project that led to crashes

  • enplot improvements

  • Improvements to fft and ifft overhead

  • alm filtering API improvements

  • Changes to CMB dipole parameter

  • Allow lmax!=mmax in curvedsky routines

  • Python 3.9 builds and Github actions instead of Travis

0.10.3 (2020-06-26)

Changes relative to 0.10.2 include:

  • Bug fix for automatic IAU -> COSMO, recognizes POLCCONV instead of POLCONV.

0.10.2 (2020-06-26)

Changes relative to 0.9.6 include:

  • Automatically converts maps recognized to be in IAU polarization convention (through the FITS header) to COSMO convention by flipping the sign of U

  • Fixes a centering issue in reproject.thumbnails

  • Optimizes posmap for separable projections and pixsizemap for cylindrical projections making these functions orders of magnitude faster for CAR (and other projections)

  • A test script test-pixell is distributed with the package

0.9.6 (2020-06-22)

Changes relative to 0.6.0 include:

  • Ability to read compressed FITS images

  • Fixed a bug to make aberration and modulation accurate to all orders

  • Expanded alm2cl to handle full cross-spectra and broadcasting

0.6.0 (2019-09-18)

Changes relative to 0.5.2 include:

  • Improvements in accuracy for map extent, area and Fourier wavenumbers

  • Spherical harmonic treatment consistent with healpy

  • Additional helper functions, e.g enmap.insert

  • Helper arguments, e.g. physical normalization for enmap.fft

  • Bug fixes e.g. in rand_alm

  • Improved installation procedure and documentation

0.5.2 (2019-01-22)

  • API for most modules is close to converged

  • Significant number of bug fixes and new features

  • Versioning system implemented through versioneer and bumpversion

  • Automated pixel level tests for discovering effects of low-level changes

0.1.0 (2018-06-15)

  • First release on PyPI.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pixell-0.17.0.tar.gz (6.9 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pixell-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pixell-0.17.0-cp310-cp310-macosx_10_13_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

pixell-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pixell-0.17.0-cp39-cp39-macosx_10_13_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.9macOS 10.13+ x86-64

pixell-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pixell-0.17.0-cp38-cp38-macosx_10_13_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.8macOS 10.13+ x86-64

pixell-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

pixell-0.17.0-cp37-cp37m-macosx_10_13_x86_64.whl (9.4 MB view details)

Uploaded CPython 3.7mmacOS 10.13+ x86-64

File details

Details for the file pixell-0.17.0.tar.gz.

File metadata

  • Download URL: pixell-0.17.0.tar.gz
  • Upload date:
  • Size: 6.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for pixell-0.17.0.tar.gz
Algorithm Hash digest
SHA256 a2501bfac144fca2fd4f07d35db0077e93d83528fd3bf8fe88483aecbeff2070
MD5 b4f199da3d9afd808dd16d00711824b8
BLAKE2b-256 21553f7112f5b9ab81dc034f724309c2ed727144b30f0eeef7f7aa0fce625161

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 00c5a323363a11e17a138bd3cdf5124e7cfb6f7667d66e5ebf3b51574ea22c5a
MD5 eb85e9fcc1daa825d1553b9ba3b7d8d7
BLAKE2b-256 5f122732080d8a41599380d8cc7375e9f66ed76550a4bbd51d5dd2d67a1b561f

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp310-cp310-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 7b09b060e1a23ade53e1121597bcdbc182871c5e8c4aa6cabc3e96438d6f9951
MD5 29405928f47122af33a3def4d820d555
BLAKE2b-256 27d3f885cdb2951503ff58a17d34300292d4dfbb924d79ff5737bd89fd1d8ac5

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0bf2580db6db89605b05064380cdb762b74e083eb7f3865474ac3c2c54543d0
MD5 c9faa23bcb5d41e388a8ceb5021bf9d5
BLAKE2b-256 cffeed6ec74fa369df097c744a20522d3cd5a0122c108e1852b531572a5a9143

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp39-cp39-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp39-cp39-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d5b5020834ddc3c21b64bc7865d0bec2652e009bb8ec750dc5b4d817f8084b3a
MD5 38263b2ed8624befbbeee7c5865c33cf
BLAKE2b-256 6a1c5171d6f6f7b70a3ded394fe36458540c6521faf09e85e85135208eb2371a

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bdf4023af8f5533413a5dabd012669f6a2f9d2f85a157b49fdcd4c564cdd90ed
MD5 ef8d5b0c1724de8bbf1ae7f53fe5ed81
BLAKE2b-256 bc979ba87f1dbc3dc2380d5945ff1655abfbd0c2539e6a684640c150cec10e50

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp38-cp38-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp38-cp38-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 26063ab680e605a4a6a53510f1ca43c6b1cffb298afa7548ce72dbcfaa40e131
MD5 0764f7454e83919cff0fe5bffcc20949
BLAKE2b-256 0527930d9c09cb3b0533d88e566f954d7afde872ffb831a84a6e2748a40ea599

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 119b5c7f235a854e9e070497af2eab31a3bc4c68ad38a58f67fbcb3a15db83b7
MD5 7efb5451184daa692f4f922743d6cd7f
BLAKE2b-256 e378c535aa33848b1404c3e9ba5ba08ea37274dce5ab3766b563e17e5c38db1e

See more details on using hashes here.

File details

Details for the file pixell-0.17.0-cp37-cp37m-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.17.0-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ffabec93a694007390805d3e8e9cf525fb78720813b41b3631c4cd807eb2d8e1
MD5 2fd0b04ce5660a592eafa3a03b8c478a
BLAKE2b-256 18937938dcb35e6d79f35b834468907fc15d7df7480826be57c88cdf3b91f7ef

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page