# Neural and behavioral data from: A dynamic sequence of visual processing initiated by gaze shifts

## Data files

## Abstract

Animals move their head and eyes as they explore and sample the visual scene. Previous studies have demonstrated neural correlates of head and eye movements in rodent primary visual cortex (V1), but the sources and computational roles of these signals are unclear. We addressed this by combining measurement of head and eye movements with high density neural recordings in freely moving mice. V1 neurons responded primarily to gaze shifts, where head movements are accompanied by saccadic eye movements, rather than to head movements where compensatory eye movements stabilize gaze. A variety of activity patterns immediately followed gaze shifts, including units with positive, biphasic, or negative responses, and together these responses formed a temporal sequence following the gaze shift. These responses were greatly diminished in the dark for the vast majority of units, replaced by a uniform suppression of activity, and were similar to those evoked by sequentially flashed stimuli in head-fixed conditions, suggesting that gaze shift transients represent the temporal response to the rapid onset of new visual input. Notably, neurons responded in a sequence that matches their spatial frequency preference, from low to high spatial frequency tuning, consistent with coarse-to-fine processing of the visual scene following each gaze shift. Recordings in foveal V1 of freely gazing head-fixed marmosets revealed a similar sequence of temporal response following a saccade, as well as the progression of spatial frequency tuning. Together, our results demonstrate that active vision in both mice and marmosets consists of a dynamic temporal sequence of neural activity associated with visual sampling.

## README: A dynamic sequence of visual processing initiated by gaze shifts

For a detailed description of experimental and analysis methods, see the publication:

Parker PRL, Martins DM, Leonard ESP, Casey NM, Sharp SL, Abe ETT, Smear MC, Yates JL, Mitchell JF, & Niell CM. (2023). *Nature Neuroscience.* A dynamic sequence of visual processing initiated by gaze shifts.

### Data and file structure

The data are formatted as a single HDF5 file. The file contains four groups of experiments:

- Head-fixed / freely moving mice ("hffm.h5")
- Freely moving mice in the light vs. dark ("ltdk.h5")
- Head-fixed flashed stimuli ("hffl.h5")
- Freely gazing marmosets ("marm.h5")

#### Mouse data

These keys are used in "hffm.h5", "ltdk.h5" and "hffl.h5".

##### Keys across stimuli

Name | Type | Shape | Description |
---|---|---|---|

`_index` |
`int` |
() | Origional index of the unit in the dataframe |

`session` |
`str` |
() | Session name, e.g., '010101_NAME_CONDITION_RIG' |

`Probe_channel` |
`int64` |
() | Probe channel number |

`Probe_shank` |
`int64` |
() | Which shank of the probe the cell was recorded from. |

`Phy2_label` |
`str` |
() | 'good', 'mua' (multi-unit activity) or 'noise' labels from Phy2. |

`Spike_waveform` |
`list` |
(61,) | Spike waveform. |

`Afterhyperpolarization` |
`np.float` |
() | Afterhyperpolarization amplitude. |

`Putative_cell_type` |
`str` |
() | Putative cell type, based on waveform shape, either 'exc' for excitatory or 'inh' for inhibitory. |

`best_ellipse_fit_m` |
`np.float` |
() | Best fit ellipse fit slope. |

`best_ellipse_fit_r` |
`np.float` |
() | Best fit ellipse fit r2. |

`dsi_for_sf_pref` |
`np.float` |
() | Direction selectivity index for the preferred spatial frequency. |

`fires_2sp_sec` |
`np.float` |
() | Firing rate during gaze shifts. |

`gazecluster` |
`np.float` |
() | Cluster label for gaze shifts. |

`gazeshift_DSI` |
`np.float` |
() | Direction selectivity index for gaze shifts. |

`gazeshift_responsive` |
`np.float` |
() | Whether or not the cell was responsive during gaze shifts. |

`grat_psth_drop` |
`np.float` |
() | Drop in firing rate during gratings. |

`grat_speed_dps` |
`np.float` |
() | Speed of the gratings in deg/sec. |

`has_dark` |
`bool` |
() | Whether or not the recording has a freely moving dark stimulus. |

`has_hf` |
`bool` |
() | Whether or not the recording has a head-fixed stimulus. |

`has_optic_flow` |
`bool` |
() | Whether or not the recording has an optic flow stimulus. |

`index` |
`int` |
() | Index of the unit in the dataframe |

`mod_at_pref_peak` |
`np.float` |
() | Modulation at the preferred peak. |

`movement_responsive` |
`np.float` |
() | Whether or not the cell was responsive during movement. |

`nonpref_comp_psth` |
`np.ndarray` |
(2001,) | Non-preferred component PSTH. |

`nonpref_comp_psth_FmDk` |
`np.ndarray` |
(2001,) | Non-preferred component PSTH, aligned to the start of the dark stimulus. |

`nonpref_comp_psth_raw` |
`np.ndarray` |
(2001,) | Non-preferred component PSTH, aligned to the start of the dark stimulus, without correcting for drift and offset in data aquisition. |

`nonpref_gazeshift_direction` |
`np.float` |
() | Non-preferred gaze shift direction. |

`nonpref_gazeshift_psth` |
`np.ndarray` |
(2001,) | Non-preferred gaze shift PSTH. |

`nonpref_gazeshift_psth_FmDk` |
`np.ndarray` |
(2001,) | Non-preferred gaze shift PSTH, aligned to the start of the dark stimulus. |

`nonpref_gazeshift_psth_raw` |
`np.ndarray` |
(2001,) | Non-preferred gaze shift PSTH, aligned to the start of the dark stimulus, without correcting for drift and offset in data aquisition. |

`norm_gratings_psth` |
`np.ndarray` |
(2001,) | Normalized gratings PSTH. |

`norm_mod_at_pref_peak` |
`float` |
() | Normalized modulation at the preferred direction's peak. |

`norm_mod_for_Gt` |
`float` |
() | Normalized modulation for gratings. |

`norm_mod_for_Rc` |
`float` |
() | Normalized modulation for reversing checkerboard. |

`norm_mod_for_Sn` |
`float` |
() | Normalized modulation for sparse noise. |

`norm_ori_tuning_high` |
`np.array` |
(8,) | High spatial frequency orientation tuning curve. |

`norm_ori_tuning_low` |
`np.array` |
(8,) | Low spatial frequency orientation tuning curve. |

`norm_ori_tuning_mid` |
`np.array` |
(8,) | Mid spatial frequency orientation tuning curve. |

`norm_waveform` |
`np.ndarray` |
(61,) | Normalized waveform. |

`osi_for_sf_pref` |
`float` |
() | Orientation selectivity index for the preferred spatial frequency. |

`pref_comp_direction` |
`str` |
() | Preferred component direction. |

`pref_comp_psth` |
`np.ndarray` |
(2001,) | Preferred component PSTH. |

`pref_comp_psth_FmDk` |
`np.ndarray` |
(2001,) | Preferred component PSTH, aligned to the start of the dark stimulus. |

`pref_comp_psth_raw` |
`np.ndarray` |
(2001,) | Preferred component PSTH, aligned to the start of the dark stimulus, without correcting for drift and offset in data aquisition. |

`pref_gazeshift_direction` |
`str` |
() | Preferred gaze shift direction. |

`pref_gazeshift_psth` |
`np.ndarray` |
(2001,) | Preferred gaze shift PSTH. |

`pref_gazeshift_psth_FmDk` |
`np.ndarray` |
(2001,) | Preferred gaze shift PSTH, aligned to the start of the dark stimulus. |

`pref_gazeshift_psth_for_kmeans` |
`np.ndarray` |
(2001,) | Preferred gaze shift PSTH for k-means clustering, with unresponsive cells set to array of zeros to seed unresponsive cluster. |

`pref_gazeshift_psth_raw` |
`np.ndarray` |
(2001,) | Gaze shift PSTH in the preferred direction, not normalized. |

`pref_intersacc_psth` |
`np.ndarray` |
(2001,) | Preferred intersaccade PSTH. |

`pref_psth_baseline_slope` |
`np.float` |
() | Slope of the baseline firing rate during the preferred direction of gaze shifts. |

`probe_name` |
`str` |
Model of ephys probe used. | |

`raw_mod_at_pref_peak` |
`np.float` |
() | Raw modulation at the preferred direction's peak. |

`raw_mod_for_Gt` |
`np.float` |
() | Raw modulation for gratings. |

`raw_mod_for_Rc` |
`np.float` |
() | Raw modulation for reversing checkerboard. |

`raw_mod_for_Sn` |
`np.float` |
() | Raw modulation for sparse noise. |

`responsive_to_contrast` |
`bool` |
() | Whether or not the cell was responsive to contrast. |

`responsive_to_gratings` |
`bool` |
() | Whether or not the cell was responsive to gratings. |

`sf_pref_cpd` |
`np.float` |
() | Spatial frequency preference in cycles per degree. |

`t0` |
`np.float` |
() | Time of the first spike across merged recordings. |

