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 



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
 Parameters
dlc – dlc pqt object
threshold – likelihood threshold
 Returns
 get_speed(dlc, dlc_t, camera, feature='paw_r')[source]
 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