Core Functions

msnoise.move2obspy.myCorr(data, maxlag, plot=False, nfft=None)

This function takes ndimensional data array, computes the cross-correlation in the frequency domain and returns the cross-correlation function between [-maxlag:maxlag].

Parameters:
  • data (numpy.ndarray) – This array contains the fft of each timeseries to be cross-correlated.

  • maxlag (int) – This number defines the number of samples (N=2*maxlag + 1) of the CCF that will be returned.

Return type:

numpy.ndarray

Returns:

The cross-correlation function between [-maxlag:maxlag]

msnoise.move2obspy.myCorr2(data, maxlag, energy, index, plot=False, nfft=None, normalized=False)

This function takes ndimensional data array, computes the cross-correlation in the frequency domain and returns the cross-correlation function between [-maxlag:maxlag].

Parameters:
  • data (numpy.ndarray) – This array contains the fft of each timeseries to be cross-correlated.

  • maxlag (int) – This number defines the number of samples (N=2*maxlag + 1) of the CCF that will be returned.

Return type:

numpy.ndarray

Returns:

The cross-correlation function between [-maxlag:maxlag]

msnoise.move2obspy.pcc_xcorr(data, maxlag, energy, index, plot=False, nfft=None, normalized=False)
Parameters:
  • data

  • maxlag

  • energy

  • index

  • plot

  • nfft

  • normalized

Returns:

msnoise.move2obspy.whiten(data, Nfft, delta, freqmin, freqmax, plot=False, returntime=False)

This function takes 1-dimensional data timeseries array, goes to frequency domain using fft, whitens the amplitude of the spectrum in frequency domain between freqmin and freqmax and returns the whitened fft.

Parameters:
  • data (numpy.ndarray) – Contains the 1D time series to whiten

  • Nfft (int) – The number of points to compute the FFT

  • delta (float) – The sampling frequency of the data

  • freqmin (float) – The lower frequency bound

  • freqmax (float) – The upper frequency bound

  • plot (bool) – Whether to show a raw plot of the action (default: False)

Return type:

numpy.ndarray

Returns:

The FFT of the input trace, whitened between the frequency bounds

msnoise.move2obspy.whiten2(fft, Nfft, low, high, porte1, porte2, psds, whiten_type)

This function takes 1-dimensional data timeseries array, goes to frequency domain using fft, whitens the amplitude of the spectrum in frequency domain between freqmin and freqmax and returns the whitened fft.

Parameters:
  • data (numpy.ndarray) – Contains the 1D time series to whiten

  • Nfft (int) – The number of points to compute the FFT

  • delta (float) – The sampling frequency of the data

  • freqmin (float) – The lower frequency bound

  • freqmax (float) – The upper frequency bound

  • plot (bool) – Whether to show a raw plot of the action (default: False)

Return type:

numpy.ndarray

Returns:

The FFT of the input trace, whitened between the frequency bounds

msnoise.move2obspy.smooth(x, window='boxcar', half_win=3)

some window smoothing

msnoise.move2obspy.getCoherence(dcs, ds1, ds2)
msnoise.move2obspy.mwcs(current, reference, freqmin, freqmax, df, tmin, window_length, step, smoothing_half_win=5)

The current time series is compared to the reference. Both time series are sliced in several overlapping windows. Each slice is mean-adjusted and cosine-tapered (85% taper) before being Fourier- transformed to the frequency domain. Fcur(ν) and Fref(ν) are the first halves of the Hermitian symmetric Fourier-transformed segments. The cross-spectrum X(ν) is defined as X(ν)=Fref(ν)Fcur(ν)

in which denotes the complex conjugation. X(ν) is then smoothed by convolution with a Hanning window. The similarity of the two time-series is assessed using the cross-coherency between energy densities in the frequency domain:

C(ν)=|X(ν))||Fref(ν)|2|Fcur(ν)|2

in which the over-line here represents the smoothing of the energy spectra for Fref and Fcur and of the spectrum of X. The mean coherence for the segment is defined as the mean of C(ν) in the frequency range of interest. The time-delay between the two cross correlations is found in the unwrapped phase, ϕ(u), of the cross spectrum and is linearly proportional to frequency:

ϕj=m.uj,m=2πδt

The time shift for each window between two signals is the slope m of a weighted linear regression of the samples within the frequency band of interest. The weights are those introduced by [Clarke2011], which incorporate both the cross-spectral amplitude and cross-coherence, unlike [Poupinet1984]. The errors are estimated using the weights (thus the coherence) and the squared misfit to the modelled slope:

em=j(wjνjiwiνi2)2σϕ2

where w are weights, ν are cross-coherences and σϕ2 is the squared misfit of the data to the modelled slope and is calculated as σϕ2=j(ϕjmνj)2N1

The output of this process is a table containing, for each moving window: the central time lag, the measured delay, its error and the mean coherence of the segment.

Warning

The time series will not be filtered before computing the cross-spectrum! They should be band-pass filtered around the freqmin-freqmax band of interest beforehand.

Parameters:
  • current (numpy.ndarray) – The “Current” timeseries

  • reference (numpy.ndarray) – The “Reference” timeseries

  • freqmin (float) – The lower frequency bound to compute the dephasing (in Hz)

  • freqmax (float) – The higher frequency bound to compute the dephasing (in Hz)

  • df (float) – The sampling rate of the input timeseries (in Hz)

  • tmin (float) – The leftmost time lag (used to compute the “time lags array”)

  • window_length (float) – The moving window length (in seconds)

  • step (float) – The step to jump for the moving window (in seconds)

  • smoothing_half_win (int) – If different from 0, defines the half length of the smoothing hanning window.

Return type:

numpy.ndarray

Returns:

[time_axis,delta_t,delta_err,delta_mcoh]. time_axis contains the central times of the windows. The three other columns contain dt, error and mean coherence for each window.