Calculating event trigger rate¶
Simple event rate¶
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(stride, start=
None
, end=None
, timecolumn=None
)[source] Calculate the rate
TimeSeries
for thisTable
.- Parameters¶
- 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
- stride
- Returns¶
- rate
TimeSeries
a
TimeSeries
of events per second (Hz)
- rate
- Raises¶
- 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.
Binned event rate¶
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(stride, column, bins, operator=
'>='
, start=None
, end=None
, timecolumn=None
)[source] Calculate an event rate
TimeSeriesDict
over a number of bins.- Parameters¶
- stride
float
size (seconds) of each time bin
- column
str
name of column by which to bin.
- bins
list
a list of
tuples
marking containing bins, or a list offloats
defining bin edges against which an math operation is performed for each event.- operator
str
,callable
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
- stride
- Returns¶
- 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.