@@ -76,15 +76,12 @@ class NeuralynxRawIO(BaseRawIO):
7676 dirname: str, default: ''
7777 Name of directory containing all files for a dataset. If provided, filename is
7878 ignored. But one of either dirname or filename is required.
79- filename: str, default: ''
80- Name of a single ncs, nse, nev, or ntt file to include in dataset. Will be ignored,
81- if dirname is provided. But one of either dirname or filename is required.
82- include_filename: str | list | None, default: None
79+ include_filenames: str | list | None, default: None
8380 Name of a single ncs, nse, nev or ntt file or list of such files. Will only include
8481 file names in the list. This can be plain filenames or fullpath or path relative to
8582 dirname.
8683 All files should be in a single path.
87- exclude_filename : str | list | None, default: None
84+ exclude_filenames : str | list | None, default: None
8885 Name of a single ncs, nse, nev or ntt file or list of such files. Expects plain
8986 filenames (without directory path).
9087 None will search for all file types
@@ -140,55 +137,46 @@ class NeuralynxRawIO(BaseRawIO):
140137 def __init__ (
141138 self ,
142139 dirname = "" ,
143- filename = "" ,
144- include_filename = None ,
145- exclude_filename = None ,
140+ include_filenames = None ,
141+ exclude_filenames = None ,
146142 keep_original_times = False ,
147143 strict_gap_mode = True ,
148144 ** kargs
149145 ):
150146
151- if include_filename is not None :
152- if filename != "" :
153- raise ValueError ("filename and include_filenames cannot be both assigned" )
154- include_filepath = [os .path .dirname (f ) for f in include_filename ]
147+ if include_filenames :
148+ include_filepath = [os .path .dirname (f ) for f in include_filenames ]
155149 if len (include_filepath ) > 1 :
156150 raise ValueError ("Files in include_filename must be in a single path!" )
157- if (include_filename is None ) and (filename == "" ) and (dirname == "" ):
158- raise ValueError ("One of dirname or filename or include_files must be provided." )
159151
160- if dirname != "" and (include_filename is not None ):
161- include_filename = [ os . path . join ( dirname , f ) for f in include_filename ]
152+ if ( include_filenames is None ) and (dirname == "" ):
153+ raise ValueError ( "One of dirname or include_filenames must be provided." )
162154
163- if (not isinstance (include_filename , (list , set , np .ndarray ))) and (include_filename is not None ):
164- include_filename = [include_filename ]
165- if (not isinstance (exclude_filename , (list , set , np .ndarray ))) and (exclude_filename is not None ):
166- exclude_filename = [exclude_filename ]
155+ if (not isinstance (include_filenames , (list , set , np .ndarray ))) and (include_filenames is not None ):
156+ include_filenames = [include_filenames ]
157+ if (not isinstance (exclude_filenames , (list , set , np .ndarray ))) and (exclude_filenames is not None ):
158+ exclude_filenames = [exclude_filenames ]
167159
168- if dirname != "" :
169- if include_filename is not None :
170- self .rawmode = 'multiple-files'
171- else :
172- self .rawmode = "one-dir"
173- elif filename != "" :
174- self .rawmode = "one-file"
160+ if dirname and include_filenames :
161+ dirname = os .path .join (dirname , os .path .dirname (include_filenames [0 ]))
162+ include_filenames = [os .path .basename (f ) for f in include_filenames ]
163+
164+ if exclude_filenames :
165+ exclude_filenames = {os .path .basename (f ) for f in exclude_filenames }
166+
167+ if include_filenames is not None :
168+ self .rawmode = 'multiple-files'
169+ else :
170+ self .rawmode = "one-dir"
175171
176172 self .dirname = dirname
177- self .filename = filename
178- self .include_files = include_filename
179- self .exclude_filename = [os .path .basename (f ) for f in exclude_filename ] if exclude_filename else None
173+ self .include_filenames = [f for f in include_filenames if f not in exclude_filenames ]
180174 self .keep_original_times = keep_original_times
181175 self .strict_gap_mode = strict_gap_mode
182176 BaseRawIO .__init__ (self , ** kargs )
183177
184178 def _source_name (self ):
185- if self .rawmode == "one-file" :
186- return self .filename
187- elif self .rawmode == "multiple-files" :
188- dirname = [os .path .dirname (x ) for x in self .include_files ]
189- return os .path .join (self .dirname , dirname [0 ])
190- else :
191- return self .dirname
179+ return self .dirname
192180
193181 def _parse_header (self ):
194182
@@ -220,10 +208,8 @@ def _parse_header(self):
220208 if self .rawmode == "one-dir" :
221209 filenames = sorted ([os .path .join (self .dirname , f ) for f in os .listdir (self .dirname )
222210 if os .path .isfile (os .path .join (self .dirname , f )) and not f .startswith ('.' )])
223- elif self .rawmode == "one-file" :
224- filenames = [self .filename ]
225211 else :
226- filenames = [os .path .join (self .dirname , f ) for f in self .include_files ]
212+ filenames = [os .path .join (self .dirname , f ) for f in self .include_filenames ]
227213
228214 for filename in filenames :
229215 if not os .path .isfile (filename ):
@@ -233,13 +219,6 @@ def _parse_header(self):
233219 f"directory use the `dirname` keyword"
234220 )
235221
236- # remove files that were explicitly excluded
237- file_basenames = [os .path .basename (f ) for f in filenames ]
238- if self .exclude_filename is not None :
239- for excl_file in self .exclude_filename :
240- if excl_file in file_basenames :
241- filenames .remove (os .path .join (self .dirname , excl_file ))
242-
243222 stream_props = {} # {(sampling_rate, n_samples, t_start): {stream_id: [filenames]}
244223
245224 for filename in filenames :
0 commit comments