Skip to main content

Combine single-frequency/single-time FITS images into a FITS cube (Rust port of fitscube)

Project description

fitscube-rs

Docs docs.rs PyPI crates.io

Documentation: Python API, CLI, and algorithm background at fitscube-rs.readthedocs.io; Rust API at docs.rs/fitscube-rs.

A Rust port of the fitscube Python package. Combines single-frequency/single-time FITS images into a FITS cube — building the spectral (or time) axis from the per-image headers, detecting even vs uneven spacing, preserving per-channel beams in a CASA BEAMS table — and extracts individual planes back out.

Note: This is an experiment in LLM-assisted coding with Claude. Do not trust this software as far as you can throw it.

Installation

Python library

pip install fitscube-rs

CLI binary

Requires Rust 1.85+.

cargo install fitscube-rs

Usage

Development

Install in editable mode:

uv pip install -e .

After changing the Python-facing Rust API in src/python.rs, rebuild with the stubgen feature (the default build omits _generate_stubs) and regenerate the type stubs:

uv run maturin develop --features stubgen
uv run --no-sync python -c "from fitscube_rs._fitscube_rs import _generate_stubs; _generate_stubs()"

This overwrites fitscube_rs/_fitscube_rs.pyi from the Rust annotations and docstrings. Commit the result alongside any API changes.

Running tests

Python tests need the compiled extension and the test extra (pytest, astropy), plus the upstream fitscube package, which the parity tests validate against. uv sync builds the maturin extension into .venv, so a plain uvx pytest won't work — it runs in an isolated env with neither the module nor the deps:

uv sync --extra test       # builds the extension + installs test deps
uv pip install fitscube    # upstream package, for parity tests
uv run --no-sync pytest

Rust tests run with cargo test:

cargo test

Pre-commit hooks

Formatters and linters run via prek, a fast drop-in pre-commit reimplementation. The hooks (.pre-commit-config.yaml) are the same checks CI enforces: ruff lint + format, ty type checking, cargo fmt, and cargo clippy.

uv sync --extra dev   # installs prek + ty into the venv
uvx prek install      # install the git hook (runs on every commit)
uvx prek run --all-files   # run all hooks manually

License

fitscube-rs is released under the BSD 3-Clause License.

It is a port of the fitscube Python package by Alec Thomson (BSD 3-Clause), and validates its output against that package in the test suite. See NOTICE.md for full attributions.

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

fitscube_rs-1.0.1.tar.gz (191.8 kB view details)

Uploaded Source

Built Distributions

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

fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.0 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

fitscube_rs-1.0.1-cp310-abi3-macosx_11_0_arm64.whl (921.0 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file fitscube_rs-1.0.1.tar.gz.

File metadata

  • Download URL: fitscube_rs-1.0.1.tar.gz
  • Upload date:
  • Size: 191.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fitscube_rs-1.0.1.tar.gz
Algorithm Hash digest
SHA256 7c43bb86b98d40e760ca48b81cfe65bcb40bae5a57381206cf3d4bf0f2fd687b
MD5 032ceb943cd630c6a9ce32ffc872de7f
BLAKE2b-256 2898ea640cd98e7dc81f4214dc5aaa983983964f3ad111838a06bd96e6d67e9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.0.1.tar.gz:

Publisher: cd.yml on AlecThomson/fitscube-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9312a34e9228c3efea55044e6c8d2c439d895f3e72ed2e27a4abc7f07b7ed661
MD5 f22c84cf09b4ee2722a9f80a9bc62497
BLAKE2b-256 42e3287cd910788a911fc9b8400763594ab434fce299817144f45a532cace88e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: cd.yml on AlecThomson/fitscube-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9202afde8a264b5ff361262e2011cc0ab4ed9bcbcbaf02a4ffd15acb01d7e0be
MD5 1e00311d5b0b9207aa6998ffb99ed843
BLAKE2b-256 fe5ee799840c01725bc292540b8c9be240df29755df91f65f7f839b8cd17bf7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.0.1-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: cd.yml on AlecThomson/fitscube-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fitscube_rs-1.0.1-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fitscube_rs-1.0.1-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eaec6343f8281f41f7c3d15ed15135265f36b9f648d85ac1a82d3bb603672108
MD5 6f9793a6254fa098db8ffb77e67286e0
BLAKE2b-256 325fe164197868abe14ac330f9d05ea88e92066285a42a66fcc925929f91966a

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.0.1-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: cd.yml on AlecThomson/fitscube-rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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