Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pykilosort-1.4.6.tar.gz (88.7 kB view details)

Uploaded Source

Built Distribution

pykilosort-1.4.6-py2.py3-none-any.whl (87.6 kB view details)

Uploaded Python 2 Python 3

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

Hashes for pykilosort-1.4.6.tar.gz
Algorithm Hash digest
SHA256 9da7357658fd15726fefbd5fdb0812fe0e901213cc9a8f591736803c3ba44bb5
MD5 4a0111b55900b83fdb3a35cc5dd28d40
BLAKE2b-256 811bf05b7f849f0476082f0054464e3d5f81f929227a1d8eb38d1309321d2427

See more details on using hashes here.

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

Hashes for pykilosort-1.4.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 94bac3fb359d76ddc48ea05f4f698b027a75ec3a01cb19600553ef3fb2d10e2f
MD5 db4593b29764c67ef954365c85eab3aa
BLAKE2b-256 04463fe2e2920786ff8e705c536df3359a014db7e2b69cb86e766e5194a24221

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page