Source code for mspasspy.algorithms.FrequencyDomainGIDDecon

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Python wrappers for the frequency-domain generalized iterative deconvolution
engine.

The operator uses the same sparse-spike iterative model as
``TimeDomainGIDDecon`` but evaluates the configurable inverse operator in the
frequency domain with padded FFTs.  The returned receiver function is the
shaped sparse impulse response for the requested lag window, not a circularly
wrapped inverse-filter response.
"""

from mspasspy.util.decorators import mspass_func_wrapper
from mspasspy.ccore.algorithms.deconvolution import FrequencyDomainGIDDecon
from mspasspy.algorithms._gid_decon_wrapper import _run_gid_rf_decon


[docs] @mspass_func_wrapper def FrequencyDomainGIDRFDecon( seis, engine, *args, signal_window=None, noise_window=None, external_wavelet=None, external_noise=None, QCdata_key="FrequencyDomainGIDDecon_properties", return_wavelet=False, object_history=False, alg_name="FrequencyDomainGIDRFDecon", alg_id=None, dryrun=False, inplace_return=False, handles_ensembles=False, function_return_key=None, checks_arg0_type=True, handles_dead_data=True, **kwargs, ): """ Estimate a three-component receiver function with the frequency-domain generalized iterative deconvolution algorithm. The inverse operator mode is selected in the engine parameter file. The supported modes include damped least squares, water level, multitaper, and CNR. Damping or water-level protection is required for stable behavior near source-wavelet spectral zeros. When ``noise_window`` is omitted, the engine's configured parameter-file noise window is used. ``signal_window`` must contain the configured deconvolution window used to build the inverse operator. Omitted ``external_wavelet`` or ``external_noise`` arguments leave any external state already loaded into ``engine`` unchanged; call the engine's ``clear_external_*`` methods to force internal wavelet/noise selection. :param seis: input `Seismogram` containing signal and noise windows. :param engine: configured `FrequencyDomainGIDDecon` instance. The engine parameter file controls the inverse-operator mode, deconvolution window, convergence limits, and output shaping wavelet. :param signal_window: optional `TimeWindow` defining the full output and iterative analysis window. When omitted the input datum time range is used. The window must contain the engine's configured deconvolution window. :param noise_window: optional `TimeWindow` defining pre-event noise. When omitted the engine's parameter-file noise window is used. :param external_wavelet: optional prepared wavelet passed directly to the GID engine. If omitted, any external wavelet already loaded into ``engine`` is preserved; otherwise the engine preserves RF compatibility and derives the wavelet from component 2 of the input seismogram. Use ``engine.clear_external_wavelet()`` to force component-derived wavelets after loading an external one. :param external_noise: optional scalar noise `TimeSeries`, `CoreTimeSeries`, or `PowerSpectrum` passed to inverse-operator stabilization. If omitted, any external noise already loaded into ``engine`` is preserved. Use ``engine.clear_external_noise()`` to force the configured noise window only. :param QCdata_key: metadata key used to store the engine's QC metrics on the returned receiver function. :param return_wavelet: when True return `[rf, actual_output, output_shaping_wavelet]`. :return: deconvolved `Seismogram`, or the list described above when ``return_wavelet`` is True. Dead inputs and recoverable processing failures return a dead `Seismogram`; with ``return_wavelet`` True the auxiliary outputs are returned as ``None``. """ return _run_gid_rf_decon( seis, engine, FrequencyDomainGIDDecon, alg_name, signal_window=signal_window, noise_window=noise_window, external_wavelet=external_wavelet, external_noise=external_noise, QCdata_key=QCdata_key, return_wavelet=return_wavelet, )