Skip to main content
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.

Metadata

Release files for fitsiochunked 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fitsiochunked 0.2.1
File Size Uploaded
fitsiochunked-0.2.1.tar.gz 6.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fitsiochunked 0.2.1
File Interpreter ABI Platform
fitsiochunked-0.2.1-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 12.2 kB

Release files / fitsiochunked-0.2.1.tar.gz

Download URL fitsiochunked-0.2.1.tar.gz
Size 6.3 kB
Tags Source
SHA-256 checksum
How to use checksums
89c3a8ce743e6578a491ba6950c252fa684732234b6bf14ac54681d9b5b5caf4
BLAKE2b-256 checksum
How to use checksums
55ac9a03357a80a823795ae14a4e5aa1db20ad8d4c20d0fd6a1d00402bf57f6f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / fitsiochunked-0.2.1-py2.py3-none-any.whl

Download URL fitsiochunked-0.2.1-py2.py3-none-any.whl
Size 5.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
33850454c733d91ab01ada78076dc52f178b29328cba03c193acf8cb0658b619
BLAKE2b-256 checksum
How to use checksums
27d14ccf1fb724422b98640e427e8660a18c7aae320922341a45ab1002a1cd57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

3 release files

0.0.2

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page