MsPASS C++ API  2.4.1.dev4+g92330b7a
Defines the C++ API for MsPASS
Loading...
Searching...
No Matches
GIDDeconUtil.h
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"
11#include <list>
12#include <string>
13#include <vector>
14
15namespace mspass::algorithms::deconvolution {
37
45IterDeconType ParseGIDDeconType(const mspass::utility::Metadata &md,
46 const std::string &caller);
48std::string GIDDeconTypeName(const IterDeconType type);
50double GetDoubleDefault(const mspass::utility::Metadata &md,
51 const std::string &key, const double default_value);
56double GetDoubleRequired(const mspass::utility::Metadata &md,
57 const std::string &key);
59int GetIntDefault(const mspass::utility::Metadata &md, const std::string &key,
60 const int default_value);
62int GetIntRequired(const mspass::utility::Metadata &md,
63 const std::string &key);
65long GetLongRequired(const mspass::utility::Metadata &md,
66 const std::string &key);
68bool GetBoolDefault(const mspass::utility::Metadata &md,
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);
92void PutPrefixedMetadata(mspass::utility::Metadata &target,
93 const mspass::utility::Metadata &source,
94 const std::string &prefix);
100std::string AntelopePfToText(const mspass::utility::AntelopePf &pf,
101 const int indent = 0);
103std::vector<double> ThreeCAmplitudes(const mspass::utility::dmatrix &d);
109double GroupSparseObjective(const mspass::seismic::CoreSeismogram &residual,
110 const std::list<ThreeCSpike> &spikes,
111 const double lambda);
113void ValidateGIDLeafWindow(const mspass::utility::AntelopePf &mdleaf,
114 const mspass::algorithms::TimeWindow &fftwin,
115 const std::string &leaf_name,
116 const std::string &base_error);
122void ValidateGIDLeafOperatorMetadata(
124 const mspass::algorithms::TimeWindow &fftwin, const double target_dt,
125 const std::string &caller, const bool allow_noise_window_keys = false);
127void ValidateExternalTimeSeriesSampleInterval(
128 const mspass::seismic::TimeSeries &d, const double target_dt,
129 const std::string &caller);
134mspass::algorithms::TimeWindow ClipTimeWindowToSeries(
136 const mspass::algorithms::TimeWindow &requested,
137 const std::string &caller);
139std::vector<double> BuildGIDLagWeightPenaltyFunction(
140 const mspass::utility::Metadata &md, const std::string &caller);
142bool GIDLagWeightPenaltyUsesDynamicKernel(const std::string &penalty_type);
144bool GIDLagWeightPenaltyUsesAdaptiveMemory(const std::string &penalty_type);
147 double confidence = 0.0;
148 double immediate_strength = 0.0;
149 double specificity = 0.0;
150 double decay_factor = 0.0;
151 double memory_linf = 0.0;
152 double memory_l2 = 0.0;
153 double noise_amplitude = 0.0;
155};
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(
172GIDAdaptivePenaltyMetrics ApplyGIDAdaptiveMemoryPenalty(
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);
203GroupSparseDeconResult SolveGroupSparseDecon(
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);
209} // namespace mspass::algorithms::deconvolution
210#endif
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
Type-safe metadata container used throughout MsPASS.
Definition Metadata.h:101
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
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
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
double objective_final
Definition GIDDeconUtil.h:34
double active_threshold_quantile
Definition GIDDeconUtil.h:30