{"id":18620527,"url":"https://github.com/simonsobs/pixell","last_synced_at":"2025-05-07T10:36:05.023Z","repository":{"id":33114408,"uuid":"133876629","full_name":"simonsobs/pixell","owner":"simonsobs","description":"A rectangular pixel map manipulation and harmonic analysis library derived from Sigurd Naess' enlib.","archived":false,"fork":false,"pushed_at":"2025-04-29T12:01:03.000Z","size":22529,"stargazers_count":45,"open_issues_count":31,"forks_count":32,"subscribers_count":23,"default_branch":"master","last_synced_at":"2025-04-29T13:22:16.278Z","etag":null,"topics":["astrophysics","cosmology","image-processing"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/simonsobs.png","metadata":{"files":{"readme":"README.rst","changelog":"HISTORY.rst","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-05-17T22:59:16.000Z","updated_at":"2025-04-29T12:01:06.000Z","dependencies_parsed_at":"2023-10-17T01:42:29.387Z","dependency_job_id":"fc269288-8c76-4dc1-ac14-d553532b8d00","html_url":"https://github.com/simonsobs/pixell","commit_stats":{"total_commits":566,"total_committers":11,"mean_commits":51.45454545454545,"dds":0.5035335689045937,"last_synced_commit":"f277a9b0c56e260743fb6cff29dd0f149741532c"},"previous_names":[],"tags_count":102,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fpixell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fpixell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fpixell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/simonsobs%2Fpixell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/simonsobs","download_url":"https://codeload.github.com/simonsobs/pixell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252860542,"owners_count":21815534,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astrophysics","cosmology","image-processing"],"created_at":"2024-11-07T04:06:39.593Z","updated_at":"2025-05-07T10:36:05.012Z","avatar_url":"https://github.com/simonsobs.png","language":"Python","readme":"=======\npixell\n=======\n\n.. image:: https://github.com/simonsobs/pixell/workflows/Build/badge.svg\n           :target: https://github.com/simonsobs/pixell/actions?query=workflow%3ABuild\n\n.. image:: https://readthedocs.org/projects/pixell/badge/?version=latest\n           :target: https://pixell.readthedocs.io/en/latest/?badge=latest\n\t\t   :alt: Documentation Status\n\n.. image:: https://codecov.io/gh/simonsobs/pixell/branch/master/graph/badge.svg?token=DOIG32B6NT\n\t   :target: https://codecov.io/gh/simonsobs/pixell\n\n.. image:: https://badge.fury.io/py/pixell.svg\n\t\t       :target: https://badge.fury.io/py/pixell\n\n``pixell`` is a library for loading, manipulating and analyzing maps stored in rectangular pixelization. It is mainly intended 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 analysis  (through ``numpy`` or ``pyfftw``), spherical harmonic analysis (through ducc0_) and wavelet analysis of such maps. It also provides tools for high-resolution visualization (through the Python Image Library). \n\n\n* Free software: BSD license\n* Documentation: https://pixell.readthedocs.io.\n* Tutorials_\n* Summary_ of what pixell can and cannot do\n\nDependencies\n------------\n\n* Python\u003e=3.9.\n* gcc/gfortran or Intel compilers (clang might not work out of the box), if compiling from source\n* ducc0_, healpy, Cython, astropy, numpy, scipy, matplotlib, pyyaml, h5py, Pillow (Python Image Library)\n\nOn MacOS, and other systems with non-traditional environments, you should specify the following standard environment variables:\n\n* ``CC``: C compiler (example: ``gcc``)\n* ``FC``: Fortran compiler (example: ``gfortran``)\n\nWe recommend using ``gcc`` installed from Homebrew to access these compilers on\nMacOS, and you should make sure to point e.g. ``$CC`` to the full path of your gcc installation,\nas the ``gcc`` name usually points to the Apple ``clang`` install by default.\n\nRuntime threading behaviour\n---------------------------\n\nCertain parts of ``pixell`` are parallelized using OpenMP, with the underlying ``ducc0``\nlibrary using pthreads. By default, these libraries use the number of cores on your\nsystem to determine the number of threads to use. If you wish to override this behaviour,\nyou can use two environment variables:\n\n- ``OMP_NUM_THREADS`` will set both the number of ``pixell`` threads and ``ducc0`` threads.\n- ``DUCC0_NUM_THREADS`` will set the number of threads for the ``ducc0`` library to use,\n  overwriting ``OMP_NUM_THREADS`` if both are set. ``pixell`` behaviour is not affected.\n\nIf you are using a modern chip (e.g. Apple M series chips, Intel 12th Gen or newer) that\nhave both efficiency and performance cores, you may wish to set ``OMP_NUM_THREADS`` to\nthe number of performance cores in your system. This will ensure that the efficiency cores\nare not used for the parallelized parts of ``pixell`` and ``ducc0``.\n\nYou can check the threading behaviour (and the installation of ``pixell``) by running\nthe benchmark script:\n\n.. code-block:: console\n\n   $ benchmark-pixell-runner\n\nInstalling\n----------\n\nMake sure your ``pip`` tool is up-to-date. To install ``pixell``, run:\n\n.. code-block:: console\n\t\t\n   $ pip install pixell --user\n\nThis will install a pre-compiled binary suitable for your system (only Linux and Mac OS X with Python\u003e=3.9 are supported). \n\nIf you require more control over your installation, e.g. using Intel compilers, please see the section below on compiling from source.\n\nCompiling from source (advanced / development workflow)\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nThe easiest way to install from source is to use the ``pip`` tool,\nwith the ``--no-binary`` flag. This will download the source distribution\nand compile it for you. Don't forget to make sure you have CC and FC set\nif you have any problems.\n\nFor all other cases, below are general instructions.\n\nFirst, download the source distribution or ``git clone`` this repository. You\ncan work from ``master`` or checkout one of the released version tags (see the\nReleases section on Github). Then change into the cloned/source directory.\n\nOnce downloaded, you can install using ``pip install .`` inside the project\ndirectory. We use the ``meson`` build system, which should be understood by\n``pip`` (it will build in an isolated environment).\n\nWe suggest you then test the installation by running the unit tests. You\ncan do this by running ``pytest``.\n\nTo run an editable install, you will need to do so in a way that does not\nhave build isolation (as the backend build system, `meson` and `ninja`, actually\nperform micro-builds on usage in this case):\n\n.. code-block:: console\n   \n   $ pip install --upgrade pip meson ninja meson-python cython numpy\n   $ pip install  --no-build-isolation --editable .\n\n\nContributions\n-------------\n\nIf you have write access to this repository, please:\n\n1. create a new branch\n2. push your changes to that branch\n3. merge or rebase to get in sync with master\n4. submit a pull request on github\n\nIf you do not have write access, create a fork of this repository and proceed as described above. For more details, see Contributing_.\n  \n.. _ducc0: https://pypi.org/project/ducc0/\n.. _Tutorials: https://github.com/simonsobs/pixell_tutorials/\n.. _Contributing: https://pixell.readthedocs.io/en/latest/contributing.html\n.. _NERSC: https://pixell.readthedocs.io/en/latest/nersc.html\n.. _MACOSX: https://github.com/simonsobs/pspy/blob/master/INSTALL_MACOS.rst\n.. _Summary: https://docs.google.com/presentation/d/1wFQKJ8SGh6yizkcinx72eWeoLJyMpoPTuHgOTjGJD6I/edit?usp=sharing\n","funding_links":[],"categories":["Data Formats \u0026 Tools"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonsobs%2Fpixell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsimonsobs%2Fpixell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsimonsobs%2Fpixell/lists"}