{ "nbformat_minor": 0, "nbformat": 4, "cells": [ { "execution_count": null, "cell_type": "code", "source": [ "%matplotlib inline" ], "outputs": [], "metadata": { "collapsed": false } }, { "source": [ "\n==========================================================\nCompute point-spread functions (PSFs) for MNE/dSPM/sLORETA\n==========================================================\n\nPSFs are computed for four labels in the MNE sample data set\nfor linear inverse operators (MNE, dSPM, sLORETA).\nPSFs describe the spread of activation from one label\nacross the cortical surface.\n\n" ], "cell_type": "markdown", "metadata": {} }, { "execution_count": null, "cell_type": "code", "source": [ "# Authors: Olaf Hauk \n# Alexandre Gramfort \n#\n# License: BSD (3-clause)\n\nfrom mayavi import mlab\n\nimport mne\nfrom mne.datasets import sample\nfrom mne.minimum_norm import read_inverse_operator, point_spread_function\n\nprint(__doc__)\n\ndata_path = sample.data_path()\nsubjects_dir = data_path + '/subjects/'\nfname_fwd = data_path + '/MEG/sample/sample_audvis-meg-eeg-oct-6-fwd.fif'\nfname_inv_eegmeg = (data_path +\n '/MEG/sample/sample_audvis-meg-eeg-oct-6-meg-eeg-inv.fif')\nfname_inv_meg = data_path + '/MEG/sample/sample_audvis-meg-oct-6-meg-inv.fif'\nfname_label = [data_path + '/MEG/sample/labels/Aud-rh.label',\n data_path + '/MEG/sample/labels/Aud-lh.label',\n data_path + '/MEG/sample/labels/Vis-rh.label',\n data_path + '/MEG/sample/labels/Vis-lh.label']\n\n\n# read forward solution\nforward = mne.read_forward_solution(fname_fwd, force_fixed=False,\n surf_ori=True)\n\n# read inverse operators\ninverse_operator_eegmeg = read_inverse_operator(fname_inv_eegmeg)\ninverse_operator_meg = read_inverse_operator(fname_inv_meg)\n\n# read label(s)\nlabels = [mne.read_label(ss) for ss in fname_label]\n\n# regularisation parameter\nsnr = 3.0\nlambda2 = 1.0 / snr ** 2\nmethod = 'MNE' # can be 'MNE' or 'sLORETA'\nmode = 'svd'\nn_svd_comp = 1\n\nstc_psf_eegmeg, _ = point_spread_function(\n inverse_operator_eegmeg, forward, method=method, labels=labels,\n lambda2=lambda2, pick_ori='normal', mode=mode, n_svd_comp=n_svd_comp)\n\nstc_psf_meg, _ = point_spread_function(\n inverse_operator_meg, forward, method=method, labels=labels,\n lambda2=lambda2, pick_ori='normal', mode=mode, n_svd_comp=n_svd_comp)\n\n# save for viewing in mne_analyze in order of labels in 'labels'\n# last sample is average across PSFs\n# stc_psf_eegmeg.save('psf_eegmeg')\n# stc_psf_meg.save('psf_meg')\n\ntime_label = \"EEGMEG %d\"\nbrain_eegmeg = stc_psf_eegmeg.plot(hemi='rh', subjects_dir=subjects_dir,\n time_label=time_label,\n figure=mlab.figure(size=(500, 500)))\n\ntime_label = \"MEG %d\"\nbrain_meg = stc_psf_meg.plot(hemi='rh', subjects_dir=subjects_dir,\n time_label=time_label,\n figure=mlab.figure(size=(500, 500)))\n\n# The PSF is centred around the right auditory cortex label,\n# but clearly extends beyond it.\n# It also contains \"sidelobes\" or \"ghost sources\"\n# in middle/superior temporal lobe.\n# For the Aud-RH example, MEG and EEGMEG do not seem to differ a lot,\n# but the addition of EEG still decreases point-spread to distant areas\n# (e.g. to ATL and IFG).\n# The chosen labels are quite far apart from each other, so their PSFs\n# do not overlap (check in mne_analyze)" ], "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" } } } }