Skip to content

Commit 4c53e44

Browse files
committed
Skeleton for spikegadgets implementation.
1 parent 0274b40 commit 4c53e44

File tree

6 files changed

+117
-0
lines changed

6 files changed

+117
-0
lines changed

neo/io/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
* :attr:`RawBinarySignalIO`
5050
* :attr:`RawMCSIO`
5151
* :attr:`Spike2IO`
52+
* :attr:`SpikeGadgetsIO`
5253
* :attr:`SpikeGLXIO`
5354
* :attr:`StimfitIO`
5455
* :attr:`TdtIO`
@@ -201,6 +202,10 @@
201202
202203
.. autoattribute:: extensions
203204
205+
.. autoclass:: SpikeGadgetsIO
206+
207+
.. autoattribute:: extensions
208+
204209
.. autoclass:: SpikeGLXIO
205210
206211
.. autoattribute:: extensions
@@ -284,6 +289,7 @@
284289
from neo.io.rawbinarysignalio import RawBinarySignalIO
285290
from neo.io.rawmcsio import RawMCSIO
286291
from neo.io.spike2io import Spike2IO
292+
from neo.io.spikegadgetsio import SpikeGadgetsIO
287293
from neo.io.spikeglxio import SpikeGLXIO
288294
from neo.io.stimfitio import StimfitIO
289295
from neo.io.tdtio import TdtIO
@@ -329,6 +335,7 @@
329335
RawBinarySignalIO,
330336
RawMCSIO,
331337
Spike2IO,
338+
SpikeGadgetsIO,
332339
SpikeGLXIO,
333340
StimfitIO,
334341
TdtIO,

neo/io/spikegadgetsio.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from neo.io.basefromrawio import BaseFromRaw
2+
from neo.rawio.spikegadgetsrawio import SpikeGadgetsRawIO
3+
4+
5+
class SpikeGadgetsIO(SpikeGadgetsRawIO, BaseFromRaw):
6+
"""
7+
"""
8+
def __init__(self, filename):
9+
SpikeGadgetsRawIO.__init__(self, filename=filename)
10+
BaseFromRaw.__init__(self, filename)

neo/rawio/__init__.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* :attr:`RawBinarySignalRawIO`
3030
* :attr:`RawMCSRawIO`
3131
* :attr:`Spike2RawIO`
32+
* :attr:`SpikeGadgetsRawIO`
3233
* :attr:`SpikeGLXRawIO`
3334
* :attr:`TdtRawIO`
3435
* :attr:`WinEdrRawIO`
@@ -103,6 +104,10 @@
103104
104105
.. autoattribute:: extensions
105106
107+
.. autoclass:: neo.rawio.SpikeGadgetsRawIO
108+
109+
.. autoattribute:: extensions
110+
106111
.. autoclass:: neo.rawio.SpikeGLXRawIO
107112
108113
.. autoattribute:: extensions
@@ -140,6 +145,7 @@
140145
from neo.rawio.rawbinarysignalrawio import RawBinarySignalRawIO
141146
from neo.rawio.rawmcsrawio import RawMCSRawIO
142147
from neo.rawio.spike2rawio import Spike2RawIO
148+
from neo.rawio.spikegadgetsrawio import SpikeGadgetsRawIO
143149
from neo.rawio.spikeglxrawio import SpikeGLXRawIO
144150
from neo.rawio.tdtrawio import TdtRawIO
145151
from neo.rawio.winedrrawio import WinEdrRawIO
@@ -163,6 +169,7 @@
163169
RawBinarySignalRawIO,
164170
RawMCSRawIO,
165171
Spike2RawIO,
172+
SpikeGadgetsRawIO,
166173
SpikeGLXRawIO,
167174
TdtRawIO,
168175
WinEdrRawIO,

neo/rawio/spikegadgetsrawio.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
"""
2+
Class for reading spikegadgets file.
3+
Only signals ability at the moment.
4+
5+
https://spikegadgets.com/spike-products/
6+
7+
Author: Samuel Garcia
8+
"""
9+
from .baserawio import (BaseRawIO, _signal_channel_dtype, _unit_channel_dtype,
10+
_event_channel_dtype)
11+
12+
import numpy as np
13+
14+
15+
class SpikeGadgetsRawIO(BaseRawIO):
16+
extensions = ['rec']
17+
rawmode = 'one-file'
18+
19+
def __init__(self, filename=''):
20+
BaseRawIO.__init__(self)
21+
self.filename = filename
22+
23+
def _source_name(self):
24+
return self.filename
25+
26+
def _parse_header(self):
27+
28+
signal_channels = []
29+
signal_channels = np.array(sig_channels, dtype=_signal_channel_dtype)
30+
31+
# No events
32+
event_channels = []
33+
event_channels = np.array(event_channels, dtype=_event_channel_dtype)
34+
35+
# No spikes
36+
unit_channels = []
37+
unit_channels = np.array(unit_channels, dtype=_unit_channel_dtype)
38+
39+
# fille into header dict
40+
self.header = {}
41+
self.header['nb_block'] = 1
42+
self.header['nb_segment'] = [nb_segment]
43+
self.header['signal_channels'] = sig_channels
44+
self.header['unit_channels'] = unit_channels
45+
self.header['event_channels'] = event_channels
46+
47+
self._generate_minimal_annotations()
48+
49+
def _segment_t_start(self, block_index, seg_index):
50+
return 0.
51+
52+
def _segment_t_stop(self, block_index, seg_index):
53+
return t_stop
54+
55+
def _get_signal_size(self, block_index, seg_index, channel_indexes):
56+
sie = 0
57+
return size
58+
59+
def _get_signal_t_start(self, block_index, seg_index, channel_indexes):
60+
return 0.
61+
62+
def _get_analogsignal_chunk(self, block_index, seg_index, i_start, i_stop, channel_indexes):
63+
raw_signals = None
64+
return raw_signals
65+
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import unittest
2+
3+
from neo.io import SpikeGadgetsIO
4+
from neo.test.iotest.common_io_test import BaseTestIO
5+
6+
7+
class TestSpikeGadgetsIO(BaseTestIO, unittest.TestCase, ):
8+
ioclass = SpikeGadgetsIO
9+
files_to_test = ['20210225_em8_minirec2_ac.rec']
10+
files_to_download = files_to_test
11+
12+
13+
if __name__ == "__main__":
14+
unittest.main()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import unittest
2+
3+
from neo.rawio.spikegadgetsrawio import SpikeGadgetsRawIO
4+
from neo.test.rawiotest.common_rawio_test import BaseTestRawIO
5+
6+
7+
class TestSpikeGadgetsRawIO(BaseTestRawIO, unittest.TestCase, ):
8+
rawioclass = SpikeGadgetsRawIO
9+
entities_to_test = ['20210225_em8_minirec2_ac.rec']
10+
files_to_download = entities_to_test
11+
12+
13+
if __name__ == "__main__":
14+
unittest.main()

0 commit comments

Comments
 (0)