Skip to main content

cygrid: is a cython-powered convolution-based gridding module for astronomy

Project description

  • Version: 2.0

  • Authors: Benjamin Winkel, Lars Flöer, Daniel Lenz

  • User manual: stable | developer

PyPI tag License Publication https://img.shields.io/badge/ascl-1606.003-blue.svg?colorB=262255

Project Status

cygrid's Travis CI Status cygrid's AppVeyor CI Status cygrid's Coveralls Status

Cygrid is already used in several “production” systems, for example it was utilized for two major 21-cm HI surveys, EBHIS and HI4PI. Nevertheless, we cannot guarantee that it’s completely bug-free. We kindly invite you to use the library and we are grateful for feedback. Note, that work on the documentation is still ongoing.

Purpose

cygrid allows to resample a number of spectra (or data points) to a regular grid - a data cube - using any valid astronomical FITS/WCS projection (see http://docs.astropy.org/en/stable/wcs/).

The method is a based on serialized convolution with finite gridding kernels. Currently, only Gaussian (radial-symmetric or elliptical) kernels are provided (which has the drawback of slight degradation of the effective resolution). The algorithm has very small memory footprint, allows easy parallelization, and is very fast.

A detailed description of the algorithm is given in Winkel, Lenz & Flöer (2016), which we kindly ask to be used as reference if you found cygrid useful for your research.

Features

  • Supports any WCS projection system as target.

  • Conserves flux.

  • Low memory footprint.

  • Scales very well on multi-processor/core platforms.

Installation

We highly recommend to use cygrid with the Anaconda Python distribution, in which case installiation is as easy as

conda install -c conda-forge cygrid

Otherwise, you should install cygrid via pip:

python -m pip install cygrid

The installation is also possible from source, but you’ll need a C++ compiler. Download the tar.gz-file, extract (or clone from GitHub) and execute (in project directory):

python -m pip install .

Dependencies

We kept the dependencies as minimal as possible. The following packages are required:

  • Python 3.8 or later (cygrid versions prior to v1.0 support Python 2.7)

  • NumPy 1.13 or later

  • Cython 3 or later (if you want to build cygrid yourself)

  • Astropy 4.0 or later

(Older versions of these libraries may work, but we didn’t test this!)

If you want to run the notebooks yourself, you will also need the Jupyter server, matplotlib and wcsaxes packages. To run the tests, you’ll need HealPy.

Note, for compiling the C-extension, openmp is used for parallelization and some C++11 language features are necessary. If you use gcc, for example, you need at least version 4.8 otherwise the setup-script will fail. It is highly recommended to use Anaconda, which offers the proper compilers for many platforms.

Usage

Minimal example

Using cygrid is extremely simple. Just define a FITS header (with valid WCS), define gridding kernel and run the grid function:

from astropy.io import fits
import cygrid

# read-in data
glon, glat, signal = get_data(...)

# define target FITS/WCS header
header = {
    'NAXIS': 3,
    'NAXIS1': 101,
    'NAXIS2': 101,
    'NAXIS3': 1024,
    'CTYPE1': 'GLON-SFL',
    'CTYPE2': 'GLAT-SFL',
    'CDELT1': -0.1,
    'CDELT2': 0.1,
    'CRPIX1': 51,
    'CRPIX2': 51,
    'CRVAL1': 12.345,
    'CRVAL2': 3.14,
    }

# prepare gridder
kernelsize_sigma = 0.2

kernel_type = 'gauss1d'
kernel_params = (kernelsize_sigma, )
kernel_support = 3 * kernelsize_sigma
hpx_maxres = kernelsize_sigma / 2

mygridder = cygrid.WcsGrid(header)
mygridder.set_kernel(
    kernel_type,
    kernel_params,
    kernel_support,
    hpx_maxres
    )

# do the gridding
mygridder.grid(glon, glat, signal)

# query result and store to disk
data_cube = mygridder.get_datacube()
fits.writeto(
    'example.fits',
    header=header, data=data_cube
    )

More use-cases and tutorials

Check out the user manual or the Jupyter tutorial notebooks in the repository for further examples of how to use cygrid. Note that you can only view the notebooks on GitHub, if you want to edit something it is necessary to clone the repository or download a notebook to run it on your machine.

Who do I talk to?

If you encounter any problems or have questions, do not hesitate to raise an issue or make a pull request. Moreover, you can contact the devs directly:

Preferred citation method

Please cite our paper if you use cygrid for your projects.

@ARTICLE{2016A&A...591A..12W,
    author = {{Winkel}, B. and {Lenz}, D. and {Fl{\"o}er}, L.},
    title = "{Cygrid: A fast Cython-powered convolution-based gridding module for Python}",
    journal = {\aap},
    archivePrefix = "arXiv",
    eprint = {1604.06667},
    primaryClass = "astro-ph.IM",
    keywords = {methods: numerical, techniques: image processing},
    year = 2016,
    month = jun,
    volume = 591,
    eid = {A12},
    pages = {A12},
    doi = {10.1051/0004-6361/201628475},
    adsurl = {http://adsabs.harvard.edu/abs/2016A%26A...591A..12W},
    adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

Project details


Download files

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

Source Distribution

cygrid-2.0.4.tar.gz (4.5 MB view details)

Uploaded Source

Built Distributions

cygrid-2.0.4-cp312-cp312-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.12 Windows x86-64

cygrid-2.0.4-cp312-cp312-manylinux_2_28_x86_64.whl (4.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.28+ x86-64

cygrid-2.0.4-cp312-cp312-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12 macOS 10.9+ x86-64

cygrid-2.0.4-cp311-cp311-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.11 Windows x86-64

cygrid-2.0.4-cp311-cp311-manylinux_2_28_x86_64.whl (4.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

cygrid-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

cygrid-2.0.4-cp310-cp310-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.10 Windows x86-64

cygrid-2.0.4-cp310-cp310-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

cygrid-2.0.4-cp310-cp310-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

cygrid-2.0.4-cp39-cp39-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.9 Windows x86-64

cygrid-2.0.4-cp39-cp39-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

cygrid-2.0.4-cp39-cp39-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

cygrid-2.0.4-cp38-cp38-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.8 Windows x86-64

cygrid-2.0.4-cp38-cp38-manylinux_2_28_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

cygrid-2.0.4-cp38-cp38-macosx_10_9_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

Details for the file cygrid-2.0.4.tar.gz.

File metadata

  • Download URL: cygrid-2.0.4.tar.gz
  • Upload date:
  • Size: 4.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for cygrid-2.0.4.tar.gz
Algorithm Hash digest
SHA256 ebc49f8ff3cd2c0363783e261825a3e6b948374703be56289f0937e11af4456a
MD5 ea4c54fe914ca81b039fff9d3edfcf2f
BLAKE2b-256 ae7881b638e0457ba277c45e3723d26b6e95510c5625c28bd6b804ab3f476570

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: cygrid-2.0.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for cygrid-2.0.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 40ca7e15b04ad66b02e74c700fd1ad1a74b14d7cb7036f8469c538bc3d67d97d
MD5 8492592281b879486b0b23fee8eb01f4
BLAKE2b-256 bc6e5da9e5c6b6dbff6573929e7235c7b16037e62dfebdaaf720091a8b9934a2

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d360c25a18e5713946a2f5d89ee39bd8621ecb05564ca628a0f2f2a73d87a2a1
MD5 7a35558e7ec14b1c3c30b59686879ee9
BLAKE2b-256 75399fcbcc64f04bf39bf9812df2ca72f4ed247f50b0767820bf0ad6cdd8c8a4

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp312-cp312-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 bd9fca6c85c3c19f4266125e83b1cbfb267bcd50cd83648f176c0d3027c85610
MD5 dde75a4e424b89f1a518873f96e06650
BLAKE2b-256 65dbae23e8e94a03e99765dc5b68c19331587d2f2faf6ca4f83b7f60d40ebab2

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: cygrid-2.0.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.8

File hashes

Hashes for cygrid-2.0.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3f7b5430061bbebd0c73ef556a3e575d86ae706df84843739bfab2efa34af8d8
MD5 7f6b7e46ca26380ee3ed3bb4b6f72582
BLAKE2b-256 7784a1b5fb3fcad647e4e044232167241f446028998af2d459fca699171b7583

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6fe5ee78a824e4dc2d429f45fab6e65ddec09a020c70a22bdd2b189f00b9b7c3
MD5 fe945d1c061064e3779275e4f65bd8b9
BLAKE2b-256 c265a24425d376fb06f970e354581e81350e5b1db88a86b4b9c046a6c735b90a

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d987e4dea09958882a9cfb30de8744eb9c7bd61f70950f4551d3892104bc7ea9
MD5 5198fd3bae65db3a5499d813d0d43051
BLAKE2b-256 7679ad631c64bff4eb2cb868dba5bf7322fe1340249b78941c235b49cf18274c

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: cygrid-2.0.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.14

File hashes

Hashes for cygrid-2.0.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 514582ed0a280f9140db018d17fdbd6446ef1be6dafaeeec1b0225677321d3b7
MD5 b143a59a73f2f90827a2c864df0f0355
BLAKE2b-256 3ad9fc1a6d26c514ac7635d73d55e1533aff8bc923c44d8da1dd140e68b0545e

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f0f479e2a5baf219d4a7b9621ed12cbfd638e32a10733bb447d2b41ed48d4126
MD5 cabdbe6b515c0b120578a29a10aa204d
BLAKE2b-256 9373170b531e8834475f9e0da75bab0bb71f6887a6e42b0abb9d75f2d87ad3a1

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 addf53e68e48f43f1b2747055846fe94c256d9a8d01c78a0492b96da62706814
MD5 abab5fd832f64b8284b16ed156e92a86
BLAKE2b-256 d988ce6f346f93c22444742acaa59ceedff5f3be90e06f99eaf0c90dbe694d12

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: cygrid-2.0.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for cygrid-2.0.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b23b0b910c5ade6e9ca46f02a1232a5bde8b3400396dd361affb1b3f32d46729
MD5 f61347cefab1810000395afe4a980cdc
BLAKE2b-256 6c32e0b9e084b3448fe43b8b1b9e058cbf17f609ab8665d3c448ec346421ffa5

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b3b5377192abe9b869b980fe2cd19998941e8be1d17c7daf6b72717405c984d5
MD5 030bf798bad7dcb33f82ff0702027994
BLAKE2b-256 2aee573507022bab3ad899aad9f229ccc36aa862c63e9b8c0cee96245f6da502

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c1d6adb872c97156549ae3322427c3829a429e6e621e1f3e9d9b0465abc59e5d
MD5 8317f45163d80e08db41c3c9995befa0
BLAKE2b-256 c3ed5b4bbdc26136b84de5036d4a5a94568ccec518e8e4d8ef22e186379e9767

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: cygrid-2.0.4-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.8.19

File hashes

Hashes for cygrid-2.0.4-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 915ab9e9e37586eaef9c61be9c2ecd40a1fcc50343c8df1a39b354ebdb3b7525
MD5 978e23f840931d823474ecdb15f8758c
BLAKE2b-256 fe932b105617eea71f70bf780ac5d75bd90389a69269f9b38b1d091ae4e053a2

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ee4ecc20bce88c89bcae68037ed94fcfa0d9679b4321620244d6bdc8a17d60b7
MD5 f66761ef63c0e45169cb1260e73a03cd
BLAKE2b-256 a5eb921fe244b96f99524b0ae69ce0de574f2da1df70353655f8586b405d1e83

See more details on using hashes here.

File details

Details for the file cygrid-2.0.4-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for cygrid-2.0.4-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f3162158c626951d69dcdb3ea26eacaa1f5d4a25454f039c14a6e10221a3f35d
MD5 5089ade87543f34cbf78310f520b19f6
BLAKE2b-256 5790a0f58765990f5e6d910937278da712b600369ec56a745351eef24f74f159

See more details on using hashes here.

Supported by

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