Calculating the time-dependent coherence between two channelsΒΆ

The standard coherence calculation outputs a frequency series (FrequencySeries) giving a time-averaged measure of coherence.

The TimeSeries method coherence_spectrogram() performs the same coherence calculation every stride, giving a time-varying coherence measure.

First, we import the TimeSeriesDict

from gwpy.timeseries import TimeSeriesDict

and then get() both data sets:

data = TimeSeriesDict.get(['L1:LSC-SRCL_IN1_DQ', 'L1:LSC-CARM_IN1_DQ'],
                           'Feb 13 2015', 'Feb 13 2015 00:15')

We can then use the coherence_spectrogram() method of one TimeSeries to calcululate the time-varying coherence with respect to the other, using a 0.5-second FFT length, with a 0.45-second (90%) overlap, with a 8-second stride:

coh = data['L1:LSC-SRCL_IN1_DQ'].coherence_spectrogram(
    data['L1:LSC-CARM_IN1_DQ'], 8, 0.5, 0.45)

Finally, we can plot() the resulting data

plot = coh.plot()
ax = plot.gca()
ax.set_ylabel('Frequency [Hz]')
ax.set_yscale('log')
ax.set_ylim(10, 8000)
ax.set_title('Coherence between SRCL and CARM for L1')
ax.grid(True, 'both', 'both')
plot.add_colorbar(label='Coherence', clim=[0, 1])
plot.show()

(Source code, png)

../../_images/coherence1.png