For discrete data in the form of event triggers, it is often very
illuminating to analyse the rate at which these events occur in time -
usually a high event rate is indicative of a higher noise level.
One can calculate the event rate of an EventTable
via the
event_rate()
method:.
EventTable.
event_rate
(self, stride, start=None, end=None, timecolumn=None)[source]Calculate the rate TimeSeries
for this Table
.
stride : float
size (seconds) of each time bin
start : float
, LIGOTimeGPS
, optional
GPS start epoch of rate
TimeSeries
end : float
, LIGOTimeGPS
, optional
GPS end time of rate
TimeSeries
. This value will be rounded up to the nearest sample if needed.
timecolumn : str
, optional
name of time-column to use when binning events, attempts are made to guess this
rate : TimeSeries
a
TimeSeries
of events per second (Hz)
ValueError
if the
timecolumn
cannot be guessed from the table contents
For example, using the same data as before we can calculate and plot the event rate on a 1-second stride:
>>> from gwpy.table import EventTable
>>> events = EventTable.read('H1-LDAS_STRAIN-968654552-10.xml.gz', tablename='sngl_burst', columns=['peak', 'central_freq', 'snr'])
>>> rate = events.event_rate(1, start=968654552, end=968654562, timecolumn='peak')
>>> plot = rate.step()
>>> ax = plot.gca()
>>> ax.set_ylabel('Event rate [Hz]')
>>> ax.set_title('LIGO Hanford Observatory event rate for HW100916')
>>> plot.show()
(png)
This code is a snippet of the example Calculating (and plotting) rate versus time for an EventTable.
Following from a simple rate versus time calculation, it is often useful
to calculate the event rate for multiple conditions on the same table.
For this, we can use the binned_event_rates()
method:
EventTable.
binned_event_rates
(self, stride, column, bins, operator='>=', start=None, end=None, timecolumn=None)[source]Calculate an event rate TimeSeriesDict
over
a number of bins.
stride : float
size (seconds) of each time bin
column : str
name of column by which to bin.
bins : list
one of:
'<'
,'<='
,'>'
,'>='
,'=='
,'!='
, for a standard mathematical operation,
'in'
to use the list of bins as containing bin edges, ora callable function that takes compares an event value against the bin value and returns a boolean.
Note
If
bins
is given as a list of tuples, this argument is ignored.
start : float
, LIGOTimeGPS
, optional
GPS start epoch of rate
TimeSeries
.
end : float
, LIGOTimeGPS
, optional
GPS end time of rate
TimeSeries
. This value will be rounded up to the nearest sample if needed.
timecolumn : str
, optional, default: time
name of time-column to use when binning events
rates : ~gwpy.timeseries.TimeSeriesDict`
a dict of (bin,
TimeSeries
) pairs describing a rate of events per second (Hz) for each of the bins.
For example, in the following example, we calculate the rate of events with signal-to-noise ratio (SNR) above some threshold, for the same table as above.
>>> rates = events.binned_event_rates(1, 'snr', [2, 3, 5, 8], operator='>=', start=968654552, end=968654562, timecolumn='peak')
>>> plot = rates.step()
>>> ax = plot.gca()
>>> ax.set_ylabel('Event rate [Hz]')
>>> ax.set_title('LIGO Hanford Observatory event rate for HW100916')
>>> plot.show()
This code is a snippet of the example on Plotting EventTable rate versus time for specific column bins.