Python port of KiloSort 2
Project description
Python port of KiloSort2
This is a Python port of the original MATLAB version of Kilosort 2.5, written by Marius Pachitariu, with Neuropixel specific improvements and software engineering enhancements. The modifications are described in this white paper.
Installation
System Requirements
The code makes extensive use of the GPU via the CUDA framework. A high-end NVIDIA GPU with at least 8GB of memory is required.
Doing the install using Anaconda (Linux)
Only on Linux, first install fftw by running the following
sudo apt-get install -y libfftw3-dev
Navigate to the desired location for the repository and clone it
git clone https://github.com/int-brain-lab/pykilosort.git
cd pykilosort
Create a conda environment
conda env create -f pyks2.yml
conda activate pyks2
pip install -e .
Usage
Example
We provide a few datasets to explore parametrization and test on several brain regions. The smallest dataset is a 100 seconds excerpt to test the installation. Here is the minimal working example:
import shutil
from pathlib import Path
from pykilosort.ibl import run_spike_sorting_ibl, ibl_pykilosort_params, download_test_data
data_path = Path("/mnt/s0/spike_sorting/integration_tests") # path on which the raw data will be downloaded
scratch_dir = Path.home().joinpath("scratch", 'pykilosort') # temporary path on which intermediate raw data will be written, we highly recommend a SSD drive
ks_output_dir = Path("/mnt/s0/spike_sorting/outputs") # path containing the kilosort output unprocessed
alf_path = ks_output_dir.joinpath('alf') # this is the output standardized as per IBL standards (SI units, ALF convention)
# download the integration test data from amazon s3 bucket
bin_file, meta_file = download_test_data(data_path)
# prepare and mop up folder architecture for consecutive runs
DELETE = True # delete the intermediate run products, if False they'll be copied over to the output directory for debugging
shutil.rmtree(scratch_dir, ignore_errors=True)
scratch_dir.mkdir(exist_ok=True)
ks_output_dir.mkdir(parents=True, exist_ok=True)
# loads parameters and run
params = ibl_pykilosort_params(bin_file)
params['Th'] = [6, 3]
run_spike_sorting_ibl(bin_file, delete=DELETE, scratch_dir=scratch_dir,
ks_output_dir=ks_output_dir, alf_path=alf_path, log_level='INFO', params=params)
Troubleshooting
Managing CUDA Errors
Errors with the CUDA installation can sometimes be fixed by downgrading the version of cudatoolkit installed. Currently tested versions are 9.2, 10.0, 10.2, 11.0 and 11.5
To check the current version run the following:
conda activate pyks2
conda list cudatoolkit
To install version 10.0 for example run the following
conda activate pyks2
conda remove cupy, cudatoolkit
conda install -c conda-forge cupy cudatoolkit=10.0
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pykilosort-1.4.6.tar.gz
.
File metadata
- Download URL: pykilosort-1.4.6.tar.gz
- Upload date:
- Size: 88.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9da7357658fd15726fefbd5fdb0812fe0e901213cc9a8f591736803c3ba44bb5 |
|
MD5 | 4a0111b55900b83fdb3a35cc5dd28d40 |
|
BLAKE2b-256 | 811bf05b7f849f0476082f0054464e3d5f81f929227a1d8eb38d1309321d2427 |
File details
Details for the file pykilosort-1.4.6-py2.py3-none-any.whl
.
File metadata
- Download URL: pykilosort-1.4.6-py2.py3-none-any.whl
- Upload date:
- Size: 87.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 94bac3fb359d76ddc48ea05f4f698b027a75ec3a01cb19600553ef3fb2d10e2f |
|
MD5 | db4593b29764c67ef954365c85eab3aa |
|
BLAKE2b-256 | 04463fe2e2920786ff8e705c536df3359a014db7e2b69cb86e766e5194a24221 |