summaryrefslogtreecommitdiff
path: root/pyspike/spikes.py
blob: 66ef55448a86b3269a6373adf665108f9f699d48 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
""" spikes.py

Module containing several function to load and transform spike trains

Copyright 2014, Mario Mulansky <mario.mulansky@gmx.net>
"""

import numpy as np

def spike_train_from_string(s, sep=' '):
    """ Converts a string of times into an array of spike times.
    Params:
    - s: the string with (ordered) spike times
    - sep: The separator between the time numbers.
    Returns:
    - array of spike times
    """
    return np.fromstring(s, sep=sep)


def merge_spike_trains( spike_trains ):
    """ Merges a number of spike trains into a single spike train.
    Params:
    - spike_trains: list of arrays of spike times
    Returns:
    - array with the merged spike times
    """
    # get the lengths of the spike trains
    lens = np.array([len(st) for st in spike_trains])
    merged_spikes = np.empty(np.sum(lens))
    index = 0
    indices = np.zeros_like(lens)
    vals = [spike_trains[i][indices[i]] for i in xrange(len(indices))]
    while len(indices) > 0:
        i = np.argmin(vals)
        merged_spikes[index] = vals[i]
        index += 1
        indices[i] += 1
        if indices[i] >= lens[i]:
            indices = np.delete(indices, i)
        vals = [spike_trains[i][indices[i]] for i in xrange(len(indices))]
    return merged_spikes