@@ -90,6 +90,7 @@ def _parse_header(self):
9090 for info in self .signals_info_list :
9191 # key is (seg_index, stream_name)
9292 key = (info ['seg_index' ], info ['stream_name' ])
93+ assert key not in self .signals_info_dict
9394 self .signals_info_dict [key ] = info
9495
9596 # create memmap
@@ -233,12 +234,11 @@ def _get_analogsignal_chunk(self, block_index, seg_index, i_start, i_stop,
233234def scan_files (dirname ):
234235 """
235236 Scan for pairs of `.bin` and `.meta` files and return information about it.
236-
237+
237238 After exploring the folder, the segment index (`seg_index`) is construct as follow:
238239 * if only one `gate_num=0` then `trigger_num` = `seg_index`
239240 * if only one `trigger_num=0` then `gate_num` = `seg_index`
240241 * if both are increasing then seg_index increased by gate_num, trigger_num order.
241-
242242 """
243243 info_list = []
244244
@@ -251,11 +251,12 @@ def scan_files(dirname):
251251 if meta_filename .exists () and bin_filename .exists ():
252252 meta = read_meta_file (meta_filename )
253253 info = extract_stream_info (meta_filename , meta )
254+
254255 info ['meta_file' ] = str (meta_filename )
255256 info ['bin_file' ] = str (bin_filename )
256257 info_list .append (info )
257-
258- total_gate = max ([info ['gate_num' ] for info in info_list ]) + 1
258+
259+ total_gate = max ([info ['gate_num' ] for info in info_list if info [ 'gate_num' ] is not None ]) + 1
259260 total_trigger_per_gate = []
260261 for gate_num in range (total_gate ):
261262 max_trigger = 0
@@ -264,15 +265,15 @@ def scan_files(dirname):
264265 continue
265266 max_trigger = max (max_trigger , info ['trigger_num' ])
266267 total_trigger_per_gate .append (max_trigger + 1 )
267-
268+
268269 for info in info_list :
269270 g , t = info ['gate_num' ], info ['trigger_num' ]
270271 if g == 0 :
271272 seg_index = t
272273 else :
273274 seg_index = sum (total_trigger_per_gate [:g ]) + t
274275 info ['seg_index' ] = seg_index
275-
276+
276277 return info_list
277278
278279
@@ -313,21 +314,31 @@ def parse_spikeglx_fname(fname):
313314 The trigger identifier, e.g. 1.
314315 device: str
315316 The probe identifier, e.g. "imec2"
316- stream_kind: str
317- The data type identifier, "lf" or "ap"
317+ stream_kind: str or None
318+ The data type identifier, "lf" or "ap" or None
318319 """
319320 r = re .findall (r'(\S*)_g(\d*)_t(\d*)\.(\S*).(ap|lf)' , fname )
320- if len (r ) > 0 :
321- # standard case
321+ if len (r ) == 1 :
322+ # standard case with probe
322323 run_name , gate_num , trigger_num , device , stream_kind = r [0 ]
324+ else :
325+ r = re .findall (r'(\S*)_g(\d*)_t(\d*)\.(\S*)' , fname )
326+ if len (r ) == 1 :
327+ # case for nidaq
328+ run_name , gate_num , trigger_num , device = r [0 ]
329+ stream_kind = None
330+ else :
331+ # the naming do not correspond lets try something more easy
332+ r = re .findall (r'(\S*)\.(\S*).(ap|lf)' , fname )
333+ if len (r ) == 1 :
334+ run_name , device , stream_kind = r [0 ]
335+ gate_num , trigger_num = None , None
336+
337+ if gate_num is not None :
323338 gate_num = int (gate_num )
339+ if trigger_num is not None :
324340 trigger_num = int (trigger_num )
325- else :
326- # the naming do not correspond lets try something more easy
327- r = re .findall (r'(\S*)\.(\S*).(ap|lf)' , fname )
328- if len (r ) > 0 :
329- run_name , device , stream_kind = r [0 ]
330- gate_num , trigger_num = None , None
341+
331342 return (run_name , gate_num , trigger_num , device , stream_kind )
332343
333344
0 commit comments