@@ -83,6 +83,13 @@ def _parse_egi_datetime(time_str):
8383 return datetime .datetime .strptime (time_str , "%Y-%m-%dT%H:%M:%S.%f%z" )
8484
8585
86+ def _get_mff_reader (input_fname ):
87+ mffpy = _import_mffpy ()
88+ mff_reader = mffpy .Reader (input_fname )
89+ mff_reader .set_unit ("EEG" , "V" ) # XXX: set PNS unit
90+ return mff_reader
91+
92+
8693def _read_events (input_fname , egi_info ):
8794 """Read EGI event tracks from an MFF directory."""
8895 from mffpy .xml_files import XML , EventTrack
@@ -157,13 +164,6 @@ def _read_events(input_fname, egi_info):
157164 return egi_events , egi_info , mff_events
158165
159166
160- def _get_mff_reader (input_fname ):
161- mffpy = _import_mffpy ()
162- mff_reader = mffpy .Reader (input_fname )
163- mff_reader .set_unit ("EEG" , "V" ) # XXX: set PNS unit
164- return mff_reader
165-
166-
167167def _get_montage (mff_reader ):
168168 mffpy = _import_mffpy ()
169169 xml_files = mff_reader .directory .files_by_type [".xml" ]
@@ -318,6 +318,25 @@ def _get_annotations(mff_reader, mne_info):
318318 return event_annots + gap_annots
319319
320320
321+ def _read_mff (input_fname ):
322+ """Read EGI MFF file using the mffpy-backed helpers.
323+
324+ Returns
325+ -------
326+ eeg : array-like
327+ Raw EEG data as returned by `_get_eeg_data`.
328+ info : dict
329+ MNE `info` structure built by `_get_info`.
330+ annotations : instance of `mne.Annotations`
331+ Annotations built from events and gaps via `_get_annotations`.
332+ """
333+ mff_reader = _get_mff_reader (input_fname )
334+ eeg = _get_eeg_data (mff_reader )
335+ info = _get_info (mff_reader )
336+ annotations = _get_annotations (mff_reader , info )
337+ return eeg , info , annotations
338+
339+
321340def _read_mff_header (filepath ):
322341 """Read mff header."""
323342 _soft_import ("defusedxml" , "reading EGI MFF data" )
0 commit comments