pub struct EasyReader { /* private fields */ }
Expand description
Struct representing a reader for EEG data stored in .easy
files.
This struct is responsible for parsing and storing the data from a .easy
file,
which may include EEG signals, accelerometer data, and associated markers. The struct
loads the data from .easy
and .easy.gz
and optional .info
files, provides methods for
accessing the data, and tracks relevant metadata about the file, including the
start date and number of channels.
Implementations§
Source§impl EasyReader
impl EasyReader
Sourcepub fn new(filepath: &str, scale: Float, verbose: bool) -> Result<Self>
pub fn new(filepath: &str, scale: Float, verbose: bool) -> Result<Self>
Initializes a new EasyReader
instance from the given file path.
Sourcepub fn parse_data(&mut self) -> Result<()>
pub fn parse_data(&mut self) -> Result<()>
Reads and processes raw EEG and accelerometer data from the .easy
file.
This method reads the .easy
file (or the data section of it), converts the EEG data
into microvolts (uV), and extracts time, accelerometer, and marker data. It stores the
resulting data in the struct’s fields (e.g., np_eeg
, np_time
, np_acc
, np_markers
).
It also logs key processing steps and ensures that the number of channels is consistent
with the data found in the file.
§Returns
Ok(())
if the data was successfully read and processed.Err(String)
if there was an error reading or processing the file data. The error string provides details about the failure (e.g., column mismatches or data format issues).
§Details
- The function expects the
.easy
file to have the following general format: EEG data followed by accelerometer data (if available), markers, and timestamps. - The EEG data is divided by channels, and the accelerometer data (if present) consists of three columns representing X, Y, and Z axes.
Sourcepub fn stream<F>(
&mut self,
chunk_size: Option<usize>,
process_chunk: F,
) -> Result<()>
pub fn stream<F>( &mut self, chunk_size: Option<usize>, process_chunk: F, ) -> Result<()>
Reads and processes raw EEG and accelerometer data from the .easy
file in a streaming manner.
This function reads the .easy
file in chunks and processes each chunk as it is read. This approach
helps to minimize memory usage when dealing with large files by avoiding the need to load the entire
file into memory at once.
The function uses a callback (process_chunk
) to handle each chunk of data. The callback is invoked
after processing each chunk, and it receives the following data:
eeg_chunk
: AVec<Vec<f32>>
representing a chunk of EEG data (one row per sample, one column per channel).acc_chunk
: AVec<Vec<f32>>
representing a chunk of accelerometer data (three values per sample: X, Y, Z).markers_chunk
: AVec<f32>
representing the marker data for each sample in the chunk.
The chunk size can be customized by passing a chunk_size
value (in number of rows). If no chunk size
is provided, the default chunk size will be 1000
rows.
§Parameters:
chunk_size
: An optional parameter specifying the number of rows to process per chunk. IfNone
is provided, the default chunk size will be1000
.process_chunk
: A callback function that takes three arguments:eeg_chunk
,acc_chunk
, andmarkers_chunk
. This function will be called once a chunk is read and parsed.
§Returns:
Ok(())
if the data was successfully read and processed.Err(String)
if there was an error
Sourcepub fn print_summary(&self)
pub fn print_summary(&self)
Prints a summary of the EasyReader
instance, displaying important metadata and previews of data.
This function outputs the file path, base name, extension, number of channels, EEG start date, and any log entries related to the processing steps. It also prints the first few rows of the EEG, accelerometer, and markers data, if available. This method avoids printing the entire datasets.