Basic IO Functions¶
Examples¶
API¶
Save and Load Utilities
-
embci.io.base.create_data_dict(data, label='default', sample_rate=500, suffix=None)[source]¶ Create a data_dict that can be saved by function
save_trials().- Parameters
- datandarray | array list | instance of mne.Raw[Array] | dict
1-3d array with a shape of [[num_trial x] num_channel x] window_size
- labelstr
Action name, data label. Char
-is not suggested in label.- sample_rateint
Sample rate of data, default set to 500Hz.
- suffixstr
Currently supported formats are MATLAB-style ‘.mat’(default), MNE-style ‘.fif[.gz]’ and raw text ‘.csv’.
- Returns
- data_dictdict
{‘data’: dict, ‘label’: str, ‘sample_rate’: int, …}
-
embci.io.base.find_data_info(username)[source]¶ Count all saved data files under user’s directory that match a pattern:
${DIR_DATA}/${username}/${label}-${num}.${suffix}[.gz]- Returns
- (label_dict, filename_dict, summary string)
Examples
>>> find_data_info('test') ({ 'left': [0, 1, 2, 5, 8, 9, 10], 'right': [2, 3, 4, 5], 'thumb_cross': [1, 2, 3, 4, 5] }, { 'left': ['/path/to/left-0.mat', '/path/to/left-1.fif', ...], 'right': ['/path/to/right-2.h5', '/path/to/right-3', ...], 'thumb_cross': [...] }, 'There are 3 actions with 16 records.\n')
-
embci.io.base.save_trials(username, data_dict, suffix='mat', summary=False)[source]¶ Save trials of data into ${DIR_DATA}/${username}/${label}-${num}.${suffix}
- Parameters
- usernamestr
- data_dictdict
created by function create_data_dict(data, label, format, sample_rate)
- suffixstr
Currently supported formats are MATLAB-style ‘.mat’(default), MNE-style ‘.fif[.gz]’ and raw text ‘.csv’. Format setting in data_dict will overwrite this argument.
- summarybool
Whether to print summary of currently saved data, default False.
Examples
>>> data = np.random.rand(8, 1000) # 8chs x 4sec x 250Hz data >>> save_trials('test', create_data_dict(data, 'random_data', 250)) (8, 1000) data saved to ${DIR_DATA}/test/random_data-1.mat
>>> raw = mne.io.RawArray(data, mne.create_info(8, 250)) >>> save_trials('test', create_data_dict(raw, format='fif.gz')) (8, 1000) data saved to ${DIR_DATA}/test/default-1.fif.gz
-
embci.io.base.save_chunks(fn, data_dict, suffix='mat', append=False)[source]¶ Save chunks of data into ${DIR_DATA}/${username}/${label}-${num}.${suffix}
- Parameters
- fnstr or file-like
- data_dictdict
created by function create_data_dict(data, label, format, sample_rate)
- suffixstr
Currently supported formats are MATLAB-style ‘.mat’(default), HDF5-style ‘.h5’ and raw text ‘.csv’. Format setting in data_dict will overwrite this argument.
- summarybool
Whether to print summary of currently saved data, default False.
Examples
>>> data = np.random.rand(8, 1000) # 8chs x 4sec x 250Hz data >>> save_trials('./test', create_data_dict(data, 'random_data', 250)) (8, 1000) data saved to ${DIR_DATA}/test/random_data-1.mat
>>> raw = mne.io.RawArray(data, mne.create_info(8, 250)) >>> save_trials('test', create_data_dict(raw, format='fif.gz')) (8, 1000) data saved to ${DIR_DATA}/test/default-1.fif.gz
-
embci.io.base.save_action(username, reader, action_list=['relax', 'grab'])[source]¶ Guidance on command line interface to save data with label to
${DIR_DATA}/${username}/${action}-*.mat- Parameters
- usernamestr
- readerReader
Instance of
embci.io.readers.BaseReader, repersenting a stream from which data will be read.
-
embci.io.base.load_data(username, pick=None, summary=True)[source]¶ Load all data files under directory ${DIR_DATA}/${username}
- Parameters
- usernamestr
- pickstr | list or tuple of str | regex pattern | function
load data files whose label name: equal to | inside | match | return True by appling pick
- summarybool
whether to print summary of currently saved data, default False.
- Returns
- outtuple
(data_array, label_list)
- data_arrayndarray
3D array with a shape of n_samples x num_channel x window_size
- label_listlist
String list with a length of n_samples. Each element indicate label(action name) of corresponding data sample.
Examples
>>> data, label = load_data('test') >>> len(data), label (5, ['default', 'default', 'default', 'right', 'left'])
>>> _, _ = load_data('test', pick=('left', 'right'), summary=True) There are 3 actions with 5 data recorded. * default 3 default-1.fif.gz default-2.fif.gz default-3.mat * right 1 right-1.mat * left 1 left-1.fif There are 2 actions with 2 data loaded. + left 1 + right 1
-
embci.io.base.load_label_data(username, label='default')[source]¶ Load all data files that match ${DIR_DATA}/${username}/${label}-.
- Returns
- data_listlist
-
embci.io.base.validate_datafile(*a, **k)¶ Resolve saved datafiles and generate a valid filename for new data.
${DIR_DATA}/${username}/${label}-${num}.${suffix}[.gz]- Parameters
- usernamestr
- labelstr
- checknamebool
Whether to ensure that the username is valid for filename. Default False.
- Returns
- (datafile name, username)
If checkname set to True, username is validated too.