`tf_pref_cps` |
`np.float` |
() | Temporal frequency preference in cycles per second. |

`use_in_dark_analysis` |
`bool` |
() | Whether or not the cell was used in the dark analysis. |

`use_in_optic_flow` |
`bool` |
() | Whether or not the cell was used in the optic flow analysis. |

`waveform_km_label` |
`int` |
() | K-means cluster label for waveform. |

`waveform_trough_width` |
`np.float` |
() | Width of the trough of the waveform. |

##### Freely moving condition

Name | Type | Shape | Description |
---|---|---|---|

`FmLt_n_spikes` |
`int64` |
() | Number of spikes in the recording. |

`FmLt_t0` |
`float64` |
() | Time of the first spike, in units of seconds. This is the time of day, and used to align recordings. |

`FmLt_imuT` |
`ndarray` |
(N,) | IMU timestamps relative to `FmLt_t0` . Values from before the first ephys spike are negative. |

`FmLt_eyeT` |
`ndarray` |
(N,) | Eye camera timestamps relative to `FmLt_t0` . Values from before the first ephys spike are negative. |

`FmLt_topT` |
`ndarray` |
(N, ) | Topdown camera timerstamps relative to `FmLt_t0` . Values before the first ephys spike are negative. |

`FmLt_worldT` |
`ndarray` |
(N,) | World camera timestamps relative to `FmLt_t0` . Values from before the first ephys spike are negative. |

`FmLt_spikeT` |
`ndarray` |
(n_spikes,) | Spike times, in units of seconds. |

`FmLt_spikeTraw` |
`list` |
(n_spikes,) | Spike times, in units of seconds. This is without correcting the drift and offset in data aquisition. |

`FmLt_rate` |
`ndarray` |
(`len(modelT)` ,) |
Spike rate for all stimuli in sp/s and aligned to `FmLT_modelT` |

`FmLt_gyro_x` |
`ndarray` |
(`len(imuT)` ,) |
IMU x gyro data. |

`FmLt_gyro_y` |
`ndarray` |
(`len(imuT)` ,) |
IMU y gyro data. |

`FmLt_gyro_z` |
`ndarray` |
(`len(imuT)` ,) |
IMU z gyro data. |

`FmLt_roll` |
`ndarray` |
(`len(imuT)` ,) |
Roll of head orientation at each time point, in units of deg. |

`FmLt_pitch` |
`ndarray` |
(`len(imuT)` ,) |
Pitch of head orientation at each time point, in units of deg. |

`FmLt_dHead` |
`ndarray` |
(`len(eyeT)` ,) |
Head velocity in the z-axis. |

`FmLt_theta` |
`ndarray` |
(`len(eyeT)` ,) |
Horizontal eye position in deg. Length N is `len(FmLt_imuT)` |

`FmLt_phi` |
`ndarray` |
(`len(eyeT)` ,) |
Vertical eye position in deg. |

`FmLt_dEye` |
`ndarray` |
(`len(eyeT)-1` ,) |
Horizontal eye velocity in deg/sec. |

`FmLt_dEye_dpf` |
`ndarray` |
(`len(eyeT)-1` ,) |
Horizontal eye velocity in deg/frame. |

`FmLt_dGaze` |
`ndarray` |
(`len(eyeT)-1` ) |
Horizontal gaze velcocity in deg/sec, where gaze is defined as dEye + dHead. |

`FmLt_head_yaw` |
`ndarray` |
(`len(topT)` ,) |
Head yaw in deg, from the topdown camera. Calculated as the line tangent to the angle between its ears. 0 deg is the rightwards horizontal in the view of the topdown camera. |

`FmLt_body_yaw` |
`ndarray` |
(`len(topT)` ,) |
Body yaw in deg, from the topdown camera. Calculated as the angle between its neck and the base of its tail. 0 deg is the rightwards horizontal in the view of the topdown camera. |

`FmLt_movement_vector_yaw` |
`ndarray` |
(`len(topT)` ,) |
Movement yaw in deg, from the topdown camera. Calculated as the angle between its velocity vector and the horizontal. 0 deg is the rightwards horizontal in the view of the topdown camera. |

`FmLt_saccade_rightPSTH` |
`ndarray` |
(2001,) | PSTH for rightward saccades. |

`FmLt_saccade_leftPSTH` |
`ndarray` |
(2001,) | PSTH for leftward saccades. |

`FmLt_compensatory_right_saccPSTH` |
`ndarray` |
(2001,) | PSTH for rightwards compensatory eye/head movements. |

`FmLt_compensatory_left_saccPSTH` |
`ndarray` |
(2001,) | PSTH for leftwards compensatory eye/head movements. |

`FmLt_gazeshift_left_saccPSTH` |
`ndarray` |
(2001,) | PSTH for leftwards gaze shifts. |

`FmLt_gazeshift_right_saccPSTH` |
`ndarray` |
(2001,) | PSTH for rightwards gaze shifts. |

`FmLt_saccade_right_saccT` |
`ndarray` |
(N,) | Saccade times to the right for all eye/head movements. Size N is the number of this type of eye movement that happened during the recording. |

`FmLt_saccade_left_saccT` |
`ndarray` |
(N,) | Saccade times to the left for all eye/head movements. Size N is the number of this type of eye movement that happened during the recording. |

`FmLt_compensatory_righ_sacc_T` |
`ndarray` |
(N,) | Rightwards compensatory eye/head movemement times. Size N is the number of this type of eye movement that happened during the recording. |

`FmLt_compensatory_left_saccT` |
`ndarray` |
(N,) | Leftwards compensatory eye/head movemement times. Size N is the number of this type of eye movement that happened during the recording. |

`FmLt_gazeshift_left_saccT` |
`ndarray` |
(N,) | Leftwards gaze shift times. Size N is the number of this type of eye movement that happened during the recording. |

`FmLt_gazeshift_right_saccT` |
`ndarray` |
(N,) | Rightwards gaze shift times. Size N is the number of this type of eye movement that happened during the recording. |

`FmLt_spike_triggered_average` |
`ndarray` |
(60, 80) | Spike triggered average. |

`FmLt_spike_triggered_variance` |
`ndarray` |
(60, 80) | Spike triggered variance. |

`FmLt_contrast_tuning_bins` |
`ndarray` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`FmLt_contrast_tuning` |
`ndarray` |
(11,) | Contrast tuning curve. |

`FmLt_contrast_tuning_err` |
`ndarray` |
(11,) | Contrast tuning curve error at each bin. |

`FmLt_pupilradius_tuning_bins` |
`ndarray` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_pupilradius_tuning` |
`ndarray` |
(9,) | Pupil radius tuning curve. |

`FmLt_pupilradius_tuning_err` |
`ndarray` |
(9,) | Pupil radius tuning curve error at each bin. |

`FmLt_theta_tuning_bins` |
`ndarray` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_theta_tuning` |
`ndarray` |
(9,) | Theta tuning curve. |

`FmLt_theta_tuning_err` |
`ndarray` |
(9,) | Theta tuning curve error at each bin. |

`FmLt_phi_tuning_bins` |
`ndarray` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_phi_tuning` |
`ndarray` |
(9,) | Phi tuning curve. |

`FmLt_phi_tuning_err` |
`ndarray` |
(9,) | Phi tuning curve error at each bin. |

`FmLt_gyrox_tuning_bins` |
`ndarray` |
(9,) | Gyro x tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_gyrox_tuning` |
`ndarray` |
(9,) | Gyro x tuning curve. |

`FmLt_gyrox_tuning_err` |
`ndarray` |
(9,) | Gyro x tuning curve error at each bin. |

`FmLt_gyroy_tuning_bins` |
`ndarray` |
(9,) | Gyro y tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_gyroy_tuning` |
`ndarray` |
(9,) | Gyro y tuning curve. |

`FmLt_gyroy_tuning_err` |
`ndarray` |
(9,) | Gyro y tuning curve error at each bin. |

`FmLt_gyroz_tuning_bins` |
`ndarray` |
(9,) | Gyro z tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_gyroz_tuning` |
`ndarray` |
(9,) | Gyro z tuning curve. |

`FmLt_gyroz_tuning_err` |
`ndarray` |
(9,) | Gyro z tuning curve error at each bin. |

