LVK example

LVK example#

Lets download GW150914 data and wavelet transform it.

! pip install gwpy

import matplotlib.pyplot as plt
from gwpy.timeseries import TimeSeries as GwpyTimeSeries

hdata = GwpyTimeSeries.fetch_open_data("H1", 1126259446, 1126259478)
from gwpy.signal import filter_design

bp = filter_design.bandpass(50, 250, hdata.sample_rate)
notches = [
    filter_design.notch(line, hdata.sample_rate) for line in (60, 120, 180)
]
zpk = filter_design.concatenate_zpks(bp, *notches)
hfilt = hdata.filter(zpk, filtfilt=True)
hdata = hdata.crop(*hdata.span.contract(1))
hfilt = hfilt.crop(*hfilt.span.contract(1))
plot = hfilt.plot(color="gwpy:ligo-hanford")
ax = plot.gca()
ax.set_title("LIGO-Hanford strain data around GW150914")
ax.set_ylabel("Amplitude [strain]")
ax.set_xlim(1126259462, 1126259462.6)
ax.set_xscale("seconds", epoch=1126259462)
../_images/c26348fd40f27c6285e91b3239a7b0ea4dd18edc3ee5c4ee8d1e45cfd8f9cb93.png
from pywavelet.types import TimeSeries

h = TimeSeries(hfilt.value, time=hfilt.times.value)
print(h)
TimeSeries(n=122,880, trange=[13035.41, 13035.41] day, T=30.00 s, fs=4096.00 Hz)
from matplotlib import gridspec
from matplotlib import pyplot as plt

gs = gridspec.GridSpec(2, 1, height_ratios=[1, 3], hspace=0.1)
fig = plt.figure(figsize=(10, 6))
ax0 = fig.add_subplot(gs[0])
ax1 = fig.add_subplot(gs[1], sharex=ax0)

wavelet = h.to_wavelet(Nf=256)
wavelet.plot(freq_range=(50, 250), absolute=True, ax=ax1, show_colorbar=False)

# comute average power in each time bin
power = wavelet.data.mean(axis=0)
ax0.plot(wavelet.time, power, color="C0")
ax0.set_ylabel("Average power");
../_images/ce516c3b1614ced7209e35734aad0f6c6aee0ad8bee1b17ee728c89de4ba844a.png