Skip to content

neuroinformatics-unit/spikewrap

spikewrap

spikewrap is a tool for automating extracellular electrophysiology analysis.

See the documentation for a quick feature overview and to get started.

Overview

spikewrap provides a lightweight interface to manage the preprocessing and sorting of extracellular electrophysiological data.

Built on SpikeInterface, spikewrap offers a convenient wrapper to run sorting pipelines. It aims to facilitate the sharing of electrophysiology pipelines and standardize project folders.

For example, all runs for a recording session can be preprocessed with:

import spikewrap as sw

subject_path = sw.get_example_data_path() / "rawdata" / "sub-001"

session = sw.Session(
    subject_path=subject_path,
    session_name="ses-001",
    file_format="spikeglx",  # or "openephys"
    run_names="all",
    probe=None,  # optional argument to set probe (neuropixels auto-detected)
)

session.preprocess(
    configs="neuropixels+kilosort2_5",
    per_shank=True,
    concat_runs=True,
)

session.save_preprocessed(
    overwrite=True,
    n_jobs=12,
    slurm=True
)

This will output a folder structure like:

└── derivatives/
    └── sub-001/
        └── ses-001  /
            └── ephys/
                └── concat_run/
                    ├── preprocessed/
                    │   ├── shank_0/
                    │   │   └── si_recording/
                    │   │       └── <spikeinterface binary>
                    │   └── shank_1/
                    │       └── si_recording/
                    │           └── <spikeinterface binary> 
                    └── sync/
                    │   └── sync_channel.npy
                    └── orig_run_names.txt

Installation

pip install spikewrap

Get Involved

Contributions to spikewrap are welcome and appreciated! Please see our contributing guide for details, and don't hesitate to ask any questions on our Zulip Chat.