Skip to main content

Package to efficiently read large fits arrays in object by object

Project description

https://img.shields.io/travis/mindriot101/fitsiochunked.svg https://codecov.io/gh/mindriot101/fitsiochunked/branch/master/graph/badge.svg

Package to sequentially efficiently read large fits arrays in object by object

  • Free software: MIT license

Features

  • Sequentially read in large fits files, within a given fixed memory limit

Quick usage

The following example shows an example of reading in a large fits hdu within a memory limit of 2048MB, assuming light curves are stored in rows:

import numpy as np
import fitsio
import fitsiochunked as fc

with fitsio.FITS(filename) as infile:
    hdu = infile['flux']
    napertures = hdu.get_info()['ndim'][0]
    mean_flux = np.zeros(napertures)

    for chunk in fc.chunks(hdu, memory_limit_mb=2048):

        # `chunk` is a namedtuple with `.data` and `.slice` properties
        chunk_data = chunk.data
        print('Data shape:', chunk_data.shape)
        print('Data dtype:', chunk_data.dtype)


        chunk_slice = chunk.slice
        print('Chunk starting from aperture:', chunk_slice.start)
        print('Chunk up to:', chunk_slice.stop)

        chunk_mean = np.average(chunk_data, axis=1)
        mean_flux[chunk_slice] = chunk_mean

The library copes with an aribtrary number of hdus:

import numpy as np
import fitsio
import fitsiochunked as fc

with fitsio.FITS(filename) as infile:
    hjd_hdu = infile['hjd']
    flux_hdu = infile['flux']
    fluxerr_hdu = infile['fluxerr']

    napertures = flux_hdu.get_info()['ndim'][0]
    mean_flux = np.zeros(napertures)

    for chunks in fc.chunks(hjd_hdu, flux_hdu, fluxerr_hdu, memory_limit_mb=2048):
        # chunks is a tuple of chunks
        hjd_chunk, flux_chunk, fluxerr_chunk = chunks

        # `chunk` is a namedtuple with `.data` and `.slice` properties
        flux_chunk_data = flux_chunk.data
        print('Data shape:', flux_chunk_data.shape)
        print('Data dtype:', flux_chunk_data.dtype)

        # and so on

Note: if multiple hdus are supplied, then the memory_limit_mb and chunksize arguments to chunks apply to each HDU i.e. three HDUs and a memory limit of 2048MB will lead to 3x2048 = 6144MB of memory used.

Installation

Install with pip:

pip install fitsiochunked
# or get the latest development version from github
pip install git+https://github.com/mindriot101/fitsiochunked

or download and run the setup file:

git clone https://github.com/mindriot101/fitsiochunked
cd fitsiochunked
python setup.py install

Details

The high level interface is the chunks function, which builds a ChunkedAdapter object wrapping a fitsio.ImageHDU object.

The ChunkedAdapter wraps a fitsio HDU object. When constructed, it becomes a callable which yields the image data in that hdu in chunks.

The chunksize can be set either with with the parameter chunksize which simply yields chunksize rows each time, or with memory_limit_mb which tries (no promises!) to automatically calculate the number of lightcurves that will fit into memory_limit_mb megabytes of memory.

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

fitsiochunked-0.2.1.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

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

fitsiochunked-0.2.1-py2.py3-none-any.whl (5.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file fitsiochunked-0.2.1.tar.gz.

File metadata

  • Download URL: fitsiochunked-0.2.1.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for fitsiochunked-0.2.1.tar.gz
Algorithm Hash digest
SHA256 89c3a8ce743e6578a491ba6950c252fa684732234b6bf14ac54681d9b5b5caf4
MD5 dc1cbf6b4eec9f8eb5a6c9ef22523046
BLAKE2b-256 55ac9a03357a80a823795ae14a4e5aa1db20ad8d4c20d0fd6a1d00402bf57f6f

See more details on using hashes here.

File details

Details for the file fitsiochunked-0.2.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for fitsiochunked-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 33850454c733d91ab01ada78076dc52f178b29328cba03c193acf8cb0658b619
MD5 d102e2e512c180ff085341d204d30387
BLAKE2b-256 27d14ccf1fb724422b98640e427e8660a18c7aae320922341a45ab1002a1cd57

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