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 |
(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
|
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
(sum-of-events #:events events #:key key) → number?
|
events : vector? |
key : integer? |
return sum of given key across given events, eg. sum of kMagnitudeKey
(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
|
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
(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
|
events : vector? |
key : integer? |
return median of given key across given events, eg. median of kMagnitudeKey
(max-of-events #:events events #:key key) → number?
|
events : vector? |
key : integer? |
return max of given key across given events, eg. max of kMagnitudeKey
|
events : vector? |
key : integer? |
return the last time , which is max timestamp + event duration; key is ignored
(min-of-events #:events events #:key key) → number?
|
events : vector? |
key : integer? |
return min of given key across given events, eg. min of kMagnitudeKey
|
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.
(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)
(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)
|
events : vector? |
key : integer? |
extract and return the values of the events for the given key as a vector
(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)
(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
(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)
(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)
|
events : vector? |
timestamp : nonnegative-integer? |
n : integer? |
window : nonnegative-integer? = 3600000 |
n > 0 -> event after timepoint, n < 0 event before time point
|
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.
|
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)
|
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
|
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
(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)