`FmLt_roll_tuning_bins` |
`ndarray` |
(9,) | Roll tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_roll_tuning` |
`ndarray` |
(9,) | Roll tuning curve. |

`FmLt_roll_tuning_err` |
`ndarray` |
(9,) | Roll tuning curve error at each bin. |

`FmLt_pitch_tuning_bins` |
`ndarray` |
(9,) | Pitch tuning curve bins. Each of these is the bin center (not the edge). |

`FmLt_pitch_tuning` |
`ndarray` |
(9,) | Pitch tuning curve. |

`FmLt_pitch_tuning_err` |
`ndarray` |
(9,) | Pitch tuning curve error at each bin. |

`FmLt_running_speed` |
`ndarray` |
(`len(topT)` ,) |
Speed of the animal from topdown camera, in units of cm/sec. |

`FmLt_is_running_forward` |
`ndarray` |
(`len(topT)` ,) |
Bool array of whether or not the animal was running forward, defined as the animal running > 2 cm/sec while oriented so that the direction of locomotion is < +/-40 deg different from the orientation of its body. |

`FmLt_is_running_backward` |
`ndarray` |
(`len(topT)` ,) |
Bool array of whether or not the animal was running backward, defined as the animal running > 2 cm/sec while oriented so that the direction of locomotion is > +/-40 deg different from the tangent of the orientation of its body. |

`FmLt_is_fine_motion` |
`ndarray` |
(`len(topT)` ,) |
Bool array of whether or not the animal was moving > 2 cm/sec but was not running forward or backward. |

`FmLt_is_stationary` |
`ndarray` |
(`len(topT)` ,) |
Bool array of whether or not the animal was not moving < 2 cm/sec, i.e., nearly stationary. |

`FmLt_active_fr` |
`float64` |
() | Average firing rate during active periods. |

`FmLt_inactive_fr` |
`float64` |
() | Average firing rate during inactive periods. |

`FmLt_gazeshift_baseline` |
`np.array` |
(800) | Baseline firing rate during gaze shifts. |

`FmLt_gazeshift_med_baseline` |
`np.array` |
(800) | Median baseline firing rate during gaze shifts. |

`FmLt_gazeshift_peakT` |
`float64` |
() | Time of peak firing rate during gaze shifts. |

`FmLt_gazeshift_peak_val` |
`float64` |
() | Peak firing rate during gaze shifts. |

`FmLt_gazeshift_troughT` |
`float64` |
() | Time of trough firing rate during gaze shifts. |

`FmLt_gazeshift_zscore` |
`float64` |
() | Z-score of firing rate during gaze shifts. |

`FmLt_intersacc_left_saccPSTH_dHead1` |
`np.array` |
(2001) | PSTH for leftwards saccades which are between the criteria for gaze shifts versus compensatory movements. |

`FmLt_intersacc_right_saccPSTH_dHead1` |
`np.array` |
(2001) | PSTH for rightwards saccades which are between the criteria for gaze shifts versus compensatory movements. |

`FmLt_gyrox_modind` |
`float64` |
() | Modulation index for gyro x. |

`FmLt_gyroy_modind` |
`float64` |
() | Modulation index for gyro y. |

`FmLt_gyroz_modind` |
`float64` |
() | Modulation index for gyro z. |

`FmLt_pitch_modind` |
`float64` |
() | Modulation index for pitch. |

`FmLt_roll_modind` |
`float64` |
() | Modulation index for roll. |

`FmLt_theta_modind` |
`float64` |
() | Modulation index for theta. |

`FmLt_phi_modind` |
`float64` |
() | Modulation index for phi. |

`Fm_fr` |
`float64` |
() | Average firing rate. |

##### Gratings stimulus

Name | Type | Shape | Description |
---|---|---|---|

`Gt_PSTH` |
`np.array` |
(3001,) | PSTH for onset of gratings stimulus. |

`Gt_ballspeed` |
`np.array` |
(`len(ballT)` ,) |
Treadmill speed, in units of cm/sec. |

`Gt_ballspeed_tuning_bins` |
`np.array` |
(11,) | Ball speed tuning curve bins. Each of these is the bin center (not the edge). |

`Gt_ballspeed_tuning` |
`np.array` |
(11,) | Ball speed tuning curve. |

`Gt_ballspeed_tuning_err` |
`np.array` |
(11,) | Ball speed tuning curve error at each bin. |

`Gt_best_direction` |
`float64` |
() | Direction of the grating that evoked the highest firing rate. |

`Gt_best_orientation` |
`float64` |
() | Orientation of the grating that evoked the highest firing rate. |

`Gt_contrast` |
`np.array` |
(`len(worldT)` ,) |
Contrast of the stimulus at each time point, aquired through the worldcam. |

`Gt_contrast_tuning_bins` |
`np.array` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`Gt_contrast_tuning` |
`np.array` |
(11,) | Contrast tuning curve. |

`Gt_contrast_tuning_err` |
`np.array` |
(11,) | Contrast tuning curve error at each bin. |

`Gt_dEye` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/sec. |

`Gt_dEye_dpf` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/frame. |

`Gt_dsi_high` |
`float64` |
() | Direction selectivity index for high SF. |

`Gt_dsi_low` |
`float64` |
() | Direction selectivity index for low SF. |

`Gt_dsi_mid` |
`float64` |
() | Direction selectivity index for mid SF. |

`Gt_evoked_rate` |
`float64` |
() | Evoked firing rate during the stimulus. |

`Gt_eyeT` |
`np.array` |
(`len(eyeT)` ,) |
Eye camera timestamps relative to `Gt_t0` . Values from before the first ephys spike are negative. |

`Gt_fr` |
`float64` |
() | Average firing rate. |

`Gt_leftsacc_avg` |
`np.array` |
(2001,) | Average PSTH for leftward saccades. |

`Gt_n_spikes` |
`int64` |
() | Number of spikes during all stimuli combined. |

`Gt_norm_PSTH` |
`np.array` |
(3001,) | Normalized PSTH. |

`Gt_tuning` |
`np.array` |
(8, 3, 2) | Gratings tuning with shape (orientation, SF, TF). |

`Gt_osi_high` |
`float64` |
() | Orientation selectivity index for high SF. |

`Gt_osi_low` |
`float64` |
() | Orientation selectivity index for low SF. |

`Gt_osi_mid` |
`float64` |
() | Orientation selectivity index for mid SF. |

`Gt_phi` |
`np.array` |
(`len(eyeT)` ,) |
Phi position of the head, in units of degrees. |

`Gt_phi_tuning` |
`np.array` |
(9,) | Phi tuning curve. |

`Gt_phi_tuning_bins` |
`np.array` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`Gt_phi_tuning_err` |
`np.array` |
(9,) | Phi tuning curve error at each bin. |

`Gt_pupilradius_tuning` |
`np.array` |
(9,) | Pupil radius tuning curve. |

`Gt_pupilradius_tuning_bins` |
`np.array` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`Gt_pupilradius_tuning_err` |
`np.array` |
(9,) | Pupil radius tuning curve error at each bin. |

`Gt_rate` |
`np.array` |
(N,) | Spike rate for all stimuli interpolated to `modelT` . |

`Gt_responsive` |
`bool` |
() | Whether or not the cell was responsive to the stimulus. |

`Gt_rightsacc_avg` |
`np.array` |
(2001,) | Average PSTH for rightward saccades. |

`Gt_spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`Gt_spikeTraw` |
`list` |
(N,) | Spike times, in units of seconds. This is without correcting the drift and offset in data aquisition. |

`Gt_spike_triggered_average` |
`np.array` |
(60, 80) | Spike triggered average. |

`Gt_spike_triggered_variance` |
`np.array` |
(60, 80) | Spike triggered variance. |

`Gt_spontaneous_rate` |
`float64` |
() | Spontaneous firing rate. |

`Gt_theta` |
`np.array` |
(`len(eyeT)` ,) |
Theta position of the head, in units of degrees. |

`Gt_theta_tuning` |
`np.array` |
(9,) | Theta tuning curve. |

`Gt_theta_tuning_bins` |
`np.array` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`Gt_theta_tuning_err` |
`np.array` |
(9,) | Theta tuning curve error at each bin. |

##### Reversing checkerboard stimulus

Name | Type | Shape | Description |
---|---|---|---|

`Rc_ballspeed` |
`np.array` |
(`len(ballT)` ,) |
Treadmill speed, in units of cm/sec. |

`Rc_ballspeed_tuning_bins` |
`np.array` |
(11,) | Ball speed tuning curve bins. Each of these is the bin center (not the edge). |

`Rc_ballspeed_tuning` |
`np.array` |
(11,) | Ball speed tuning curve. |

`Rc_ballspeed_tuning_err` |
`np.array` |
(11,) | Ball speed tuning curve error at each bin. |

`Rc_ch_center_of_layer_4` |
`list` |
(2,) or (4,) | Center of layer 4 for each shank. |

`Rc_ch_lfp_relative_depth` |
`list` |
(2,) or (4,) | Relative depth of each shank in um. |

`Rc_contrast` |
`np.array` |
(`len(worldT)` ,) |
Contrast of the stimulus at each time point, aquired through the worldcam. |

`Rc_contrast_tuning` |
`np.array` |
(11,) | Contrast tuning curve. |

`Rc_contrast_tuning_bins` |
`np.array` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`Rc_contrast_tuning_err` |
`np.array` |
(11,) | Contrast tuning curve error at each bin. |

`Rc_current_source_density` |
`np.array` |
(n_channels, 18000) | Current source density for each shank. |

`Rc_dEye_dpf` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/frame. |

`Rc_depth_from_layer4` |
`float` |
() | Depth of the cell from layer 4 in um. |

