Hippocampal firing fields anchored to a moving object predict homing direction during path-integration-based behavior
Data files
Oct 19, 2023 version files 50.73 GB
-
Jazi_etal_2023_noInter_part1.tar.gz
25.36 GB
-
Jazi_etal_2023_noInter_part2.tar.gz
25.36 GB
-
README.md
41.48 KB
Dec 12, 2023 version files 50.73 GB
Abstract
Homing based on path integration (H-PI) is a form of navigation in which an animal uses self-motion cues to keep track of its position and return to a starting point. Despite evidence for a role of the hippocampus in homing behavior, the hippocampal spatial representations associated with H-PI are largely unknown. Here we developed a homing task (AutoPI task) that required a mouse to find a randomly placed lever on an arena before returning to its home base. Recordings from the CA1 area in male mice showed that hippocampal neurons remap between random foraging and AutoPI task, between trials in light and dark conditions, and between search and homing behavior. During the AutoPI task, approximately 25% of the firing fields were anchored to the lever position. The activity of 24% of the cells with a lever-anchored field predicted the homing direction of the animal on each trial. Our results demonstrate that the activity of hippocampal neurons with object-anchored firing fields can predict homing behavior.
README: Hippocampal firing fields anchored to a moving object predict homing direction during path-integration-based behaviour
Raw data recorded in the behavioural experiment or the electrophysiological experiment in the manuscript, titled 'Hippocampal firing fields anchored to a moving object predict homing direction during path-integration-based behaviour'.
Description of the data and file structure
Here, we included the raw data from 2 experiments. 13 mice were included in the behavioural experiment (directory autopi_behavior_2021). 9 mice were included in the electrophysiological experiment (directory autopi_ca1). There is one directory per mouse. Within a mouse directory, you find one directory per recording session.
Autopi_ca1 subdirectory and files:
Most data files are in their respective recording session directories. The file names have either the recording session name (e.g. mn9686-27102021-0106) as file basename (e.g. mn9686-27102021-0106.par
). Some other files don't have any firebase (e.g. leverPose
). A session is usually divided into a series of recording files. For instance, session mn9686-27102021-0106 contains recording files 01 to 06. This session is one of the electrophysiological recording sessions and can be found here: ../autopi_ca1/mn9686/mn9686-27102021-0106
Below is a short description of the files. We use the session mn9686-27102021-0106 as an example:
mn9686-27102021-0106.desel
The .desel file indicates which brain region was targeted by each electrode (usually CA1). One line per shank, as we used Neuronexus probes in this experiment.
mn9686-27102021-0106.desen
Recording sessions are divided into several recording files. The “desen” file contains the code for the environment explored by the mouse in each recording file. Recordings of random foraging are labelled with “circ80”. Rest trials as “rest” and the AutoPI task as “autopi”.
mn9686-27102021-0106.environmentFamiliarity
Indicates if the environment was novel or familiar. In this project, it is always a familiar environment represented as “fam”.
mn9686-27102021-0106.par
This contains several parameters describing the recording session. Here is the structure of the .par file:
number_channels_in_dat_file number_bits_per_data_point_in_dat_file
sampling_rate unused_number
number_shanks unused_number
number_channels_shank_1 channel_0_e1 channel_1_e1 channel_2_e1 channel_3_e1
number_channels_shank_2 channel_0_e2 channel_1_e2 channel_2_e2 channel_3_e2
...
number_of_session_trials
name_of_session_trial_01
name_of_session_trial_02
...
The sampling rate in the .par file is in format 1000000/frequency. 50 means a sampling rate of 20000 Hz. The time points in sample numbers can be converted to seconds with sample_no/sampling_rate.
mn9686-27102021-0106.protocol
The protocol name used in this session is autopi_task.py, the time in seconds (5400), the Rosmaster computer a230_pc41 and its IP address.
mn9686-27102021-0106.px_per_cm
Used with the position data. Number of pixels in the video per cm. This is used to transform the raw position data into cm.
mn9686-27102021-0106.sampling_rate_dat
Sampling rate in Hz
mn9686-27102021-0106.setup
The room number where we recorded the experiment.
mn9686-27102021-0106.stimulation
Represents whether we had any laser stimulation in each trial or not. In this case, it is none all the time.
mn9686-27102021-0106.log
It is a text file that lists the event name, parameters, and event time during the task. For example,
door 1635353821.989127040 1.000000 (door, time in seconds, the door opened)
arenaCoordinates and bridgeCoordinates
represents the coordinates of the bridge and arena on one frame from the beginning of the task.
mn9686-27102021-0106.mouseLeverPosition.csv
The position of the mouse and lever during the task was generated with Deeplabcut. The columns in this data frame are these:
leverX: The x position value of the lever
leverY: The y position value of the lever.
leverOri: Lever orientation in a given trial
leverXHeading: The angle between the lever and the bridge
leverYHeading: The angle between the lever and
leverPressX: The x position of the lever at the time of lever press
leverPressY: The y position of the lever at the time of the lever press
leverBoxPLX and leverBoxPLY are in order: The x and y values of the lever's box posterior left point location on each trial.
leverBoxPRX and leverBoxPRY are in order: The x and y value of the lever's box posterior right point location on each trial.
mouseX, mouseY,mouseOri,mouseXHeading, and mouseYHeading represent in order the x and y location of the mouse and orientation of the mouse. The x value for the heading (mean between the location of the two ears) of the mouse and the y value for the heading of the mouse.
leverPose
Position of the lever on each trial generated with Deeplabcut
leverBoxDistance.npy
We use the occupancy histogram of the mouse with the distance from the lever on the x-axis. This creates a peak near the lever, and occupancy is flat after 10 cm. We use the distribution to set a limit of the Lever zone based on the empirical data.
leverZoneMaxDistance
The max distance from the lever is to be considered at the lever zone.
mn9686-27102021-0106.pose.npy
2D numpy array with information about the position and orientation of the animal, columns are (time, x,y,z, yaw, pitch, roll). This is a pointer to an animal's pose_ori or pose_inter(position and orientation) in time. The position is in x,y, and z, and the orientation is in Euler angles (yaw, pitch, roll). When not available, data are set to np.NAN. Position data are in cm. Angular data are in radians to make computations simpler.
Yaw should be from -180 to 180; 0 is in the direction of the positive x-axis, pi/2 up, -pi/2 down.
mn9686-27102021-0106.pose_kf.npy
We applied a Kalman filter to remove the noise from the tracking system in the position and orientation of the mouse. We applied the filter to the mouse's reported x and y positions. 2D array with an applied Kalman filter implements a constant velocity model for a state [x,y, dx,dy].T
navPathInstan.csv
This data frame contains Instantaneous behavioural variables (distance run, time in the navPath (search, homing, at the lever), speed, etc.) for each time point of the navPaths.
Columns of this data frame are :
'name': Name of the trial including the session name_trials number_ number of journeys
'trialNo': trial number
'timeRos': computer clock time (sec),
'timeRes': recording time in (sec),
'iTime': time in seconds from the beginning of the trial
'iTimeProp': proportion of the trial time (varies from 0 to 1).
'distance': distance run in cm,
'distanceProp': proportion of the distance run within the trial (from 0 to 1), in case if its nan means the tracking was not accurate enough to calculate the proportion of the distance in the interval of interest
'Speed': Speed of the animal
'x', 'y': X and Y position of the animal
'targetDistance': distance of the animal to the lever.
'targetToAnimalX': The X position of the lever from the animal
'targetToAnimalY': Y position of the lever to the animal
'targetToAnimalAngle': The angle between the animal and the lever
'cumSumDiffAngleAroundTarget': cumulative sum of the difference in angleAroundTarget for subsequent measurements
'Nan's: In some columns in this data frame, such as speed, x, y, targetDistance,targetToAnimalX,targetToAnimalY, targetToAnimalAngle and cumSumDiffAngleAroundTarget we have nan values which means the tracking for the specific interval was not accurate enough to calculate the parameters mentioned here.
navPathSummary.csv
It's a data frame that lists all NavPaths in one session. The NavPaths are small segments of behaviour (e.g., search from arena entry to lever, search to lever press, etc.) for each trial in each session. The columns in this data frame are :
'name': Name of the trial that includes the name of the session, number of journeys and the type of the path, e.g. mn9686-27102021-0106_1-0_all: includes all the path types in the first journeys in the first trial from session mn9686-27102021-0106
'trial': represents the name of the session plus the name of the trial on that session
'trialNo': represents the number of trials
'journey': journey number
'type': Path types that could be all, search, homing or at the lever, which are the path of the animal around the lever
'light': light condition that can be light or dark
'nLeverPresses': number of lever presses on a given journey
'startTimeRos': The time in which the journey starts in the ros time
'endTimeRos': The time in which the journey ends in the ros time
'startTimeRes': The time in seconds inside the recording session when the session starts
'endTimeRes': The time in seconds inside the recording session when the session ends
trial_table_simple
This is a data frame that has the session name, trial number, start and end time in sample rate (startTime, endTime), startTimeWS that has the time within the session (in Ros time), endTimeWS, end time of within the session, light conditions, recording start time (the electrophysiological recording time) and the end time in the recording session.
sessionIntervals.npy
Numpy array containing the time offset of each trial of the session, the trial time intervals generated from the dat file.
ses.pickle
This is an object generated from the SpikeA session object and AutopiPy. This object can select NavPaths (etc., search, homing, at lever) that we want to analyse. The column "name" can be used to get the instantaneous data for analysis with electrophysiological data. It contains the time intervals to limit our spike A.SpikeTrain to specific intervals.
ifr_autopi.pkl
It is the instantaneous firing rate of all neurons as a function of time in a given session.
mn9686-27102021-0106.shank_neuron.csv
It contains the neuron ID, neuron number and the hippocampal layer where we recorded the neuron, so either pyr, which represents the neuron, were recorded in the pyramidal layer of the hippocampus or dn, which means the none pyramidal layer of the hippocampus.
Shank_layer.csv
It's a data frame containing the number of the shank and the hippocampal layer we recorded from that shank. Pyr represents the pyramidal layer, and the dn represents the non-pyramidal layers.
The files generated using Kilosort and Phy are listed below; please visit the Phy website for more information at https://phy.readthedocs.io/en/latest/terminology/
params.py, amplitudes.npy, channel_map.npy, channel_positions.npy, pc_features.npy, pc_feature_ind.npy, spike_templates.npy, spike_times.npy, spike_clusters.npy, cluster_group.tsv, cluster_info.tsv, cluster_KSLabel.tsv, cluster_ContamPct.tsv, cluster_Amplitude.tsv, templates.npy
-
params.py:
Python script contains various parameters and configuration settings for spike sorting and data processing. - for every spike, the value found in
amplitudes.npy
, saved by the spike sorting algorithm. - The
channel_map.npy
file contains a 1D integer array calledchannel_map
, of size(n_channels,)
. The raw data array hasn_channels_dat
columns (which may be different fromn_channels
if there are dead channels). -
channel_positions.npy:
It's about the position of the channel on the shank -
pc_features.npy:
Principal component features used in spike sorting -
pc_feature_ind.npy:
Related to the index of the principle component -
spike_templates.npy:
The template in which each cluster was separated before manual clustering -
spike_times.npy:
Contains information about the times at which spikes were detected -
spike_clusters.npy:
1D array hasn_spikes
elements, it gives the cluster id of every spike. -
cluster_group.tsv:
Each row in the file corresponds to a cluster, representing a putative neuron or group of neurons, and contains information about the cluster's properties and classification. -
cluster_info.tsv:
provides detailed information about each cluster obtained during spike sorting. -
cluster_KSLabel.tsv:
Information about the labels of each cluster -
cluster_ContamPct.tsv:
Contains the principle component related to each cluster (cluster_id\tContamPct) -
cluster_Amplitude.tsv:
It has the Id and the amplitude of the specific cluster (cluster_id\tAmplitude) -
templates.npy:
Set of waveforms on the specific channel
There are two mice whose name starts with TYY letters ( TYY5622 and
)instead of mn. There are no differences between the files in the subdirectories of the two animals that start with TYY instead of mn.
/autopi_ca1/results:
Most of the files in this directory were generated within one of the Jupyter notebooks included in a GitHub repository with this address: https://github.com/Mrymna/Jazi_et.al_2023_noInt
Cell_classification_noint.csv
: It's a data frame that represents information about the
'Id': cell id
'Session': which session the cell was recorded
'subject': the name of the animal in which the cell was recorded
'valid': whether the cell is valid or not
'cellType': The cell type, which can be ‘pyr’, stands for the pyramidal cells recorded from the hippocampus's CA1 region, and ‘nan’ refers to non-pyramidal cells.
'meanRate': the mean firing rate of the cell
'shank': the shank number where the cell was recorded.
'layer': The hippocampus layer in which the cell was recorded. Either ‘pyr’ stands for the CA1 pyramidal cell layer, and ‘dn’ is the non-CA1 pyramidal layer.
dfLev.csv:
It's a data frame that contains the location:
'Session': Session name
'Trial': trial number
'X': The x location of the lever on a given trial
'Y': The y location of the lever on a given trial
'Light': Light condition on a given trial
'nan's: we have some nan values on columns x and y due to inaccurate tracking in that specific session.
myProjectWithTrials.pickle:
It's an autopipy.project object that was generated in a jupyter notebook from a GitHub repository called trials/extract_trials.ipynb from the repository with this address: https://github.com/Mrymna/Jazi_et.al_2023_noInt
Protocol2.png:
It's an image used to generate the main figures 1.c and 3.a.
Protocol2_with_labels.png:
This image is used to generate the main figure 3.a.
Protocol.png
: This is an image used to generate the main figure 3.a.
1DhomingHisto.pickle:
This is a dictionary file generated in fig4/homing_path_data_collection.ipynb
notebook in the Jazi_et.al_2023_noInt repository. The keys in this dictionary are:
'homingFromLeavingLeverToPeriphery_light_distance': Is the 1D firing rate histogram as a function of the distance of the animal from the bridge on the arena for the homing paths for all light trials.
'homingFromLeavingLeverToPeriphery_dark_distance': Is the 1D firing rate histogram as a function of the distance of the animal from the bridge on the arena for the homing paths for all dark trials.
'homingFromLeavingLeverToPeriphery_light_iTime': Is the 1D firing rate histogram as a function of the time for the homing paths for all light trials.
'homingFromLeavingLeverToPeriphery_dark_iTime': Is the 1D firing rate histogram as a function of the time for the homing paths for all dark trials.
'homingFromLeavingLeverToPeriphery_light_targetDistance': Is the 1D firing rate histogram as a function of the distance of the lever to the animal for the homing paths for all light trials.
'homingFromLeavingLeverToPeriphery_dark_targetDistance': Is the 1D firing rate histogram as a function of the distance of the lever to the animal for the homing paths for all dark trials.
'homingFromLeavingLeverToPeriphery_light_y': Is the 1D firing rate histogram as a function of y location of the animal on the arena for the homing paths for all light trials.
'homingFromLeavingLeverToPeriphery_dark_y': Is the 1D firing rate histogram as a function of y location of the animal on the arena for the homing paths for all dark trials.
1DhomingHistoStats.pickle:
This is a dictionary file generated in fig4/homing_path_data_collection.ipynb
notebook. It is a dictionary containing rate histograms and information scores for the rate histograms for all the conditions explained above.
1DsearchHisto.pickle:
This is a dictionary file generated in fig4/search_path_data_collection.ipynb
notebook. The keys are similar to 1DhomingHisto.
1DsearchHistoStats.pickle:
This is a dictionary file generated in fig4/search_path_data_collection.ipynb
notebook. It is a dictionary containing rate histograms and information scores for the rate histograms for all the conditions explained above.
aroundLeverIFRDict.pickle:
It's a dictionary that was generated in a jupyter notebook fig6-7/lever_centered_sh.ipyn.
Contains the instantaneous firing rate matrix of each neuron in a session.
homingIFRDict.pickle:
This is a dictionary file generated in fig4/homing_path_data_collection.ipynb
notebook. It's a dictionary containing rate histograms during the homing paths for each session.
homingMapDict.pickle:
This is a dictionary file generated in fig4/homing_path_data_collection.ipynb
notebook. It is a dictionary containing 2D firing rate maps as a function of the location of the animal in the arena during the homing paths of all trials in one session.
leverCells.pickle:
It's a dictionary that was generated in fig5/fig5.ipynb
notebook. It contains the cells that we defined as lever-box anchored cells, their corresponding cell id, cell index and the animal's name in both light and dark light conditions. The keys are ['none', 'lever', 'bridge', 'any', 'all'] that refer to different reference frames as none, lever, bridge etc.
leverFieldSearchPathStats.pickle:
It's a dictionary that was generated in /fig6-7/fig6-7.ipynb
notebook. It contains information about the mean firing rate, trial shift, peak firing rate and mean vector length of the lever-box-anchored cells. For more information, please refer to this jupyter notebook.
mySearchHomingMapsInZone_5cm_per_bin.pickle:
This is a dictionary file generated in fig3/search_homing_light_dark_maps.ipynb
notebook. It is a dictionary containing 2D firing rate map as a function of the animal's location on the arena during the search and homing paths of all trials in one session but only in a small zone in front of the bridge with the 5cm bin size.
mySearchHomingMapsInZone.pickle:
This is a dictionary file generated in fig3/search_homing_light_dark_maps.ipynb
a notebook. It is a dictionary containing 2d firing rate map as a function of the location of the animal in the arena during the search and homing paths of all trials in one session.
mySearchHomingMaps.pickle:
It's a dictionary that was generated in /fig3/search_homing_light_dark_maps.ipynb
notebook. It contains all cells' 2D firing rate maps during search and homing paths.
mySearchHomingMapStats.csv:
It's a data frame that was generated in /fig3/search_homing_stats.ipynb
notebook. It has statistical information about the cells in an interval of interest. The columns are:
'peakRate': Peak firing rate of the cell in a given interval
'meanRate': mean firing rate of the cell in a given interval
'validBins': The valid bins in a given interval
'Info': The information score of the cell, nan, means there is no valid information score for this cell
'sparcity': sparcity score of the cell, nan, means there is no valid sparsity score for this cell
'session': Session name
'Mouse': Animal name
'cellId': Cell id
myMaps.pickle:
A dictionary generated in /fig3/open_field_light_dark_maps.ipynb
notebook. It contains the 2D firing rate map of the cells in all possible intervals. For more information, please check the notebook.
myMapStats.csv:
It is a data frame generated in /fig3/light_dark_stats.ipynb
. It has the statistical information about the cells in an interval of interest. Columns are:
'peakRate': Peak firing rate of the cell in a given interval
'meanRate': mean firing rate of the cell in a given interval
'info': The information score of the cell, nan, means there is no valid info score
'sparsity': Sparsity score of the cell. nan means there is no valid sparcity score for this cell
'condition': The light condition, task or specific interval where the cell was recorded
'mouse': Animal name
'cellId': Cell id
Pairs_cc.npy:
it's a numpy array that was generated in fig3/light_dark_stats_pairs.ipynb
Notebook. It contains the spike time cross-correlation of the pairs of cells in different conditions. For more information, please refer to the notebook.
pairs_ifrAsso_mapSim.csv:
It's a data frame generated in fig3/light_dark_stats_pairs.ipynb
notebook. It has the instantaneous firing rate of pairs of cells in different intervals. For more information, please refer to the notebook. Some columns, such as ifrAsso_circ80
or mapSim_circ80
contain nan values which means we couldn't calculate the instantaneous firing rate or the mapsimilarity for those cells.
leverHistoCor.pickle:
it's a dictionary generated in /fig5/lever_centered_maps.ipynb.
It has the Pearson correlation between the firing rate histogram of the lever cells between intervals of interest. Please check the notebook for more information.
leverIFRDict.pickle:
It's a dictionary generated in /fig5/lever_centered_ifr.ipynb
notebook. It has the instantaneous firing rate histogram for the lever-box-anchored cells as a function of the distance of the animal to the lever. For more information, please check the notebook.
leverMapCor.pickle:
It's a dictionary generated in /fig5/lever_centered_maps.ipynb
notebook. It has the Pearson correlation of the 2d firing rate maps in between the interval of interest. For more information, please check the notebook.
peakPositionLeverPositionCorr.csv:
It's a data frame generated in fig4/search_homing_trial_matrix.ipynb.
It contains correlates with the peak of the firing for the cell and the position of the lever. Its columns are :
'cluId': It has the cluster id
'light':The light condition
'pathType': The path type such as search, homing, at the lever, etc.
'coordX': The x position location of the lever on a given trial
'shuf': If the position of the lever was shuffled or not.
'cor': The Pearson correlation, nan, means there is no valid correlation in this case.
'slope': Is the slope of the regression line
'Intercept': the intercept of the regression line
leverPeakCorrSign.csv:
It's a data frame that was generated in /fig4/search_homing_trial_matrix.ipynb
It indicates which neuron correlates significantly with the lever peak location and the lever location. The columns are:
'cluId': Cluster id of the cell
'homingFromLeavingLeverToPeriphery-light': The correlation in homing in light
'searchToLeverPath-light': Correlation in search in light
'homingFromLeavingLeverToPeriphery-dark': correlation in homing in dark trials
'searchToLeverPath-dark': Correlation in search path in the dark
leverQuadMapCor.pickle: its dictionary that is generated in /fig5/lever_centered_maps.ipynb
notebook. Map correlations between quadrant maps, north-south-east-west quadrant of the arena. For more information, please visit the notebook.
leverQuadMapRotCor.pickle: It's a dictionary generated in /fig5/lever_centered_maps.ipynb
notebook. It generates 2D numpy arrays that have a correlation between the square matrix with rotations around their centre. For more information, please check the notebook.
mapCorDf.csv:
The generated data frame /fig3/light_dark_stats.ipynb
contains the coefficient between two firing rate maps in different conditions. The columns are :
'Condition': The wo condition we calculated the correlation from
'r': the Pearson correlation value, nan values means there is no valid corr between the 2d maps of the two conditions.
searchHomingMapCorDf.csv:
It's a data frame that is generated in /fig3/search_homing_stats.ipynb
notebook. Contains the correlation coefficient between the search or homing maps in different conditions. The columns are:
'condition': condition name
'r': The r value, nan means there is no valid correlation in this case
searchHomingPairs_ifrAsso_mapSim.csv:
This data frame is generated in /fig3/search_homing_stats_pairs.ipynb
notebook. It contains the map similarity of pairs of neurons in a set of conditions, one row per pair. The columns start with ‘ifrAsso_’, which represents the instantaneous firing rate association of the pairs of neurons in a given condition, or ‘mapSim_’, which has the Pearson correlation of the pairs of the cells in a given condition. For more information, please check the notebook. nans means we could not calculate this condition's ifr or map similarity.
searchIFRDict.pickle:
This is a dictionary file generated in fig4/search_path_data_collection.ipynb
notebook. It's a dictionary containing rate histograms during the homing paths for each session. For more information, please check the notebook.
searchMapDict.pickle:
This is a dictionary file generated in fig4/search_path_data_collection.ipynb
notebook. It contains all cells' 2D firing rate maps during the search trials in different light conditions. The keys are:
'searchToLeverPath_light': 2D firing rate maps in all search paths in all light trials.
'searchToLeverPath_light_1': 2D firing rate maps in all search paths in the first half of the light trials.
'searchToLeverPath_light_2': 2D firing rate maps in all search paths in the second half of the light trials.
'searchToLeverPath_dark': 2D firing rate maps in all search paths in all dark trials.
'searchToLeverPath_dark_1': 2D firing rate maps in all search paths in the first half of the dark trials.
'searchToLeverPath_dark_2': 2D firing rate maps in all search paths in the second half of the dark trials.
myAutos.pickle:
It's a dictionary that is generated in /fig3/open_field_light_dark_maps.ipynb
notebook. It contains the autocorrelation for each cell with two different bins, such as [0.0005,0.001]. For more information, please check the notebook.
myLeverHistos.pickle:
This is a dictionary that is generated in fig5/lever_centered_maps.ipynb
It contains lever-centered histograms of the cells within the intervals of interest. For more information, please check the notebook.
myLeverMapsAccurate.pickle
: It's a dictionary that is generated in /fig6-7/lever_centered_sh.ipynb
notebook. It contains the 2D firing rate maps of the lever-box anchored cells in trials with accurate and inaccurate homing dark trials. For more information, please check the notebook.
myLeverMapsDissociate.pickle:
It's a dictionary generated in /fig5/lever_centered_maps.ipynb
. It contains the map of the lever-box-anchored cells in different reference frames while eliminating the lever position for which the bridge angle is almost the same as the south.
myLeverMapsDissociateStats.pickle:
It's a dictionary generated in /fig5/lever_centered_maps.ipynb
. It has the map of the lever-box-anchored cells in different reference frames. For more information, please check the notebook.
myLeverMaps.pickle:
It's a dictionary that was generated in /fig5/lever_centered_maps.ipynb.
It contains the 2D firing rate map of the lever-box-anchored cells in different light conditions with or without the lever-press. For more information, please check the notebook.
myLeverMapsShortSearch.pickle:
It's a dictionary that is generated in /fig6-7/lever_centered_sh.ipynb
notebook. It contains 2D lever-box-centered maps of lever-box-anchored cells for short and long search lengths.
myLeverStatsThreshold.csv:
It's a data frame that was generated in /fig5/lever_centered_maps.ipynb
. It contains the threshold for information score from the shuffled data for all the leve-box-anchored cells. The columns are:
'cellId': cell id
'condition': the interval of interest
'infoThreshold': The threshold for the information score in a given condition, nan means we couldn't calculate a valid threshold for this condition.
myLeverMapsStats.pickle:
It's a dictionary file generated in fig5/lever_centered_maps.ipynb
. It contains the stats for the lever-box-anchored cells in different reference frames. Please check the notebook for more information.
myLeverQuadMaps.pickle:
It's a dictionary that is generated in fig5/lever_centered_maps.ipynb.
Contains the firing rate maps around the lever for lever positions at the arena's North-East, North-West, South-West and South-East.
myLeverMapsStatsAccurate.pickle:
It's a dictionary that was generated in /fig6-7/lever_centered_sh.ipynb
.It contains the stats for the 2D firing rate maps of the lever-box anchored cells in trials with accurate and inaccurate homing dark trials. For more information, please visit the notebook.
myLeverStats.csv:
is a data frame generated in /fig5/lever_centered_maps.ipynb
. It contains the stats for the lever-box-anchored cells in different conditions. The columns are :
'cellId': It's a cell id
'condition': The condition of interest
'Info': information score, nan values means there is no valid information score
trialMatrixCor.csv:
is a data frame generated in fig4/search_homing_trial_matrix.ipynb
. It contains the correlation matrix of the trial rate matrix. Each row of the trial rate matrix has the rate as a function of distance, time, y-coordinate or target distance. We can correlate all pairs of rows to measure how reliable the rate information is across trials. The columns are :
'cluId': Cluster id
'path': The path, e.g. search or homing
'light': Light condition
'var': behavioural variable such as y, distance, time, etc.
'Cor': The correlation between the mean firing rate and the behavioural variable, nan, means there is no valid correlation.
trialMatrixCorShuf.csv:
Is a data frame generated in fig4/search_homing_trial_matrix.ipynb. It is similar to trialMatrixCor.csv, but the difference in the shuffle is that we shift the data of each trial by a random amount.
'cluId': Cluster id
'path': The path, e.g. search or homing
'light': Light condition
'var': behavioural variable such as y, distance, time and etc.
'Cor': The correlation between the mean firing rate and the behavioural variable, nan means there is no valid correlation.
trialMatrixSign.csv:
It's a data frame generated in fig4/search_homing_trial_matrix.ipynb. It contains information about which trial matrix internal correlations are significant. The columns are :
'cluId': cluster id
'homingFromLeavingLeverToPeriphery-light-y': The trial matrix correlation during homing in light for the y as a behavioural variable.
'homingFromLeavingLeverToPeriphery-light-targetDistance': The trial matrix correlation during homing in light for the animal's distance as a behavioural variable.
'searchToLeverPath-light-y': The trial matrix correlation during the search in light of the y as a behavioural variable.
'searchToLeverPath-light-targetDistance': The trial matrix correlation during the search in light of the animal's distance as the behavioural variable.
'homingFromLeavingLeverToPeriphery-dark-y': The trial matrix correlation during homing in the dark for y as a behavioural variable.
'homingFromLeavingLeverToPeriphery-dark-targetDistance': The trial matrix correlation during homing in the dark for the animal's distance as a behavioural variable.
'searchToLeverPath-dark-y': The trial matrix correlation during the search in the dark for the y as a behavioural variable.
'searchToLeverPath-dark-targetDistance': The trial matrix correlation during the dark search for the animal's distance as a behavioural variable.
trialMatrixStats.pickle:
is a dictionary generated in fig4/search_homing_trial_matrix.ipynb
. It's a data frame that contains the statistics of the trial matrices. For more information, please visit the notebook.
autopi_behavior_2021 subdirectories and files:
Setup.png
It's a PNG file that we generated in Blender and are using to generate panel a in the main figure 1.
training_sessions
The table contains the sessions' names during the experiment's training phase.
testing_sessions
List of sessions recorded with the experiment's final step during the testing days.
We have provided only two sessions for two animals in the autopi_behavior project. Most data files are in their respective recording session directories. For example, in this directory: autopi_behavior_2021/mn4673/mn4673-06102019-1534
, most files have a filebase (e.g. mn4673-06102019-1534.log
). Most of the files in this example can be found in the autopi_ca1 project except the two following:
Mn4673-06102019-1534.arena_top.log
It is a table with two columns; the first shows the frame number, and the second is the time in seconds. This log file relates to the frames recorded from a camera on top of the arena in the AutoPI apparatus.
Mn4673-06102019-1534.home_base.log
It is a table with two columns; the first shows the frame number, and the second is the time in seconds. This log file relates to the frames recorded from a camera on top of the home base in the AutoPI apparatus.
autopi_behavior_2021/results:
fanExpSessionList
List of the sessions in the first half of the odour control experiment
fanExpSessionList2
List of the sessions in the second half of the odour control experiment.
logTrainingDF.csv
It's a data frame with columns:
event: the event inside the task (e.g. start, magazineBeamBreak, etc.).
time: time in second
Param: the parameter from the event (e.g., for the door, it can be 0 or 1)
timeWS: the time within the session in the second
Session: represents the session name
Subject: Subject name
sessionDateTime: The date and the time of the day the session was recorded.
protocolTrainingDF.csv
It's a data frame with the columns:
script: that contains the name of the script running for training sessions.
duration: duration of the session in seconds
master: Ros master computer
IP: The IP of the ros-master computer
session: Session name
subject: Subject name
sessionDateTime: The date and time of the recorded session
speedProfile.pkl
This is a dictionary with keys:
'All': Speed of the animal in all of the trials recorded during the autopi_behavior project in different path types, such as all parts of the trial
'searchTotal': Speed of the animal in all trials only from the beginning of the trial when the door is open to when the animal presses the lever.
'searchArena': Speed in all trials during only the time when the animal was searching for the lever on the arena.
'searchArenaNoLever': Speed of the animal during the search path until the animal arrives 12 cm close to the lever.
'homingTotal': Speed in the homing from when they press the lever to when they get the reward
'homingPeri': Speed in the homing path from when the mouse presses the lever to when it reaches the periphery.
'homingPeriNoLever': Speed of the animal in the homing paths from when it is 12 cm away from the lever.
Testing sessions: The list of the testing sessions that we recorded.
trialsFanexp.csv
A data frame with information about the trials we recorded in the second control odour behaviour we used. The columns are:
'subject': The name of the animal
'Light': The light condition in that trial could be light or dark
'angularErrorHomingPeri': The homing error of the animal in a given trial.
"homingPeri_meanSpeed": The speed of the animal during homing.
"searchArenaNoLever_meanSpeed": The mean speed of the animal during the search paths.
"homingPeriNoLever_medianHDDeviationToTarget": The median heading error direction of the animal in the homing paths.
"homingPeriNoLever_medianMVDeviationToTarget": The median, mean vector length of the homing error of the animal.
'sessionName': Name of the session
'trialNo': Trial number
‘valid’: If the trial counts as a valid trial or not
trialsDF.csv
it's a data frame with information about the trials we recorded in the behavioural experiment we used. The columns are:
'subject': The name of the animal
'Light': The light condition in that trial could be light or dark
'angularErrorHomingPeri': The homing error of the animal in a given trial.
"homingPeri_meanSpeed": The speed of the animal during homing.
"searchArenaNoLever_meanSpeed": The mean speed of the animal during the search paths.
"homingPeriNoLever_medianHDDeviationToTarget": The median heading error direction of the animal in the homing paths.
"homingPeriNoLever_medianMVDeviationToTarget": The median, mean vector length of the homing error of the animal.
'sessionName': Name of the session
'trialNo': Trial number
‘Valid’: if the trial counts as a valid trial or not
‘leverPressX’: The x position of the lever when the lever was pressed
‘leverPressY’: The y position of the lever when the lever was pressed
'leverPositionOri': the orientation of the lever on a given trial
trialsTrainSet.csv
It's a data frame like trialsDF.csv but with more columns, such as :
'subject': The name of the animal
'Light': The light condition in that trial could be light or dark
'angularErrorHomingPeri': The homing error of the animal in a given trial.
"homingPeri_meanSpeed": The speed of the animal during homing.
"searchArenaNoLever_meanSpeed": The mean speed of the animal during the search paths.
"homingPeriNoLever_medianHDDeviationToTarget": The median heading error direction of the animal in the homing paths.
"homingPeriNoLever_medianMVDeviationToTarget": The median, mean vector length of the homing error of the animal.
'sessionName': Name of the session
'trialNo': Trial number
‘Valid’: if the trial counts as a valid trial or not
‘leverPressX’: The x position of the lever when the lever was pressed
‘leverPressY’: The y position of the lever when the lever was pressed
'leverPositionOri': the orientation of the lever on a given trial
'nJourneys': number of journeys in a given trial
"nJourneysAtLever": Number of journeys where the mouse finds the lever
‘nJourneysWithPress’: Number of journeys where the mouse pressed the lever
'Duration': Duration of a given trial
‘homingPeriNoLever_meanVectorLengthPosi’: The mean vector length of the homing direction of the animal until it reaches the periphery
'searchArenaNoLever_meanVectorLengthPosi': The mean vector length of the direction of the animal during search behaviour until it reached 12 cm to the lever
'homingTotal_meanVectorLengthPosi': The mean vector length of the homing direction of the animal until it reaches the bridge
'searchArena_meanVectorLengthPosi': The mean vector length of the direction of the animal during search behaviour until it presses the lever
'timeLever': The time that the mouse spends at the lever
'angularErrorHomingPeri': The homing error of the animal until it reaches the periphery
'searchArenaNoLever_duration': The duration of the search path until the animal reaches 12 cm away from the lever
'searchArenaNoLever_length': The length of the search path until the animal reaches 12 cm away from the lever
'searchArenaNoLever_meanSpeed': The mean speed of the animal during the search path until the animal reaches 12 cm away from the lever
'searchArena_meanSpeed': The mean speed of the animal in the search path until the animal presses the lever
'homingPeriNoLever_duration': The duration of the homing path from 12 cm away from the lever to the periphery
'homingPeriNoLever_length': The length of the homing path from 12 cm away from the lever to the periphery
'homingPeriNoLever_meanSpeed': The mean speed of the animal in the homing path from 12 cm away from the lever to the periphery
'searchArena_length': The length of the search path from when it goes to the bridge to when it presses the lever
'homingPeri_length': The length of the homing path from when the animal presses the lever to when it reaches the bridge
'searchArena_duration': The duration of the search path from when it goes to the bridge to when it presses the lever
'homingPeri_duration': The duration of the homing path from when the animal presses the lever to when it reaches the bridge
Sharing/Access information
The data set is split into two files because of the large size of the data set. You can combine them in a Linux terminal using the following command.
cat Jazi_etal_2023_noInter_part1.tar.gz Jazi_etal_2023_noInter_part2.tar.gz > Jazi_etal_2023_noInter.tar.gz
And to unzip them, you can use this:
tar xvzf Jazi_etal_2023_noInter.tar.gz -C /path/to/destination_directory
Code/Software
To analyze this data, please follow the steps described in a GitHub repository with this address: DOI: 10.5281/zenodo.8356898
Methods
Mice were connected to the data acquisition system (RHD2000-Series Amplifier Evaluation System, Intan Technologies, analog bandwidth 0.09–7603.77 Hz, sampling rate 20 kHz) via a lightweight cable. The recording was controlled using ktan software (https://github.com/kevin-allen/ktan). Kilosort2 (https://github.com/jamesjun/Kilosort2) was used for spike extraction and clustering. Automatically generated clusters were visually inspected and manually refined with Phy (https://github.com/cortex-lab/phy).
The quality of spike clusters was estimated from the spike-time autocorrelation. A refractory period ratio was calculated from the spike-time autocorrelation from 0 to 25 ms (bin size: 0.5). The mean number of spikes from 0 to 1.5 ms was divided by the maximum number of spikes in any bin between 5 and 25 ms. Any cluster with a refractory period ratio larger than 0.25 was discarded.
In experiments with electrophysiological recordings, the position of the mouse was estimated from the position of infrared-LEDs (wavelength 940 nm) located on both sides of the head of the mouse. Three LEDs were used on one side and one on the other. The distance between the two LED groups was 3 cm. Two video cameras fitted with long-pass filters (Cut-On wavelength: 800 nm) and located directly above the recording environment monitored the position of the LEDs at 30 or 50 Hz. The location of the mouse was extracted online from the position of the LEDs (https://github.com/kevin-allen/positrack or https://github.com/kevin-allen/positrack2).