Skip to content

Commit 70ae7e1

Browse files
committed
remove one-file mode
1 parent bf116d4 commit 70ae7e1

File tree

3 files changed

+35
-63
lines changed

3 files changed

+35
-63
lines changed

neo/io/neuralynxio.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ class NeuralynxIO(NeuralynxRawIO, BaseFromRaw):
3030
def __init__(
3131
self,
3232
dirname="",
33-
filename="",
3433
use_cache=False,
3534
cache_path="same_as_resource",
3635
include_filename=None,
@@ -44,9 +43,6 @@ def __init__(
4443
----------
4544
dirname : str
4645
Directory containing data files
47-
filename : str
48-
Name of a single ncs, nse, nev, or ntt file to include in dataset. Will be ignored,
49-
if dirname is provided.
5046
use_cache : bool, optional
5147
Cache results of initial file scans for faster loading in subsequent runs.
5248
Default: False
@@ -63,20 +59,17 @@ def __init__(
6359
shifted to begin at t_start = 0*pq.second.
6460
Default: False
6561
"""
62+
6663
NeuralynxRawIO.__init__(
67-
self,
68-
dirname=dirname,
69-
filename=filename,
70-
use_cache=use_cache,
71-
cache_path=cache_path,
72-
include_filename=include_filename,
73-
exclude_filename=exclude_filename,
64+
self, dirname=dirname,
65+
include_filenames=include_filename,
66+
exclude_filenames=exclude_filename,
7467
keep_original_times=keep_original_times,
68+
use_cache=use_cache,
69+
cache_path=cache_path
7570
)
7671

77-
if self.rawmode == "one-file":
78-
BaseFromRaw.__init__(self, filename)
79-
elif self.rawmode == "one-dir":
72+
if self.rawmode == "one-dir":
8073
BaseFromRaw.__init__(self, dirname)
8174
elif self.rawmode == "multiple-files":
8275
BaseFromRaw.__init__(self, include_filename=include_filename)

neo/rawio/neuralynxrawio/neuralynxrawio.py

Lines changed: 26 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -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:

neo/test/rawiotest/test_neuralynxrawio.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def test_single_file_mode(self):
143143
def test_exclude_filenames(self):
144144
# exclude single ncs file from session
145145
dname = self.get_local_path("neuralynx/Cheetah_v5.6.3/original_data/")
146-
rawio = NeuralynxRawIO(dirname=dname, exclude_filename="CSC2.ncs")
146+
rawio = NeuralynxRawIO(dirname=dname, exclude_filenames="CSC2.ncs")
147147
rawio.parse_header()
148148

149149
self.assertEqual(rawio._nb_segment, 2)
@@ -157,7 +157,7 @@ def test_exclude_filenames(self):
157157
self.assertEqual(len(rawio.header["event_channels"]), 2)
158158

159159
# exclude multiple files from session
160-
rawio = NeuralynxRawIO(dirname=dname, exclude_filename=["Events.nev", "CSC2.ncs"])
160+
rawio = NeuralynxRawIO(dirname=dname, exclude_filenames=["Events.nev", "CSC2.ncs"])
161161
rawio.parse_header()
162162

163163
self.assertEqual(rawio._nb_segment, 2)

0 commit comments

Comments
 (0)