1#ifndef __GID_DECON_UTIL_H__
2#define __GID_DECON_UTIL_H__
3#include "mspass/algorithms/TimeWindow.h"
4#include "mspass/algorithms/deconvolution/ThreeCSpike.h"
5#include "mspass/seismic/CoreSeismogram.h"
6#include "mspass/seismic/CoreTimeSeries.h"
7#include "mspass/seismic/TimeSeries.h"
8#include "mspass/utility/AntelopePf.h"
9#include "mspass/utility/Metadata.h"
10#include "mspass/utility/dmatrix.h"
15namespace mspass::algorithms::deconvolution {
46 const std::string &caller);
48std::string GIDDeconTypeName(
const IterDeconType type);
51 const std::string &key,
const double default_value);
57 const std::string &key);
60 const int default_value);
63 const std::string &key);
66 const std::string &key);
69 const std::string &key,
const bool default_value);
71void ValidateProbability(
const double p,
const std::string &key,
72 const std::string &caller);
74void ValidatePositive(
const double x,
const std::string &key,
75 const std::string &caller);
77void ValidateNonnegative(
const double x,
const std::string &key,
78 const std::string &caller);
80void ValidatePositiveInteger(
const int x,
const std::string &key,
81 const std::string &caller);
86void ValidateThreeComponentIndex(
const int component,
const std::string &key,
87 const std::string &caller);
94 const std::string &prefix);
101 const int indent = 0);
110 const std::list<ThreeCSpike> &spikes,
111 const double lambda);
115 const std::string &leaf_name,
116 const std::string &base_error);
122void ValidateGIDLeafOperatorMetadata(
125 const std::string &caller,
const bool allow_noise_window_keys =
false);
127void ValidateExternalTimeSeriesSampleInterval(
129 const std::string &caller);
137 const std::string &caller);
139std::vector<double> BuildGIDLagWeightPenaltyFunction(
142bool GIDLagWeightPenaltyUsesDynamicKernel(
const std::string &penalty_type);
144bool GIDLagWeightPenaltyUsesAdaptiveMemory(
const std::string &penalty_type);
157std::vector<double> BuildGIDLagWeightPenaltyFunctionFromKernel(
158 const std::string &penalty_type,
const double penalty_scale,
159 const std::vector<double> &kernel,
const int zero_lag_sample,
160 const std::string &caller);
162void ApplyGIDLagWeightPenalty(std::vector<double> &lag_weights,
163 const std::vector<double> &penalty,
164 const int center_col);
166double EstimateThreeCColumnAmplitudeRMS(
173 std::vector<double> &lag_weights, std::vector<double> &memory,
174 std::vector<double> &retention,
const std::vector<double> &kernel,
175 const int zero_lag_sample,
const int center_col,
176 const double penalty_scale,
const double candidate_amplitude,
177 const double noise_amplitude,
const std::string &caller);
179double FIRSelfOverlap(
const std::vector<double> &fir,
const int col0_i,
180 const int col0_j,
const int ncols);
182double FIRDataOverlap(
const std::vector<double> &fir,
184 const int component,
const int col0);
190std::vector<double> SolveDenseSystem(
const std::vector<std::vector<double>> &a,
191 const std::vector<double> &b,
192 const std::string &caller);
194void RefitSpikeAmplitudes(std::list<ThreeCSpike> &spikes,
196 const std::vector<double> &actual_o_fir,
197 const int actual_o_0,
198 const double ridge_beta = 1.0e-10);
205 const std::vector<double> &actual_o_fir,
const int actual_o_0,
206 const double lambda,
const int max_iterations,
const double tolerance,
207 const double active_threshold,
const double active_threshold_scale,
208 const double active_threshold_quantile,
const std::string &caller);
Defines a time window.
Definition TimeWindow.h:12
Vector (three-component) seismogram data object.
Definition CoreSeismogram.h:39
Scalar time series data object.
Definition CoreTimeSeries.h:17
Implemntation of TimeSeries for MsPASS.
Definition TimeSeries.h:14
C++ object version of a parameter file.
Definition AntelopePf.h:61
Lightweight, simple matrix object.
Definition dmatrix.h:104
Diagnostics from adaptive lag-penalty memory updates.
Definition GIDDeconUtil.h:146
double immediate_strength
Definition GIDDeconUtil.h:148
double memory_l2
Definition GIDDeconUtil.h:152
double memory_linf
Definition GIDDeconUtil.h:151
double decay_factor
Definition GIDDeconUtil.h:150
double noise_amplitude
Definition GIDDeconUtil.h:153
double confidence
Definition GIDDeconUtil.h:147
double specificity
Definition GIDDeconUtil.h:149
int effective_width
Definition GIDDeconUtil.h:154
Result bundle returned by group-sparse GID deconvolution.
Definition GIDDeconUtil.h:21
double fractional_improvement_final
Definition GIDDeconUtil.h:35
double active_threshold_floor
Definition GIDDeconUtil.h:28
double active_threshold_used
Definition GIDDeconUtil.h:32
double objective_initial
Definition GIDDeconUtil.h:33
int active_groups
Definition GIDDeconUtil.h:25
double lambda
Definition GIDDeconUtil.h:27
double active_threshold_quantile_value
Definition GIDDeconUtil.h:31
std::list< ThreeCSpike > spikes
Definition GIDDeconUtil.h:22
double active_threshold_scale
Definition GIDDeconUtil.h:29
mspass::seismic::CoreSeismogram residual
Definition GIDDeconUtil.h:23
bool converged
Definition GIDDeconUtil.h:26
double objective_final
Definition GIDDeconUtil.h:34
double active_threshold_quantile
Definition GIDDeconUtil.h:30
int iterations
Definition GIDDeconUtil.h:24