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.1.0.tar.gz (192.5 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.1.0-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.1.0-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.1.0-cp310-abi3-macosx_11_0_arm64.whl (922.7 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fitscube_rs-1.1.0.tar.gz
  • Upload date:
  • Size: 192.5 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.1.0.tar.gz
Algorithm Hash digest
SHA256 9f67d81bbb0d83ab757b81b4eaa2f665f49e57e212e4875301a16a08d64ef599
MD5 31fabed53ad397fde97ddb350cdd3675
BLAKE2b-256 5ec0e97c5d41b8a27c06f05bd78613c9ee36ff86792fce07c0169ad19f754d0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.1.0.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.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for fitscube_rs-1.1.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bec1c0d4252528ae949e5c9b77d5bb2e3e40175e1d3bc3074db7fd89b0913a9a
MD5 53a1bb75d313e8ddaf543636ef1f60a3
BLAKE2b-256 4b26ed96bc899e812bebec908cc08af5895f4ccd3f25ba00ccd83df6b22147c6

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.1.0-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.1.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for fitscube_rs-1.1.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3431aa492590610550ea86ba589e50da822b8ef66ad19cb6362c52273b069d9e
MD5 d48b8f6afa9a6dfcca09df5888c20ed9
BLAKE2b-256 1ab2b7aeed63937acab54670ca700a17958af280803d7ac4161366b2ba15238c

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.1.0-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.1.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fitscube_rs-1.1.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 29a409cff146893120bbe1104be73743116c76c19d817829550a0b2ee19a6ee9
MD5 8f0b76ab055b96109c53e2d8cae30747
BLAKE2b-256 dc343078507982e969fb4443e97eb929456c095f4049833bbb915f996f7207ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for fitscube_rs-1.1.0-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