def save_tfr_channel_averages(experiment, tfr_name, blmode, blstart, blend, tmin, tmax, fmin, fmax): """ """ column_names = [] row_descs = [] csv_data = [] channel_groups = experiment.channel_groups # accumulate csv contents for subject in experiment.subjects.values(): tfr = subject.tfr.get(tfr_name) if not tfr: continue ch_names = tfr.ch_names info = tfr.info for key, mne_tfr in tfr.content.items(): # crop and correct to baseline mne_tfr = mne_tfr.copy().crop(tmin=tmin, tmax=tmax, fmin=fmin, fmax=fmax) times = mne_tfr.times column_names = format_floats(times) freqs = format_floats(mne_tfr.freqs) data = mne.baseline.rescale(mne_tfr.data, times, baseline=(blstart, blend), mode=blmode) data_labels, averaged_data = average_to_channel_groups( data, info, ch_names, channel_groups) if not data_labels: raise Exception('No channel groups matching the data found') for ix in range(averaged_data.shape[0]): for iy in range(averaged_data.shape[1]): ch_type, area = data_labels[ix] csv_data.append(averaged_data[ix, iy].tolist()) row_desc = (subject.name, key, ch_type, area, freqs[iy]) row_descs.append(row_desc) folder = filemanager.create_timestamped_folder(experiment) fname = tfr_name + '_all_subjects_channel_averages_tfr.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)
def save_channel_averages(experiment, selected_name): """ """ column_names = [] row_descs = [] csv_data = [] # accumulate csv contents for subject in experiment.subjects.values(): evoked = subject.evoked.get(selected_name) if not evoked: continue for key, mne_evoked in evoked.content.items(): data_labels, averaged_data = create_averages( experiment, mne_evoked) if not data_labels: raise Exception('No channel groups matching the data found') csv_data.extend(averaged_data.tolist()) column_names = format_floats(mne_evoked.times) for ch_type, area in data_labels: row_desc = (subject.name, key, ch_type, area) row_descs.append(row_desc) folder = filemanager.create_timestamped_folder(experiment) fname = selected_name + '_all_subjects_channel_averages_evoked.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)
def save_all_channels(experiment, selected_name): """ """ column_names = [] row_descs = [] csv_data = [] # accumulate csv contents for subject in experiment.subjects.values(): evoked = subject.evoked.get(selected_name) if not evoked: continue for key, mne_evoked in evoked.content.items(): column_names = format_floats(mne_evoked.times) for ch_idx, ch_name in enumerate(mne_evoked.info['ch_names']): if ch_name in mne_evoked.info['bads']: continue csv_data.append(mne_evoked.data[ch_idx].tolist()) row_desc = (subject.name, key, ch_name) row_descs.append(row_desc) folder = filemanager.create_timestamped_folder(experiment) fname = selected_name + '_all_subjects_all_channels_evoked.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)
def save_tse_all_channels(experiment, tfr_name, blmode, blstart, blend, tmin, tmax, fmin, fmax): """ Saves all channels of a tse to a csv file. """ column_names = [] row_descs = [] csv_data = [] # accumulate csv contents for subject in experiment.subjects.values(): tfr = subject.tfr.get(tfr_name) if not tfr: continue tses = _compute_tse(tfr, fmin, fmax) for key, tse in tses.items(): times, tse = _crop_and_correct_to_baseline( tse, blmode, blstart, blend, tmin, tmax, tfr.times) csv_data.extend(tse.tolist()) for ch_name in tfr.ch_names: row_desc = (subject.name, key, ch_name) row_descs.append(row_desc) column_names = format_floats(times) folder = filemanager.create_timestamped_folder(experiment) fname = tfr_name + '_all_subjects_all_channels_tse.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)
def on_pick(ax, info_idx, names_idx): """ When a subplot representing a specific channel is clicked on the main topography plot, show a new figure containing FOOOF fit plot for every condition """ fig = ax.figure fig.delaxes(ax) for idx, (report_key, report) in enumerate(reports.items()): report_ax = fig.add_subplot(1, len(reports), idx + 1) fooof = report.get_fooof(names_idx) # Use plot function from fooof fooof.plot( ax=report_ax, plot_peaks='dot', add_legend=False, ) # Add information about the fit to the axis title text = ("Condition: " + str(report_key) + "\n" + "R squred: " + format_float(fooof.r_squared_) + "\n" + "Peaks: \n") for peak_params in fooof.peak_params_: text = text + '{0} ({1}, {2})\n'.format( *format_floats(peak_params)) report_ax.set_title(text) fig.tight_layout()
def save_tfr_all_channels(experiment, tfr_name, blmode, blstart, blend, tmin, tmax, fmin, fmax): """ Saves all channels of tfr item to a csv file. """ column_names = [] row_descs = [] csv_data = [] # accumulate csv contents for subject in experiment.subjects.values(): tfr = subject.tfr.get(tfr_name) if not tfr: continue ch_names = tfr.ch_names for key, mne_tfr in tfr.content.items(): # crop and correct to baseline mne_tfr = mne_tfr.copy().crop(tmin=tmin, tmax=tmax, fmin=fmin, fmax=fmax) times = mne_tfr.times column_names = format_floats(times) freqs = format_floats(mne_tfr.freqs) data = mne.baseline.rescale(mne_tfr.data, times, baseline=(blstart, blend), mode=blmode) for ix in range(data.shape[0]): for iy in range(data.shape[1]): csv_data.append(data[ix, iy].tolist()) row_desc = (subject.name, key, ch_names[ix], freqs[iy]) row_descs.append(row_desc) folder = filemanager.create_timestamped_folder(experiment) fname = tfr_name + '_all_subjects_all_channels_tfr.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)
def save_channel_averages(experiment, selected_name, log_transformed=False): column_names = [] row_descs = [] csv_data = [] channel_groups = experiment.channel_groups # accumulate csv contents for subject in experiment.subjects.values(): spectrum = subject.spectrum.get(selected_name) if not spectrum: continue ch_names = spectrum.ch_names freqs = spectrum.freqs info = subject.get_raw().info for key, psd in spectrum.content.items(): data_labels, averaged_data = average_to_channel_groups( psd, info, ch_names, channel_groups) if not data_labels: raise Exception('No channel groups matching the data found.') if log_transformed: csv_data.extend(10 * np.log10(averaged_data.tolist())) else: csv_data.extend(averaged_data.tolist()) column_names = format_floats(freqs) for ch_type, area in data_labels: row_desc = (subject.name, key, ch_type, area) row_descs.append(row_desc) folder = filemanager.create_timestamped_folder(experiment) fname = selected_name + '_all_subjects_channel_averages_spectrum.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)
def save_tse_channel_averages(experiment, tfr_name, blmode, blstart, blend, tmin, tmax, fmin, fmax): """ """ column_names = [] row_descs = [] csv_data = [] channel_groups = experiment.channel_groups # accumulate csv contents for subject in experiment.subjects.values(): tfr = subject.tfr.get(tfr_name) if not tfr: continue times, tses = _compute_tse(tfr, fmin, fmax, tmin, tmax, blmode, blstart, blend) column_names = format_floats(times) for key, tse in tses.items(): data_labels, averaged_data = average_to_channel_groups( tse, tfr.info, tfr.ch_names, channel_groups) if not data_labels: raise Exception('No channel groups matching the data found.') csv_data.extend(averaged_data.tolist()) for ch_type, area in data_labels: row_desc = (subject.name, key, ch_type, area) row_descs.append(row_desc) folder = filemanager.create_timestamped_folder(experiment) fname = tfr_name + '_all_subjects_channel_averages_tfr.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)
def tfr_info(experiment, data, window): """ Fills info element """ try: selected_name = data['outputs']['tfr'][0] tfr = experiment.active_subject.tfr[selected_name] params = tfr.params message = "" if 'decim' in params: message += 'Decimated by factor: {0}\n'.format(params['decim']) if 'evoked_subtracted' in params: message += 'Evoked subtracted: {0}\n'.format( params['evoked_subtracted']) if 'conditions' in params: message += 'Conditions: ' + ', '.join(params['conditions']) + '\n' if 'n_cycles' in params: message += 'Cycles: ' + ', '.join(format_floats( params['n_cycles'])) + '\n' if hasattr(tfr, 'times'): message += 'Times: {0}s - {1}s\n'.format( format_float(tfr.times[0]), format_float(tfr.times[-1])) if hasattr(tfr, 'freqs'): message += 'Freqs: {0} - {1}\n'.format(format_float(tfr.freqs[0]), format_float(tfr.freqs[-1])) if 'groups' in params: for key, names in params['groups'].items(): message += '\nGroup ' + str(key) + ': \n' for name in names: message += name + '\n' except Exception as exc: message = "" return message
def save_all_channels(experiment, selected_name): column_names = [] row_descs = [] csv_data = [] for subject in experiment.subjects.values(): spectrum = subject.spectrum.get(selected_name) if not spectrum: continue for key, psd in spectrum.content.items(): csv_data.extend(psd.tolist()) column_names = format_floats(spectrum.freqs) for ch_name in spectrum.ch_names: row_desc = (subject.name, key, ch_name) row_descs.append(row_desc) folder = filemanager.create_timestamped_folder(experiment) fname = selected_name + '_all_subjects_all_channels_spectrum.csv' path = os.path.join(folder, fname) filemanager.save_csv(path, csv_data, column_names, row_descs) logging.getLogger('ui_logger').info('Saved the csv file to ' + path)