On this page:
2.1 Bout Analysis
2.2 Event Transitions
count-of-events
count-of-subevents
sum-of-events
mean-of-events
variance-of-events
sem-of-events
median-of-events
max-of-events
latest-time-of-events
min-of-events
max-density-of-events
25%-of-events
75%-of-events
vector-of-event-vals
histogram-from-events
filter-events
events-after
events-before
nth-event-from-time
n-events-from-time
binned-event-vals
cumulative-events
merge-event-series
find-bouts
8.0

2 Event Analysis Functions

Functions for analysis of sequences of behavioral events

2.1 Bout Analysis

2.2 Event Transitions

 (require "../event-functions.rkt") package: base

procedure

(count-of-events #:events events [#:key key])

  nonnegative-integer?
  events : vector?
  key : (or/c null? integer?) = null
return number of events; #:key is included for parallelism but is ignored

procedure

(count-of-subevents #:events events    
  [#:key key])  nonnegative-integer?
  events : vector?
  key : (or/c integer? null?) = null
return total number of subevents (summed across given events) using kSubEventsCountKey. #:key is included for parallelism but is ignored

procedure

(sum-of-events #:events events #:key key)  number?

  events : vector?
  key : integer?
return sum of given key across given events, eg. sum of kMagnitudeKey

procedure

(mean-of-events #:events events #:key key)  number?

  events : vector?
  key : integer?
return mean of given key across given events, eg. mean of kMagnitudeKey, using an incremental algorithm

procedure

(variance-of-events #:events events    
  #:key key)  number?
  events : vector?
  key : integer?
return variance of given key across given events, eg. variance of kMagnitudeKey. Computed using shifted data (shifted by mean) for added stability

procedure

(sem-of-events #:events events #:key key)  number?

  events : vector?
  key : integer?
return sample standard error of the mean of given key across given events, eg. variance of kMagnitudeKey. Computed using shifted data (shifted by mean) for added stability

procedure

(median-of-events #:events events    
  #:key key)  number?
  events : vector?
  key : integer?
return median of given key across given events, eg. median of kMagnitudeKey

procedure

(max-of-events #:events events #:key key)  number?

  events : vector?
  key : integer?
return max of given key across given events, eg. max of kMagnitudeKey

procedure

(latest-time-of-events #:events events    
  #:key key)  number?
  events : vector?
  key : integer?
return the last time , which is max timestamp + event duration; key is ignored

procedure

(min-of-events #:events events #:key key)  number?

  events : vector?
  key : integer?
return min of given key across given events, eg. min of kMagnitudeKey

procedure

(max-density-of-events #:events events    
  #:key key)  number?
  events : vector?
  key : integer?
return max density of events at given key across given events, eg. where denisty is defined as event value at the key (eg kMagnitudeKey), divided by the duration of the event. So 300 licks in a 60 sec event has a higher density than 200 licks in a 60 sec event. Used for plotting event rectangles proportional to area on raster-plots.

procedure

(25%-of-events #:events events #:key key)  number?

  events : vector?
  key : integer?
find 25th and 75th percentile by finding median of points below or above the median (but NOT including the median itself)

procedure

(75%-of-events #:events events #:key key)  number?

  events : vector?
  key : integer?
find 25th and 75th percentile by finding median of points below or above the median (but NOT including the median itself)

procedure

(vector-of-event-vals #:events events    
  #:key key)  vector?
  events : vector?
  key : integer?
extract and return the values of the events for the given key as a vector

procedure

(histogram-from-events #:events events    
  #:key key    
  #:num-bins num-bins    
  #:max-val max-val    
  [#:min-val min-val])  vector?
  events : vector?
  key : integer?
  num-bins : positive-integer?
  max-val : number?
  min-val : number? = 0
return a vector of length num-bins, containing the number of event values at given key falling within the bins from min-val to max-val. Example: given events with values ’#(0 10 15 85 90 95 100) (histogram-from-events #:events #:num-bins 10 #:min-val 0 #:max-val 100)-> ’#(1 2 0 0 0 0 0 0 1 3)

procedure

(filter-events #:events events    
  #:key key    
  [#:min min    
  #:max max])  vector?
  events : vector?
  key : integer?
  min : number? = 0
  max : number? = 999999
given a vector timeseries of events, return a vector of only those events whose key value falls between min and max

procedure

(events-after #:events events    
  #:time timestamp    
  [#:window window])  vector?
  events : vector?
  timestamp : nonnegative-integer?
  window : nonnegative-integer? = 3600000
given a vector timeseries of events, return a vector of only those events which fall on or after the given timestamp (but within the given window)

procedure

(events-before #:events events    
  #:time timestamp    
  [#:window window])  vector?
  events : vector?
  timestamp : nonnegative-integer?
  window : nonnegative-integer? = 3600000
given a vector timeseries of events, return a vector of only those events which fall before (but not on) the given timestamp (but within the given window)

procedure

(nth-event-from-time #:events events    
  #:time timestamp    
  #:n n    
  [#:window window])  vector?
  events : vector?
  timestamp : nonnegative-integer?
  n : integer?
  window : nonnegative-integer? = 3600000
n > 0 -> event after timepoint, n < 0 event before time point

procedure

(n-events-from-time #:events events    
  #:time timestamp    
  #:n n    
  [#:window window])  vector?
  events : vector?
  timestamp : nonnegative-integer?
  n : integer?
  window : nonnegative-integer? = 3600000
get vector of n events before (if n < 0) or after (if n > 0) time point NB: need to set a max-window, because usually only want events before or after a time point that occur within a certain window, eg. within 12 hr or 24 hr otherwise, we get back an event that occured long before/event the timestamp. Window defaults to 1 hour.

procedure

(binned-event-vals #:events events    
  #:binsize binsize    
  [#:key key])  vector?
  events : vector?
  binsize : positive-integer?
  key : integer? = kMagnitudeKey
given a vector timeseries of events, return a vector of events in which the events are summed in discrete bins evenly spaced by binsize duration ie turn a vector of discrete, individually timestamped events into binned data the summed variable is defined by key (eg. sum the magnitudes of events, or sum the subevents) eg (binned-event-vals #:events lick-events0 #:key ’magnitude #:binsize 300000)

procedure

(cumulative-events #:events events    
  [#:key key])  vector?
  events : vector?
  key : integer? = kMagnitudeKey
for a given vector of events, return a vector in which, for each event, replace magnitude/numevents with sum of prior events the summed variable is defined by key (eg. sum the magnitudes of events, or sum the subevents) would be best to use with binned-events

procedure

(merge-event-series #:events-list events-list    
  [#:summate summate])  vector?
  events-list : list?
  summate : boolean? = #f
given list vectors of events, merge into single vector if individual events from 2 different vectors overlap, then merge into single event #:summate flag: #t determines if subvalues of merged events should be retained/added if #f, then all event magnitudes and subevents set to 1 and 0, respectively

procedure

(find-bouts #:events events    
  #:min-ibi min-ibi    
  [#:min-size min-size    
  #:size-key size-key])  vector?
  events : vector?
  min-ibi : nonnegative-integer?
  min-size : number? = 0
  size-key : integer? = kMagnitudeKey
given a timeseries vector of events and a minimum ibi, return a timeseries vector of all bouts in the timeseries

bouts are of any magnitude, duration, and event_count separated by the min-ibi, and filtered by min-size of the given size-key

a bout is a vector which describes of a series of events, with: a start timestamp (timestamp of first constitutent event) magnitude (sum of magnitudes of constiutent events), duration (time from start of first constituent event to end of last consitutent event), active_duration (sum of durations of constiutent events), a count of the number of events in the bout

find-bouts more functionionally? find all events that start a bout (ie have pre-IBI >= min-ibi) find all events that end a bout (ie have post-IBI >= min-ibi) merge all events that fall between a start-bout-event and an end-bout-event into a bout

given a vector events, find bouts of events (of any size or duration), where each bout is bracketed by an interbout interval >= min-ibi this is down by generating a vector of events with a PRE-interval >= min_ibi with (filter-pre-ibi #:events events #:min-ibi min-ibi), and a second vector of events with a POST-interval of >= min-ibi with (filter-pre-ibi #:events events #:min-ibi min-ibi) then merging the pairing and merging the 2 vectors of events with (pair-events #:events1 e1 #:events2 e2) and (merge-events-into-bout #:events events #:start-index index), so that each bout starts with a PRE-interval event and ends with a POST-interval event (and includes all the events in between as subevents of the bout). the bouts are then filtered by the given size-key (eg >= magnitude or >= duration) with (filter-minimum-size #:events events #:min-size min-size #:key size-key)