Exemplo n.º 1
0
def export_spikes(dirname, array_idx, chan_grp):
    print('Exporting ch %d' % chan_grp)
    data = {
        'array': [],
        'electrode': [],
        'cell': [],
        'segment': [],
        'time': []
    }
    array = cfg['arrays'][array_idx]

    dataio = DataIO(dirname=dirname, ch_grp=chan_grp)
    catalogue = dataio.load_catalogue(chan_grp=chan_grp)
    dataio._open_processed_data(ch_grp=chan_grp)

    clusters = catalogue['clusters']

    for seg_num in range(dataio.nb_segment):
        spikes = dataio.get_spikes(seg_num=seg_num, chan_grp=chan_grp)

        spike_labels = spikes['cluster_label'].copy()
        for l in clusters:
            mask = spike_labels == l['cluster_label']
            spike_labels[mask] = l['cell_label']
        spike_indexes = spikes['index']

        for (index, label) in zip(spike_indexes, spike_labels):
            if label >= 0:
                data['array'].append(array)
                data['electrode'].append(chan_grp)
                data['cell'].append(label)
                data['segment'].append(seg_num)
                data['time'].append(index)
        dataio.flush_processed_signals(seg_num=seg_num, chan_grp=chan_grp)
    df = pd.DataFrame(
        data, columns=['array', 'electrode', 'cell', 'segment', 'time'])
    df.to_csv(os.path.join(dirname, '%s_%d_spikes.csv' % (array, chan_grp)),
              index=False)