`Rc_eyeT` |
`np.array` |
(`len(eyeT)` ,) |
Eye camera timestamps relative to `Rc_t0` . Values from before the first ephys spike are negative. |

`Rc_fr` |
`float64` |
() | Average firing rate. |

`Rc_gaze_max_cc` |
`float64` |
() | Maximum cross correlation between the freely moving gaze shift PSTH and the response to Rc stimulus onset. |

`Rc_layer5cent_from_lfp` |
`float` |
() | Distance from layer 5 to the center of the LFP shank in um. |

`Rc_leftsacc_avg` |
`np.array` |
(2001,) | Average PSTH for leftward saccades. |

`Rc_n_spikes` |
`float` |
() | Number of spikes during all stimuli combined. |

`Rc_norm_PSTH` |
`np.array` |
(2001,) | Normalized PSTH. |

`Rc_peak_time` |
`float64` |
() | Time of peak firing rate. |

`Rc_phi` |
`np.array` |
(`len(eyeT)` ,) |
Phi position of the head, in units of degrees. |

`Rc_phi_tuning` |
`np.array` |
(9,) | Phi tuning curve. |

`Rc_phi_tuning_bins` |
`np.array` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`Rc_phi_tuning_err` |
`np.array` |
(9,) | Phi tuning curve error at each bin. |

`Rc_psth` |
`np.array` |
(2001,) | PSTH for onset of Rc stimulus. |

`Rc_pupilradius_tuning` |
`np.array` |
(9,) | Pupil radius tuning curve. |

`Rc_pupilradius_tuning_bins` |
`np.array` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`Rc_pupilradius_tuning_err` |
`np.array` |
(9,) | Pupil radius tuning curve error at each bin. |

`Rc_rate` |
`np.array` |
(N,) | Spike rate for all stimuli interpolated to `modelT` . |

`Rc_relative_depth` |
`float` |
() | Relative depth of the cell in um. |

`Rc_responsive` |
`bool` |
() | Whether or not the cell was responsive to the stimulus. |

`Rc_rightsacc_avg` |
`np.array` |
(2001,) | Average PSTH for rightward saccades. |

`Rc_spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`Rc_spikeTraw` |
`list` |
(N,) | Spike times, in units of seconds. This is without correcting the drift and offset in data aquisition. |

`Rc_spike_triggered_average` |
`np.array` |
(60, 80) | Spike triggered average. |

`Rc_spike_triggered_variance` |
`np.array` |
(60, 80) | Spike triggered variance. |

`Rc_theta` |
`np.array` |
(`len(eyeT)` ,) |
Theta position of the head, in units of degrees. |

`Rc_theta_tuning` |
`np.array` |
(9,) | Theta tuning curve. |

`Rc_theta_tuning_bins` |
`np.array` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`Rc_theta_tuning_err` |
`np.array` |
(9,) | Theta tuning curve error at each bin. |

`raw_mod_for_Rc` |
`float64` |
() | Raw modulation index for Rc stimulus. Only exists for the hffl dataset. |

`norm_mod_for_Rc` |
`float64` |
() | Normalized modulation index for Rc stimulus. Only exists for the hffl dataset. |

##### Sparse noise stimulus

Name | Type | Shape | Description |
---|---|---|---|

`Sn_PSTH` |
`np.array` |
(2001,) | PSTH for onset of white noise stimulus. |

`Sn_ballspeed` |
`np.array` |
(`len(ballT)` ,) |
Treadmill speed, in units of cm/sec. |

`Sn_ballspeed_tuning_bins` |
`np.array` |
(11,) | Ball speed tuning curve bins. Each of these is the bin center (not the edge). |

`Sn_ballspeed_tuning` |
`np.array` |
(11,) | Ball speed tuning curve. |

`Sn_ballspeed_tuning_err` |
`np.array` |
(11,) | Ball speed tuning curve error at each bin. |

`Sn_contrast` |
`np.array` |
(`len(worldT)` ,) |
Contrast of the stimulus at each time point, aquired through the worldcam. |

`Sn_contrast_tuning` |
`np.array` |
(11,) | Contrast tuning curve. |

`Sn_contrast_tuning_bins` |
`np.array` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`Sn_contrast_tuning_err` |
`np.array` |
(11,) | Contrast tuning curve error at each bin. |

`Sn_dEye` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/sec. |

`Sn_dEye_dpf` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/frame. |

`Sn_eyeT` |
`np.array` |
(`len(eyeT)` ,) |
Eye camera timestamps relative to `Sn_t0` . Values from before the first ephys spike are negative. |

`Sn_fr` |
`float64` |
() | Average firing rate. |

`Sn_gaze_max_cc` |
`float64` |
() | Maximum cross correlation between the freely moving gaze shift PSTH and the response to Sn stimulus onset. |

`Sn_leftsacc_avg` |
`np.array` |
(2001,) | Average PSTH for leftward saccades. |

`Sn_n_spikes` |
`float` |
() | Number of spikes during all stimuli combined. |

`Sn_norm_PSTH` |
`np.array` |
(2001,) | Normalized PSTH. |

`Sn_peak_time` |
`float64` |
() | Time of peak firing rate. |

`Sn_phi` |
`np.array` |
(`len(eyeT)` ,) |
Phi position of the head, in units of degrees. |

`Sn_phi_tuning` |
`np.array` |
(9,) | Phi tuning curve. |

`Sn_phi_tuning_bins` |
`np.array` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`Sn_phi_tuning_err` |
`np.array` |
(9,) | Phi tuning curve error at each bin. |

`Sn_pupilradius_tuning` |
`np.array` |
(9,) | Pupil radius tuning curve. |

`Sn_pupilradius_tuning_bins` |
`np.array` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`Sn_pupilradius_tuning_err` |
`np.array` |
(9,) | Pupil radius tuning curve error at each bin. |

`Sn_rate` |
`np.array` |
(N,) | Spike rate for all stimuli interpolated to `modelT` . |

`Sn_responsive` |
`bool` |
() | Whether or not the cell was responsive to the stimulus. |

`Sn_rightsacc_avg` |
`np.array` |
(2001,) | Average PSTH for rightward saccades. |

`Sn_spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`Sn_spikeTraw` |
`list` |
(N,) | |

`Sn_spike_triggered_average` |
`np.array` |
(60, 80) | Spike triggered average. |

`Sn_spike_triggered_variance` |
`np.array` |
(60, 80) | Spike triggered variance. |

`Sn_theta` |
`np.array` |
(`len(eyeT)` ,) |
Theta position of the head, in units of degrees. |

`Sn_theta_tuning` |
`np.array` |
(9,) | Theta tuning curve. |

`Sn_theta_tuning_bins` |
`np.array` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`Sn_theta_tuning_err` |
`np.array` |
(9,) | Theta tuning curve error at each bin. |

`Sn_Amplitude` |
`np.array` |
(N,) | Spike amplitude. |

`Sn_ContamPct` |
`float64` |
() | Spike contamination percentage. |

`Sn_KSLabel` |
`str` |
() | Spike label. |

`Sn_amp` |
`np.array` |
(N,) | Spike amplitude. |

`Sn_ch` |
`np.array` |
(N,) | Spike channel. |

`Sn_depth` |
`float` |
() | Depth of the cell in um. |

`Sn_group` |
`np.array` |
(N,) | Spike group. |

`Sn_t0` |
`float64` |
() | Time of first spike. |

`Sn_waveform` |
`np.array` |
(N, 48) | Spike waveform. |

`Sn_sh` |
`np.array` |
(N,) | Spike shank. |

`Sn_saccade_rightT` |
`ndarray` |
(N,) | Rightwards saccade times. Size N is the number of this type of eye movement that happened during the recording. |

`Sn_saccade_leftT` |
`ndarray` |
(N,) | Leftwards saccade times. Size N is the number of this type of eye movement that happened during the recording. |

`Sn_saccade_rightPSTH` |
`ndarray` |
(2001,) | PSTH for rightwards saccades. |

`Sn_saccade_leftPSTH` |
`ndarray` |
(2001,) | PSTH for leftwards saccades. |

`Sn_worldT` |
`np.array` |
(`len(worldT)` ,) |
World camera timestamps relative to `Sn_t0` . Values from before the first ephys spike are negative. |

`Sn_stim_PSTH_onSub_all` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed. |

`Sn_stim_PSTH_onSub_darkRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed to a dark patch. |

`Sn_stim_PSTH_onSub_lightRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed to a light patch. |

`Sn_stim_PSTH_onSub_bckgndRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus everywhere except the unit's 'ON' receptive field changed. |

`Sn_stim_PSTH_offSub_all` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed. |

`Sn_stim_PSTH_offSub_darkRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed to a dark patch. |

`Sn_stim_PSTH_offSub_lightRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed to a light patch. |

`Sn_stim_PSTH_offSub_bckgndRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus everywhere except the unit's 'OFF' receptive field changed. |

