Skip to content

Instantly share code, notes, and snippets.

@gemeinl
Last active June 15, 2021 11:21
Show Gist options
  • Select an option

  • Save gemeinl/d64c014debb5f58e4feacb57a8656ed0 to your computer and use it in GitHub Desktop.

Select an option

Save gemeinl/d64c014debb5f58e4feacb57a8656ed0 to your computer and use it in GitHub Desktop.

Revisions

  1. gemeinl revised this gist Aug 18, 2020. 1 changed file with 19 additions and 12 deletions.
    31 changes: 19 additions & 12 deletions to_scikit_learn_API.ipynb
    Original file line number Diff line number Diff line change
    @@ -91,8 +91,15 @@
    "sfreq = 250 \n",
    "n_classes = 4\n",
    "n_chans = 22\n",
    "original_trial_duration = 4\n",
    "\n",
    "original_trial_duration = 4"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
    "# Preprocessing parameters\n",
    "low_cut_hz = 4. # low cut frequency for filtering\n",
    "high_cut_hz = 38. # high cut frequency for filtering\n",
    @@ -129,7 +136,7 @@
    },
    {
    "cell_type": "code",
    "execution_count": 4,
    "execution_count": 5,
    "metadata": {},
    "outputs": [],
    "source": [
    @@ -162,7 +169,7 @@
    },
    {
    "cell_type": "code",
    "execution_count": 5,
    "execution_count": 6,
    "metadata": {},
    "outputs": [],
    "source": [
    @@ -216,7 +223,7 @@
    },
    {
    "cell_type": "code",
    "execution_count": 6,
    "execution_count": 7,
    "metadata": {},
    "outputs": [
    {
    @@ -265,7 +272,7 @@
    },
    {
    "cell_type": "code",
    "execution_count": 7,
    "execution_count": 8,
    "metadata": {},
    "outputs": [
    {
    @@ -538,10 +545,10 @@
    "0 bad epochs dropped\n",
    " epoch train_accuracy train_loss valid_accuracy valid_loss dur\n",
    "------- ---------------- ------------ ---------------- ------------ ------\n",
    " 1 \u001b[36m0.2500\u001b[0m \u001b[32m1.5919\u001b[0m \u001b[35m0.2500\u001b[0m \u001b[31m6.2938\u001b[0m 1.0590\n",
    " 2 0.2500 \u001b[32m1.1950\u001b[0m 0.2500 7.2212 0.2257\n",
    " 3 0.2500 \u001b[32m1.0809\u001b[0m 0.2500 \u001b[31m5.8696\u001b[0m 0.2249\n",
    " 4 \u001b[36m0.2569\u001b[0m \u001b[32m1.0008\u001b[0m \u001b[35m0.2535\u001b[0m \u001b[31m4.5077\u001b[0m 0.2237\n"
    " 1 \u001b[36m0.2500\u001b[0m \u001b[32m1.5919\u001b[0m \u001b[35m0.2500\u001b[0m \u001b[31m6.2938\u001b[0m 1.0413\n",
    " 2 0.2500 \u001b[32m1.1950\u001b[0m 0.2500 7.2211 0.2248\n",
    " 3 0.2500 \u001b[32m1.0809\u001b[0m 0.2500 \u001b[31m5.8693\u001b[0m 0.2272\n",
    " 4 \u001b[36m0.2569\u001b[0m \u001b[32m1.0008\u001b[0m \u001b[35m0.2535\u001b[0m \u001b[31m4.5076\u001b[0m 0.2266\n"
    ]
    }
    ],
    @@ -551,12 +558,12 @@
    },
    {
    "cell_type": "code",
    "execution_count": 8,
    "execution_count": 9,
    "metadata": {},
    "outputs": [
    {
    "data": {
    "image/png": "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\n",
    "image/png": "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\n",
    "text/plain": [
    "<Figure size 576x216 with 2 Axes>"
    ]
  2. gemeinl revised this gist Aug 18, 2020. 1 changed file with 148 additions and 109 deletions.
    257 changes: 148 additions & 109 deletions to_scikit_learn_API.ipynb
    Original file line number Diff line number Diff line change
    @@ -15,13 +15,29 @@
    }
    ],
    "source": [
    "import torch\n",
    "from sklearn.pipeline import Pipeline\n",
    "from skorch.callbacks import LRScheduler\n",
    "from skorch.helper import predefined_split\n",
    "from sklearn.base import TransformerMixin\n",
    "\n",
    "from braindecode import EEGClassifier\n",
    "from braindecode.util import set_random_seeds\n",
    "from braindecode.models import ShallowFBCSPNet\n",
    "from braindecode.datautil.preprocess import exponential_moving_standardize\n",
    "from braindecode.datasets.moabb import MOABBDataset\n",
    "from braindecode.datautil.windowers import (\n",
    " create_windows_from_events, create_fixed_length_windows)\n",
    "from braindecode.datautil.preprocess import (\n",
    " MNEPreproc, NumpyPreproc, preprocess)\n",
    "\n",
    " MNEPreproc, NumpyPreproc, preprocess)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 2,
    "metadata": {},
    "outputs": [],
    "source": [
    "class Preprocessor(TransformerMixin):\n",
    " def fit(self, X, y=None):\n",
    " return self\n",
    @@ -65,108 +81,66 @@
    " return X"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 2,
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n"
    ]
    }
    ],
    "source": [
    "from braindecode.datasets.moabb import MOABBDataset\n",
    "\n",
    "subject_id = 3\n",
    "dataset = MOABBDataset(dataset_name=\"BNCI2014001\", subject_ids=[subject_id])"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 3,
    "metadata": {},
    "outputs": [],
    "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from braindecode.datautil.preprocess import exponential_moving_standardize"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
    "# Known from experimental design\n",
    "sfreq = 250 \n",
    "n_classes = 4\n",
    "n_chans = 22\n",
    "original_trial_duration = 4\n",
    "\n",
    "# Preprocessing parameters\n",
    "low_cut_hz = 4. # low cut frequency for filtering\n",
    "high_cut_hz = 38. # high cut frequency for filtering\n",
    "# Parameters for exponential moving standardization\n",
    "factor_new = 1e-3\n",
    "init_block_size = 1000"
    "init_block_size = 1000\n",
    "trial_start_offset_seconds = -0.5\n",
    "# Calculate the trial start offset in samples.\n",
    "trial_start_offset_samples = int(trial_start_offset_seconds * sfreq)\n",
    "\n",
    "\n",
    "# Model parameters\n",
    "seed = 20200220 # random seed to make results reproducible\n",
    "input_window_samples = int(original_trial_duration * sfreq - trial_start_offset_samples)\n",
    "\n",
    "\n",
    "# Training parameters\n",
    "batch_size = 64\n",
    "n_epochs = 4\n",
    "# These values we found good for shallow network:\n",
    "lr = 0.0625 * 0.01\n",
    "weight_decay = 0\n",
    "# For deep4 they should be:\n",
    "# lr = 1 * 0.01\n",
    "# weight_decay = 0.5 * 0.001"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 5,
    "cell_type": "markdown",
    "metadata": {},
    "outputs": [],
    "source": [
    "trial_start_offset_seconds = -0.5\n",
    "# Extract sampling frequency, check that they are same in all datasets\n",
    "sfreq = dataset.datasets[0].raw.info['sfreq']\n",
    "assert all([ds.raw.info['sfreq'] == sfreq for ds in dataset.datasets])\n",
    "# Calculate the trial start offset in samples.\n",
    "trial_start_offset_samples = int(trial_start_offset_seconds * sfreq)"
    "create a model"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 6,
    "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
    "import torch\n",
    "from braindecode.util import set_random_seeds\n",
    "from braindecode.models import ShallowFBCSPNet\n",
    "\n",
    "cuda = torch.cuda.is_available() # check if GPU is available, if True chooses to use it\n",
    "device = 'cuda' if cuda else 'cpu'\n",
    "if cuda:\n",
    " torch.backends.cudnn.benchmark = True\n",
    "seed = 20200220 # random seed to make results reproducible\n",
    "\n",
    "# Set random seed to be able to reproduce results\n",
    "set_random_seeds(seed=seed, cuda=cuda)\n",
    "\n",
    "n_classes = 4 # user must know from experimental design\n",
    "n_chans = 22 # user mus know from experimental design\n",
    "input_window_samples = int(4 * sfreq - trial_start_offset_samples) # user must know from experimental design + computed from windowing arguments\n",
    "\n",
    "model = ShallowFBCSPNet(\n",
    " n_chans,\n",
    " n_classes,\n",
    @@ -180,61 +154,118 @@
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 7,
    "cell_type": "markdown",
    "metadata": {},
    "outputs": [],
    "source": [
    "from skorch.callbacks import LRScheduler\n",
    "from skorch.helper import predefined_split\n",
    "\n",
    "from braindecode import EEGClassifier\n",
    "# These values we found good for shallow network:\n",
    "lr = 0.0625 * 0.01\n",
    "weight_decay = 0\n",
    "\n",
    "# For deep4 they should be:\n",
    "# lr = 1 * 0.01\n",
    "# weight_decay = 0.5 * 0.001\n",
    "\n",
    "batch_size = 64\n",
    "n_epochs = 4"
    "chain all preprocessing steps as well as classifier in a pipeline"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 8,
    "execution_count": 5,
    "metadata": {},
    "outputs": [],
    "source": [
    "pipe = Pipeline([\n",
    " (\"pick_channels\", MNETransformer(fn='pick_types', eeg=True, meg=False, stim=False)),\n",
    " (\"convert_to_microvolts\", NumpyTransformer(fn=lambda x: x * 1e6)),\n",
    " (\"bandpass\", MNETransformer(fn='filter', l_freq=low_cut_hz, h_freq=high_cut_hz)),\n",
    " (\"pick_channels\", MNETransformer(\n",
    " fn='pick_types', \n",
    " eeg=True, \n",
    " meg=False, \n",
    " stim=False)\n",
    " ),\n",
    " (\"convert_to_microvolts\", NumpyTransformer(\n",
    " fn=lambda x: x * 1e6)\n",
    " ),\n",
    " (\"bandpass\", MNETransformer(\n",
    " fn='filter', \n",
    " l_freq=low_cut_hz, \n",
    " h_freq=high_cut_hz)\n",
    " ),\n",
    " (\"standardize\", NumpyTransformer(\n",
    " fn=exponential_moving_standardize, factor_new=factor_new,\n",
    " init_block_size=init_block_size)),\n",
    " fn=exponential_moving_standardize, \n",
    " factor_new=factor_new,\n",
    " init_block_size=init_block_size)\n",
    " ),\n",
    " (\"create_compute_windows\", EventWindower(\n",
    " trial_start_offset_samples=trial_start_offset_samples,\n",
    " trial_stop_offset_samples=0, preload=True)),\n",
    " trial_stop_offset_samples=0, preload=True)\n",
    " ),\n",
    " (\"classifier\", EEGClassifier(\n",
    " model,\n",
    " criterion=torch.nn.NLLLoss,\n",
    " optimizer=torch.optim.AdamW,\n",
    " train_split=lambda X, y: (X.split(\"session\")[\"session_T\"], X.split(\"session\")[\"session_E\"]),\n",
    " train_split=lambda X, y: (X.split(\"session\")[\"session_T\"], \n",
    " X.split(\"session\")[\"session_E\"]),\n",
    " optimizer__lr=lr,\n",
    " optimizer__weight_decay=weight_decay,\n",
    " batch_size=batch_size,\n",
    " callbacks=[\n",
    " \"accuracy\", (\"lr_scheduler\", LRScheduler('CosineAnnealingLR', T_max=n_epochs - 1)),\n",
    " \"accuracy\", \n",
    " (\"lr_scheduler\", LRScheduler('CosineAnnealingLR', T_max=n_epochs - 1)),\n",
    " ],\n",
    " device=device)),\n",
    "])"
    ]
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
    "load some data"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 9,
    "execution_count": 6,
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n"
    ]
    }
    ],
    "source": [
    "subject_id = 3\n",
    "dataset = MOABBDataset(dataset_name=\"BNCI2014001\", subject_ids=[subject_id])\n",
    "assert all([ds.raw.info['sfreq'] == sfreq for ds in dataset.datasets])"
    ]
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
    "perform fit"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 7,
    "metadata": {},
    "outputs": [
    {
    @@ -507,25 +538,25 @@
    "0 bad epochs dropped\n",
    " epoch train_accuracy train_loss valid_accuracy valid_loss dur\n",
    "------- ---------------- ------------ ---------------- ------------ ------\n",
    " 1 \u001b[36m0.2500\u001b[0m \u001b[32m1.6148\u001b[0m \u001b[35m0.2500\u001b[0m \u001b[31m5.8149\u001b[0m 1.1785\n",
    " 2 0.2500 \u001b[32m1.2112\u001b[0m 0.2500 6.9776 0.5048\n",
    " 3 \u001b[36m0.2674\u001b[0m \u001b[32m1.0564\u001b[0m \u001b[35m0.2569\u001b[0m \u001b[31m5.4244\u001b[0m 0.5404\n",
    " 4 \u001b[36m0.2882\u001b[0m \u001b[32m0.9659\u001b[0m \u001b[35m0.2604\u001b[0m \u001b[31m4.1689\u001b[0m 0.5710\n"
    " 1 \u001b[36m0.2500\u001b[0m \u001b[32m1.5919\u001b[0m \u001b[35m0.2500\u001b[0m \u001b[31m6.2938\u001b[0m 1.0590\n",
    " 2 0.2500 \u001b[32m1.1950\u001b[0m 0.2500 7.2212 0.2257\n",
    " 3 0.2500 \u001b[32m1.0809\u001b[0m 0.2500 \u001b[31m5.8696\u001b[0m 0.2249\n",
    " 4 \u001b[36m0.2569\u001b[0m \u001b[32m1.0008\u001b[0m \u001b[35m0.2535\u001b[0m \u001b[31m4.5077\u001b[0m 0.2237\n"
    ]
    }
    ],
    "source": [
    "pipe = pipe.fit(dataset, y=None, classifier__epochs=n_epochs)"
    "pipe = pipe.fit(dataset, classifier__epochs=n_epochs)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 10,
    "execution_count": 8,
    "metadata": {},
    "outputs": [
    {
    "data": {
    "image/png": "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\n",
    "image/png": "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\n",
    "text/plain": [
    "<Figure size 576x216 with 2 Axes>"
    ]
    @@ -538,6 +569,7 @@
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.lines import Line2D\n",
    "import pandas as pd\n",
    "\n",
    "# Extract loss and accuracy values for plotting from history object\n",
    "results_columns = ['train_loss', 'valid_loss', 'train_accuracy', 'valid_accuracy']\n",
    "df = pd.DataFrame(pipe.steps[-1][1].history[:, results_columns], columns=results_columns,\n",
    @@ -571,6 +603,13 @@
    "plt.legend(handles, [h.get_label() for h in handles], fontsize=14)\n",
    "plt.tight_layout()"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": null,
    "metadata": {},
    "outputs": [],
    "source": []
    }
    ],
    "metadata": {
  3. gemeinl created this gist Aug 6, 2020.
    597 changes: 597 additions & 0 deletions to_scikit_learn_API.ipynb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,597 @@
    {
    "cells": [
    {
    "cell_type": "code",
    "execution_count": 1,
    "metadata": {},
    "outputs": [
    {
    "name": "stderr",
    "output_type": "stream",
    "text": [
    "/home/gemeinl/anaconda3/envs/new_braindecode/lib/python3.7/site-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.metrics.scorer module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.metrics. Anything that cannot be imported from sklearn.metrics is now part of the private API.\n",
    " warnings.warn(message, FutureWarning)\n"
    ]
    }
    ],
    "source": [
    "from sklearn.base import TransformerMixin\n",
    "\n",
    "from braindecode.datautil.windowers import (\n",
    " create_windows_from_events, create_fixed_length_windows)\n",
    "from braindecode.datautil.preprocess import (\n",
    " MNEPreproc, NumpyPreproc, preprocess)\n",
    "\n",
    "class Preprocessor(TransformerMixin):\n",
    " def fit(self, X, y=None):\n",
    " return self\n",
    " \n",
    "\n",
    "class EventWindower(Preprocessor):\n",
    " def __init__(self, *args, **kwargs):\n",
    " self.args=args\n",
    " self.kwargs=kwargs\n",
    " \n",
    " def transform(self, X):\n",
    " return create_windows_from_events(\n",
    " concat_ds=X, *self.args, **self.kwargs)\n",
    " \n",
    " \n",
    "class FixedLengthWindower(Preprocessor):\n",
    " def __init__(self, *args, **kwargs):\n",
    " self.args=args\n",
    " self.kwargs=kwargs\n",
    " \n",
    " def transform(self, X):\n",
    " return create_fixed_length_windows(\n",
    " concat_ds=X, *self.args, **self.kwargs)\n",
    "\n",
    " \n",
    "class MNETransformer(Preprocessor):\n",
    " def __init__(self, fn, **kwargs):\n",
    " self.pre = MNEPreproc(fn=fn, **kwargs)\n",
    " \n",
    " def transform(self, X):\n",
    " preprocess(X, [self.pre])\n",
    " return X\n",
    "\n",
    " \n",
    "class NumpyTransformer(Preprocessor):\n",
    " def __init__(self, fn, **kwargs):\n",
    " self.pre = NumpyPreproc(fn=fn, **kwargs)\n",
    " \n",
    " def transform(self, X):\n",
    " preprocess(X, [self.pre])\n",
    " return X"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 2,
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n",
    "48 events found\n",
    "Event IDs: [1 2 3 4]\n"
    ]
    }
    ],
    "source": [
    "from braindecode.datasets.moabb import MOABBDataset\n",
    "\n",
    "subject_id = 3\n",
    "dataset = MOABBDataset(dataset_name=\"BNCI2014001\", subject_ids=[subject_id])"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 3,
    "metadata": {},
    "outputs": [],
    "source": [
    "from sklearn.pipeline import Pipeline\n",
    "from braindecode.datautil.preprocess import exponential_moving_standardize"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 4,
    "metadata": {},
    "outputs": [],
    "source": [
    "low_cut_hz = 4. # low cut frequency for filtering\n",
    "high_cut_hz = 38. # high cut frequency for filtering\n",
    "# Parameters for exponential moving standardization\n",
    "factor_new = 1e-3\n",
    "init_block_size = 1000"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 5,
    "metadata": {},
    "outputs": [],
    "source": [
    "trial_start_offset_seconds = -0.5\n",
    "# Extract sampling frequency, check that they are same in all datasets\n",
    "sfreq = dataset.datasets[0].raw.info['sfreq']\n",
    "assert all([ds.raw.info['sfreq'] == sfreq for ds in dataset.datasets])\n",
    "# Calculate the trial start offset in samples.\n",
    "trial_start_offset_samples = int(trial_start_offset_seconds * sfreq)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 6,
    "metadata": {},
    "outputs": [],
    "source": [
    "import torch\n",
    "from braindecode.util import set_random_seeds\n",
    "from braindecode.models import ShallowFBCSPNet\n",
    "\n",
    "cuda = torch.cuda.is_available() # check if GPU is available, if True chooses to use it\n",
    "device = 'cuda' if cuda else 'cpu'\n",
    "if cuda:\n",
    " torch.backends.cudnn.benchmark = True\n",
    "seed = 20200220 # random seed to make results reproducible\n",
    "# Set random seed to be able to reproduce results\n",
    "set_random_seeds(seed=seed, cuda=cuda)\n",
    "\n",
    "n_classes = 4 # user must know from experimental design\n",
    "n_chans = 22 # user mus know from experimental design\n",
    "input_window_samples = int(4 * sfreq - trial_start_offset_samples) # user must know from experimental design + computed from windowing arguments\n",
    "\n",
    "model = ShallowFBCSPNet(\n",
    " n_chans,\n",
    " n_classes,\n",
    " input_window_samples=input_window_samples,\n",
    " final_conv_length='auto',\n",
    ")\n",
    "\n",
    "# Send model to GPU\n",
    "if cuda:\n",
    " model.cuda()"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 7,
    "metadata": {},
    "outputs": [],
    "source": [
    "from skorch.callbacks import LRScheduler\n",
    "from skorch.helper import predefined_split\n",
    "\n",
    "from braindecode import EEGClassifier\n",
    "# These values we found good for shallow network:\n",
    "lr = 0.0625 * 0.01\n",
    "weight_decay = 0\n",
    "\n",
    "# For deep4 they should be:\n",
    "# lr = 1 * 0.01\n",
    "# weight_decay = 0.5 * 0.001\n",
    "\n",
    "batch_size = 64\n",
    "n_epochs = 4"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 8,
    "metadata": {},
    "outputs": [],
    "source": [
    "pipe = Pipeline([\n",
    " (\"pick_channels\", MNETransformer(fn='pick_types', eeg=True, meg=False, stim=False)),\n",
    " (\"convert_to_microvolts\", NumpyTransformer(fn=lambda x: x * 1e6)),\n",
    " (\"bandpass\", MNETransformer(fn='filter', l_freq=low_cut_hz, h_freq=high_cut_hz)),\n",
    " (\"standardize\", NumpyTransformer(\n",
    " fn=exponential_moving_standardize, factor_new=factor_new,\n",
    " init_block_size=init_block_size)),\n",
    " (\"create_compute_windows\", EventWindower(\n",
    " trial_start_offset_samples=trial_start_offset_samples,\n",
    " trial_stop_offset_samples=0, preload=True)),\n",
    " (\"classifier\", EEGClassifier(\n",
    " model,\n",
    " criterion=torch.nn.NLLLoss,\n",
    " optimizer=torch.optim.AdamW,\n",
    " train_split=lambda X, y: (X.split(\"session\")[\"session_T\"], X.split(\"session\")[\"session_E\"]),\n",
    " optimizer__lr=lr,\n",
    " optimizer__weight_decay=weight_decay,\n",
    " batch_size=batch_size,\n",
    " callbacks=[\n",
    " \"accuracy\", (\"lr_scheduler\", LRScheduler('CosineAnnealingLR', T_max=n_epochs - 1)),\n",
    " ],\n",
    " device=device)),\n",
    "])"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 9,
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Filtering raw data in 1 contiguous segment\n",
    "Setting up band-pass filter from 4 - 38 Hz\n",
    "\n",
    "FIR filter parameters\n",
    "---------------------\n",
    "Designing a one-pass, zero-phase, non-causal bandpass filter:\n",
    "- Windowed time-domain design (firwin) method\n",
    "- Hamming window with 0.0194 passband ripple and 53 dB stopband attenuation\n",
    "- Lower passband edge: 4.00\n",
    "- Lower transition bandwidth: 2.00 Hz (-6 dB cutoff frequency: 3.00 Hz)\n",
    "- Upper passband edge: 38.00 Hz\n",
    "- Upper transition bandwidth: 9.50 Hz (-6 dB cutoff frequency: 42.75 Hz)\n",
    "- Filter length: 413 samples (1.652 sec)\n",
    "\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    "Used Annotations descriptions: ['feet', 'left_hand', 'right_hand', 'tongue']\n",
    "48 matching events found\n",
    "No baseline correction applied\n",
    "Adding metadata with 4 columns\n",
    "0 projection items activated\n",
    "Loading data for 48 events and 1125 original time points ...\n",
    "0 bad epochs dropped\n",
    "0 bad epochs dropped\n",
    " epoch train_accuracy train_loss valid_accuracy valid_loss dur\n",
    "------- ---------------- ------------ ---------------- ------------ ------\n",
    " 1 \u001b[36m0.2500\u001b[0m \u001b[32m1.6148\u001b[0m \u001b[35m0.2500\u001b[0m \u001b[31m5.8149\u001b[0m 1.1785\n",
    " 2 0.2500 \u001b[32m1.2112\u001b[0m 0.2500 6.9776 0.5048\n",
    " 3 \u001b[36m0.2674\u001b[0m \u001b[32m1.0564\u001b[0m \u001b[35m0.2569\u001b[0m \u001b[31m5.4244\u001b[0m 0.5404\n",
    " 4 \u001b[36m0.2882\u001b[0m \u001b[32m0.9659\u001b[0m \u001b[35m0.2604\u001b[0m \u001b[31m4.1689\u001b[0m 0.5710\n"
    ]
    }
    ],
    "source": [
    "pipe = pipe.fit(dataset, y=None, classifier__epochs=n_epochs)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 10,
    "metadata": {},
    "outputs": [
    {
    "data": {
    "image/png": "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\n",
    "text/plain": [
    "<Figure size 576x216 with 2 Axes>"
    ]
    },
    "metadata": {},
    "output_type": "display_data"
    }
    ],
    "source": [
    "import matplotlib.pyplot as plt\n",
    "from matplotlib.lines import Line2D\n",
    "import pandas as pd\n",
    "# Extract loss and accuracy values for plotting from history object\n",
    "results_columns = ['train_loss', 'valid_loss', 'train_accuracy', 'valid_accuracy']\n",
    "df = pd.DataFrame(pipe.steps[-1][1].history[:, results_columns], columns=results_columns,\n",
    " index=pipe.steps[-1][1].history[:, 'epoch'])\n",
    "\n",
    "# get percent of misclass for better visual comparison to loss\n",
    "df = df.assign(train_misclass=100 - 100 * df.train_accuracy,\n",
    " valid_misclass=100 - 100 * df.valid_accuracy)\n",
    "\n",
    "plt.style.use('seaborn')\n",
    "fig, ax1 = plt.subplots(figsize=(8, 3))\n",
    "df.loc[:, ['train_loss', 'valid_loss']].plot(\n",
    " ax=ax1, style=['-', ':'], marker='o', color='tab:blue', legend=False, fontsize=14)\n",
    "\n",
    "ax1.tick_params(axis='y', labelcolor='tab:blue', labelsize=14)\n",
    "ax1.set_ylabel(\"Loss\", color='tab:blue', fontsize=14)\n",
    "\n",
    "ax2 = ax1.twinx() # instantiate a second axes that shares the same x-axis\n",
    "\n",
    "df.loc[:, ['train_misclass', 'valid_misclass']].plot(\n",
    " ax=ax2, style=['-', ':'], marker='o', color='tab:red', legend=False)\n",
    "ax2.tick_params(axis='y', labelcolor='tab:red', labelsize=14)\n",
    "ax2.set_ylabel(\"Misclassification Rate [%]\", color='tab:red', fontsize=14)\n",
    "ax2.set_ylim(ax2.get_ylim()[0], 85) # make some room for legend\n",
    "ax1.set_xlabel(\"Epoch\", fontsize=14)\n",
    "\n",
    "# where some data has already been plotted to ax\n",
    "handles = []\n",
    "handles.append(Line2D([0], [0], color='black', linewidth=1, linestyle='-', label='Train'))\n",
    "handles.append(Line2D([0], [0], color='black', linewidth=1, linestyle=':', label='Valid'))\n",
    "plt.legend(handles, [h.get_label() for h in handles], fontsize=14)\n",
    "plt.tight_layout()"
    ]
    }
    ],
    "metadata": {
    "kernelspec": {
    "display_name": "new_braindecode",
    "language": "python",
    "name": "new_braindecode"
    },
    "language_info": {
    "codemirror_mode": {
    "name": "ipython",
    "version": 3
    },
    "file_extension": ".py",
    "mimetype": "text/x-python",
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
    "version": "3.7.6"
    }
    },
    "nbformat": 4,
    "nbformat_minor": 2
    }