brainbox.behavior.dlc
Set of functions to deal with dlc data.
Functions
Get out features of interest for dlc 

Detect events from the dlc traces. 

Compute lick times from the tongue dlc points 

Estimates pupil diameter by taking median of different computations. 



Compute sniff times from the nose tip 

FIXME Document and add unit test! 

Wrapper to compute speed for a number of dlc features and add them to dlc table 

Set dlc points with likelihood less than threshold to nan. 

Plots histogramm of lick events aligned to feedback time, separate for correct and incorrect trials 

Plots lick raster for correct trials 

Plots mean motion energy of given cameras, aligned to stimulus onset. 

Plots histogram of pupil diameter aligned to simulus onset and feedback time. 

Plots speed histogram of a given dlc feature, aligned to stimulus onset, separate for correct and incorrect trials 

Plots dlc traces as scatter plots on a frame of the video. 

Plots wheel position across trials, color by which side was chosen 

 likelihood_threshold(dlc, threshold=0.9)[source]
Set dlc points with likelihood less than threshold to nan.
FIXME Add unit test.
 Parameters:
dlc – dlc pqt object
threshold – likelihood threshold
 Returns:
 get_speed(dlc, dlc_t, camera, feature='paw_r')[source]
FIXME Document and add unit test!
 Parameters:
dlc – dlc pqt table
dlc_t – dlc time points
camera – camera type e.g ‘left’, ‘right’, ‘body’
feature – dlc feature to compute speed over
 Returns:
 get_speed_for_features(dlc, dlc_t, camera, features=['paw_r', 'paw_l', 'nose_tip'])[source]
Wrapper to compute speed for a number of dlc features and add them to dlc table
 Parameters:
dlc – dlc pqt table
dlc_t – dlc time points
camera – camera type e.g ‘left’, ‘right’, ‘body’
features – dlc features to compute speed for
 Returns:
 get_feature_event_times(dlc, dlc_t, features)[source]
Detect events from the dlc traces. Based on the standard deviation between frames
 Parameters:
dlc – dlc pqt table
dlc_t – dlc times
features – features to consider
 Returns:
 get_licks(dlc, dlc_t)[source]
Compute lick times from the tongue dlc points
 Parameters:
dlc – dlc pqt table
dlc_t – dlc times
 Returns:
 get_sniffs(dlc, dlc_t)[source]
Compute sniff times from the nose tip
 Parameters:
dlc – dlc pqt table
dlc_t – dlc times
 Returns:
 get_dlc_everything(dlc_cam, camera)[source]
Get out features of interest for dlc
 Parameters:
dlc_cam – dlc object
camera – camera type e.g ‘left’, ‘right’
 Returns:
 get_pupil_diameter(dlc)[source]
Estimates pupil diameter by taking median of different computations.
The two most straightforward estimates: d1 = top  bottom, d2 = left  right In addition, assume the pupil is a circle and estimate diameter from other pairs of points
 Parameters:
dlc – dlc pqt table with pupil estimates, should be likelihood thresholded (e.g. at 0.9)
 Returns:
np.array, pupil diameter estimate for each time point, shape (n_frames,)
 get_smooth_pupil_diameter(diameter_raw, camera, std_thresh=5, nan_thresh=1)[source]
 Parameters:
diameter_raw – np.array, raw pupil diameters, calculated from (thresholded) dlc traces
camera – str (‘left’, ‘right’), which camera to run the smoothing for
std_thresh – threshold (in standard deviations) beyond which a point is labeled as an outlier
nan_thresh – threshold (in seconds) above which we will not interpolate nans, but keep them (for long stretches interpolation may not be appropriate)
 Returns:
 plot_trace_on_frame(frame, dlc_df, cam)[source]
Plots dlc traces as scatter plots on a frame of the video. For left and right video also plots whisker pad and eye and tongue zoom.
 Parameters:
frame – np.array, single video frame to plot on
dlc_df – pd.Dataframe, dlc traces with _x, _y and _likelihood info for each trace
cam – str, which camera to process (‘left’, ‘right’, ‘body’)
 Returns:
matplolib.axis
 plot_wheel_position(wheel_position, wheel_time, trials_df)[source]
Plots wheel position across trials, color by which side was chosen
 Parameters:
wheel_position – np.array, interpolated wheel position
wheel_time – np.array, interpolated wheel timestamps
trials_df – pd.DataFrame, with column ‘stimOn_times’ (time of stimulus onset times for each trial)
 Returns:
matplotlib.axis
 plot_lick_hist(lick_times, trials_df)[source]
Plots histogramm of lick events aligned to feedback time, separate for correct and incorrect trials
 Parameters:
lick_times – np.array, timestamps of lick events
trials_df – pd.DataFrame, with column ‘feedback_times’ (time of feedback for each trial) and ‘feedbackType’ (1 for correct, 1 for incorrect trials)
 Returns:
matplotlib axis
 plot_lick_raster(lick_times, trials_df)[source]
Plots lick raster for correct trials
 Parameters:
lick_times – np.array, timestamps of lick events
trials_df – pd.DataFrame, with column ‘feedback_times’ (time of feedback for each trial) and feedbackType (1 for correct, 1 for incorrect trials)
 Returns:
matplotlib.axis
 plot_motion_energy_hist(camera_dict, trials_df)[source]
Plots mean motion energy of given cameras, aligned to stimulus onset.
 Parameters:
camera_dict – dict, one key for each camera to be plotted (e.g. ‘left’), value is another dict with items ‘motion_energy’ (np.array, motion energy calculated from this camera) and ‘times’ (np.array, camera timestamps)
trials_df – pd.DataFrame, with column ‘stimOn_times’ (time of stimulus onset for each trial)
 Returns:
matplotlib.axis
 plot_speed_hist(dlc_df, cam_times, trials_df, feature='paw_r', cam='left', legend=True)[source]
Plots speed histogram of a given dlc feature, aligned to stimulus onset, separate for correct and incorrect trials
 Parameters:
dlc_df – pd.Dataframe, dlc traces with _x, _y and _likelihood info for each trace
cam_times – np.array, camera timestamps
trials_df – pd.DataFrame, with column ‘stimOn_times’ (time of stimulus onset for each trial)
feature – str, feature with trace in dlc_df for which to plot speed hist, default is ‘paw_r’
cam – str, camera to use (‘body’, ‘left’, ‘right’) default is ‘left’
legend – bool, whether to add legend to the plot, default is True
 Returns:
matplotlib.axis
 plot_pupil_diameter_hist(pupil_diameter, cam_times, trials_df, cam='left')[source]
Plots histogram of pupil diameter aligned to simulus onset and feedback time.
 Parameters:
pupil_diameter – np.array, (smoothed) pupil diameter estimate
cam_times – np.array, camera timestamps
trials_df – pd.DataFrame, with column ‘stimOn_times’ (time of stimulus onset for each trial) and feedback_times (time of feedback for each trial)
cam – str, camera to use (‘body’, ‘left’, ‘right’) default is ‘left’
 Returns:
matplotlib.axis