GitHunt
JG

jgasthaus/gpu_python

DDP Spike Sorting in Python

GPUDPM Spike Sorting in Python

Jan Gasthaus (j.gasthaus@ucl.ac.uk)

Description

This code implements the GPUDPM spike sorting model proposed in
[Gasthaus, 2008] in Python, and was used to perform the experiments
in that report. The code is stable, but not very efficient, thus
not suitable for large data sets. It comes with an interface to
perform experiments (experimenter.py) which is discussed below.

Requirements

The code is written in Python is tested with Python 2.5, though older versions
might also work.
The following additional modules are also needed:

* NumPy/SciPy [www.scipy.org] (for arrays and random number generation)
* Matplotlib [matplotlib.sourceforge.net] (for plotting)
* cfgparse [sourceforge.net/projects/cfgparse] (for config file parsing)

Command Line Interface

The code comes with a command line interface which is controlled through
configuration files and command line options. A list of available config
file options can be obtained with


#> ./experimenter.py --cfghelp

while a listing of available command line options is available through


#> ./experimenter.py --help

The default settings for most of the parameters are stored in cfgs/default.cfg
which can serve as a starting point for creating your own config files. Also,
the cfgs/ directory contains some example configuration files. After
creating a configuration file, the experiment can be started with


#> ./experimenter.py --cfgfiles [FILENAME]

This will run the experiment with the parameters given in [FILENAME], falling
back to default.cfg if parameters are not specified.

After the experiment has finished, the results are available in the output/
directory (or the one specified by the output_dir option) in a file
called [IDENTIFIER].label or [IDENTIFIER].mh_labels.

A command line tool for analyzing the results and producing plots is also
provided. After running the experimenter command on a given config file,
a call to


#> ./analysis.py --cfgfiles [FILENAME]

will compute various statistics and produce several plots in the
output/[IDENTIFIER]/plots directory. Type


#> ./analysis.py --help

for a list of available options.

Data Format

The input data format is a very simple text-based format. Each row represents
an observed spike event and has the following format:


[LABEL] [SPIKE_TIME] [DIM_1] ... [DIM_D]

where [LABEL] is the class label of the observed spike (this is only used by
analysis.py and can just be set to 0 if not known), [SPIKE_TIME] is the
spike occurrence time (in milliseconds from the beginning of the recording),
and [DIM_1],...,[DIM_D] are the D-dimensional feature vectors.
All numbers should be in a format that is understood by the NumPy loadtxt
function.

License

Copyright (C) 2008 Jan Gasthaus

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.

References


[Gasthaus, 2008] Gasthaus, J. A., "Spike Sorting using Time-Varying Dirichlet
Process Mixture Models", MSc Thesis, Department of Computer
Science, University College London, 2008.


jgasthaus/gpu_python | GitHunt