`Sn_approx_onSub_RF_coords` |
`np.array` |
(4,) | Approximate coordinates of the receptive field for the 'ON' subunit. |

`Sn_approx_offSub_RF_coords` |
`np.array` |
(4,) | Approximate coordinates of the receptive field for the 'OFF' subunit. |

`Sn_stimT_all_shared` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere. |

`Sn_stimT_unit_offSub_allT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field. |

`Sn_stimT_unit_offSub_darkT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field to a dark patch. |

`Sn_stimT_unit_offSub_lightT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field to a light patch. |

`Sn_stimT_unit_offSub_bckgndT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere except the unit's 'OFF' receptive field. |

`Sn_stimT_unit_onSub_allT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field. |

`Sn_stimT_unit_onSub_darkT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field to a dark patch. |

`Sn_stimT_unit_onSub_lightT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field to a light patch. |

`Sn_stimT_unit_onSub_bckgndT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere except the unit's 'ON' receptive field. |

`Sn_recalc_stim_psth` |
`np.array` |
(2001,) | PSTH for stimulus change. Only exists for the hffl dataset. |

`Sn_norm_psth` |
`np.array` |
(2001,) | Normalized PSTH. Only exists for the hffl dataset. |

`raw_mod_for_Sn` |
`float` |
() | Raw modulation index for the stimulus. Only exists for the hffl dataset. |

`norm_mod_for_Sn` |
`float` |
() | Normalized modulation index for the stimulus. Only exists for the hffl dataset. |

`Sncluster_ind` |
`int` |
() | Cluster index for the stimulus. Only exists for the hffl dataset. |

`Sn_cluster` |
`str` |
() | Cluster for the stimulus. Only exists for the hffl dataset. |

##### White noise stimulus

Name | Type | Shape | Description |
---|---|---|---|

`Wn_active_fr` |
`float64` |
() | Average firing rate during active periods. |

`Wn_ballspeed` |
`np.array` |
(`len(ballT)` ,) |
Treadmill speed, in units of cm/sec. |

`Wn_ballspeed_modind` |
`float64` |
() | Modulation index for ball speed. |

`Wn_ballspeed_tuning` |
`np.array` |
(11,) | Ball speed tuning curve. |

`Wn_ballspeed_tuning_bins` |
`np.array` |
(11,) | Ball speed tuning curve bins. Each of these is the bin center (not the edge). |

`Wn_ballspeed_tuning_err` |
`np.array` |
(11,) | Ball speed tuning curve error at each bin. |

`Wn_contrast` |
`np.array` |
(`len(worldT)` ,) |
Contrast of the stimulus at each time point, aquired through the worldcam. |

`Wn_contrast_modind` |
`float64` |
() | Modulation index for contrast. |

`Wn_contrast_tuning` |
`np.array` |
(11,) | Contrast tuning curve. |

`Wn_contrast_tuning_bins` |
`np.array` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`Wn_contrast_tuning_err` |
`np.array` |
(11,) | Contrast tuning curve error at each bin. |

`Wn_dEye` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/sec. |

`Wn_dEye_dpf` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/frame. |

`Wn_depth_from_layer5` |
`float` |
() | Depth of the cell from layer 5 in um. |

`Wn_evoked_rate` |
`float64` |
() | Evoked firing rate during the stimulus. |

`Wn_eyeT` |
`np.array` |
(`len(eyeT)` ,) |
Eye camera timestamps relative to `Wn_t0` . Values from before the first ephys spike are negative. |

`Wn_inactive_fr` |
`float64` |
() | Average firing rate during inactive periods. |

`Wn_layer5cent_from_lfp` |
`float` |
() | Distance in um between center of cortical layer 5 and the neuron, calculated from LFP power. |

`Wn_leftsacc_avg` |
`np.array` |
(2001,) | Average PSTH for leftward saccades. |

`Wn_lfp_power` |
`list` |
(n_shanks,) | LFP power for each unit on shank. |

`Wn_max_contrast_rate` |
`float64` |
() | Maximum firing rate during the highest contrast. |

`Wn_n_spikes` |
`float` |
() | Number of spikes during all stimuli combined. |

`Wn_phi` |
`np.array` |
(`len(eyeT)` ,) |
Phi position of the head, in units of degrees. |

`Wn_phi_modind` |
`float64` |
() | Modulation index for phi. |

`Wn_phi_tuning` |
`np.array` |
(9,) | Phi tuning curve. |

`Wn_phi_tuning_bins` |
`np.array` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`Wn_phi_tuning_err` |
`np.array` |
(9,) | Phi tuning curve error at each bin. |

`Wn_pupilradius_modind` |
`float64` |
() | Modulation index for pupil radius. |

`Wn_pupilradius_tuning` |
`np.array` |
(9,) | Pupil radius tuning curve. |

`Wn_pupilradius_tuning_bins` |
`np.array` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`Wn_pupilradius_tuning_err` |
`np.array` |
(9,) | Pupil radius tuning curve error at each bin. |

`Wn_rate` |
`np.array` |
(N,) | Spike rate for all stimuli interpolated to `modelT` . |

`Wn_rf_on_cent1` |
`list` |
(2,) or (4,) | Center of receptive field for each shank. |

`Wn_rightsacc_avg` |
`np.array` |
(2001,) | Average PSTH for rightward saccades. |

`Wn_spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`Wn_spikeTraw` |
`list` |
(N,) | |

`Wn_spike_triggered_average` |
`np.array` |
(60, 80) | Spike triggered average. |

`Wn_spike_triggered_variance` |
`np.array` |
(60, 80) | Spike triggered variance. |

`Wn_spont_rate` |
`float64` |
() | Spontaneous firing rate. |

`Wn_theta` |
`np.array` |
(`len(eyeT)` ,) |
Theta position of the head, in units of degrees. |

`Wn_theta_tuning` |
`np.array` |
(9,) | Theta tuning curve. |

`Wn_theta_tuning_bins` |
`np.array` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`Wn_theta_tuning_err` |
`np.array` |
(9,) | Theta tuning curve error at each bin. |

##### Freely moving dark condition

Name | Type | Shape | Description |
---|---|---|---|

`FmDk_n_spikes` |
`np.ndarray` |
(N,) | Number of spikes fired. |

`FmDk_spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`FmDk_spikeTraw` |
`np.array` |
(N,) | |

`FmDk_rate` |
`np.array` |
(N,) | Spike rate for all stimuli interpolated to `modelT` . |

`FmDk_contrast_tuning_bins` |
`np.array` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`FmDk_contrast_tuning` |
`np.array` |
(11,) | Contrast tuning curve. |

`FmDk_contrast_tuning_err` |
`np.array` |
(11,) | Contrast tuning curve error at each bin. |

`FmDk_spike_triggered_average` |
`np.array` |
(60, 80) | Spike triggered average. |

`FmDk_spike_triggered_variance` |
`np.array` |
(60, 80) | Spike triggered variance. |

`FmDk_pupilradius_tuning_bins` |
`np.array` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_pupilradius_tuning` |
`np.array` |
(9,) | Pupil radius tuning curve. |

`FmDk_pupilradius_tuning_err` |
`np.array` |
(9,) | Pupil radius tuning curve error at each bin. |

`FmDk_theta_tuning_bins` |
`np.array` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_theta_tuning` |
`np.array` |
(9,) | Theta tuning curve. |

`FmDk_theta_tuning_err` |
`np.array` |
(9,) | Theta tuning curve error at each bin. |

`FmDk_phi_tuning_bins` |
`np.array` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_phi_tuning` |
`np.array` |
(9,) | Phi tuning curve. |

`FmDk_phi_tuning_err` |
`np.array` |
(9,) | Phi tuning curve error at each bin. |

`FmDk_gyroz_tuning_bins` |
`np.array` |
(11,) | Gyro z tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_gyroz_tuning` |
`np.array` |
(11,) | Gyro z tuning curve. |

`FmDk_gyroz_tuning_err` |
`np.array` |
(11,) | Gyro z tuning curve error at each bin. |

`FmDk_gyrox_tuning_bins` |
`np.array` |
(11,) | Gyro x tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_gyrox_tuning` |
`np.array` |
(11,) | Gyro x tuning curve. |

`FmDk_gyrox_tuning_err` |
`np.array` |
(11,) | Gyro x tuning curve error at each bin. |

`FmDk_gyroy_tuning_bins` |
`np.array` |
(11,) | Gyro y tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_gyroy_tuning` |
`np.array` |
(11,) | Gyro y tuning curve. |

`FmDk_gyroy_tuning_err` |
`np.array` |
(11,) | Gyro y tuning curve error at each bin. |

`FmDk_imuT` |
`np.array` |
(N,) | IMU timestamps relative to `FmDk_t0` . Values from before the first ephys spike are negative. |

`FmDk_gyro_x` |
`np.array` |
(`len(imuT)` ,) |
Gyro x position. |

`FmDk_gyro_y` |
`np.array` |
(`len(imuT)` ,) |
Gyro y position. |

