twistpy.polarization.TimeDomainAnalysis6C#
- class TimeDomainAnalysis6C(traN: Trace, traE: Trace, traZ: Trace, rotN: Trace, rotE: Trace, rotZ: Trace, window: dict, scaling_velocity: float = 1.0, free_surface: bool = True, verbose: bool = True, timeaxis: str = 'utc')[source]#
Time domain six-component polarization analysis.
Single-station six degree-of-freedom polarization analysis in the time domain. Polarization analysis is performed in a sliding time window using the complex analytic signal [1].
[1] Sollberger et al. (2018). 6-C polarization analysis using point measurements of translational and rotational ground-motion: theory and applications, Geophysical Journal International, 213(1), https://doi.org/10.1093/gji/ggx542
Note
It is recommended to bandpass filter the data to a narrow frequency band before attempting a time-domain polarization analysis in order to avoid that dispersion effects and wave type interference affect the polarization.
- Parameters
- traN
Trace
North component of translation
- traE
Trace
East component of translation
- traZ
Trace
Vertical component of translation (positive downwards!)
- rotN
Trace
North component of rotation
- rotE
Trace
East component of rotation
- rotZ
Trace
Vertical component of rotation (right-handed, pointing downwards!)
- window
dict
Window parameters defined as:
- scaling_velocity
float
, default=1. Scaling velocity (in m/s) to ensure numerical stability. The scaling velocity is applied to the translational data only (amplitudes are divided by scaling velocity) and ensures that both translation and rotation amplitudes are on the same order of magnitude and dimensionless. Ideally, v_scal is close to the S-Wave velocity at the receiver. After applying the scaling velocity, translation and rotation signals amplitudes should be similar.
- free_surface
bool
, default=True Specify whether the recording station is located at the free surface in order to use the corresponding polarization models.
- verbose
bool
, default=True Run in verbose mode.
- timeaxis
str
, default=’utc’ Specify whether the time axis of plots is shown in UTC (timeaxis=’utc’) or in seconds relative to the first sample (timeaxis=’rel’).
- traN
- Attributes
- classification
dict
Dictionary containing the labels of classified wave types at each position of the sliding time window. The dictionary has up to six entries corresponding to classifications for each eigenvector.
classification = {‘0’: list_with_classifications_of_first_eigenvector, ‘1’: list_with_classification_of_second_eigenvector, … , ‘5’: list_with_classification_of_last_eigenvector}- t_windows
list
ofUTCDateTime
Window positions of the sliding time window on the time axis (center point of the window)
- C
ndarray
ofcomplex128
Complex covariance matrices at each window position
- time
list
ofUTCDateTime
Time axis of the input traces
- delta
float
Sampling interval of the input data in seconds
- window_length_samples
int
Window length in samples
- dop
numpy.ndarray
offloat
Degree of polarization estimated at each window position.
Hint
The definition of the degree of polarization follows the one from Samson & Olson (1980): Some comments on the descriptions of the polarization states of waves, Geophysical Journal of the Royal Astronomical Society, https://doi.org/10.1111/j.1365-246X.1980.tb04308.x. It is defined as:
\[P^2=\sum_{j,k=1}^{n}(\lambda_j-\lambda_k)^2/[2(n-1)(\sum_{j=1}^{n}(\lambda_j)^2)]\]where \(P^2\) is the degree of polarization and \(\lambda_j\) are the eigenvalues of the covariance matrix.
- classification
Methods
classify
(svm[, eigenvector_to_classify, ...])Classify wave types using a support vector machine
plot
(estimator_configuration[, dop_clip])polarization_analysis
([...])Perform polarization analysis.
save
(name)Save the current TimeDomainAnalysis6C object to a file on the disk in the current working directory.
Examples using twistpy.polarization.TimeDomainAnalysis6C
#
6-C Polarization Analysis: Time-domain wave parameter estimation