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

  • ducc0, healpy, Cython, astropy, numpy, scipy, matplotlib, pyyaml, h5py, Pillow (Python Image Library)

On MacOS, and other systems with non-traditional environments, you should specify the following standard environment variables:

  • CC: C compiler (example: gcc)

  • CXX: C++ compiler (example: g++)

  • FC: Fortran compiler (example: gfortran)

We recommend using gcc installed from Homebrew to access these compilers on MacOS, and you should make sure to point e.g. $CC to the full path of your gcc installation, as the gcc name usually points to the Apple clang install by default.

Runtime threading behaviour

Certain parts of pixell are parallelized using OpenMP, with the underlying ducc0 library using pthreads. By default, these libraries use the number of cores on your system to determine the number of threads to use. If you wish to override this behaviour, you can use two environment variables:

  • OMP_NUM_THREADS will set both the number of pixell threads and ducc0 threads.

  • DUCC0_NUM_THREADS will set the number of threads for the ducc0 library to use, overwriting OMP_NUM_THREADS if both are set. pixell behaviour is not affected.

If you are using a modern chip (e.g. Apple M series chips, Intel 12th Gen or newer) that have both efficiency and performance cores, you may wish to set OMP_NUM_THREADS to the number of performance cores in your system. This will ensure that the efficiency cores are not used for the parallelized parts of pixell and ducc0.

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 Intel compilers, 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.

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, you can install the package (optionally with -e if you would like to edit the files after installation)

$ python setup.py install --user

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.21.0 (2023-10-19)

Changes relative to 0.19.2 include:

  • More miscellaneous fixes after transition to ducc0

  • More work on wavelets

  • We now provide MacOS x86_64 wheels

  • Improved build system that respects choices of CC, CXX, and FC

0.19.2 (2023-08-18)

Changes relative to 0.19.0 include:

  • Important bugfixes for the migration from libsharp2 to ducc0

  • Improved SHT unit tests

0.19.0 (2023-07-14)

Changes relative to 0.17.3 include:

  • Migrate fully from libsharp2 to ducc0 (for curved sky functions)

  • Temporary suspension of MacOS pip binaries (use pip install pixell==0.17.3 for Macs in the meantime)

  • Miscellaneous fixes

0.17.3 (2023-03-17)

Changes relative to 0.17.2 include:

  • More support for fejer1

0.17.2 (2023-02-21)

Changes relative to 0.17.1 include:

  • Build for Python 3.11

0.17.1 (2023-01-26)

Changes relative to 0.16.0 include:

  • Bilinear map-making pixel window function

  • Miscellaneous new functions and API improvements

  • Miscellaneous bug fixes

  • Fixes for Apple Silicon

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 distance_transform when using rmax

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.21.1.tar.gz (7.2 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.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

pixell-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

pixell-0.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

pixell-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

pixell-0.21.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

pixell-0.21.1-cp39-cp39-macosx_10_9_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.9macOS 10.9+ x86-64

pixell-0.21.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

pixell-0.21.1-cp38-cp38-macosx_10_9_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.8macOS 10.9+ x86-64

pixell-0.21.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (10.4 MB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ x86-64

File details

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

File metadata

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

File hashes

Hashes for pixell-0.21.1.tar.gz
Algorithm Hash digest
SHA256 c4f3dd9205ef44280ea1740449c3b726614e3e244d3053d9d4fb22a9758f0260
MD5 a258488dc3fb3da7bf252e44dee77241
BLAKE2b-256 26dae8db69ef93d348a8626fecc9464b8c41b79050e745288ad9eaf8b97ac989

See more details on using hashes here.

File details

Details for the file pixell-0.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.21.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ead359fa0f5d387aa2d86aa71dcddb5c6dd35c8546cddcaf7916cb820e2307fd
MD5 a206d5ac4184ed773d447d4d00170526
BLAKE2b-256 57a63a62af8893c8b929d6d5b68b678f4ca4eede0a95dc3bfeb9e3e22efb1634

See more details on using hashes here.

File details

Details for the file pixell-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.21.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 71559a8a673a9634db0538d170fbe6caa3b86a7e1fa10661e1149360db4600ef
MD5 d034bf924bfa52233c34798bb44c8d45
BLAKE2b-256 7197a44868e8d4035b049415122011f5615535646040ab0dcca35e2dbaba3dc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixell-0.21.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 305cdea362440a56b2359323aabac077063a9c5a6182409d8f264e3ea1f5b6c3
MD5 502cb5987a72626406162aab18d0e6ae
BLAKE2b-256 7afd50e474761232b8574b4816425b2ad1b15bab9e907cc6d958dacf90115e93

See more details on using hashes here.

File details

Details for the file pixell-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.21.1-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 1a0a6d69ae62eb60a84a4ff1a77c7f358800c5dd1a249bc720285a40315e0fd3
MD5 6bcfd2e16392eb26849df8851face9a8
BLAKE2b-256 ada1c3b3f243d3e29eee1cff01e45a2998d2cff6837e22c51a8e3ff4b3f45695

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixell-0.21.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9dcbfb061eea4a1068d3770ad8a5ae8d2d8389cab6964db07634cda400ac2372
MD5 77232ac374dfebc258fcac0645256a99
BLAKE2b-256 5c3f6869c56e8eb42dce3aeec13f5124af4397902980d2d85ff4f6a48b32472d

See more details on using hashes here.

File details

Details for the file pixell-0.21.1-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.21.1-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bda9687f9170aff58a5b6cd144b89edb9d616c97f26c2ef0ce98773ac1314057
MD5 eacd1aa7360acc9a1123af09a5070ca6
BLAKE2b-256 3cbd0b036d206d90c370a6fd484d3b0d364e3adf15d2e5051b264cd7898c0ab5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixell-0.21.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c9291bcaed834f5c0a645b3548f3e1b3f5af6173cf2e99e3f4bccc625d208e10
MD5 4ccecde226e0f50a94c2e12a01a31b4f
BLAKE2b-256 530f14b405ee1f09b1091321e15d5d43806ca4e8cf1b3cbacbee8c54bedc7778

See more details on using hashes here.

File details

Details for the file pixell-0.21.1-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for pixell-0.21.1-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 5e9882ae79ccaf158e0151aaafe84a753dab2ee10089af9ad506b22a7edd578c
MD5 5b95179ae503e597c3a6dd69a5cb3073
BLAKE2b-256 0a5351ff85d6b7041e7a1af9a6865835640a51dfa37a689ca909dea574716c17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pixell-0.21.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e34a74b9983418e9131e25df8bb1d8b5b382c37aa2e3792a557c0d7e5d52bdc8
MD5 6c13d320270f5f9b4da226c46f5d588e
BLAKE2b-256 4063f076cce26cdebf6d787caba713553680bac2994becefd91cb8c6ee3dd555

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