{ "nbformat_minor": 0, "nbformat": 4, "cells": [ { "execution_count": null, "cell_type": "code", "source": [ "%matplotlib inline" ], "outputs": [], "metadata": { "collapsed": false } }, { "source": [ "\n# Analysis of evoked response using ICA and PCA reduction techniques\n\n\nThis example computes PCA and ICA of evoked or epochs data. Then the\nPCA / ICA components, a.k.a. spatial filters, are used to transform\nthe channel data to new sources / virtual channels. The output is\nvisualized on the average of all the epochs.\n\n" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "# Authors: Jean-Remi King \n# Asish Panda \n#\n# License: BSD (3-clause)\n\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nimport mne\nfrom mne.datasets import sample\nfrom mne.decoding import UnsupervisedSpatialFilter\n\nfrom sklearn.decomposition import PCA, FastICA\n\nprint(__doc__)\n\n# Preprocess data\ndata_path = sample.data_path()\n\n# Load and filter data, set up epochs\nraw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif'\nevent_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw-eve.fif'\ntmin, tmax = -0.1, 0.3\nevent_id = dict(aud_l=1, aud_r=2, vis_l=3, vis_r=4)\n\nraw = mne.io.read_raw_fif(raw_fname, preload=True)\nraw.filter(1, 20)\nevents = mne.read_events(event_fname)\n\npicks = mne.pick_types(raw.info, meg=False, eeg=True, stim=False, eog=False,\n exclude='bads')\n\nepochs = mne.Epochs(raw, events, event_id, tmin, tmax, proj=False,\n picks=picks, baseline=None, preload=True,\n verbose=False)\n\nX = epochs.get_data()" ], "outputs": [], "metadata": { "collapsed": false } }, { "source": [ "Transform data with PCA computed on the average ie evoked response\n\n" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "pca = UnsupervisedSpatialFilter(PCA(30), average=False)\npca_data = pca.fit_transform(X)\nev = mne.EvokedArray(np.mean(pca_data, axis=0),\n mne.create_info(30, epochs.info['sfreq'],\n ch_types='eeg'), tmin=tmin)\nev.plot(show=False, window_title=\"PCA\")" ], "outputs": [], "metadata": { "collapsed": false } }, { "source": [ "Transform data with ICA computed on the raw epochs (no averaging)\n\n" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "ica = UnsupervisedSpatialFilter(FastICA(30), average=False)\nica_data = ica.fit_transform(X)\nev1 = mne.EvokedArray(np.mean(ica_data, axis=0),\n mne.create_info(30, epochs.info['sfreq'],\n ch_types='eeg'), tmin=tmin)\nev1.plot(show=False, window_title='ICA')\n\nplt.show()" ], "outputs": [], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 2", "name": "python2", "language": "python" }, "language_info": { "mimetype": "text/x-python", "nbconvert_exporter": "python", "name": "python", "file_extension": ".py", "version": "2.7.13", "pygments_lexer": "ipython2", "codemirror_mode": { "version": 2, "name": "ipython" } } } }