Skip to content

Releases: tjayasinghe/cuPeriod

cuPeriod v1.2.0

Choose a tag to compare

@tjayasinghe tjayasinghe released this 31 Aug 04:57

cuPeriod 1.2.0

Automated, uncertainty-aware pre-whitening for classical pulsators, a native
multi-band GLS with bootstrap false-alarm probabilities on every backend,
SuperSmoother as an eighth period-search method, alias/window diagnostics, and
LINCC nested-pandas / lsdb interoperability. See CHANGELOG.md for details.

Please cite the Research Note: RNAAS 10, 8, 244 (doi:10.3847/2515-5172/ae9b06).

cuPeriod v1.1.0

Choose a tag to compare

@tjayasinghe tjayasinghe released this 09 Jul 17:04

cuPeriod 1.1.0

Multi-vendor GPU support (PyTorch + Python array API) reaching AMD/Intel/Apple
and a fast CPU path, numba CPU kernels for all methods, an interactive PySide6
desktop GUI, float32 CUDA kernels, a cuperiod doctor command, and an expanded
126-star validation suite. See CHANGELOG.md for details.

cuPeriod v1.0.0

Choose a tag to compare

@tjayasinghe tjayasinghe released this 30 Jun 18:30

First public release.

Added

  • Seven period-search methods, each with an optimized CPU backend and a CUDA GPU backend:
    • GLS — generalized (floating-mean) Lomb–Scargle via non-uniform FFT
      (finufft / cufinufft).
    • BLS — box least squares, with a multicore numba CPU search ([fast] extra) and
      a CUDA kernel.
    • PDM — phase dispersion minimization (Stellingwerf).
    • CE — conditional entropy (Graham et al. 2013).
    • String-Length — Dworetsky / Lafler–Kinman.
    • MHAOV — multiharmonic analysis of variance (Schwarzenberg-Czerny).
    • TLS — transit least squares, a limb-darkened matched filter.
  • Single-light-curve entry point cuperiod.periodogram and the batch sibling
    cuperiod.batch_periodograms (CPU process pool or GPU, resumable Parquet/CSV output).
  • Multi-band joint modelling for GLS, BLS, and MHAOV.
  • Frictionless inputs: arrays, dicts, pandas/astropy/pyarrow tables, and
    CSV/ECSV/FITS/Parquet files, with case-insensitive, survey-aware column
    auto-detection (ColumnMap — ASAS-SN, ASAS-3, ATLAS, CRTS/CSS, ZTF, Pan-STARRS, LSST,
    TESS, Kepler, Gaia, MACHO) and domain-aware error pairing, plus automatic
    magnitude/flux handling.
  • N-best-period peak finding with alias- and harmonic-aware selection.
  • cuperiod command-line interface: run, batch, methods, gpu-info, grid-info.
  • Per-method settings models with CUPERIOD_<METHOD>_<FIELD> environment overrides, and
    GPU worker auto-sizing.
  • Full Sphinx documentation (hosted on Read the Docs), a worked-example Jupyter notebook
    (examples/cuperiod_tour.ipynb), and a reproducible validation + benchmark suite under
    benchmarks/.

Robustness

  • Peak selection returns the true peak even when it sits at a frequency-grid edge (a
    signal whose period is comparable to the observing baseline), and never reports a
    non-finite period or NaN-power sample.
  • Settings reject transposed frequency / period / duration-fraction bounds at
    construction; the CLI's --out JSON is always standard JSON (no NaN/Infinity).
  • GPU kernels opt into larger shared memory where the device allows, and otherwise raise
    a clear error naming the setting to reduce — instead of a raw CUDA driver error.
  • Batch sinks are correct across re-runs: a file sink is keyed by (key, method), a
    directory sink refuses a mismatched chunk_size on resume, and a CSV sink asked to
    store raw spectra fails loudly rather than dropping the columns.
  • The batch process pool uses the spawn start method on every platform, so a CPU/GPU
    pool no longer deadlocks on Linux (the default fork copies parent native thread pools
    / CUDA contexts into the workers).
  • Method-name lookup ignores case and non-alphanumeric separators, so "String-Length",
    "StringLength" and "STRINGLENGTH" all resolve (as documented).

Validated

  • Every method matches an established reference (astropy LombScargle / BoxLeastSquares,
    PyAstronomy, and textbook implementations) to floating-point round-off, with CPU↔GPU
    parity, on 72 real ASAS-SN light curves across six variability classes and on confirmed
    Kepler transits.