Skip to main content

rechunkit

Functions to efficiently rechunk multidimensional arrays

codecov PyPI version


Documentation: https://mullenkamp.github.io/rechunkit/

Source Code: https://github.com/mullenkamp/rechunkit


Introduction

Rechunkit is a Python library for efficiently rechunking multidimensional numpy arrays stored as chunks. It uses a generator-based approach for on-the-fly rechunking without requiring the full target array in memory.

Key Features

  • Efficient On-the-Fly Rechunking: Uses Python generators to yield rechunked data without requiring the full target array to be stored in memory.
  • Memory-Aware Optimization: Employs a smart scaling algorithm to maximize performance within a user-defined memory limit (max_mem).
  • LCM Minimization: Utilizes highly composite numbers for chunk guessing to minimize the Least Common Multiple (LCM) between source and target, significantly reducing redundant reads.
  • Flexible Data Access: Supports subset selection (sel) and works with any source that implements a numpy __getitem__ style callable (method or function).
  • Source-Aligned Selection Reads: When rechunking a subset (sel), read requests are aligned to source chunk boundaries -- even when the selection offset doesn't fall on a chunk boundary. This allows source functions backed by chunk-based storage (HDF5, Zarr, cfdb) to serve each read from aligned chunks without needing to assemble across boundaries.
  • Preprocessing Utilities: Includes tools for estimating ideal chunk shapes, calculating memory requirements, and predicting the number of required read operations.

Installation

pip install rechunkit

Quick Example

import numpy as np
from math import prod
from rechunkit import rechunker

shape = (31, 31, 31)
dtype = np.dtype('int32')
source_data = np.arange(1, prod(shape) + 1, dtype=dtype).reshape(shape)
source = source_data.__getitem__

target = np.zeros(shape, dtype=dtype)
for write_chunk, data in rechunker(source, shape, dtype, (5, 2, 4), (4, 5, 3), max_mem=2000):
    target[write_chunk] = data

assert np.all(source_data == target)

See the documentation for detailed guides, integration examples (h5py, zarr), and the full API reference.

License

This project is licensed under the terms of the Apache Software License 2.0.

Download files

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

Source Distribution

rechunkit-0.6.0.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

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

rechunkit-0.6.0-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file rechunkit-0.6.0.tar.gz.

File metadata

  • Download URL: rechunkit-0.6.0.tar.gz
  • Upload date:
  • Size: 14.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.7

File hashes

Hashes for rechunkit-0.6.0.tar.gz
Algorithm Hash digest
SHA256 dda6fa3e45dbb78a2946b1fffbf42d0f859fdc8cebf840640bae341a3a8f68a6
MD5 303111b2593821d31c54de06767a5be4
BLAKE2b-256 13607182e5a8b128929d36a89c9695945705acdec8f2681e13a0c3f8d6adb682

See more details on using hashes here.

File details

Details for the file rechunkit-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: rechunkit-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.7

File hashes

Hashes for rechunkit-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e24bbf36ca385c241ed476f6a3f397e140ddcaaf46a490932e1d80e2e7204256
MD5 aef21833203ad08c7d8a9f1fc005207f
BLAKE2b-256 36079c491661bd559409fc5115919968f6c0faadd914fe55726952d5c1ec6233

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 files

0.5.1

2 files

0.5.0

2 files

0.4.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page