Releases: tjayasinghe/cuPeriod
Releases · tjayasinghe/cuPeriod
Release list
cuPeriod v1.2.0
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
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
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
numbaCPU 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.
- GLS — generalized (floating-mean) Lomb–Scargle via non-uniform FFT
- Single-light-curve entry point
cuperiod.periodogramand 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.
cuperiodcommand-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--outJSON is always standard JSON (noNaN/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 mismatchedchunk_sizeon resume, and a CSV sink asked to
store raw spectra fails loudly rather than dropping the columns. - The batch process pool uses the
spawnstart method on every platform, so a CPU/GPU
pool no longer deadlocks on Linux (the defaultforkcopies 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.