Source code for gwexpy.interop.pyspeckit_

"""Interoperability with pyspeckit."""

from __future__ import annotations

from ._optional import require_optional
from .base import to_plain_array


[docs] def to_pyspeckit(data, **kwargs): """ Convert a gwexpy object to a pyspeckit Spectrum. Parameters ---------- data : FrequencySeries Input data. **kwargs Additional arguments for pyspeckit.Spectrum. Returns ------- pyspeckit.Spectrum """ pyspeckit = require_optional("pyspeckit") # Extract data as plain numpy array d = to_plain_array(data) # Extract frequencies if hasattr(data, "frequencies"): xarr = to_plain_array(data.frequencies) # Handle units if possible? # pyspeckit xarr can be Quantity or have units kwarg. # But simplistic approach: just pass array and let user refine or pass kwargs. else: raise ValueError("Input data must have frequencies attribute.") return pyspeckit.Spectrum(data=d, xarr=xarr, **kwargs)
[docs] def from_pyspeckit(cls, spectrum, **kwargs): """ Convert a pyspeckit Spectrum to a gwexpy object. Parameters ---------- cls : class Target class (FrequencySeries). spectrum : pyspeckit.Spectrum Input spectrum. Returns ------- FrequencySeries """ # Extract data data = spectrum.data # Extract frequencies xarr = spectrum.xarr # If xarr is Quantity-like or has unit logic, preserve it? # pyspeckit uses its own unit system primarily but integrates with astropy units somewhat. # We assume xarr is the frequency axis. return cls(data, frequencies=xarr, **kwargs)