Spike sorting pipeline for generating consensus units from neuropixel recordings.
This is the postprocessing pipeline used by the Shuler lab to extract spike times from ephys recordings collected with Neuropixel Probes. It uses Spike Interface to run multiple sorting algorithms and find consensus units.
Requirements
- Spike Interface (https://github.com/SpikeInterface)
- Kilosort 2.5 (https://github.com/MouseLand/Kilosort/releases/tag/v2.5)
- Kilosort 3 (https://github.com/MouseLand/Kilosort)
Follow install and requirements instructions from the Spike Interface and Kilosort Readme files.
Clone the repo
git clone https://github.com/esutlie/spikeline.git
Change the directories to point to your installations of Kilosort 2.5 and Kilosort3
os.environ['KILOSORT3_PATH'] = os.path.join('PATH', 'TO', 'Kilosort3')
os.environ['KILOSORT2_5_PATH'] = os.path.join('PATH', 'TO', 'Kilosort2_5')
Change the path
variables in file_paths.py to work for your directory structure.
def root_file_paths():
"""change root filepaths here to your own"""
origin_path=os.path.join('D:\\', 'recordings') # A directory containing only data folders generated by SpikeGLX.
external_path=os.path.join('E:\\', 'neuropixel_data') # A folder on an external hardrive or other accessbile storage location.
phy_ready_path=os.path.join('C:\\', 'phy_ready') # A temp folder that can hold sessions ready to be manually curated. Will take up a lot of space if multiple sessions are queued.
phy_holding_path=os.path.join('E:\\', 'phy_holding') # Depricated.
pi_path=os.path.join('C:\\', 'behavior_code', 'data') # Location of the associated raspberry pi files.
processed_data=os.path.join('C:\\', 'processed_data') # Final desination for processed data.
file_paths = {
'origin_path': origin_path,
'external_path': external_path,
'phy_ready_path': phy_ready_path,
'phy_holding_path': phy_holding_path,
'pi_path': pi_path,
'processed_data': processed_data
}
return file_paths
Change the ks3_path
and ks2_5_path
variables in spikeline.py to your own.
ks3_path = os.path.join('C:\\', 'your_path', 'Kilosort3')
ks2_5_path = os.path.join('C:\\', 'your_path', 'Kilosort2_5')
Distributed under the MIT License. See LICENSE.txt
for more information.
Elissa Sutlief - elissasutlief@gmail.com
Project Link: https://github.com/esutlie/spikeline