Development documentation · 0.2.3 30c2f8ba · Intro examples tested with 0.2.3 · Version details · Known limitations

Migrating Between GWexpy Versions#

This guide summarizes breaking changes between GWexpy releases and provides migration paths for existing code.

The project-wide GWpy compatibility policy governs default behavior of APIs corresponding to GWpy. Release-specific notes below describe changes within that contract.

v0.2.0#

Lazy registration#

A plain import gwexpy no longer eagerly registers constructors or I/O handlers. Supported public I/O entry points register the handlers they need on demand. Call gwexpy.register_all() only when an application deliberately needs the complete constructor and I/O surface registered up front.

Removed developer proxy imports#

The developer-only imports gwexpy.utils.shell, gwexpy.utils.sphinx, gwexpy.utils.sphinx.ex2rst, and gwexpy.utils.sphinx.zenodo have been removed. Replace shell helpers with subprocess or shutil.which, and use maintained documentation or Zenodo tooling directly.

SDB format name#

The undocumented sqlite and sqlite3 format aliases, including their GUI fallback extensions, have been removed. Rename archives to .sdb and use format="sdb" for direct I/O.

SeriesMatrix arithmetic#

The v0.2.0 B0 contract rejects dimensional raw-ndarray addition and subtraction with SpectrogramMatrix atomically with TypeError. Do not rely on implicit metadata-dropping arithmetic; convert inputs to an explicitly supported representation first.

v0.1.1#

1. Lorentzian Peak Parameters#

The fwhm (Full Width at Half Maximum) parameter in gwexpy.noise.peaks.lorentzian_line() has been renamed to gamma (Half Width at Half Maximum) to better align with the underlying mathematical implementation and typical spectral modeling conventions.

How to Migrate#

If you were using fwhm, simply divide your value by 2 and pass it as gamma.

Old (v0.1.0):

from gwexpy.noise.peaks import lorentzian_line
line = lorentzian_line(f0=100, amplitude=1e-21, fwhm=10)

New (v0.1.1):

from gwexpy.noise.peaks import lorentzian_line
# Note: gamma = fwhm / 2
line = lorentzian_line(f0=100, amplitude=1e-21, gamma=5)

2. Spectral Fitting (Generalized Least Squares)#

The stride parameter has been removed from fit_bootstrap_spectrum() as it was an unsupported keyword argument that caused errors in the underlying scipy.signal.periodogram calls.

How to Migrate#

Simply remove the stride keyword argument from your fit_bootstrap_spectrum calls. The function now correctly manages data segmentation through fftlength and overlap.

Old (v0.1.0):

from gwexpy.fitting import fit_bootstrap_spectrum
results = fit_bootstrap_spectrum(series, fftlength=4, overlap=2, stride=4) # Error!

New (v0.1.1):

from gwexpy.fitting import fit_bootstrap_spectrum
# stride is no longer required or supported
results = fit_bootstrap_spectrum(series, fftlength=4, overlap=2)

3. SegmentTable Lazy Loading#

The loader argument in SegmentTable.add_series_column() now expects a callable that takes a single segment argument (loader(segment)), rather than a factory that takes an index (loader(i)).

How to Migrate#

Update your loader functions to accept the segment (span) of the row directly.

Old (v0.1.0):

def my_factory(i):
    return lambda: load_data(st.row(i)['span'])
st.add_series_column("data", loader=my_factory)

New (v0.1.1):

def my_loader(segment):
    return load_data(segment)
st.add_series_column("data", loader=my_loader)