`FmDk_gyro_z` |
`np.array` |
(`len(imuT)` ,) |
Gyro z position. |

`FmDk_dHead` |
`np.array` |
(`len(imuT)` ,) |
Change in head position. |

`FmDk_eyeT` |
`np.array` |
(N,) | Eye camera timestamps relative to `FmDk_t0` . Values from before the first ephys spike are negative. |

`FmDk_dEye_dpf` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/frame. |

`FmDk_theta` |
`np.array` |
(`len(eyeT)` ,) |
Theta position of the eye, in units of degrees. |

`FmDk_phi` |
`np.array` |
(`len(eyeT)` ,) |
Phi position of the eye, in units of degrees. |

`FmDk_dGaze` |
`np.array` |
(`len(eyeT)-1` ,) |
Change in gaze position. |

`FmDk_roll_tuning_bins` |
`np.array` |
(11,) | Roll tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_roll_tuning` |
`np.array` |
(11,) | Roll tuning curve. |

`FmDk_roll_tuning_err` |
`np.array` |
(11,) | Roll tuning curve error at each bin. |

`FmDk_pitch_tuning_bins` |
`np.array` |
(11,) | Pitch tuning curve bins. Each of these is the bin center (not the edge). |

`FmDk_pitch_tuning` |
`np.array` |
(11,) | Pitch tuning curve. |

`FmDk_pitch_tuning_err` |
`np.array` |
(11,) | Pitch tuning curve error at each bin. |

`FmDk_roll` |
`np.array` |
(`len(eyeT)` ,) |
Roll position of the eye, in units of degrees. |

`FmDk_pitch` |
`np.array` |
(`len(eyeT)` ,) |
Pitch position of the eye, in units of degrees. |

`FmDk_gyroz_modind` |
`float64` |
() | Modulation index for gyro z. |

`FmDk_gyrox_modind` |
`float64` |
() | Modulation index for gyro x. |

`FmDk_gyroy_modind` |
`float64` |
() | Modulation index for gyro y. |

`FmDk_pupilradius_modind` |
`float64` |
() | Modulation index for pupil radius. |

`FmDk_theta_modind` |
`float64` |
() | Modulation index for theta. |

`FmDk_phi_modind` |
`float64` |
() | Modulation index for phi. |

`FmDk_roll_modind` |
`float64` |
() | Modulation index for roll. |

`FmDk_pitch_modind` |
`float64` |
() | Modulation index for pitch. |

`FmDk_gazeshift_left_saccPSTH` |
`np.array` |
(2001,) | PSTH for leftward saccades. |

`FmDk_gazeshift_left_saccTimes` |
`np.array` |
(N,) | Times for leftward saccades. |

`FmDk_gazeshift_right_saccPSTH` |
`np.array` |
(2001,) | PSTH for rightward saccades. |

`FmDk_gazeshift_right_saccTimes` |
`np.array` |
(N,) | Times for rightward saccades. |

`FmDk_compensatory_left_saccPSTH` |
`np.array` |
(2001,) | PSTH for leftward saccades. |

`FmDk_compensatory_left_saccTimes` |
`np.array` |
(N,) | Times for leftward saccades. |

`FmDk_compensatory_right_saccPSTH` |
`np.array` |
(2001,) | PSTH for rightward saccades. |

`FmDk_compensatory_right_saccTimes` |
`np.array` |
(N,) | Times for rightward saccades. |

`pref_gazeshift_psth_FmDk` |
`np.array` |
(2001,) | PSTH for preferred direction gaze shifts. |

`pref_comp_psth_FmDk` |
`np.array` |
(2001,) | PSTH for preferred direction compensatory saccades. |

`nonpref_gazeshift_psth_FmDk` |
`np.array` |
(2001,) | PSTH for non-preferred direction gaze shifts. |

`nonpref_comp_psth_FmDk` |
`np.array` |
(2001,) | PSTH for non-preferred direction compensatory saccades. |

`gaze_ltdk_maxcc` |
`float64` |
() | Maximum cross correlation between the freely moving gaze shift PSTH in the light versus dark. |

`FmDk_gazeshift_baseline` |
`float64` |
() | Baseline firing rate for gaze shifts. |

`FmDk_gazeshift_peakT` |
`float64` |
() | Time of peak firing rate for gaze shifts. |

`FmDk_gazeshift_troughT` |
`float64` |
() | Time of trough firing rate for gaze shifts. |

`gaze_sacc_rlMI` |
`float64` |
() | Right/left modulation index. |

`comp_sacc_rlMI` |
`float64` |
() | Right/left modulation index. |

`gaze_sacc_pnpMI` |
`float64` |
() | Preferred/non-preferred modulation index. |

`comp_sacc_pnpMI` |
`float64` |
() | Preferred/non-preferred modulation index. |

`FmDk_fr` |
`float64` |
() | Average firing rate. |

`FmLt_modelT` |
`np.array` |
() | Time points for locomotion activity. |

`FmDk_model_active` |
`np.array` |
() | Dark condition locomotion activity. |

`FmDk_active_fr` |
`float64` |
() | Average firing rate during locomotion. |

`FmDk_inactive_fr` |
`float64` |
() | Average firing rate during inactivity. |

`pref_dark_gazeshift_psth` |
`np.array` |
(2001,) | PSTH for preferred direction gaze shifts. |

`nonpref_dark_gazeshift_psth` |
`np.array` |
(2001,) | PSTH for non-preferred direction gaze shifts. |

`pref_dark_comp_psth` |
`np.array` |
(2001,) | PSTH for preferred direction compensatory saccades. |

`nonpref_dark_comp_psth` |
`np.array` |
(2001,) | PSTH for non-preferred direction compensatory saccades. |

`pref_dark_gazeshift_psth_raw` |
`np.array` |
(2001,) | PSTH for preferred direction gaze shifts. |

`nonpref_dark_gazeshift_psth_raw` |
`np.array` |
(2001,) | PSTH for non-preferred direction gaze shifts. |

`pref_dark_comp_psth_raw` |
`np.array` |
(2001,) | PSTH for preferred direction compensatory saccades. |

`nonpref_dark_comp_psth_raw` |
`np.array` |
(2001,) | PSTH for non-preferred direction compensatory saccades. |

`FmDk_gazeshift_med_baseline` |
`float64` |
() | Median baseline firing rate for gaze shifts. |

`FmDk_gazeshift_peak_val` |
`float64` |
() | Peak firing rate for gaze shifts. |

`norm_mod_at_pref_peak_dark` |
`float64` |
() | Normalized modulation at preferred peak. |

`raw_mod_at_pref_peak_dark` |
`float64` |
() | Raw modulation at preferred peak. |

`dark_peak_val` |
`float64` |
() | Peak firing rate of prefered direction of PSTH in the dark. |

`dark_peakT` |
`float64` |
() | Time of peak firing rate of prefered direction of PSTH in the dark. |

`dark_responsive` |
`bool` |
() | Whether or not the cell was responsive in dark condition. |

##### Sparse noise with Inter-Stimulus Interval (ISI)

Sparse noise presented with an inter-stimulus interval.

Name | Type | Shape | Description |
---|---|---|---|

`hasSnI` |
`bool` |
() | Whether or not the unit has data for sparse noise presented with an ISI. |

`SnI_Amplitude` |
`float64` |
() | Spike amplitude. |

`SnI_ContamPct` |
`float64` |
() | Contamination percentage. |

`SnI_KSLabel` |
`str` |
() | KS label. |

`SnI_amp` |
`float64` |
() | Spike amplitude. |

`SnI_ch` |
`int` |
() | Channel. |

`SnI_depth` |
`float64` |
() | Depth. |

`SnI_fr` |
`float64` |
() | Average firing rate. |

`SnI_group` |
`int` |
() | Group. |

`SnI_n_spikes` |
`float64` |
() | Number of spikes. |

`SnI_sh` |
`int` |
() | Shank. |

`SnI_waveform` |
`np.array` |
(40,) | Spike waveform. |

`SnI_spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`SnI_t0` |
`float64` |
() | Time of first spike. |

`SnI_spikeTraw` |
`np.array` |
(N,) | |

`SnI_rate` |
`np.array` |
(N,) | Spike rate for all stimuli interpolated to `modelT` . |

`SnI_contrast` |
`np.array` |
(`len(worldT)` ,) |
Contrast of the stimulus at each time point, aquired through the worldcam. |

`SnI_contrast_tuning_bins` |
`np.array` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`SnI_contrast_tuning` |
`np.array` |
(11,) | Contrast tuning curve. |

`SnI_contrast_tuning_err` |
`np.array` |
(11,) | Contrast tuning curve error at each bin. |

`SnI_spike_triggered_average` |
`np.array` |
(60, 80) | Spike triggered average. |

`SnI_spike_triggered_variance` |
`np.array` |
(60, 80) | Spike triggered variance. |

`SnI_saccade_rightT` |
`np.array` |
(N,) | Times for rightward saccades. |

