def test_time_generalization(): """Test time generalization decoding """ raw = io.Raw(raw_fname, preload=False) events = read_events(event_name) picks = pick_types(raw.info, meg='mag', stim=False, ecg=False, eog=False, exclude='bads') picks = picks[1:13:3] decim = 30 with warnings.catch_warnings(record=True): epochs = Epochs(raw, events, event_id, tmin, tmax, picks=picks, baseline=(None, 0), preload=True, decim=decim) epochs_list = [epochs[k] for k in event_id.keys()] scores = time_generalization(epochs_list, cv=2, random_state=42) n_times = len(epochs.times) assert_true(scores.shape == (n_times, n_times)) assert_true(scores.max() <= 1.) assert_true(scores.min() >= 0.)
decim = 4 # decimate to make the example faster to run epochs = mne.Epochs(raw, events, event_id, tmin, tmax, proj=True, picks=picks, baseline=None, preload=True, reject=dict(mag=1.5e-12), decim=decim) epochs_list = [epochs[k] for k in event_id] mne.epochs.equalize_epoch_counts(epochs_list) ############################################################################### # Run decoding # Compute Area Under the Curver (AUC) Receiver Operator Curve (ROC) score # of time generalization. A perfect decoding would lead to AUCs of 1. # Chance level is at 0.5. # The default classifier is a linear SVM (C=1) after feature scaling. scores = time_generalization(epochs_list, clf=None, cv=5, scoring="roc_auc", shuffle=True, n_jobs=2) ############################################################################### # Now visualize times = 1e3 * epochs.times # convert times to ms plt.figure() plt.imshow(scores, interpolation='nearest', origin='lower', extent=[times[0], times[-1], times[0], times[-1]], vmin=0., vmax=1.) plt.xlabel('Times Test (ms)') plt.ylabel('Times Train (ms)') plt.title('Time generalization (%s vs. %s)' % tuple(event_id.keys())) plt.axvline(0, color='k') plt.axhline(0, color='k') plt.colorbar()