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.2.2.tar.gz (194.3 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.2.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.2 MB view details)

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

fitscube_rs-1.2.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

fitscube_rs-1.2.2-cp310-abi3-macosx_11_0_arm64.whl (995.3 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: fitscube_rs-1.2.2.tar.gz
  • Upload date:
  • Size: 194.3 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.2.2.tar.gz
Algorithm Hash digest
SHA256 114f05ec58869a9ee25042a98f54283691cf408e2832b7f2a1b3bd3361863039
MD5 81048f81aac2cc11655927fac090c876
BLAKE2b-256 30e3bf6cc909142ff05d0c743d341d7b2b112f3a503de03e1e90bb8a7329687a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fitscube_rs-1.2.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d139bb8b481256490732310aaa08e2f6d80563c5080e7567386c3fd969327ba0
MD5 73f6f5d05251aa07ae7c662ba1b424e0
BLAKE2b-256 83c637ad0016749082981d8b5378b01a596e906640984d0a62fdfb6f7b8a0aa3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fitscube_rs-1.2.2-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a16c113acd47b5266df01475fcc122fee796bbede56083a9f8670898a6213a85
MD5 a340f232a8ef48d0f6c1bc1a7f20e6a9
BLAKE2b-256 d20397a15e26960a24bd72c98b83388f3c7fa5e8e0f6693701848502ccdbac6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for fitscube_rs-1.2.2-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 606710898d3c056e1e7369b05b2bbeef7a6ccbb75f72714dfc2544cb9be4dd06
MD5 0c2f8498e2da524aff56faeb18bd7bf5
BLAKE2b-256 a9adbe6bbf1739e7018e6941f640a58825a06757bf55de4543c3ed5b6b57cbf8

See more details on using hashes here.

Provenance

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