`SnI_saccade_leftT` |
`np.array` |
(N,) | Times for leftward saccades. |

`SnI_saccade_rightPSTH` |
`np.array` |
(2001,) | PSTH for rightward saccades. |

`SnI_saccade_leftPSTH` |
`np.array` |
(2001,) | PSTH for leftward saccades. |

`SnI_pupilradius_tuning_bins` |
`np.array` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`SnI_pupilradius_tuning` |
`np.array` |
(9,) | Pupil radius tuning curve. |

`SnI_pupilradius_tuning_err` |
`np.array` |
(9,) | Pupil radius tuning curve error at each bin. |

`SnI_theta_tuning_bins` |
`np.array` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`SnI_theta_tuning` |
`np.array` |
(9,) | Theta tuning curve. |

`SnI_theta_tuning_err` |
`np.array` |
(9,) | Theta tuning curve error at each bin. |

`SnI_phi_tuning_bins` |
`np.array` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`SnI_phi_tuning` |
`np.array` |
(9,) | Phi tuning curve. |

`SnI_phi_tuning_err` |
`np.array` |
(9,) | Phi tuning curve error at each bin. |

`SnI_eyeT` |
`np.array` |
(`len(eyeT)` ,) |
Eye camera timestamps relative to `SnI_t0` . Values from before the first ephys spike are negative. |

`SnI_dEye_dpf` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/frame. |

`SnI_dEye_dps` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/sec. |

`SnI_theta` |
`np.array` |
(`len(eyeT)` ,) |
Theta position of the head, in units of degrees. |

`SnI_phi` |
`np.array` |
(`len(eyeT)` ,) |
Phi position of the head, in units of degrees. |

`SnI_ballspeed` |
`np.array` |
(`len(ballT)` ,) |
Treadmill speed, in units of cm/sec. |

`SnI_ballspeed_tuning_bins` |
`np.array` |
(11,) | Ball speed tuning curve bins. Each of these is the bin center (not the edge). |

`SnI_ballspeed_tuning` |
`np.array` |
(11,) | Ball speed tuning curve. |

`SnI_ballspeed_tuning_err` |
`np.array` |
(11,) | Ball speed tuning curve error at each bin. |

`SnI_worldT` |
`np.array` |
(`len(worldT)` ,) |
World camera timestamps relative to `SnI_t0` . Values from before the first ephys spike are negative. |

`SnI_stim_PSTH_onSub_all` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed. |

`SnI_stim_PSTH_onSub_darkRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed to a dark patch. |

`SnI_stim_PSTH_onSub_lightRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed to a light patch. |

`SnI_stim_PSTH_onSub_bckgndRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus everywhere except the unit's 'ON' receptive field changed. |

`SnI_stim_PSTH_offSub_all` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed. |

`SnI_stim_PSTH_offSub_darkRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed to a dark patch. |

`SnI_stim_PSTH_offSub_lightRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed to a light patch. |

`SnI_stim_PSTH_offSub_bckgndRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus everywhere except the unit's 'OFF' receptive field changed. |

`SnI_approx_onSub_RF_coords` |
`np.array` |
(4,) | Approximate coordinates of the receptive field for the 'ON' subunit. |

`SnI_approx_offSub_RF_coords` |
`np.array` |
(4,) | Approximate coordinates of the receptive field for the 'OFF' subunit. |

`SnI_stimT_all_shared` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere. |

`SnI_stimT_unit_offSub_allT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field. |

`SnI_stimT_unit_offSub_darkT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field to a dark patch. |

`SnI_stimT_unit_offSub_lightT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field to a light patch. |

`SnI_stimT_unit_offSub_bckgndT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere except the unit's 'OFF' receptive field. |

`SnI_stimT_unit_onSub_allT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field. |

`SnI_stimT_unit_onSub_darkT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field to a dark patch. |

`SnI_stimT_unit_onSub_lightT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field to a light patch. |

`SnI_stimT_unit_onSub_bckgndT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere except the unit's 'ON' receptive field. |

`SnI_recalc_stim_psth` |
`np.array` |
(2001,) | PSTH for all background / full-field stimulus changes. |

`SnI_norm_psth` |
`np.array` |
(2001,) | PSTH for all background / full-field stimulus changes, normalized. |

`raw_mod_for_SnI` |
`float` |
() | PSTH modulation index measured from the raw PSTH. |

`norm_mod_for_SnI` |
`float` |
() | PSTH modulation index measured from the normalized PSTH. |

`SnI_responsive` |
`bool` |
() | Whether or not the unit was responsive to the sparse noise with ISI stimulus. |

`SnIcluster_ind` |
`int` |
() | Cluster index for the sparse noise with ISI stimulus. |

`SnI_cluster` |
`str` |
() | Cluster label for the sparse noise with ISI stimulus. |

##### Sparse noise with random stimulus duration

Name | Type | Shape | Description |
---|---|---|---|

`hasSnR` |
`bool` |
() | Whether or not the unit has sparse noise with random stimulus duration. |

`SnR_Amplitude` |
`float64` |
() | Spike amplitude. |

`SnR_ContamPct` |
`float64` |
() | Contamination percentage. |

`SnR_KSLabel` |
`str` |
() | KS label. |

`SnR_amp` |
`float64` |
() | Spike amplitude. |

`SnR_ch` |
`int` |
() | Channel. |

`SnR_depth` |
`float64` |
() | Depth. |

`SnR_fr` |
`float64` |
() | Average firing rate. |

`SnR_group` |
`int` |
() | Group. |

`SnR_n_spikes` |
`float64` |
() | Total number of spikes. |

`SnR_sh` |
`int` |
() | Shank number. |

`SnR_waveform` |
`np.array` |
(40,) | Spike waveform. |

`SnR_spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`SnR_t0` |
`float64` |
() | Time of first spike. |

`SnR_spikeTraw` |
`np.array` |
(N,) | |

`SnR_rate` |
`np.array` |
(N,) | Spike rate for all stimuli interpolated to `modelT` . |

`SnR_contrast` |
`np.array` |
(`len(worldT)` ,) |
Contrast of the stimulus at each time point, aquired through the worldcam. |

`SnR_contrast_tuning_bins` |
`np.array` |
(11,) | Contrast tuning curve bins. Each of these is the bin center (not the edge.) |

`SnR_contrast_tuning` |
`np.array` |
(11,) | Contrast tuning curve. |

`SnR_contrast_tuning_err` |
`np.array` |
(11,) | Contrast tuning curve error at each bin. |

`SnR_spike_triggered_average` |
`np.array` |
(60, 80) | Spike triggered average. |

`SnR_spike_triggered_variance` |
`np.array` |
(60, 80) | Spike triggered variance. |

`SnR_saccade_rightT` |
`np.array` |
(N,) | Times for rightward saccades. |

`SnR_saccade_leftT` |
`np.array` |
(N,) | Times for leftward saccades. |

`SnR_saccade_rightPSTH` |
`np.array` |
(2001,) | PSTH for rightward saccades. |

`SnR_saccade_leftPSTH` |
`np.array` |
(2001,) | PSTH for leftward saccades. |

`SnR_pupilradius_tuning_bins` |
`np.array` |
(9,) | Pupil radius tuning curve bins. Each of these is the bin center (not the edge). |

`SnR_pupilradius_tuning` |
`np.array` |
(9,) | Pupil radius tuning curve. |

`SnR_pupilradius_tuning_err` |
`np.array` |
(9,) | Pupil radius tuning curve error at each bin. |

`SnR_theta_tuning_bins` |
`np.array` |
(9,) | Theta tuning curve bins. Each of these is the bin center (not the edge). |

`SnR_theta_tuning` |
`np.array` |
(9,) | Theta tuning curve. |

`SnR_theta_tuning_err` |
`np.array` |
(9,) | Theta tuning curve error at each bin. |

`SnR_phi_tuning_bins` |
`np.array` |
(9,) | Phi tuning curve bins. Each of these is the bin center (not the edge). |

`SnR_phi_tuning` |
`np.array` |
(9,) | Phi tuning curve. |

`SnR_phi_tuning_err` |
`np.array` |
(9,) | Phi tuning curve error at each bin. |

`SnR_eyeT` |
`np.array` |
(`len(eyeT)` ,) |
Eye camera timestamps relative to `SnR_t0` . Values from before the first ephys spike are negative. |

`SnR_dEye_dpf` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/frame. |

`SnR_dEye_dps` |
`np.array` |
(`len(eyeT)-1` ,) |
Eye movement velocity in units of deg/sec. |

`SnR_theta` |
`np.array` |
(`len(eyeT)` ,) |
Theta position of the head, in units of degrees. |

`SnR_phi` |
`np.array` |
(`len(eyeT)` ,) |
Phi position of the head, in units of degrees. |

`SnR_ballspeed` |
`np.array` |
(`len(ballT)` ,) |
Treadmill speed, in units of cm/sec. |

`SnR_ballspeed_tuning_bins` |
`np.array` |
(11,) | Ball speed tuning curve bins. Each of these is the bin center (not the edge). |

`SnR_ballspeed_tuning` |
`np.array` |
(11,) | Ball speed tuning curve. |

`SnR_ballspeed_tuning_err` |
`np.array` |
(11,) | Ball speed tuning curve error at each bin. |

`SnR_stim_PSTH_onSub_all` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed. |

`SnR_stim_PSTH_onSub_darkRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed to a dark patch. |

