Ejemplo n.º 1
0
def get_epochs_and_cov(X, y, window=500):
    """return epochs from array."""
    raw_train = toMNE(X, y)
    picks = range(len(getChannelNames()))

    events = list()
    events_id = dict()
    for j, eid in enumerate(getEventNames()):
        tmp = find_events(raw_train, stim_channel=eid, verbose=False)
        tmp[:, -1] = j + 1
        events.append(tmp)
        events_id[eid] = j + 1

    # concatenate and sort events
    events = np.concatenate(events, axis=0)
    order_ev = np.argsort(events[:, 0])
    events = events[order_ev]

    epochs = Epochs(raw_train,
                    events,
                    events_id,
                    tmin=-(window / 500.0) + 1 / 500.0 + 0.150,
                    tmax=0.150,
                    proj=False,
                    picks=picks,
                    baseline=None,
                    preload=True,
                    add_eeg_ref=False,
                    verbose=False)

    cov_signal = compute_raw_data_covariance(raw_train, verbose=False)
    return epochs, cov_signal
Ejemplo n.º 2
0
def get_epochs_and_cov(X, y, window=500):
    """return epochs from array."""
    raw_train = toMNE(X, y)
    picks = range(len(getChannelNames()))

    events = list()
    events_id = dict()
    for j, eid in enumerate(getEventNames()):
        tmp = find_events(raw_train, stim_channel=eid, verbose=False)
        tmp[:, -1] = j + 1
        events.append(tmp)
        events_id[eid] = j + 1

    # concatenate and sort events
    events = np.concatenate(events, axis=0)
    order_ev = np.argsort(events[:, 0])
    events = events[order_ev]

    epochs = Epochs(raw_train, events, events_id,
                    tmin=-(window / 500.0) + 1 / 500.0 + 0.150,
                    tmax=0.150, proj=False, picks=picks, baseline=None,
                    preload=True, add_eeg_ref=False, verbose=False)

    cov_signal = compute_raw_data_covariance(raw_train, verbose=False)
    return epochs, cov_signal
Ejemplo n.º 3
0
    def _fit(self, X, y):
        """fit and return epochs."""
        epochs, cov_signal = get_epochs_and_cov(X, y, self.window)

        xd = Xdawn(n_components=self.nfilters, signal_cov=cov_signal,
                   correct_overlap=False)
        xd.fit(epochs)

        P = []
        for eid in getEventNames():
            P.append(np.dot(xd.filters_[eid][:, 0:self.nfilters].T,
                            xd.evokeds_[eid].data))
        self.P = np.concatenate(P, axis=0)
        self.labels_train = epochs.events[:, -1]
        return epochs
Ejemplo n.º 4
0
    def _fit(self, X, y):
        """fit and return epochs."""
        epochs, cov_signal = get_epochs_and_cov(X, y, self.window)

        xd = Xdawn(n_components=self.nfilters,
                   signal_cov=cov_signal,
                   correct_overlap=False)
        xd.fit(epochs)

        P = []
        for eid in getEventNames():
            P.append(
                np.dot(xd.filters_[eid][:, 0:self.nfilters].T,
                       xd.evokeds_[eid].data))
        self.P = np.concatenate(P, axis=0)
        self.labels_train = epochs.events[:, -1]
        return epochs
Ejemplo n.º 5
0
def toMNE(X, y=None):
    """Tranform array into MNE for epoching."""
    ch_names = deepcopy(getChannelNames())
    montage = read_montage('standard_1005', ch_names)
    ch_type = ['eeg']*len(ch_names)
    data = X.T
    if y is not None:
        y = y.transpose()
        ch_type.extend(['stim']*N_EVENTS)
        event_names = getEventNames()
        ch_names.extend(event_names)
        # concatenate event file and data
        data = np.concatenate((data, y))
    info = create_info(ch_names, sfreq=128.0, ch_types=ch_type,
                       montage=montage)
    raw = RawArray(data, info, verbose=False)
    return raw
Ejemplo n.º 6
0
def toMNE(X, y=None):
    """Tranform array into MNE for epoching."""
    ch_names = getChannelNames()
    montage = read_montage('standard_1005', ch_names)
    ch_type = ['eeg']*len(ch_names)
    data = X.T
    if y is not None:
        y = y.transpose()
        ch_type.extend(['stim']*6)
        event_names = getEventNames()
        ch_names.extend(event_names)
        # concatenate event file and data
        data = np.concatenate((data, y))
    info = create_info(ch_names, sfreq=500.0, ch_types=ch_type,
                       montage=montage)
    raw = RawArray(data, info, verbose=False)
    return raw
Ejemplo n.º 7
0
    def _fit(self, X, y):
        """fit and return epochs."""
        epochs, cov_signal = get_epochs_and_cov(X, y, self.window)
        # pdb.set_trace()
        # TODO: Try to understand what is Xdawn (something that improve SSRN by spatial information?)

        xd = Xdawn(n_components=self.nfilters, signal_cov=cov_signal,
                   correct_overlap=False)
        xd.fit(epochs)

        P = []
        for eid in getEventNames():
            # set_breakpoint('xd info in getEVetnNames for-lop');
            # pdb.set_trace()
            P.append(np.dot(xd.filters_[eid][:, 0:self.nfilters].T,
                            xd.evokeds_[eid].data))
        self.P = np.concatenate(P, axis=0)
        self.labels_train = epochs.events[:, -1]
        # pdb.set_trace()
        return epochs
Ejemplo n.º 8
0
from sklearn.metrics import roc_auc_score

from preprocessing.aux import getEventNames, load_raw_data

from multiprocessing import Pool

from read_adapter import subjects_path_list
from eeg_config import subjects
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--n_subjects', type=int, action='store', default=2)
args, unknown = parser.parse_known_args()
subjects = range(1, args.n_subjects + 1)

cols = getEventNames()


def _from_yaml_to_func(method, params):
    """go from yaml to method.

    Need to be here for accesing local variables.
    """
    prm = dict()
    if params is not None:
        for key, val in params.iteritems():
            prm[key] = eval(str(val))
    return eval(method)(**prm)


def doCols(col):
ensemble = yml['Model'][modelName]['ensemble']
addSubjectID = True if 'addSubjectID' in yml.keys() else False

mode = sys.argv[2]
if mode == 'val':
    test = False
elif mode == 'test':
    test = True
else:
    raise('Invalid mode. Please specify either val or test')

print('Running %s in mode %s, will be saved in %s' % (modelName,mode,fileName))

######
cols = getEventNames()

ids = np.load('../infos_test.npy')
subjects_test = ids[:, 1]
series_test = ids[:, 2]
ids = ids[:, 0]
labels = np.load('../infos_val.npy')
subjects = labels[:, -2]
series = labels[:, -1]
labels = labels[:, :-2]

allCols = range(len(cols))

# ## loading prediction ###
files = getLvl1ModelList()