Description
|
Here we provide the dataset for our study "Recording site placement on planar silicon-based probes affects signal quality in acute neuronal recordings". Abstract of the study: Multisite, silicon-based probes are widely used tools to record the electrical activity of neuronal populations. Several physical features of these devices are designed to improve their recording performance. Here, our goal was to investigate whether the position of recording sites on the silicon shank might affect the quality of the recorded neural signal in acute experiments. Neural recordings obtained with five different types of high-density, single-shank, planar silicon probes from anesthetized rats were analyzed. Wideband data were filtered to extract spiking activity, then the amplitude distribution of samples and quantitative properties of the recorded brain activity (single unit yield, spike amplitude and isolation distance) were compared between sites located at different positions of the silicon shank, focusing particularly on edge and center sites. Edge sites outperformed center sites: for all five probe types there was a significant difference in the signal power computed from the amplitude distributions, and edge sites recorded significantly more large amplitude samples both in the positive and negative range. Although the single unit yield was similar between site positions, the difference in spike amplitudes was noticeable in the range corresponding to high-amplitude spikes. Furthermore, the advantage of edge sites slightly decreased with decreasing shank width. Our results might aid the design of novel neural implants in enhancing their recording performance by identifying more efficient recording site placements.
|
Notes
| Repository structure
Each recording and corresponding metadata, single unit properties and quality metrics were packaged in the Neurodata Without Borders: Neurophysiology version 2.0 (NWB:N 2.0) data format using the MatNWB API. A single NWB file was created from each recording. NWB files were placed in folders based on the used silicon probe type(five different probes were used: 32-channel, 128-channel and 255-channel silicon probes and two types of Neuropixels silicon probes, see the published paper at the "Related Publication" field above for more details). The filename of the NWB file (identifier) was constructed by concatenating the probe type, the animal ID and, if multiple recordings were used from a single animal, the insertion number or cortical depth (e.g., 128ch_probe_Rat01_Insertion1). In the case of the 128-channel recordings located in the '128channel_silicon_probe_recordings' folder, spike sorting was carried out again using a newer version of the spike sorting software (Kilosort2). All other recordings contain the original spike sorting results done with Kilosort1 and published in the paper.
The CSV file named "Animal_characteristics_and_targeted_cortical_areas" contains information about the weight and sex of animals, as well as about the cortical area and stereotaxic coordinates corresponding to each probe insertion. The "Recording_characteristics" CSV file lists several useful properties for each NWB file including the file size, the duration of the recording, the cortical location, the single unit yield and the average signal-to-noise ratio of single units.
NWB file structure
Each NWB file contains several main groups which are similar to directories. The acquisition group contains the continuous wideband data (‘wideband_multichannel_recording’) in a compressed form, as well as several parameters related to the raw data such as the measurement unit or the data conversion number. The general group contains metadata about the experiments and consists of several subgroups, related to the recording probe (‘general/devices’; ‘general/extracellular_ephys’) or the subjects of the experiments (‘general/subject’). Former subgroups carry information about the probe location (brain area and stereotaxic coordinates) and the relative positions of recordings sites, while the latter contains metadata about the animal (e.g., sex, species, subject ID, or weight). Information about spike sorting and single units and corresponding data are available in the units group. For each unit, we included here the mean and standard deviation of their spike waveform on all channels, calculated both from the filtered (‘mean_waveform_all_channels_filt’; ’waveform_sd_all_channels_filt’) and the wideband data (‘mean_waveform_all_channels_raw’; ’ waveform_sd_all_channels_raw’). Furthermore, the spike waveform recorded on the channel with the largest spike (i.e., peak waveform channel) was saved separately (‘mean_waveform_peak_channel_filt’, ‘mean_waveform_peak_channel_raw’). Several single unit properties and cluster quality metrics, as well as the spike times and spike count of each unit were saved in the units group. Furthermore, to aid users in selecting and analyzing a subset of this dataset appropriate for their research goals, we also created an NWB file (‘allSingleUnits.nwb’) which contains all single units collected with a particular probe type, with all the properties listed above, along with the identifier of the recording (‘units/session_id’) and the cortical area (‘units/cortical_area’) they originate from. The structure of NWB files can be explored using the HDFView software.
Interacting with the NWB files
Users can import data from NWB files using the PyNWB and MatNWB APIs, or using SpikeInterface. Loaded samples of the raw data have to be multiplied by a conversion number (0.195 for the 32-,128- and 255-channel probes and 2.34 for the Neuropixels probes) to get the amplitudes in microvolts. Here we provide some examples how users can import data from NWB files using the MATLAB-based MatNWB API. Loading a short segment (20.000 samples corresponding to 1 second of data) of the raw wideband recording on all (128) channels: 1. nwb = nwbRead('128ch_probe_Rat01.nwb'); 2. dataChunk=nwb.acquisition.get('wideband_multichannel_recording').data.load([1, 1], [128, 20000]); To load data from a 32-channel or 255-channel recording just use 32 or 255, respectively, instead of 128. To load the Neuropixels data, change the channel number to 384 (for the 50um Neuropixels data) or 385 (for the 70 um Neuropixels data) and the sample number to 30.000 to load 1 second of data. The recording site-channel mapping can be found in the published paper (see above at the field "Related publication") and also here.
It is important to note that TimeSeries data types in NWB files are stored with time in the first dimension and channels in the second, but dimensions are reversed in MatNWB. Loading and plotting the mean spike waveform of a specific single unit on the peak waveform channel: 3. peakChannels = nwb.units.vectordata.get('peak_waveform_channel').data.load(); 4. meanWaveforms = nwb.units.vectordata.get('mean_waveform_all_channels_filt').data.load(); 5. mySingleUnit = 11; 6. singleUnitWaveform = meanWaveforms(peakChannels(mySingleUnit), :, mySingleUnit); 7. plot(singleUnitWaveform); Loading the isolation distance quality metric of all units found in a single NWB file: 8. IDvalues = nwb.units.vectordata.get('isolation_distance').data.load(); Spike times are stored in a special structure called ragged arrays consisting of two vectors. The spike_times vector contains all spike times of all single units concatenated one after the other, while the spike_times_index vector stores where the spike times of individual single units are located in the spike_index vector (see also https://neurodatawithoutborders.github.io/matnwb/tutorials/html/ecephys.html#H_97F533F8). We can load the spikes times of a specific single unit (in seconds) the following way: 9. allSpikeTimes = nwb.units.spike_times.data.load(); 10. spikeTimesIndex = nwb.units.spike_times_index.data.load(); 11. spikesOfSingleUnit2 = allSpikeTimes(spikeTimesIndex(1)+1 : spikeTimesIndex(2)); SpikeInterface can also be used to load the wideband data and single unit properties (in Python; works only with version 0.13): 1. import spikeextractors as se 2. nwbPath = '128ch_probe_Rat01.nwb' 3. recording = se.NwbRecordingExtractor(nwbPath) 4. sorting = se.NwbSortingExtractor(nwbPath) 5. mySingleUnit = 2 6. sorting.get_unit_property(mySingleUnit,'isolation_distance') We also provide a Matlab script ("NWB_tutorial_script.m") which can be used to load, visualize and preprocess (e.g., filter) files in the dataset using MatNWB.
|