Skip to main content

Foundational pure-function utilities for astronomy analysis

Project description

noobase

Foundational pure-function utilities for astronomy analysis. Rust core with Python bindings via PyO3.

Status: pre-1.0, API unstable. Breaking changes expected between minor versions.

Install

pip install noobase

Requires Python 3.12 or newer. Wheels are published for linux-x86_64, macos-arm64, and windows-x86_64; a source distribution is also available.

Quick start

import numpy as np
import noobase

wavelength = np.linspace(1.0, 5.0, 200)
flux = np.exp(-((wavelength - 3.0) ** 2) / 0.5)
error = 0.01 * np.ones_like(flux)

spectrum = noobase.spectroscopy.Spectrum(
    wavelength=wavelength,
    flux=flux,
    error=error,
    spacing="linear",
    kind="centers",
)

transmission_grid = np.linspace(2.5, 3.5, 50)
transmission_values = np.exp(-((transmission_grid - 3.0) ** 2) / 0.05)

band_flux, band_error, coverage = spectrum.synthetic_photometry(
    transmission_grid=transmission_grid,
    transmission_values=transmission_values,
    convention="photon_counting",
)

What's in the box

  • axis.Grid — 1-D monotonic axis (linear / log, centers / edges)
  • axis.overlap.{rebin, rebin_variance, coverage} — overlap-weighted rebin primitives between two axis grids
  • convolve.{gaussian1d, conv1d, conv_axis, conv2d, conv2d_renorm, conv_axis_renorm} — bare correlation kernels plus NaN-as-missing renormalized variants
  • spectroscopy.Spectrum — wavelength + flux + optional error + optional mask, with rebinning, flux density convention conversion, and noise-free-template LSF broadening via Spectrum.convolve_lsf
  • spectroscopy.synthetic_photometry.{synthetic, SyntheticOperator} — synthetic photometry through transmission curves; the cached operator is suited for MCMC hot loops
  • image.reproject_exact — surface-brightness-conserving image reprojection via planar polygon clipping (rayon-parallel; WCS handling stays in the caller's astropy / gwcs)
  • image.make_pixel_corners — turn a pair of pixel_to_world_values / world_to_pixel_values callables (astropy.wcs or gwcs) into the corner array consumed by reproject_exact, with optional coarse_step for expensive WCS chains
  • image.convolve_psf — true 2-D PSF convolution with NaN-as-missing edge / mask renormalization
  • image.convolve_gaussian_axis — 1-D Gaussian axis correlation for grism-style matched filtering
  • image.build_stamp — recenter a point-source cutout into a fixed stamp (sub-pixel centroid recorded, not applied)
  • image.psf.build_epsf — oversampled ePSF from a stack of under-sampled stamps via projected Landweber / Irani–Peleg super-resolution
  • image.psf.build_extended_psf — bright-star wing stacking + core↔wing stitch into an encircled-energy-normalised extended PSF, with robust_combine / solve_flux_background / stitch_psf exposed as leaves
  • aperture.grow_mask — adaptive aperture mask grown by a heap-driven greedy loop from one or more seed pixels, terminated by an inner-annulus SNR stop and a radial-gradient stop (each with independent hysteresis); accepts an optional segmentation label_map + label_allowed whitelist to keep the mask inside the source's pre-computed segmentation

Convolution examples

template = noobase.spectroscopy.Spectrum(
    wavelength=wavelength,
    flux=flux,
    spacing="linear",
    kind="centers",
)
broadened = template.convolve_lsf(spec="constant_r", resolving_power=3000.0)

psf = psf / psf.sum()
model_image = noobase.image.convolve_psf(image, psf)

line_response = noobase.image.convolve_gaussian_axis(
    image,
    sigma=2.5,
    axis=0,
    normalization="l2",
)

See the full project README on GitHub for the complete feature list, the workspace layout, and the development workflow.

License

MIT.

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

noobase-0.0.4.tar.gz (227.9 kB view details)

Uploaded Source

Built Distributions

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

noobase-0.0.4-cp312-abi3-win_amd64.whl (505.3 kB view details)

Uploaded CPython 3.12+Windows x86-64

noobase-0.0.4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (622.9 kB view details)

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

noobase-0.0.4-cp312-abi3-macosx_11_0_arm64.whl (551.1 kB view details)

Uploaded CPython 3.12+macOS 11.0+ ARM64

File details

Details for the file noobase-0.0.4.tar.gz.

File metadata

  • Download URL: noobase-0.0.4.tar.gz
  • Upload date:
  • Size: 227.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for noobase-0.0.4.tar.gz
Algorithm Hash digest
SHA256 54f67371af565e9deaefeb4a2f77c609cf4c70bbcb384108cbab802f6402182e
MD5 cdc06c2094b8dd33995c3ce071767327
BLAKE2b-256 2d710abc7065e015f48bb63b9cc0946ba6207301786d093c68e10fcba5ca230f

See more details on using hashes here.

File details

Details for the file noobase-0.0.4-cp312-abi3-win_amd64.whl.

File metadata

  • Download URL: noobase-0.0.4-cp312-abi3-win_amd64.whl
  • Upload date:
  • Size: 505.3 kB
  • Tags: CPython 3.12+, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.13.3

File hashes

Hashes for noobase-0.0.4-cp312-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 858bf2156c03a8e4b3c152cd49a1105d47a4ef2a3bcc05e3e2738c3de3a0c212
MD5 509e0ec7b1883273adb709fd756f9d24
BLAKE2b-256 ad8d3dec03b468cc248cebf31b15b829e38bf514ad2f4c47192711530a20d02d

See more details on using hashes here.

File details

Details for the file noobase-0.0.4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for noobase-0.0.4-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3a197233b290cec24ceeaa85dbd3bd26bc04c06553dba643a8270c6a7a75d993
MD5 f4a9f2083416de5b17fd1adb7235af82
BLAKE2b-256 fcf9a3e79097a2a0a70b58ea87f3dc1c33dcabb39270a76cf79e7d55fcdeb816

See more details on using hashes here.

File details

Details for the file noobase-0.0.4-cp312-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for noobase-0.0.4-cp312-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1c87265bca30e0ddb01f0ff55ea66188a9a4f85b039f1dd82ca3c1c9480afbd
MD5 3a66394069fab687df6f58be506427ad
BLAKE2b-256 bbf8446fea709f106c327d3dfa01df07838d74337b2917ed9fac1e62229c2a9f

See more details on using hashes here.

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