`SnR_stim_PSTH_onSub_lightRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus on the unit's 'ON' receptive field changed to a light patch. |

`SnR_stim_PSTH_onSub_bckgndRF` |
`np.array` |
(2001,) | PSTH for the onset of stimulus change where the stimilus everywhere except the unit's 'ON' receptive field changed. |

`SnR_stim_PSTH_offSub_all` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed. |

`SnR_stim_PSTH_offSub_darkRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed to a dark patch. |

`SnR_stim_PSTH_offSub_lightRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus on the unit's 'OFF' receptive field changed to a light patch. |

`SnR_stim_PSTH_offSub_bckgndRF` |
`np.array` |
(2001,) | PSTH for the offset of stimulus change where the stimilus everywhere except the unit's 'OFF' receptive field changed. |

`SnR_approx_onSub_RF_coords` |
`np.array` |
(4,) | Approximate coordinates of the receptive field for the 'ON' subunit. |

`SnR_approx_offSub_RF_coords` |
`np.array` |
(4,) | Approximate coordinates of the receptive field for the 'OFF' subunit. |

`SnR_stimT_all_shared` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere. |

`SnR_stimT_unit_offSub_allT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field. |

`SnR_stimT_unit_offSub_darkT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field to a dark patch. |

`SnR_stimT_unit_offSub_lightT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'OFF' receptive field to a light patch. |

`SnR_stimT_unit_offSub_bckgndT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere except the unit's 'OFF' receptive field. |

`SnR_stimT_unit_onSub_allT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field. |

`SnR_stimT_unit_onSub_darkT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field to a dark patch. |

`SnR_stimT_unit_onSub_lightT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed on the unit's 'ON' receptive field to a light patch. |

`SnR_stimT_unit_onSub_bckgndT` |
`np.array` |
(N,) | Times of stimulus changes where the stimulus changed everywhere except the unit's 'ON' receptive field. |

`SnR_norm_psth` |
`np.array` |
(2001,) | PSTH for all background / full-field stimulus changes, normalized. |

#### Marmoset data

Name | Type | Shape | Description |
---|---|---|---|

`PSTH` |
`np.array` |
(2001,) | PSTH aligned to saccade onset. |

`normPSTH` |
`np.array` |
(2001,) | Normalized PSTH. |

`sf_tuning` |
`np.array` |
(N,) | Spatial frequency tuning curve. |

`tf_tuning` |
`np.array` |
(N,) | Temporal frequency tuning curve. |

`ori_tuning` |
`np.array` |
(N,) | Orientation tuning curve. |

`spikeT` |
`np.array` |
(N,) | Spike times, in units of seconds. |

`session` |
`float` |
() | NaNs |

`gazecluster` |
`str` |
() | Gaze shift response cluster. |

`gazecluster_ind` |
`int` |
() | NaNs |

`animal` |
`int` |
() | Animal number. |

`sf_pref` |
`float` |
() | Spatial frequency preference. |

`tf_pref` |
`float` |
() | Temporal frequency preference. |

`gratings_responsive` |
`bool` |
() | Whether or not the cell was responsive to gratings. |

`peakT` |
`float` |
() | Peak latency following |

`baseline_fr` |
`float` |
() | Baseline firing rate. |

`saccade_responsive` |
`bool` |
() | Whether or not the cell was responsive to saccades. |

### Code/Software

All original Python code is avaliable on GitHub. Acquisition and preprocessing code: FreelyMovingEphys. Analysis and figure code: freely-moving-saccades. These repositories can be installed and imported as the packages `fmEphys`

and `saccadeAnalysis`

, respectively (see repositiory READMEs for installation instructions). The hdf files can be read in as:

```
import fmEphys as fme
# Read the file in.
hffm = fme.read_group_hdf('/.../hffm.h5')
# Index into the eye camera timestamps for unit zero. The output will be an array.
hffm.iloc[0,'FmLt_eyeT']
```

## Methods

Mouse data :

Mice were initially implanted with a titanium headplate over primary visual cortex to allow for head-fixation and attachment of head-mounted experimental hardware. After three days of recovery, widefield imaging53 was performed to help target the electrophysiology implant to the approximate center of left monocular V1. A miniature connector (Mill-Max 853-93-100-10-001000) was secured to the headplate to allow repeated, reversible attachment of a camera arm, eye/world cameras and IMU21,22. In order to simulate the weight of the real electrophysiology drive for habituation, a ‘dummy’ electrophysiology drive was glued to the headplate. Animals were handled by the experimenter for several days before surgical procedures, and subsequently habituated (~45 min total) to the spherical treadmill and freely moving arena with hardware tethering attached for several days before experiments.

The electrophysiology implant was performed once animals moved comfortably in the arena. A craniotomy was performed over V1, and a linear silicon probe (64 or 128 channels, Diagnostic Biochips P64-3 or P128-6) mounted in a custom 3D-printed drive (Yuta Senzai, UCSF) was lowered into the brain using a stereotax to an approximate tip depth of 750 µm from the pial surface. The surface of the craniotomy was coated in artificial dura (Dow DOWSIL 3-4680) and the drive was secured to the headplate using light-curable dental acrylic (Unifast LC). A second craniotomy was performed above left frontal cortex, and a reference wire was inserted into the brain. The opening was coated with a small amount of sterile ophthalmic ointment before the wire was glued in place with cyanoacrylate. Animals recovered overnight and experiments began the following day.

The camera arm was oriented approximately 90 deg to the right of the nose and included an eye-facing camera (iSecurity101 1000TVL NTSC, 30 fps interlaced), an infrared-LED to illuminate the eye (Chanzon, 3 mm diameter, 940 nm wavelength), a wide-angle camera oriented toward the mouse’s point of view (BETAFPV C01, 30 fps interlaced) and an inertial measurement unit acquiring three-axis gyroscope and accelerometer signals (Rosco Technologies; acquired 30 kHz, downsampled to 300 Hz and interpolated to camera data). Fine gauge wire (Cooner, 36 AWG, #CZ1174CLR) connected the IMU to its acquisition box, and each of the cameras to a USB video capture device (Pinnacle Dazzle or StarTech USB3HDCAP). A top-down camera (FLIR Blackfly USB3, 60 fps) recorded the mouse in the arena.

The electrophysiology headstage (built into the silicon probe package) was connected to an Open Ephys acquisition system via an ultra thin cable (Intan #C3216). Electrophysiology data were acquired at 30 kHz and bandpass filtered between 0.01 Hz and 7.5 kHz. We first used the Open Ephys GUI (https://github.com/open-ephys/plugin-GUI) to assess the quality of the electrophysiology data, then recordings were performed in Bonsai54 using custom workflows (https://github.com/nielllab/FreelyMovingEphys). System timestamps were collected for all hardware devices and later used to align data streams through interpolation.

Marmoset data:

Electrophysiological recordings were performed using 2x32 channel silicon electrode arrays (http://www.neuronexus.com). Probes included 2 sharpened tip shanks of 50µm width spaced 200 µm apart, each containing 32 channels separated by 35 µm. In one animal we used a semi-chronic microdrive (EDDS Microdrive system, https://microprobes.com) to place electrodes in cortex for 1-2 weeks over which we made 3-6 recordings. In the second animal we used a custom micro-drive (https://marmolab.bcs.rochester.edu/resources/) to place and remove electrodes daily. Arrays were lowered slowly through silastic into cortex using a thumb screw.

Data were amplified and digitized at 30 kHz with Intan headstages (Intan) using the Open Ephys GUI (https://github.com/open-ephys/plugin-GUI). The wideband signal was high-pass filtered by the headstage at 0.1 Hz, preprocessed by common-average referencing across all channels, and then high-pass filtered at 300 Hz. The resulting traces were spike sorted using Kilosort2. Outputs from the spike sorting algorithms were manually labeled using ’phy’ GUI (https://github.com/kwikteam/phy). Any units that were either physiologically implausible based on the lack of a waveform with a trough followed by a peak or with an inter-spike interval (ISI) distribution with more than 1% of the spikes under 1 ms were excluded from analyses.

Gaze position was monitored using infra-red eye tracking methods described previously63. Briefly, the 1st and 4th Purkinje images (P1 and P4) were visualized using a collimated IR light source and tracked at 593 frames per second to estimate the 2D eye angle. The eye tracker was manually calibrated to adjust the offset and gain (horizontal and vertical) by showing marmoset monkeys small windowed face images at different screen positions to obtain their fixation as described previously60,61. Saccadic eye movements were identified automatically using a combination of velocity and acceleration thresholds64.