42080
Comment:
|
48334
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
<<TableOfContents(2,2)>> == License == This tutorial dataset (EEG and MRI data) remains proprietary of the Epilepsy Centre, University Hospital Freiburg, Germany. Its use and transfer outside the Brainstorm tutorial, e.g. for research purposes, is prohibited without written consent from the Epilepsy Center in Freiburg. For questions please contact A. Schulze-Bonhage, MD, PhD: andreas.schulze-bonhage@uniklinik-freiburg.de == Presentation of the clinical case == This tutorial dataset was acquired in a patient who suffered from focal epilepsy with focal sensory, dyscognitive and secondarily generalized seizures since the age of eight years. He does not have any typical risk factors for epilepsy. The high resolution 3T epilepsy MRI including postprocessing was found to be normal. FDG-PET of the brain did not show any pathological changes in the glucose metabolism. Non-invasive telemetry revealed left fronto-central sharp waves, polyspikes and bursts of beta band activity (max. amplitude FC1, Cz) especially during sleep. The tutorial dataset was acquired during one night of the non-invasive telemetry recording at the Epilepsy Center Freiburg, Germany. Afterwards the patient underwent invasive EEG to identify the epileptogenic area and to map functionally important cortex. Details about invasive EEG and source localization from invasive EEG in this patient are reported in Dümpelmann, et al. (2011). Subsequently a left frontal tailored resection was performed. The histological analysis revealed a focal cortical dysplasia type IIB according to the classification of Palmini, et al. (2004). The postsurgical outcome is Engel 1A with a follow-up of 5 years. The EEG data distributed here was recorded at 256Hz, using a Neurofile NT digital video-EEG system with 128 channels and a 16-bit A/D converter. The signal was filtered in the recording system with a high-pass filter with a time constant of 1 second (cutoff frequency ~ 0.16Hz) and a low-pass filter with a cutoff frequency of 344 Hz. The spikes were marked with Brainstorm by the epileptologists at the Epilepsy Center in Freiburg. |
Note that the operations used here are not detailed, the goal of this tutorial is not to introduce Brainstorm to new users. For in-depth explanations of the interface and theoretical foundations, please refer to the [[http://neuroimage.usc.edu/brainstorm/Tutorials#Get_started|introduction tutorials]]. <<TableOfContents(3,2)>> <<Include(DatasetEpilepsy, , from="\<\<HTML\(\<!-- START-PAGE --\>\)\>\>", to="\<\<HTML\(\<!-- STOP-SHORT --\>\)\>\>")>> |
Line 31: | Line 25: |
=== References === | ==== References ==== |
Line 44: | Line 38: |
* Go to the [[http://neuroimage.usc.edu/brainstorm3_register/download.php|Download]] page of this website, and download the file: '''sample_epilepsy.zip''' | * Go to the [[http://neuroimage.usc.edu/bst/download.php|Download]] page of this website, and download the file: '''sample_epilepsy.zip''' |
Line 47: | Line 41: |
* Select the menu File > Create new protocol. Name it "'''!TutorialEpilepsy'''" and select the options: | * Select the menu File > Create new protocol. Name it "'''TutorialEpilepsy'''" and select the options: |
Line 52: | Line 46: |
* Right-click on the !TutorialEpilepsy folder > New subject > '''sepi01''' | * Switch to the "anatomy" view of the protocol. * Right-click on the TutorialEpilepsy folder > '''New subject''' > '''sepi01''' |
Line 54: | Line 49: |
* Right-click on the subject node > Import anatomy folder: * Set the file format: "!FreeSurfer folder" |
* Right-click on the subject node > '''Import anatomy folder''': * Set the file format: "FreeSurfer folder" |
Line 58: | Line 53: |
* Set the 6 required fiducial points (indicated in MRI coordinates): * NAS: x=135, y=222, z=75 * LPA: x=57, y=118, z=68 * RPA: x=204, y=119, z=76 * AC: x=131, y=145, z=110 * PC: x=130, y=119, z=111 * IH: x=128, y=134, z=170 (anywhere on the midsagittal plane) * At the end of the process, make sure that the file "cortex_15000V" is selected (downsampled pial surface, that will be used for the source estimation). If it is not, double-click on it to select it as the default cortex surface.<<BR>><<BR>> {{attachment:anatomy.gif||height="257",width="442"}} |
* In the MRI Viewer, click on "[[http://neuroimage.usc.edu/brainstorm/Tutorials/ImportAnatomy#MNI_transformation|Click here to compute MNI transformation]]". It compute an affine transformation between the subject space and the MNI ICBM152 space, and sets automatically the anatomical landmarks AC/PC/IH. <<BR>><<BR>> {{attachment:mni_transformation.gif||width="575"}} * Set the three fiducial points (indicated here in MRI coordinates): * NAS: x=134, y=222, z=74 * LPA: x=58, y=123, z=69 * RPA: x=204, y=120, z=75 * Click on [Save] to validate the modifications and continue with the importation of the anatomy. At the end of the process, make sure that the file "cortex_15000V" is selected (downsampled pial surface, that will be used for the source estimation). If it is not, double-click on it to select it as the default cortex surface.<<BR>><<BR>> {{attachment:anatomy.gif||width="442"}} |
Line 68: | Line 61: |
If you do not have access to an individual MR scan of the subject (or if its quality is too low to be processed with !FreeSurfer), but if you have digitized the head shape of the subject using a tracking system, you have an alternative: deform one of the Brainstorm templates (Colin27 or ICBM152) to match the shape of the subject's head.<<BR>>For more information, read the following tutorial: [[Tutorials/TutWarping|Warping default anatomy]] | If you do not have access to an individual MR scan of the subject (or if its quality is too low to be processed with FreeSurfer), but if you have digitized the head shape of the subject using a tracking system, you have an alternative: deform one of the Brainstorm templates (Colin27 or ICBM152) to match the shape of the subject's head.<<BR>>For more information, read the following tutorial: [[Tutorials/TutWarping|Warping default anatomy]] |
Line 71: | Line 64: |
==== Link the recordings ==== * Switch to the "functional data" view. * Right-click on the subject folder > Review raw file: |
=== Link the recordings === * Switch to the "functional data" view (2nd button, on top of the database explorer). * Right-click on the subject folder > '''Review raw file''': |
Line 76: | Line 69: |
* The new file "Link to raw file" lets you access directly the contents of the EEG recordings * The channel file "Deltamed channels" in the (Common files) folder contains the name of the channels, but not their positions. We need to overwrite this file and import manually the positions of the electrodes (either a standard cap or accurate positions digitized with a Polhemus device). ==== Prepare the channel file ==== * Right-click the channel file in ''Common files'' > Add EEG positions > Import from file: |
* The new file "Link to raw file" lets you access directly the contents of the EEG recordings * The channel file "Deltamed channels" in the (Common files) folder contains the name of the channels, but not their positions. We need to overwrite this file and import manually the positions of the electrodes (either a standard cap or accurate positions digitized with a Polhemus device). === Prepare the channel file === * Import the positions of the electrodes: * Right-click the channel file in ''Common files'' > '''Add EEG positions''' > '''Import from file''': <<BR>> {{attachment:channel_positions.gif||width="357"}} |
Line 83: | Line 77: |
* This file contains the default electrodes positions from the ASA software (ANT) | * This file contains the default electrodes positions from the ASA software (ANT). * If you have digitized the position of the electrodes (eg. with a Polhemus device) you have to make sure it contains the position of the anatomical references NAS/LPA/RPA. This is the best way to make sure the electrode cap will be registered automatically with the MRI in Brainstorm. * The channels are matched by name: the position file you import must include the labels of the electrodes and they must be named exactly in the the same way as in your recordings. |
Line 94: | Line 90: |
* Right-click on the channel file > Edit channel file: | * Right-click on the channel file > '''Edit channel file''': |
Line 98: | Line 94: |
* For this particular study, we can use the channel file as it is configured now, just close the figure. Discard any modification you may have done. {{attachment:channel_type.gif||height="219",width="383"}} ==== Register electrodes with MRI ==== |
* For this particular study, we can use the channel file as it is configured now, just close the figure. Discard any modification you may have done. <<BR>><<BR>> {{attachment:channel_type.gif||width="383"}} === Register electrodes with MRI === |
Line 104: | Line 99: |
* Right-click on the channel file > MRI registration > Edit... You will see several buttons across the toolbar; to get the function of a button, hover your mouse for a few seconds over it to reveal the tooltip. * You can click on the "Label" button in the toolbar to show the electrode names. The default positions are already quite good, and the head shape is correct; only limited manual registration will be required in the next few steps. |
* Right-click on the channel file > '''MRI registration''' > '''Edit...''' You will see several buttons across the toolbar. For instructions, hover your mouse over the buttons to reveal the tooltips. * Click on the [Label] button in the toolbar to show the names''' '''of the electrodes. The default positions are already quite good, and the head shape is correct; only limited manual registration will be required in the next few steps. |
Line 112: | Line 107: |
* Click on "OK" and agree to save the modifications.<<BR>><<BR>> {{attachment:channel_align.gif|channel_type.gif|height="191",width="352"}} | * Click on "OK" and agree to save the modifications.<<BR>><<BR>> {{attachment:channel_align.gif|channel_type.gif|width="352"}} * If you want to see or edit the position of the electrodes in the MRI Viewer: right-click on the channel file > '''Display sensors > EEG (MRI Viewer)'''. Select the menu "MIP: Functional" to see all the electrodes. To edit the channel file: right-click > Electrodes > Set electrode position. <<BR>><<BR>> {{attachment:channel_mri.gif||height="395",width="346"}} |
Line 115: | Line 112: |
==== Import the spike markers ==== Some spikes were marked by the epileptologists at the Epilepsy Center in Freiburg with Brainstorm and saved in an external text file. We are going to import this file manually. * Right-click on the "Link to raw file" > EEG > Display time series. * In the tab Record, menu File > Add events from files... * Select file format "Array of times" (We are importinga a text file containing the timing of the markers) * Select file '''sample_epilepsy/data/''''''tutorial_spikes.txt''' * When prompted, enter the event name "'''SPIKE'''" * Note that a new category SPIKE is visible in the events list, containing 58 markers * Close the viewer and agree to save the modifications ==== Display the recordings in one montage ==== * For basic information on how to manipulate the montages in Brainstorm: [[http://%20neuroimage.usc.edu/brainstorm/Tutorials/TutExploreRecodings#Montages|read this tutorial]]. |
=== Display the recordings === |
Line 132: | Line 117: |
* In the Record tab, change the default duration that is reviewed to '''10s'''. * In the figure, click on the '''[Flip +/-]''' button to have the negative values pointing up (convention used by most neurologists) |
* In the Record tab, change the default duration that is reviewed to '''10s'''. <<BR>> {{attachment:review_avgref.gif||width="188"}} {{attachment:review_duration.gif||width="198"}} * In the figure, click on the '''[Flip +/-]''' button to have the negative values pointing up (convention used by most neurologists). <<BR>> {{attachment:review_flip.gif||width="360"}} |
Line 135: | Line 120: |
* Right-click on "Link to raw file" again > EEG > '''2D Sensor cap ''' | * Right-click on "Link to raw file" again > EEG > '''2D Sensor cap''' |
Line 137: | Line 122: |
* Open the '''ECG '''and '''EOG '''traces as well, to avoid confusing spikes with cardiac or ocular artifacts:<<BR>> | * Open the '''ECG '''and '''EOG '''traces as well, to avoid confusing spikes with cardiac or ocular artifacts: |
Line 142: | Line 127: |
* Having a lot of windows open may slow down significantly the display because each time you change the current time, all the figures have to be updated. A lot of space is also wasted on the screen due to window frames. The number of windows to open has to be a balance between the amount of information to display and the ease of use. * Review a few existing SPIKE events, to get the feeling of how this reviewing environment works. {{attachment:reviewall.gif}} ==== Frequency filters ==== |
* Having a lot of windows open may slow down significantly the display because each time you change the current time, all the figures have to be updated. A lot of space is also wasted on the screen due to window frames. The number of windows to open has to be a balance between the amount of information to display and the ease of use. <<BR>><<BR>> {{attachment:reviewall.gif||width="594"}} === Frequency filters === |
Line 151: | Line 133: |
* Low-pass filter: '''80 Hz'''<<BR>><<BR>> {{attachment:filters.gif||height="165",width="196"}} ==== Time and amplitude resolution ==== |
* Low-pass filter: '''80 Hz'''<<BR>><<BR>> {{attachment:filters.gif||width="196"}} === Time and amplitude resolution === |
Line 156: | Line 138: |
In the Brainstorm interface, this resolution is usually set implicitly: you can set the size of the window, the duration or recordings reviewed at once (text box "duration" in tab Record) and the maximum amplitude to show in the figure (buttons [...] and [AS] on the right of the time series figure). From there, you can also zoom in time ([<], [>], mouse wheel) or amplitude (['''^'''], [v], Shift+mouse wheel). Those parameters are convenient to explore the recordings interactively but don't allow us to have reproducible displays with constant time and amplitude resolutions. To set the figure resolution explicitly: right-click on the figure > Figure > Set axes resolution. Note that this interface does not store the input values, it just modifies the other parameters (figure size, time window, max amplitude) to fit the resolution objectives. Then if you modify those parameters (resize the figure, leave the button [AS] selected and scroll in time, etc) the resolution is lost, you have to set it again manually. |
In the Brainstorm interface, this resolution is usually set implicitly: you can set the size of the window, the duration or recordings reviewed at once (text box "duration" in tab Record) and the maximum amplitude to show in the figure (buttons [...] and [AS] on the right of the time series figure). From there, you can also zoom in time ([<], [>], mouse wheel) or amplitude (['''^'''], [v], Shift+mouse wheel). These parameters are convenient to explore the recordings interactively but don't allow us to have reproducible displays with constant time and amplitude resolutions. To set the figure resolution explicitly: right-click on the figure > Figure > Set axes resolution. Note that this interface does not store the input values, it just modifies the other parameters (figure size, time window, max amplitude) to fit the resolution objectives. If you modify these parameters (resize the figure, leave the button [AS] selected and scroll in time, etc) the resolution is lost, you have to set it again manually. In particular, make sure you '''disable the auto-scaling''' ([AS] button in the time series figure) if you want to preserve the aspect ratio while you scroll through the data. |
Line 163: | Line 145: |
* Amplitude: '''15 μV/pixels''' (~45 μV/mm)<<BR>><<BR>> {{attachment:resolution.gif||height="249",width="595"}} ==== User setups ==== This preparation of the reviewing environment requires a large number of operations, and would become quickly annoying if you have to repeat it every time you open a file. This is a good time to use the menu "User setups" to save this window configuration, to reload it in one click later. In the menu "Window layout", at the top-right of the Brainstorm window, select User setup > New setup. Enter a name of your choice for this particular window arrangement. |
* Amplitude: '''15 μV/pixels''' (~45 μV/mm)<<BR>><<BR>> {{attachment:resolution.gif||width="595"}} === User setups === This preparation of the reviewing environment requires a large number of operations, and would become quickly annoying if you have to repeat it every time you open a file. This is a good time to use the menu "User setups" to save this window configuration, so that you can reload it in one click later. In the menu "Window layout", at the top-right of the Brainstorm window, select User setup > New setup. Enter a name of your choice for this particular window arrangement. |
Line 170: | Line 152: |
. {{attachment:usersetup.gif||height="251",width="347"}} ==== Multiple montages ==== |
. {{attachment:usersetup.gif||width="347"}} === Multiple montages === |
Line 180: | Line 162: |
* Redimension all the figures to make room for the new window | * Resize all the figures to make room for the new window |
Line 182: | Line 164: |
* If you don't see the "Longitudinal 3" menu, it is probably because you have using Brainstorm before those predefined montages were made available in the software distribution. To add them manually: | * If you don't see the "Longitudinal 3" menu, it is probably because you have using Brainstorm before these predefined montages were made available in the software distribution. To add them manually: |
Line 189: | Line 171: |
{{attachment:reviewall2.gif}} |
{{attachment:reviewall2.gif||width="678"}} |
Line 193: | Line 174: |
In this dataset, some single spikes have already been identified by experts at the University Hospital of Freiburg. You can see that 58 SPIKE events are available in the Record tab. Click on a few of them and try to identify the shape of the spike. The procedure if you are marking the events by yourself is the following: |
=== Detect heartbeats === When you have a clean ECG signal for your patient, you can detect automatically identify all the heartbeats in the recordings. Because heartbeats can cause sharp waves in some EEG traces, it can help the reviewing process to have all the cardiac events marked in the recordings. * Right-click on the "Link to raw file" > EEG > '''Display time series''' (or simply double-click on the file). * In the tab Record, menu Artifacts > Detect heartbeats: Channel='''ECG''', All file. <<BR>><<BR>> {{attachment:detect_ecg.gif||height="200",width="470"}} ==== Import the spike markers ==== Some spikes were marked by the epileptologists at the Epilepsy Center in Freiburg with Brainstorm and saved in an external text file. We are going to import this file manually. * In the tab Record, menu File > '''Add events from files'''... * Select format '''Array of times''' (importing a a text file containing the timing of the markers) * Select file '''sample_epilepsy/data/''''''tutorial_spikes.txt''' * When prompted, enter the event name "'''SPIKE'''" * Note that a new category SPIKE is visible in the events list, containing 58 markers. Click on a few of them and try to identify the shape of the spike (mostly visible on the channel FC1). Then close the viewer and save the modifications. <<BR>><<BR>> {{attachment:events_import.gif||width="530"}} * The two other types of events that were present initially in the file (REM/REM_Ende) indicated the beginning and the end of periods or REM sleep (the patient is sleeping during the entire session). === Manual marking === If you are marking the events by yourself, you could follow this procedure: |
Line 201: | Line 197: |
* Scroll through the recordings using the [<<<] and [>>>] buttons or shortcuts such as F3 or F4 (complete list and descriptions available when you leave your mouse over those buttons). * You can adjust the gain of the electrodes to observe better an event with the buttons ['''^'''] and [v] or the shortcut [Shift+mouse wheel]. |
* Scroll through the recordings using the [<<<] and [>>>] buttons or shortcuts such as F3 or F4 (complete list and descriptions available when you leave your mouse over these buttons). * You can adjust the gain of the electrodes to observe better an event with the buttons ['''^'''] and [v], with the keyboard (+/-) or the mouse ([Shift+mouse wheel] or [Right-click+move up/down]). |
Line 207: | Line 203: |
* More information on the data viewer, see tutorial: [[Tutorials/TutRawViewer|Review continuous recordings]]. | * More information on the data viewer, see tutorial: [[Tutorials/ReviewRaw|Review continuous recordings]]. |
Line 210: | Line 206: |
==== Evaluation ==== Two of the typical pre-processing steps consist in getting rid of the contamination due to the power lines (50 Hz or 60Hz) and of the frequencies we are not interested in (a low-pass filter to remove the high-frequencies and a high-pass filter to remove the very slow components of the signals). Let's start with the spectral evaluation of this file. * Drag the "Link to raw file" to the Process1 box and run the process "Frequency > Power spectrum density (Welch)". Configure it as illustrated in the following figure (window length=10s, overlap=50%).<<BR>><<BR>> {{attachment:psd1.gif||height="281",width="312"}} * Double-click on the new PSD file to display it.<<BR>><<BR>> {{attachment:psd2.gif||height="199",width="388"}} * This frequency spectrum does not show any particular peak at 50/60Hz, there is no notch filter to apply on those recordings. If we had to, we would run the process "Pre-processing > Notch filter" as explained in the tutorial [[Tutorials/TutRawSsp|Detect and remove artifacts]]. ==== Band-pass filter ==== We would like to apply a band-pass filter to keep only the frequencies between 0.5Hz an 80Hz. The high-pass filter at 0.5Hz will rid of the slow amplitude fluctuations (longer than 2s). |
Two of the typical pre-processing steps consist in getting rid of the contamination due to the power lines (50 Hz or 60Hz) and of the frequencies we are not interested in (a low-pass filter to remove the high-frequencies and a high-pass filter to remove the very slow components of the signals). Let's start with the spectral evaluation of this file. === Power spectrum === * In the Process1 box: Drag and drop the "Link to raw file". * Run process '''Frequency > Power spectrum density (Welch)''': All file, Length='''10s''', Overlap=50%.<<BR>><<BR>> {{attachment:psd1.gif||height="305",width="510"}} * Double-click on the new PSD file to display it.<<BR>><<BR>> {{attachment:psd2.gif||height="199",width="557"}} * This frequency spectrum does not show any particular peak at 50/60Hz, there is no notch filter to apply on these recordings. If we had to, we would run the process "Pre-processing > Notch filter" as explained in the tutorial [[Tutorials/ArtifactsFilter|Detect and remove artifacts]]. === Band-pass filter === The filters we selected for reviewing the recordings were for visualization only, they were not applied to the file. In order to apply these filters permanently to the recordings, we need to do the following: |
Line 221: | Line 218: |
* Run the process "Pre-process > Band-pass filter", with the options: * Lower cutoff frequency: '''0.5 Hz''' (high-pass filter) * Upper cutoff frequency: '''80 Hz''' (low-pass filter) * Mirror signal before filtering: '''On''' * Sensor types: '''EMPTY '''(to process all the signals)<<BR>><<BR>> {{attachment:bandpass.gif||height="281",width="295"}} |
* Run process '''Pre-process > Band-pass filter''': '''[0.5,80]Hz''', Mirror, Sensor types='''EEG'''<<BR>><<BR>> {{attachment:bandpass.gif||height="301",width="463"}} |
Line 229: | Line 222: |
* Drag this new file "Raw | band(0.5-80Hz)" to the Process1 list. * Run again the process "Frequency > Power spectrum density (Welch)", with same options as before. * Double-click on the new PSD file to display the spectrum of the filtered file.<<BR>><<BR>> {{attachment:psd3.gif||height="190",width="489"}} == Epoching and averaging == ==== Import recordings ==== * Now we want to extract all the spikes as 400ms windows from this filtered file. * Right-click on the imported and filtered file '''"Raw (0s,3600s) | high(0.5Hz)"''' > Import in database<<BR>><<BR>> {{attachment:import_menu.gif||height="150",width="226"}} * Select the option "Use events" and select the category '''SPIKE''', with 58 events. * Epoch time: '''[-100, +300]ms''' around the spike events * Uncheck "Remove DC offset": the DC offset has already been removed with the high-pass filter<<BR>><<BR>> {{attachment:import.gif||height="300",width="501"}} * You should see a new folder "SPIKE" containing 58 epochs in your database.<<BR>><<BR>> {{attachment:import_after.gif||height="166",width="228"}} ==== Average spikes ==== |
=== Average reference === The average reference montage we used to review the recordings was for visualization only, it did not modify the file. To apply this transformation permanently, we need to run the re-referencing process. * Double-click on the filtered file "Raw | band(0.5-80Hz)" to open it. * In the Record tab, select the menu '''Artifacts > Re-reference EEG''': Enter '''AVERAGE'''. <<BR>><<BR>> {{attachment:avgref_process.gif||height="244",width="500"}} * The re-referencing operation is saved in the same way as the SSP and ICA projectors: as a linear operator applied dynamically to the recordings. At the end of the process, the window "Select active projectors" is shown, so that you can control the list of projectors currently applied to the file. <<BR>>You can close this figure, and close the recordings. <<BR>><<BR>> {{attachment:avgref_projector.gif||height="140",width="327"}} === Evaluate the modifications === * In Process1, select the filtered file file "Raw | band(0.5-80Hz)". * Run again the process '''Frequency > Power spectrum density (Welch)''', with same options. * Double-click on the new PSD file to display the spectrum of the filtered file. You can observe the effects of the filter (drops on the two sides of the spectrum, zoom in to observe it better) and the average reference (all the signals have now a similar level of power). <<BR>><<BR>> {{attachment:psd3.gif||height="220",width="576"}} == Artifact cleaning with ICA == The standard cleaning pipeline presented in the introduction tutorials recommends to use the [[Tutorials/ArtifactsSsp|SSP approach]] to remove the cardiac and blink artifacts. This is valid in most MEG experiments. In EEG, there is usually not such a clear artifact caused by the heartbeats: cleaning for cardiac artifacts is not part of the standard processing pipeline. Eye movements typically cause huge artifacts on the frontal channels and need to be marked as bad or corrected. In the present case, the patient is sleeping, therefore there are no blinks, but we can observe a lot of fast eye movements during the periods of REM sleep, and other slower eye movements in the rest of the recordings. The SSP technique is not adapted for cleaning events for which we cannot set markers, and in general it is not suitable for low-density EEG. The topographies are a lot smoother in EEG than in MEG, it is more difficult to identify a spatial filter that targets one specific artifact with a simple spatial PCA decomposition, especially with a very low number of sensors. The ICA approach (Independent Component Analysis) is much more popular in the EEG community. It relies on the the same logic as the SSP: identifying spatial topographies that are specific from an artifact and then removing them from the recordings. But instead of simply identifying the most powerful spatial components with a PCA decomposition, it tries to identify components that are independent in time. Using the information from the time dimension makes it possible to work with a very low number of sensors, and to identify some components of the signal that are completely uncorrelated with the others. The ICA analysis can also be used to identify the signals from a few brain sources of interest: in this case, we select a few components and remove all the others. For more information on ICA, please refer to the documentation of the EEGLAB software. * We will illustrate now how to compute some projectors to remove the contaminations from the eye movements with the Infomax algorithm. To make it run fast on most computers, we will not process the full recordings but only a short segments with a lot of eye movements: the segment [500,700]s. <<BR>><<BR>> {{attachment:ica_window.gif||height="127",width="417"}} * Double-click on the filtered file "Raw | band(0.5-80Hz)" to open it. * In the Record tab, select the menu '''Artifacts > ICA components'''. <<BR>><<BR>> {{attachment:ica_process.gif||height="360",width="503"}} * '''Time window''': A segment where the artifact is present (or all the recordings if you have time) * '''Event name''': Empty, we want to use all the recordings from the selected time window. * '''Event window''': Not applicable (because the previous option is empty). * '''Frequency band''': Ignore (0-0Hz), we want to perform the analysis on the broadband signal. * '''Number of ICA components''': If this value is higher than 0 and lower than the number of channels, it will first perform a spatial PCA decomposition, keep only the N principal components, and pass this subspace of the original signals to the ICA algorithm. <<BR>>In the current example, the algorithm doesn't converge if we use all the components (25 EEG channels), and we have to enter 24 to make it work. <<BR>>[TODO] This issue has to be investigated further. * '''Sensor types''': EEG * '''Using existing SSP/ICA''': Yes. In this case, using or not the existing re-referencing projector should not make any difference, but it would change the results if you have other projectors already computed. * '''Save averaged artifact''': Not applicable (because we are not using events). * '''ICA method''': Infomax (calls directly the function runica.m from EEGLAB). * You can follow the convergence of the Infomax algorithm in the Matlab command window. When it is done, the window "Select active projectors" is shown. Select all the components, display their spatial topography and time series (read the tooltips to see which button does what). You can notice that the first two components (IC1, IC2) look very correlated with the EOG signals, and their topographies are very typical of eye movements. <<BR>><<BR>> {{attachment:ica_components.gif||height="264",width="638"}} * Select the first two components to remove them: observe the effect on the EEG signals. It removes very well the artifacts due to the eye movements without affecting the rest of the recordings. <<BR>><<BR>> {{attachment:ica_eeg.gif||height="186",width="637"}} * Go to around a SPIKE event, make sure removing these two components doesn't affect the shape of the spike. We do not want them to alter our events of interest. <<BR>><<BR>> {{attachment:ica_spike.gif||height="195",width="635"}} * Select the first two components, click on [Save] to keep this selection. == Import the recordings == === Epoching === Now we want to extract all the spikes from this filtered file and import them in the database. * Right-click on the filtered file (Raw|band) > '''Import in database'''. <<BR>><<BR>> {{attachment:import_menu.gif||height="138",width="206"}} {{attachment:import.gif||height="270",width="447"}} * Select the option "Use events" and select the category '''SPIKE''', with 58 events. * Epoch time: '''[-300, +500]ms''' around the spike events. * Remove DC offset: Disabled, the DC offset has already been removed with the high-pass filter. * You should see a new folder "SPIKE" containing 58 epochs in your database.<<BR>><<BR>> {{attachment:import_after.gif||width="228"}} * We recommend you always review all the trials after importing them. To review the imported trials: double-click on the first trial, switch back to butterfly view (first button in Record tab), then navigate between trials with F3 / Shift+F3. Channels and trials can be marked as bad independently. You can overlay one or more electrodes from multiple files with the tab "[[Tutorials/ChannelClusters|Cluster]]": * Display the time series for one trial (you must have at least one figure open to create a cluster). * In the Brainstorm window: Click on the [+] to add the '''Cluster tab'''. * In the Cluster tab: Click on [New Ind] and enter "FC1" (cluster with one electrode only). * In the Cluster tab: Double-click to rename the cluster into something more meaningful ("FC1"). * In the Cluster tab: Select the option "'''Overlay: Conditions'''" * In the database explorer: Right-click on the group of trials > '''Clusters time series'''. <<BR>><<BR>> {{attachment:fc1_cluster.gif||height="170",width="654"}} Alternatively, you can display all the trials as an image, for one sensor at a time: * In the database explorer: Right-click on the on the group of trials > '''Display as image > EEG'''. <<BR>><<BR>> {{attachment:fc1_erpimage.gif||height="174",width="632"}} === Averaging spikes === |
Line 244: | Line 288: |
* Run the process "Average > Average files", with the following options:<<BR>><<BR>> {{attachment:average1.gif||height="405",width="408"}} * Double click on the new file "Avg: SPIKE" to review it, and set the "Average reference" montage. * Go to the Filter tab to __'''disable all the visualization filters'''__: those filters are not working well on short signals, the high-pass filter at 0.5Hz can introduce errors in the display of the average. * Open a "2D sensor cap" view on the same file, or simply press [Ctrl+T] from the time series figure.<<BR>><<BR>> {{attachment:average_view.gif||height="205",width="409"}} * To have all the figures re-arrange themselves automatically again, select "Weighted" or "Tiled" in the "Window layout" menu (top-right corner). |
* Run process '''Average > Average files''', By folder (subject average), Arithmetic average.<<BR>><<BR>> {{attachment:average1.gif||height="404",width="441"}} * Double click on the new file "Avg: SPIKE" to review it. Add a "2D sensor cap" view (popup or Ctrl+T). <<BR>><<BR>> {{attachment:average_view.gif||height="188",width="633"}} * Go to the Filter tab to __'''disable all the visualization filters'''__: these filters are not working well on short signals, the high-pass filter at 0.5Hz can introduce errors in the display of the average. * To have all the figures automatically re-arrange themselves again, select "Weighted" or "Tiled" in the "Window layout" menu (top-right corner). * You can more views to your reviewing environment (see the tutorial [[Tutorials/ExploreRecordings|Visual exploration]]): <<BR>><<BR>> {{attachment:average3.gif||height="195",width="634"}} |
Line 251: | Line 295: |
* To get a synthetic view at the sensor level of the evolution of the 2D map in time: * Rright-click on the figure > Snapshot > "Time contact sheet: Figure" * Set the time window [-40ms, 110ms], with 16 images<<BR>><<BR>> {{attachment:average2.gif||height="317",width="304"}} == Source analysis: Cortically constrained == ==== Head model ==== |
* To get a synthetic view at the sensor level of the evolution of the 2D map in time:<<BR>> Right-click on the figure > Snapshot > '''Time contact sheet: Figure''': [-40ms, 110ms], 16 images <<BR>><<BR>> {{attachment:average2.gif||height="317",width="304"}} == Source analysis: Surface == === Head model === |
Line 259: | Line 301: |
* Go back to the "Functional data" view, right-click on the channel file (or any folder containing the channel file) > Compute head model<<BR>><<BR>> {{attachment:headmodel1.gif||height="226",width="226"}} * Select the "cortex surface option" and the "OpenMEEG BEM" forward model. Leave all the OpenMEEG options to their defaults except for one: select the option "'''Use adjoint formulation'''".<<BR>><<BR>> {{attachment:headmodel2.gif||height="250",width="209"}} {{attachment:headmodel3.gif||height="337",width="315"}} * If you can't download OpenMEEG automatically, download and install it manually (menu Help) * If the OpenMEEG calculation crashes, please refer to the [[Tutorials/TutBem|OpenMEEG tutorial]]. * If you can compute the model but then later the source maps you get don't make any sense, it is probably because the BEM surfaces were poorly defined. When some cortex vertices are too close to the inner skull surface, the model can be unstable and after the source estimation you would typically see source maps containing zeros everywhere except for a few vertices. If this happens, delete the existing BEM surfaces and try computing new ones with a higher number of vertices for the inner and outer skull BEM surfaces. * If you cannot get OpenMEEG to work, or if the results definitely do not make sense, try using a different forward model: "'''3-shell sphere'''". It's a spherical model, so it would perform better in the regions of the head that are close to the sphere. See the [[Tutorials/TutHeadModel|Head model tutorial]]. ==== Noise covariance matrix ==== * For minimum norm inverse models, we need to estimate first the level of noise at the level of the sensors. Defining what can be considered as "noise" in the middle of continuous brain recordings is a difficult question, discussed in the [[Tutorials/TutNoiseCov|Noise covariance tutorial]]. * Here we chose what is described as option 1b in the section "Noise and epilepsy" in that tutorial: we are going to calculate the noise covariance matrix using 10 seconds from the continuous file that are very "quiet", ie. that contain no apparent epileptic activity, no REM and no other special artifacts. We can use for this purpose the 10s segment between 120s and 130s. * The file you use for the calculation of the noise covariance matrix must be pre-processed in the same way as the files for which you want to estimate the sources (the SPIKE epochs), so we need to use the imported+filtered continuous file. * Right-click on the '''"Raw (0s,3600s) | high(0.5Hz)"''' > Noise covariance > Compute from recordings<<BR>><<BR>> {{attachment:noisecov1.gif||height="347",width="370"}} * Select the time window [120s - 130s] and leave the other options to the default values<<BR>><<BR>> {{attachment:noisecov2.gif||height="318",width="324"}} ==== Inverse model ==== * Right-click on the head model > Compute sources. * Leave all the default options to calculate a wMNE solution with constrained dipole orientation<<BR>><<BR>> {{attachment:inverse1.gif||height="208",width="369"}} * This operation creates a shared inversion kernel in the folder (Common files) and one source link for each block of recordings in subject sepi01. If you are not familiar with those concepts, please refer to the [[Tutorials/TutSourceEstimation|Source estimation tutorial]]. <<BR>><<BR>> {{attachment:inverse2.gif||height="201",width="210"}} * Double-click on the sources file for the average to open it. Configure its display: surface smoothing, amplitude threshold, colormap. For a reminder on how to manipulate the colormaps, see the tutorial [[http://neuroimage.usc.edu/brainstorm/Tutorials/TutExploreRecodings#Colormap_configuration|Explore recordings]]. * Make sure that all the visualization filters are turned OFF. * Double-click on the recordings as well to get a visual reference of the time. In the Record tab, you can click on the "Display mode" button in the toolbar to switch back to the "butterfly" view.<<BR>><<BR>> {{attachment:inverse3.gif||height="174",width="392"}} * To display the same information re-interpolated in the volume, right-click on the source file > Cortical activation > Display on MRI<<BR>><<BR>> {{attachment:inverse4.gif}} |
* Go back to the "Functional data" view, right-click on the channel file > '''Compute head model'''. Select the "cortex surface option" and the "OpenMEEG BEM" forward model. Leave all the OpenMEEG options to their defaults except for one: select the option "'''Use adjoint formulation'''". Depending on your computer, this may take a long time (10-60 minutes). <<BR>><<BR>> {{attachment:headmodel1.gif||height="301",width="632"}} * Open your resource monitor to check the memory usage: if it goes over 98%, your system doesn't have enough RAM to compute this model. You should kill the process "om_gain", kill Matlab and try again with a different configuration. * If the automatic download doesn't work, download and install OpenMEEG manually (menu Help).<<BR>>If the OpenMEEG calculation crashes, please refer to the [[Tutorials/TutBem|OpenMEEG tutorial]]. * An easy way to make this work a lot faster and with a limited amount of memory is to use less vertices for each layer, for example '''1082 vertices '''(scalp) and '''642 vertices '''(outer skull and inner skull). However, with less refined models you may run into other issues (intersecting meshes and numerical instabilities). * If you can compute the model but then later the source maps you get don't make any sense, it is probably because the BEM surfaces were poorly defined. When some cortex vertices are too close to the inner skull surface, the model can be unstable and after the source estimation you would typically see source maps containing zeros everywhere except for a few vertices. If this happens, delete the existing BEM surfaces and try computing new ones with a higher number of vertices for the inner and outer skull surfaces. * If you cannot get OpenMEEG to work, or if the results definitely do not make sense, try using a different forward model: "'''3-shell sphere'''". It's a spherical model, so it would perform better in the regions of the head that are close to the sphere. See the [[Tutorials/HeadModel|Head model tutorial]]. === Noise covariance matrix === * For minimum norm inverse models, we need to estimate the level of noise at the level of the sensors. Defining what can be considered as "noise" in the middle of continuous brain recordings is a difficult question, discussed in the [[Tutorials/NoiseCovariance|Noise covariance tutorial]]. * Here we chose what is described as [[http://neuroimage.usc.edu/brainstorm/Tutorials/NoiseCovariance#Epilepsy|option 1b]] in the section "Epilepsy" in that tutorial: we are going to calculate the noise covariance matrix using 10 seconds from the continuous file that are very "quiet", ie. that contain no apparent epileptic activity, no REM and no other special artifacts. We can use for this purpose the 10s segment between 110s and 160s. * Right-click on the filtered file "Raw|band" > '''Noise covariance > Compute from recordings''': Baseline = '''[110,160]ms''', leave the other options to the default values. <<BR>><<BR>> {{attachment:noisecov1.gif||height="247",width="663"}} === Inverse model === * Right-click on the OpenMEEG head model > '''Compute sources [2016]''': '''sLORETA''', '''Unconstrained''' <<BR>><<BR>> {{attachment:inverse1.gif||height="332",width="447"}} * It creates a shared inversion kernel in the folder (Common files) and a source link for each file in the subject. If you are not familiar with these concepts, please refer to the [[Tutorials/SourceEstimation|Source estimation tutorial]]. * Double-click on the sources file for the average to open it. Configure its display: [[http://neuroimage.usc.edu/brainstorm/Tutorials/ExploreAnatomy#Surfaces|surface smoothing]], [[http://neuroimage.usc.edu/brainstorm/Tutorials/SourceEstimation#Display:_Cortex_surface|amplitude threshold]], [[Tutorials/Colormaps|colormap]]. Make sure that all the visualization filters are turned OFF. <<BR>><<BR>> {{attachment:inverse2.gif||height="176",width="646"}} * To display the same information re-interpolated in the volume, right-click on the source file > Cortical activation > '''Display on MRI'''. Right-click on the figure to set the smoothing level and other options. <<BR>><<BR>> {{attachment:inverse4.gif||height="202",width="347"}} |
Line 282: | Line 319: |
* Example: Video made with three figures: [[attachment:spike.avi|Download]]<<BR>><<BR>> {{attachment:spike_video.gif}} * Example: Contact sheet<<BR>><<BR>> {{attachment:spike_contact.jpg||height="347",width="239"}} * The inverse solutions that you calculated are all shared for all the recordings in this subject, so you can go back to your individual epochs, or even the continuous file, and look at the source maps for those files. ==== Regions of interest ==== * The scouts are a very interesting feature for studying the spike spatial propagation. From the displays we generated previously, there is no clear propagation of the spike. Let's try to explore this in more details, at least to illustrate the method. * Start by placing a small scout at the focus (~7 vertices) * Place a few other scouts of a similar size at other places around the spike location, in places at which you could suspect a possible propagation. * Plot the overlayed time series for those scouts. Try with the scout functions MEAN and MAX. * There is no delay in the peaks for the different regions at -20ms, 0ms and 35ms This temporal exploration seems to confirm that there is no clear spatial propagation of the spike. * If you need a reminder on how to manipulate scouts: see the [[Tutorials/TutScouts|Scouts tutorial]]<<BR>><<BR>> {{attachment:scouts1.gif||height="189",width="478"}} ==== Z-score normalization ==== A good way to reveal better the source activity at the cortex level is to calculate a Z-score of the source maps with respect with a quiet baseline. We can use the same baseline as for the calculation of the noise covariance matrix. * Import the block a recordings to use as the baseline. Right-click on the imported and processed file "'''Raw (0s,3600s) | high(0.5Hz)'''" > Import in database. Uncheck all the options and select the time window: '''[120, 130]''' secondes.<<BR>><<BR>> {{attachment:zscore1.gif||height="242",width="403"}} * Click on the Process2 tab * In Files A: Drag the sources for the segment you just imported "Raw (120.00s,130.00s)" * In Files B: Drag the sources for the averaged spike * Alternatively, select the recordings and manually select the "Process sources" button on both sides<<BR>><<BR>> {{attachment:zscore2.gif||height="261",width="371"}} * Run the process: Standardize > Z-score (static). Double-click on the new file to display it<<BR>><<BR>> {{attachment:zscore3.gif||height="209",width="297"}} {{attachment:zscore4.gif||height="208",width="178"}} * The amplitude in the figure is now displayed without units, it represents a multiple of the standard deviation over the baseline. The interpretation of this new figure is not very different from the previous one, but it helps observing the things with a different angle. This process usually provides smoother maps, with less bias due to the depth of the sources. On the non-standardized minimum norm maps, the values of the deeper sources are usually lower than the ones at the surface. The Z-score helps showing deeper sources that have minimum norm values that are low, but higher than during the baseline. == Source analysis: Full head volume == If the results you obtain are not satisfying with the surface-based source estimation, you can run again the same analysis with a different source space, sampling the entire head volume instead of being constrained to the surface. More information about this method in the [[Tutorials/TutVolSource|Volume source estimation tutorial]]. ==== Head model ==== * Right-click on the channel file > Compute head model, select "'''MRI volume'''" instead of "Cortex surface". This feature is now stable, but still tagged as experimental because not all the Brainstorm features are available for volume-based source models (eg. no regions of interest, no group analysis, etc). Use the same options as before for OpenMEEG.<<BR>><<BR>> {{attachment:headmodel_vol2.gif||height="241",width="202"}} {{attachment:headmodel3.gif||height="337",width="315"}} ==== Inverse model ==== * Right-click on the head model > Compute sources. Use all the default options.<<BR>><<BR>> {{attachment:inverse_vol2.gif||height="278",width="191"}} * Right-click on the unconstrained sources > Cortical activation > '''Display on MRI (3D)'''. * To move the slices in the 3D view: right-click + move your mouse in the slice direction. * Use all the sliders in the Surface tab to configure the display.<<BR>><<BR>> {{attachment:inverse_vol3.gif||height="190",width="210"}} * Right-click on the same file > Cortical activation > '''Display on MRI (MRI Viewer)''' * To smooth the display across slices: right-click on the figure > Smooth sources > "3" * For a glass brain view: select the option "MIP: Functional" in the MRI Viewer<<BR>><<BR>> {{attachment:inverse_vol4.gif||height="328",width="314"}} == Moving dipoles == See tutorial: [[http://neuroimage.usc.edu/brainstorm/Tutorials/TutDipScan|Computing and displaying dipoles]] Note: you can also load dipoles calculated with other programs. == MEM inverse solution [TODO] == This section is on a different page: [[Tutorials/epilepsyBest|Link]] == Discussion == ==== Distributed source models vs. ECD (equivalent current dipole) ==== Kobayashi K, Yoshinaga H, Ohtsuka Y, Gotman J (2005)<<BR>>[[http://onlinelibrary.wiley.com/doi/10.1111/j.0013-9580.2005.31404.x/full|Dipole modeling of epileptic spikes can be accurate or misleading]]<<BR>> Epilepsia, 2005 Mar;46(3):397-408. ==== Distributed source models vs. BOLD ==== Heers M, Hedrich T, An D, Dubeau F, Gotman J, Grova C, Kobayashi E (2014)<<BR>>[[http://onlinelibrary.wiley.com/doi/10.1002/hbm.22482/abstract|Spatial correlation of hemodynamic changes related to interictal epileptic discharges with electric and magnetic source imaging]]. Human Brain Mapping, published online 24 Feb 2014. ==== ECD vs. BOLD ==== Benar CG, Grova C, Kobayashi E, Bagshaw AP, Aghakhani Y, Dubeau F, Gotman J (2006)<<BR>>[[http://www.ncbi.nlm.nih.gov/pubmed/16413798|EEG–fMRI of epileptic spikes: Concordance with EEG source localization and intracranial EEG]]<<BR>>!NeuroImage, 30:1161-1170. |
* Example: Videos and contact sheets. <<BR>><<BR>> {{attachment:spike_video.gif}} {{attachment:spike_contact.gif||height="284",width="269"}} * The inverse solutions that you calculated are all shared for all the recordings in this subject, so you can go back to your individual epochs, or even the continuous file, and look at the source maps for these files. === Regions of interest === * From the displays we generated previously, there is no clear propagation of the spike. The scouts can be an interesting tool to explore further this spatial propagation. * Start by placing a small scout at the focus, then place a few other scouts of a similar size at other places around the spike location, where you could suspect a possible propagation. Plot the overlaid time series for these scouts. If you need help with this: see the [[Tutorials/Scouts|Scouts tutorial]].<<BR>><<BR>> {{attachment:scouts1.gif||height="156",width="355"}} == Source analysis: Volume == If the results you obtain are not satisfying with the surface-based source estimation, you can run again the same analysis with a different source space, sampling the entire head volume instead of being constrained to the surface. More information about this method in the [[Tutorials/TutVolSource|Volume source estimation tutorial]]. We will use this new example to estimate the dipole scanning tools. === Head model === * Right-click on the channel file > '''Compute head model''', select '''MRI volume'''. To go faster this time, you can select a spherical head model: '''3-shell sphere'''. Use the default sphere. <<BR>><<BR>> {{attachment:headmodel_vol2.gif||height="219",width="389"}} * Then you have to define what source grid you want to use to sample the head volume. You can keep the default options here too. <<BR>><<BR>> {{attachment:headmodel_vol3.gif||height="313",width="479"}} === Dipole scanning === * Right-click on the new head model > '''Compute sources''': '''Dipole modeling'''<<BR>><<BR>> {{attachment:inverse_vol2.gif||height="270",width="388"}} * Note that this is not an inverse like the minimum norm. It represents the performance of each individual, ie. its capacity to explain the recordings on its own. <<BR>><<BR>> {{attachment:dipoles1.gif||height="314",width="451"}} * In Process1, select the Dipoles link associated with the average spike. * Run process '''Sources > Dipole scanning''': '''[-40,100]ms''' <<BR>><<BR>> {{attachment:dipoles2.gif||height="312",width="448"}} * Double-click on the new dipoles file to display it. In the Dipoles tab, set the threshold Goodness to 90% to show only the most meaningful dipoles. The color of the dipoles below represent the time at which each dipole was estimated. This representation seems to indicate there are two distinct regions of the brain involved: the activity at 40ms is deeper than at the peak of the spike (0ms). <<BR>><<BR>> {{attachment:dipoles3.gif||height="181",width="660"}} * More information about dipole scanning in the tutorial: [[Tutorials/TutDipScan|Computing and displaying dipoles]] === Dipole fitting === The dipoles scanning approach presented in the previous section estimates the activity of a fixed grid of dipoles and select the most significant one. Another option to represent the source activity as sequences of moving dipoles is to use the FieldTrip function ft_dipolefitting.m to run a non-linear dipole fit at each time point. This process requires that you install the FieldTrip toolbox on your computer. * In Process1, select the EEG recordings for the average spike. * Run process '''Sources > FieldTrip: ft_dipolefitting''': Time window='''[-40,100]ms''', Sensors='''EEG''' <<BR>><<BR>> {{attachment:dipoles5.gif||height="347",width="430"}} * Displaying the dipoles with a goodness of fit above 95% leads to very similar observations. It is a good way to cross-validate the dipole results you obtain. If these two approaches lead to completely different interpretations, you should not trust either one. <<BR>><<BR>> {{attachment:dipoles6.gif||height="190",width="660"}} == Source analysis: MEM == The maximum of entropy on the mean (MEM) framework solution gathers several source localization techniques dedicated to estimate accurately the spatial extent of the EEG/MEG generators. This section is on a different page: [[Tutorials/EpilepsyBest|Link]] == Time-frequency == We will illustrate two different ways of compute time-frequency decompositions of the epileptic spikes present in these recordings. Exploring the continuous recordings in time-frequency space can help with the detection of the epileptiform activity, while computing the average of the time-frequency power of a few epochs can help understanding the dynamics of the event. === Continuous recordings === * Right-click on the filtered continuous file (Raw|band) > '''Import in database'''. Select a block of 10s between '''1890s '''and '''1900s''' (this segment contains a lot of spikes). Do '''not''' use events. {{attachment:tf1.gif||height="257",width="595"}} * In Process1, select the new imported file: Raw (1890.00s,1900.00s) * Run process '''Frequency > Time-Frequency (Morlet wavelets)''': <<BR>>Sensors='''EEG''', '''1/f compensation''', Frequency='''Log 2:40:80''' <<BR>><<BR>> {{attachment:tf2.gif||height="372",width="635"}} * Display the new time-frequency file. In the Display tab, select channel '''FC1'''. You can notice that the vertical stripes in the time-frequency map match the marked spikes in this segment of file. The epileptic brain activity is easier to detect in time-frequency space than in the original signals. <<BR>><<BR>> {{attachment:tf3.gif||height="264",width="631"}} === Spike average === * In Process1, select all the imported spike epochs. * Run process '''Frequency > Time-Frequency (Morlet wavelets)''': <<BR>>Sensors='''EEG''', Spectral flattening='''None''', Frequency='''Log 2:40:80''', '''Save average'''. <<BR>><<BR>> {{attachment:tf4.gif||height="390",width="592"}} * In Process1, select the new time-frequency average. * Run process Standardize > Baseline normalization: Baseline=[-200,-100]ms, <<BR>><<BR>> {{attachment:tf5.gif||height="351",width="416"}} * Right-click on the average > All channels, then adjust the colormap. <<BR>><<BR>> {{attachment:tf6.gif||height="229",width="631"}} == Additional documentation == |
Line 339: | Line 371: |
* EEG reference: http://neuroimage.usc.edu/forums/showthread.php?1525#post6718 | * EEG reference: [[http://neuroimage.usc.edu/forums/showthread.php?1525#post6718|Reference of the gain matrix]] * Registration: [[http://neuroimage.usc.edu/forums/showthread.php?2528|Match known EEG locations to the MRI image]] ==== Journal articles ==== * '''Distributed source models vs. ECD (equivalent current dipole)'''<<BR>>Kobayashi K, Yoshinaga H, Ohtsuka Y, Gotman J (2005)<<BR>>[[http://onlinelibrary.wiley.com/doi/10.1111/j.0013-9580.2005.31404.x/full|Dipole modeling of epileptic spikes can be accurate or misleading]]<<BR>> Epilepsia, 2005 Mar;46(3):397-408. * '''Distributed source models vs. BOLD'''<<BR>>Heers M, Hedrich T, An D, Dubeau F, Gotman J, Grova C, Kobayashi E (2014)<<BR>>[[http://onlinelibrary.wiley.com/doi/10.1002/hbm.22482/abstract|Spatial correlation of hemodynamic changes related to interictal epileptic discharges with electric and magnetic source imaging]]. Human Brain Mapping, published online 24 Feb 2014. * '''ECD vs. BOLD'''<<BR>>Benar CG, Grova C, Kobayashi E, Bagshaw AP, Aghakhani Y, Dubeau F, Gotman J (2006)<<BR>>[[http://www.ncbi.nlm.nih.gov/pubmed/16413798|EEG–fMRI of epileptic spikes: Concordance with EEG source localization and intracranial EEG]]<<BR>>NeuroImage, 30:1161-1170. |
Line 342: | Line 380: |
To reproduce this entire analysis with a script, use the following processes: * Import recordings > Import anatomy folder * Subject name: '''sepi01''' * Folder to import: '''sample_epilepsy/anatomy''' (format = !FreeSurfer) * Enter the fiducials positions indicated at the beginning of the tutorial * Because of the selection of those points, it is usally better to run this first step in interactive mode. * Import anatomy > Generate BEM surfaces * Set all the values to 1922 and the skull thickness to 4mm * Import recordings > Create link to raw file * File to import: '''sample_epilepsy/data/tutorial_eeg.bin''' (format = Deltamed Coherence-Neurofile) * Uncheck the option "Align sensors using headpoints" * Import recordings > Set channel file * File to import: '''sample_epilepsy/data/tutorial_electrodes.elc''' (format = EEG:ANT Xensor) * Check the option "Align sensors using headpoints" * Import recordings > Project electrodes on scalp * Import recordings > Set channels type * Channel types or names: '''SP1, SP2, RS, PHO, DELR, DELL, QR, QL''' * Events > Import from file * Event file: '''sample_epilepsy/data/tutorial_spikes.txt''': (format = Array of times) * Event name: '''SPIKE''' * Import recordings > Import MEG/EEG: Time * Condition name: Empty * Time window: default (entire file) * Split recordings in time blocks: 0s * Pre-process > Band-pass filter: * Lower cutoff frequency: '''0.5 Hz''' * Upper cutoff frequency: 0 * Sensor types: Empty * Check: '''Overwrite input file''' * Sources > Compute noise covariance * Baseline: '''[120s - 130s]''' * Remove DC offset: Block by block * Ouptut: Full noise covariance matrix * Import recordings > Import MEG/EEG: Events * Condition name: Empty * Event names: '''SPIKE''' * Time window: default (entire file) * Epoch time: ['''-101.6s, 300.8s'''] * Check all the additional options * Average > Average files * By condition (subject average) * Arithmetic average * Uncheck: Keep all the events * File > Save snapshot * Snapshot: Sensors/MRI registration * Sensor type: EEG * Orientation: Left * Comment: "Average spike" * File > Save snapshot * Snapshot: Recordings time series * Sensor type: EEG * File > Save snapshot * Snapshot: Recordings topography (contact sheet) * Sensor type: EEG * Contact sheet (start time, stop time): "-40 110" * Contact sheet (number of images): 16 * Sources > Compute head model * EEG Method: OpenMEEG BEM * Edit OpenMEEG options * BEM Layers: Select all (scalp, skull, brain) * Check: Use adjoint formulation * Check: Use adaptive integration * Sources > Compute sources * wMNE * Sensor types: EEG * Kernel onle: Shared * File > Save snapshot * Snapshot: Sources (one time) * Orientation: top * Time: 0s ==== Graphic edition ==== {{attachment:script.gif}} ==== Generate Matlab script ==== This list of processes can be converted automatically to a Matlab script.<<BR>>See the results on the page: [[Tutorials/EpilepsyScript|EEG and epilepsy: Script]]. Available in the Brainstorm distribution: '''brainstorm3/toolbox/script/tutorial_epilepsy.m ''' == Feedback == <<EmbedContent(http://neuroimage.usc.edu/brainstorm3_register/get_feedback.php?Tutorials/Epilepsy)>> |
The following script from the Brainstorm distribution reproduces the analysis presented in this tutorial page: '''brainstorm3/toolbox/script/tutorial_epilepsy''''''.m''' <<HTML(<div style="border:1px solid black; background-color:#EEEEFF; width:720px; height:500px; overflow:scroll; padding:10px; font-family: Consolas,Menlo,Monaco,Lucida Console,Liberation Mono,DejaVu Sans Mono,Bitstream Vera Sans Mono,Courier New,monospace,sans-serif; font-size: 13px; white-space: pre;">)>><<EmbedContent("http://neuroimage.usc.edu/bst/viewcode.php?f=tutorial_epilepsy.m")>><<HTML(</div >)>> <<EmbedContent(http://neuroimage.usc.edu/bst/get_feedback.php?Tutorials/Epilepsy)>> |
EEG and epilepsy
Authors: Francois Tadel, Elizabeth Bock, John C. Mosher.
This tutorial introduces some concepts that are specific to the management of EEG recordings in the Brainstorm environment. It also describes a standard pipeline for analyzing epilepsy recordings. It is based on a clinical case from the Epilepsy Center at the University Hospital of Freiburg, Germany. The anonymized dataset can be downloaded directly from the Brainstorm download page.
Note that the operations used here are not detailed, the goal of this tutorial is not to introduce Brainstorm to new users. For in-depth explanations of the interface and theoretical foundations, please refer to the introduction tutorials.
Contents
- Dataset description
- Overview of the data processing
- Download and installation
- Import the anatomy
- Access the recordings
- Review EEG recordings
- Mark spikes
- Pre-process recordings
- Artifact cleaning with ICA
- Import the recordings
- Source analysis: Surface
- Source analysis: Volume
- Source analysis: MEM
- Time-frequency
- Additional documentation
- Scripting
Dataset description
License
This tutorial dataset (EEG and MRI data) remains proprietary of the Epilepsy Centre, University Hospital Freiburg, Germany. Its use and transfer outside the Brainstorm tutorial, e.g. for research purposes, is prohibited without written consent from the Epilepsy Centre in Freiburg. For questions please contact A. Schulze-Bonhage, MD, PhD: andreas.schulze-bonhage@uniklinik-freiburg.de
Clinical description
This tutorial dataset was acquired in a patient who suffered from focal epilepsy with focal sensory, dyscognitive and secondarily generalized seizures since the age of eight years. He does not have any typical risk factors for epilepsy. The high resolution 3T epilepsy MRI including postprocessing was found to be normal. FDG-PET of the brain did not show any pathological changes in the glucose metabolism. Non-invasive telemetry revealed left fronto-central sharp waves, polyspikes and bursts of beta band activity (max. amplitude FC1, Cz) especially during sleep. The tutorial dataset was acquired during one night of the non-invasive telemetry recording at the Epilepsy Center Freiburg, Germany.
Afterwards the patient underwent invasive EEG to identify the epileptogenic area and to map functionally important cortex. Details about invasive EEG and source localization from invasive EEG in this patient are reported in Dümpelmann, et al. (2011). Subsequently a left frontal tailored resection was performed. The histological analysis revealed a focal cortical dysplasia type IIB according to the classification of Palmini, et al. (2004). The postsurgical outcome is Engel 1A with a follow-up of 5 years.
The EEG data distributed here was recorded at 256Hz, using a Neurofile NT digital video-EEG system with 128 channels and a 16-bit A/D converter. The signal was filtered in the recording system with a high-pass filter with a time constant of 1 second (cutoff frequency ~ 0.16Hz) and a low-pass filter with a cutoff frequency of 344 Hz. The spikes were marked with Brainstorm by the epileptologists at the Epilepsy Center in Freiburg.
Overview of the data processing
The proper identification of epileptiform discharges ("spikes") is a complicated topic beyond the scope of this tutorial. Residents in Neurology train intensively on how to identify true interictal and ictal discharges, particularly as distinct from so-called "normal variants" that can be abundant. Sleep and drowsy states of the brain can generate "vertex waves," "K-complexes," "positive occipital sharp transients of sleep" (POSTS), and "wickets," to name a few variants, none of which are epileptic. A good overview of terminology and application can be found, for example, on the Medscape website, Epileptiform Discharges.
With this caveat, we nonetheless give an overview of the processing approach. Although automation has been proposed for decades, "spike hunting" is often done by manual inspection of the recorded EEG waveforms (whether scalp, subdural, or depths). The classic scalp sensor arrangement is the International 10-20 System (Wikipedia Site, Bioelectromagnetism Book, Chapter 13.3) arranged at 10 percent and 20 percent distances about the circumference of the head. Each of these 21 electrodes is acquired with respect to some reference (as all potentials must be). In reviewing the recordings, however, several "montages" are traditionally recommended that digitally "re-reference" the original recordings into new linear combinations of electrodes.
A classic montage is the "double banana" (Google Search) which emphasizes local changes in the scalp EEG by forming sequential bipolar pairs, such as "Fp1-F3", "F3-C3." Because F3 is found twice in this montage and of opposite sign, then an epileptic spike centered under F3 will appear as a reversed polarity in these two channels, a visual cue the trained epileptologist seeks when rapidly scanning through hours of recordings. This montage is more formally known as "LB-18.3" or "Longitudinal Bipolar 3" in the nomenclature of the American Clinical Neurophysiology Society (ACNS) Guidelines (see References Below).
ACNS guidelines suggest using both "longitudinal" and "transversal" bipolar montages to survey your data. For temporal epilepsy cases, you may also add a "temporal ring" montage. European neurologists often prefer to review the recordings using an average reference montage. Brainstorm provides several variations of all these montages, allows the users full flexibility in creating their own, and can run different montages simultaneously in multiple windows.
The user has to step along through the data, look for abnormal brain activity, then use Brainstorm's event markers to tag suspect intervals. With the suspected events marked and saved, the user can return later to perform source analyses on these intervals. With this brief overview, we detail below an exercise with the sample epilepsy data.
Note that the aim of this tutorial is not to train you on how to do spike recognition itself, but rather to illustrate how to manipulate the Brainstorm interface to build an environment adapted to this task. The formal data reviewing should be done by clinical neurophysiologists or other experienced personnel, with specialized training in separating true epileptic activity from other more normal variants of brain activity.
References
Dümpelmann M, Ball T, Schulze-Bonhage A (2011)
sLORETA allows reliable distributed source reconstruction based on subdural strip and grid recordings. Human Brain Mapping.
Palmini A, Najm I, Avanzini G, Babb T, Guerrini R, Foldvary-Schaefer N, Jackson G, Luders HO, Prayson R, Spreafico R, Vinters HV (2004) Terminology and classification of the cortical dysplasias.
Neurology, 62:S2-8.
Standard montages recommended by the American Clinical Neurophysiology Society:
Download and installation
Requirements: You have already followed all the introduction tutorials and you have a working copy of Brainstorm installed on your computer.
Go to the Download page of this website, and download the file: sample_epilepsy.zip
Unzip it in a folder that is not in any of the Brainstorm folders (program folder or database folder)
- Start Brainstorm (Matlab scripts or stand-alone version)
Select the menu File > Create new protocol. Name it "TutorialEpilepsy" and select the options:
"No, use individual anatomy",
"Yes, use one channel file per subject".
Import the anatomy
- Switch to the "anatomy" view of the protocol.
Right-click on the TutorialEpilepsy folder > New subject > sepi01
- Leave the default options you set for the protocol
Right-click on the subject node > Import anatomy folder:
Set the file format: "FreeSurfer folder"
Select the folder: sample_epilepsy/anatomy
- Number of vertices of the cortex surface: 15000 (default value)
In the MRI Viewer, click on "Click here to compute MNI transformation". It compute an affine transformation between the subject space and the MNI ICBM152 space, and sets automatically the anatomical landmarks AC/PC/IH.
- Set the three fiducial points (indicated here in MRI coordinates):
- NAS: x=134, y=222, z=74
- LPA: x=58, y=123, z=69
- RPA: x=204, y=120, z=75
Click on [Save] to validate the modifications and continue with the importation of the anatomy. At the end of the process, make sure that the file "cortex_15000V" is selected (downsampled pial surface, that will be used for the source estimation). If it is not, double-click on it to select it as the default cortex surface.
Without the individual MRI
If you do not have access to an individual MR scan of the subject (or if its quality is too low to be processed with FreeSurfer), but if you have digitized the head shape of the subject using a tracking system, you have an alternative: deform one of the Brainstorm templates (Colin27 or ICBM152) to match the shape of the subject's head.
For more information, read the following tutorial: Warping default anatomy
Access the recordings
Link the recordings
- Switch to the "functional data" view (2nd button, on top of the database explorer).
Right-click on the subject folder > Review raw file:
- Select the file format: "EEG: Deltamed Coherence-Neurofile(*.bin)"
Select the file: sample_epilepsy/data/tutorial_eeg.bin
- The new file "Link to raw file" lets you access directly the contents of the EEG recordings
- The channel file "Deltamed channels" in the (Common files) folder contains the name of the channels, but not their positions. We need to overwrite this file and import manually the positions of the electrodes (either a standard cap or accurate positions digitized with a Polhemus device).
Prepare the channel file
- Import the positions of the electrodes:
Right-click the channel file in Common files > Add EEG positions > Import from file:
- Select the file format: "EEG: ANT Xensor (*.elc)"
Select the file: sample_epilepsy/data/tutorial_electrodes.elc
- This file contains the default electrodes positions from the ASA software (ANT).
- If you have digitized the position of the electrodes (eg. with a Polhemus device) you have to make sure it contains the position of the anatomical references NAS/LPA/RPA. This is the best way to make sure the electrode cap will be registered automatically with the MRI in Brainstorm.
- The channels are matched by name: the position file you import must include the labels of the electrodes and they must be named exactly in the the same way as in your recordings.
- The recordings contain signals coming from different types of electrodes:
- 29 EEG electrodes
- EOG1, EOG2: Electrooculograms
- EMG, ECG: Electromyogram and electrocardiogram
- SP1, SP2: Sphenoidal electrodes
- RS: Electrode on the right shoulder
- PHO: Photo stimulation channel
- DELR, DELL, QR, QL: Not used
- It happens commonly that the file format for the electrodes positions does not describe the type of the channels correctly, typically all the signals saved in the files are classified as EEG. We need to redefine this manually to get correct groups of sensors, we want to have only real EEG electrodes in the "EEG" category and put everything that we are not going to use a different category.
Right-click on the channel file > Edit channel file:
- Note that the EOG, EMG and ECG channels have their type correctly set.
- All the other non-EEG channels were set to "EEG_NO_LOC" when we imported the channel locations: SP1, SP2, RS, PHO, DELR, DELL, QR, QL
In many cases you would have to edit manually the type of some channels: select one channel, click on the type and select something in the drop-down list, or select multiple channels > Right-click in the window > Set channel type.
For this particular study, we can use the channel file as it is configured now, just close the figure. Discard any modification you may have done.
Register electrodes with MRI
- The channel file we imported contains generic electrodes positions; hence, it cannot be fully aligned with the head surface coming from the MRI. We need to register manually these electrodes positions with the subject anatomy.
Right-click on the channel file > MRI registration > Edit... You will see several buttons across the toolbar. For instructions, hover your mouse over the buttons to reveal the tooltips.
Click on the [Label] button in the toolbar to show the names of the electrodes. The default positions are already quite good, and the head shape is correct; only limited manual registration will be required in the next few steps.
- Click on the button "Refine registration using head points" to find a better registration between the head shape defined by the electrodes and the head surface coming from the MRI.
- Click on the button "Project electrodes on scalp surface", to ensure all the electrodes touch the skin surface.
Click on "OK" and agree to save the modifications.
If you want to see or edit the position of the electrodes in the MRI Viewer: right-click on the channel file > Display sensors > EEG (MRI Viewer). Select the menu "MIP: Functional" to see all the electrodes. To edit the channel file: right-click > Electrodes > Set electrode position.
Review EEG recordings
Display the recordings
Open a time series figure with the "Average reference" montage
Right-click on the "Link to raw file" > EEG > Display time series.
- In the Record tab, select the first button in the toolbar (Display mode for time series) to view the signals in columns.
- Select the "Average reference" in the drop-down list. This menu allows you to set a predefined montages to linearly re-arranging the waveforms. Note the keyboard shortcuts in the menus.
In the Record tab, change the default duration that is reviewed to 10s.
In the figure, click on the [Flip +/-] button to have the negative values pointing up (convention used by most neurologists).
Open a 2D Sensor cap map of the EEG sensor values as well:
Right-click on "Link to raw file" again > EEG > 2D Sensor cap
In the Record tab, set the Montage to this view to "Average reference"
Open the ECG and EOG traces as well, to avoid confusing spikes with cardiac or ocular artifacts:
Right-click on the Link to raw file > ECG > Display time series
Right-click on the Link to raw file > EOG > Display time series
- The ECG is almost mandatory. The EOG is optional: it can be helpful for beginners but an experienced reviewer will easily recognize the eye movements directly in the EEG data.
Re-arrange the figures in a convenient way, for example as illustrated below, and disable the automatic positioning of the figures you the figure arrangement doesn't get lost when you open a new figure (Window layout menu at the top-right of the Brainstorm figure > None)
Having a lot of windows open may slow down significantly the display because each time you change the current time, all the figures have to be updated. A lot of space is also wasted on the screen due to window frames. The number of windows to open has to be a balance between the amount of information to display and the ease of use.
Frequency filters
Go to the Filter tab to enable some display frequency filters. General recommendations are:
High-pass filter: 0.5 Hz
Low-pass filter: 80 Hz
Time and amplitude resolution
The resolutions of the time and amplitude axes has a lot of importance for the visual detection of epileptic spikes. The shapes we are looking for are altered by the horizontal and vertical scaling. The distance unit on a screen is the pixel, we can set how much time is represented by one pixel horizontally and how much amplitude is represented by one pixel vertically.
In the Brainstorm interface, this resolution is usually set implicitly: you can set the size of the window, the duration or recordings reviewed at once (text box "duration" in tab Record) and the maximum amplitude to show in the figure (buttons [...] and [AS] on the right of the time series figure). From there, you can also zoom in time ([<], [>], mouse wheel) or amplitude ([^], [v], Shift+mouse wheel). These parameters are convenient to explore the recordings interactively but don't allow us to have reproducible displays with constant time and amplitude resolutions.
To set the figure resolution explicitly: right-click on the figure > Figure > Set axes resolution. Note that this interface does not store the input values, it just modifies the other parameters (figure size, time window, max amplitude) to fit the resolution objectives. If you modify these parameters (resize the figure, leave the button [AS] selected and scroll in time, etc) the resolution is lost, you have to set it again manually. In particular, make sure you disable the auto-scaling ([AS] button in the time series figure) if you want to preserve the aspect ratio while you scroll through the data.
Recommendations for this dataset are:
Time axis: 170 pixels/sec (~55 mm/sec)
Amplitude: 15 μV/pixels (~45 μV/mm)
User setups
This preparation of the reviewing environment requires a large number of operations, and would become quickly annoying if you have to repeat it every time you open a file. This is a good time to use the menu "User setups" to save this window configuration, so that you can reload it in one click later. In the menu "Window layout", at the top-right of the Brainstorm window, select User setup > New setup. Enter a name of your choice for this particular window arrangement.
This operation will also disable the automatic window arrangement (Window layout > None). To reload it later, open one figure on the dataset you want to review and then select your new entry in the User setup menu.
Multiple montages
It may be interesting for some cases to display different groups of sensors in multiple windows (eg. with an MEG system with 300 sensors), or some complicated epilepsy cases where you would like to review at the same time multiple montages (eg. longitudinal and transversal bipolar montages). Brainstorm offers a flexible way of doing this.
Open your full reviewing environment as described before, where the EEG signals are displayed with the "Average reference" montage.
Open another view on the same data with the "Longitudinal 3" montage ("double-banana" LB-18.3)
Right-click on the "Link to raw file" again > EEG > Display time series
Alternatively, you can right-click on the existing figure > Figure > Clone figure.
- Then set the montage for this new figure to "Longitudinal 3"
- Resize all the figures to make room for the new window
- Save this as a new "User setup"
- If you don't see the "Longitudinal 3" menu, it is probably because you have using Brainstorm before these predefined montages were made available in the software distribution. To add them manually:
- In the Record tab, select "Edit montages" in the drop-down menu
- Click on the "Load montage" button
- Go to the folder "brainstorm3/toolbox/sensors/private/", and select the first file
- Note that a new entry (probably "Longitudinal 1") is added to the list of available montages
- Repeat the operation with all the files in the folder "brainstorm3/toolbox/sensors/private/"
- Click on "Save" to close the montage editor and now select "Longitudinal 3"
Mark spikes
Detect heartbeats
When you have a clean ECG signal for your patient, you can detect automatically identify all the heartbeats in the recordings. Because heartbeats can cause sharp waves in some EEG traces, it can help the reviewing process to have all the cardiac events marked in the recordings.
Right-click on the "Link to raw file" > EEG > Display time series (or simply double-click on the file).
In the tab Record, menu Artifacts > Detect heartbeats: Channel=ECG, All file.
Import the spike markers
Some spikes were marked by the epileptologists at the Epilepsy Center in Freiburg with Brainstorm and saved in an external text file. We are going to import this file manually.
In the tab Record, menu File > Add events from files...
Select format Array of times (importing a a text file containing the timing of the markers)
Select file sample_epilepsy/data/tutorial_spikes.txt
When prompted, enter the event name "SPIKE"
Note that a new category SPIKE is visible in the events list, containing 58 markers. Click on a few of them and try to identify the shape of the spike (mostly visible on the channel FC1). Then close the viewer and save the modifications.
- The two other types of events that were present initially in the file (REM/REM_Ende) indicated the beginning and the end of periods or REM sleep (the patient is sleeping during the entire session).
Manual marking
If you are marking the events by yourself, you could follow this procedure:
- Close all the current figures ("Close all" button at the top-right corner of the Brainstorm window)
- Double-click on the "Link to raw file" to open a continuous file viewer, and load your reviewing environment (menu User setups)
Start by creating a group of events (Events > Add group), and select it in the list of events.
Make sure that the time and amplitude resolutions are what you are used to
(right-click on the figure > Figure > Set axes resolution)Scroll through the recordings using the [<<<] and [>>>] buttons or shortcuts such as F3 or F4 (complete list and descriptions available when you leave your mouse over these buttons).
You can adjust the gain of the electrodes to observe better an event with the buttons [^] and [v], with the keyboard (+/-) or the mouse ([Shift+mouse wheel] or [Right-click+move up/down]).
- When you identify a spike, click in a white area of the figure in order to place the time cursor at the peak of the spike. If you click on the signal itself, it selects the corresponding channel, but you can use the shortcut Shift+Click to prevent this behavior and force the time cursor to be moved instead.
- Press Ctrl+E to add a marker where the time cursor is.
If you are marking multiple types of events, it is convenient to set up some additional keyboard shortcuts. Using the menu Events > Edit keyboard shortcuts, you can associate custom events to the key 1 to 9 of the keyboard. Define the name of the event type to create for each key, and then simply press the corresponding key to add/delete a marker at the current time position.
- To jump to the next/previous event in the current category: use the keyboard shortcuts [Shift+arrow right] and [Shift+arrow left]
More information on the data viewer, see tutorial: Review continuous recordings.
Pre-process recordings
Two of the typical pre-processing steps consist in getting rid of the contamination due to the power lines (50 Hz or 60Hz) and of the frequencies we are not interested in (a low-pass filter to remove the high-frequencies and a high-pass filter to remove the very slow components of the signals). Let's start with the spectral evaluation of this file.
Power spectrum
- In the Process1 box: Drag and drop the "Link to raw file".
Run process Frequency > Power spectrum density (Welch): All file, Length=10s, Overlap=50%.
Double-click on the new PSD file to display it.
This frequency spectrum does not show any particular peak at 50/60Hz, there is no notch filter to apply on these recordings. If we had to, we would run the process "Pre-processing > Notch filter" as explained in the tutorial Detect and remove artifacts.
Band-pass filter
The filters we selected for reviewing the recordings were for visualization only, they were not applied to the file. In order to apply these filters permanently to the recordings, we need to do the following:
- Leave the "Link to raw file" selected in the Process1 list.
Run process Pre-process > Band-pass filter: [0.5,80]Hz, Mirror, Sensor types=EEG
- Note that this new continuous files is saved in your Brainstorm database, while your original file is saved in a separate folder (sample_epilepsy). If you delete the link to the original file with the database explorer, it would not delete the actual file. If you delete the link to the filtered file, it would delete the file itself.
Average reference
The average reference montage we used to review the recordings was for visualization only, it did not modify the file. To apply this transformation permanently, we need to run the re-referencing process.
- Double-click on the filtered file "Raw | band(0.5-80Hz)" to open it.
In the Record tab, select the menu Artifacts > Re-reference EEG: Enter AVERAGE.
The re-referencing operation is saved in the same way as the SSP and ICA projectors: as a linear operator applied dynamically to the recordings. At the end of the process, the window "Select active projectors" is shown, so that you can control the list of projectors currently applied to the file.
You can close this figure, and close the recordings.
Evaluate the modifications
- In Process1, select the filtered file file "Raw | band(0.5-80Hz)".
Run again the process Frequency > Power spectrum density (Welch), with same options.
Double-click on the new PSD file to display the spectrum of the filtered file. You can observe the effects of the filter (drops on the two sides of the spectrum, zoom in to observe it better) and the average reference (all the signals have now a similar level of power).
Artifact cleaning with ICA
The standard cleaning pipeline presented in the introduction tutorials recommends to use the SSP approach to remove the cardiac and blink artifacts. This is valid in most MEG experiments.
In EEG, there is usually not such a clear artifact caused by the heartbeats: cleaning for cardiac artifacts is not part of the standard processing pipeline. Eye movements typically cause huge artifacts on the frontal channels and need to be marked as bad or corrected. In the present case, the patient is sleeping, therefore there are no blinks, but we can observe a lot of fast eye movements during the periods of REM sleep, and other slower eye movements in the rest of the recordings.
The SSP technique is not adapted for cleaning events for which we cannot set markers, and in general it is not suitable for low-density EEG. The topographies are a lot smoother in EEG than in MEG, it is more difficult to identify a spatial filter that targets one specific artifact with a simple spatial PCA decomposition, especially with a very low number of sensors.
The ICA approach (Independent Component Analysis) is much more popular in the EEG community. It relies on the the same logic as the SSP: identifying spatial topographies that are specific from an artifact and then removing them from the recordings. But instead of simply identifying the most powerful spatial components with a PCA decomposition, it tries to identify components that are independent in time. Using the information from the time dimension makes it possible to work with a very low number of sensors, and to identify some components of the signal that are completely uncorrelated with the others.
The ICA analysis can also be used to identify the signals from a few brain sources of interest: in this case, we select a few components and remove all the others. For more information on ICA, please refer to the documentation of the EEGLAB software.
We will illustrate now how to compute some projectors to remove the contaminations from the eye movements with the Infomax algorithm. To make it run fast on most computers, we will not process the full recordings but only a short segments with a lot of eye movements: the segment [500,700]s.
- Double-click on the filtered file "Raw | band(0.5-80Hz)" to open it.
In the Record tab, select the menu Artifacts > ICA components.
Time window: A segment where the artifact is present (or all the recordings if you have time)
Event name: Empty, we want to use all the recordings from the selected time window.
Event window: Not applicable (because the previous option is empty).
Frequency band: Ignore (0-0Hz), we want to perform the analysis on the broadband signal.
Number of ICA components: If this value is higher than 0 and lower than the number of channels, it will first perform a spatial PCA decomposition, keep only the N principal components, and pass this subspace of the original signals to the ICA algorithm.
In the current example, the algorithm doesn't converge if we use all the components (25 EEG channels), and we have to enter 24 to make it work.
[TODO] This issue has to be investigated further.Sensor types: EEG
Using existing SSP/ICA: Yes. In this case, using or not the existing re-referencing projector should not make any difference, but it would change the results if you have other projectors already computed.
Save averaged artifact: Not applicable (because we are not using events).
ICA method: Infomax (calls directly the function runica.m from EEGLAB).
You can follow the convergence of the Infomax algorithm in the Matlab command window. When it is done, the window "Select active projectors" is shown. Select all the components, display their spatial topography and time series (read the tooltips to see which button does what). You can notice that the first two components (IC1, IC2) look very correlated with the EOG signals, and their topographies are very typical of eye movements.
Select the first two components to remove them: observe the effect on the EEG signals. It removes very well the artifacts due to the eye movements without affecting the rest of the recordings.
Go to around a SPIKE event, make sure removing these two components doesn't affect the shape of the spike. We do not want them to alter our events of interest.
- Select the first two components, click on [Save] to keep this selection.
Import the recordings
Epoching
Now we want to extract all the spikes from this filtered file and import them in the database.
Right-click on the filtered file (Raw|band) > Import in database.
Select the option "Use events" and select the category SPIKE, with 58 events.
Epoch time: [-300, +500]ms around the spike events.
- Remove DC offset: Disabled, the DC offset has already been removed with the high-pass filter.
You should see a new folder "SPIKE" containing 58 epochs in your database.
- We recommend you always review all the trials after importing them. To review the imported trials: double-click on the first trial, switch back to butterfly view (first button in Record tab), then navigate between trials with F3 / Shift+F3. Channels and trials can be marked as bad independently.
You can overlay one or more electrodes from multiple files with the tab "Cluster":
- Display the time series for one trial (you must have at least one figure open to create a cluster).
In the Brainstorm window: Click on the [+] to add the Cluster tab.
- In the Cluster tab: Click on [New Ind] and enter "FC1" (cluster with one electrode only).
- In the Cluster tab: Double-click to rename the cluster into something more meaningful ("FC1").
In the Cluster tab: Select the option "Overlay: Conditions"
In the database explorer: Right-click on the group of trials > Clusters time series.
Alternatively, you can display all the trials as an image, for one sensor at a time:
In the database explorer: Right-click on the on the group of trials > Display as image > EEG.
Averaging spikes
- Drag and drop all the SPIKE files or the SPIKE folder into the Process1 tab
Run process Average > Average files, By folder (subject average), Arithmetic average.
Double click on the new file "Avg: SPIKE" to review it. Add a "2D sensor cap" view (popup or Ctrl+T).
Go to the Filter tab to disable all the visualization filters: these filters are not working well on short signals, the high-pass filter at 0.5Hz can introduce errors in the display of the average.
- To have all the figures automatically re-arrange themselves again, select "Weighted" or "Tiled" in the "Window layout" menu (top-right corner).
You can more views to your reviewing environment (see the tutorial Visual exploration):
- Explore this average in time with the left and right keyboard arrow.
Typically, the analysis could be limited to the ascending part of the peak (from -11ms to 0ms), as it gives a rather clear information on the primary epilepsy focus. For the rest of the tutorial, we will use a larger time window (-40ms to 100ms) in order to illustrate the visualization tools. Just keep in mind that it can be hazardous to interpret waves that are far in time or in space from the primary focus.
To get a synthetic view at the sensor level of the evolution of the 2D map in time:
Right-click on the figure > Snapshot > Time contact sheet: Figure: [-40ms, 110ms], 16 images
Source analysis: Surface
Head model
We are going to use a realistic head model, this requires to calculate some additional surfaces for the subject, to represent the inner skull and outer skull surface. Go to the "Anatomy" view, right-click on the subject > Generate BEM surfaces.
Use 1922 vertices for each layer (default). Three new surface files are created at the end:
Go back to the "Functional data" view, right-click on the channel file > Compute head model. Select the "cortex surface option" and the "OpenMEEG BEM" forward model. Leave all the OpenMEEG options to their defaults except for one: select the option "Use adjoint formulation". Depending on your computer, this may take a long time (10-60 minutes).
- Open your resource monitor to check the memory usage: if it goes over 98%, your system doesn't have enough RAM to compute this model. You should kill the process "om_gain", kill Matlab and try again with a different configuration.
If the automatic download doesn't work, download and install OpenMEEG manually (menu Help).
If the OpenMEEG calculation crashes, please refer to the OpenMEEG tutorial.An easy way to make this work a lot faster and with a limited amount of memory is to use less vertices for each layer, for example 1082 vertices (scalp) and 642 vertices (outer skull and inner skull). However, with less refined models you may run into other issues (intersecting meshes and numerical instabilities).
- If you can compute the model but then later the source maps you get don't make any sense, it is probably because the BEM surfaces were poorly defined. When some cortex vertices are too close to the inner skull surface, the model can be unstable and after the source estimation you would typically see source maps containing zeros everywhere except for a few vertices. If this happens, delete the existing BEM surfaces and try computing new ones with a higher number of vertices for the inner and outer skull surfaces.
If you cannot get OpenMEEG to work, or if the results definitely do not make sense, try using a different forward model: "3-shell sphere". It's a spherical model, so it would perform better in the regions of the head that are close to the sphere. See the Head model tutorial.
Noise covariance matrix
For minimum norm inverse models, we need to estimate the level of noise at the level of the sensors. Defining what can be considered as "noise" in the middle of continuous brain recordings is a difficult question, discussed in the Noise covariance tutorial.
Here we chose what is described as option 1b in the section "Epilepsy" in that tutorial: we are going to calculate the noise covariance matrix using 10 seconds from the continuous file that are very "quiet", ie. that contain no apparent epileptic activity, no REM and no other special artifacts. We can use for this purpose the 10s segment between 110s and 160s.
Right-click on the filtered file "Raw|band" > Noise covariance > Compute from recordings: Baseline = [110,160]ms, leave the other options to the default values.
Inverse model
Right-click on the OpenMEEG head model > Compute sources [2016]: sLORETA, Unconstrained
It creates a shared inversion kernel in the folder (Common files) and a source link for each file in the subject. If you are not familiar with these concepts, please refer to the Source estimation tutorial.
Double-click on the sources file for the average to open it. Configure its display: surface smoothing, amplitude threshold, colormap. Make sure that all the visualization filters are turned OFF.
To display the same information re-interpolated in the volume, right-click on the source file > Cortical activation > Display on MRI. Right-click on the figure to set the smoothing level and other options.
You can save movies or contact sheets of the source maps with the Snapshot popup menu
Example: Videos and contact sheets.
- The inverse solutions that you calculated are all shared for all the recordings in this subject, so you can go back to your individual epochs, or even the continuous file, and look at the source maps for these files.
Regions of interest
- From the displays we generated previously, there is no clear propagation of the spike. The scouts can be an interesting tool to explore further this spatial propagation.
Start by placing a small scout at the focus, then place a few other scouts of a similar size at other places around the spike location, where you could suspect a possible propagation. Plot the overlaid time series for these scouts. If you need help with this: see the Scouts tutorial.
Source analysis: Volume
If the results you obtain are not satisfying with the surface-based source estimation, you can run again the same analysis with a different source space, sampling the entire head volume instead of being constrained to the surface. More information about this method in the Volume source estimation tutorial. We will use this new example to estimate the dipole scanning tools.
Head model
Right-click on the channel file > Compute head model, select MRI volume. To go faster this time, you can select a spherical head model: 3-shell sphere. Use the default sphere.
Then you have to define what source grid you want to use to sample the head volume. You can keep the default options here too.
Dipole scanning
Right-click on the new head model > Compute sources: Dipole modeling
Note that this is not an inverse like the minimum norm. It represents the performance of each individual, ie. its capacity to explain the recordings on its own.
- In Process1, select the Dipoles link associated with the average spike.
Run process Sources > Dipole scanning: [-40,100]ms
Double-click on the new dipoles file to display it. In the Dipoles tab, set the threshold Goodness to 90% to show only the most meaningful dipoles. The color of the dipoles below represent the time at which each dipole was estimated. This representation seems to indicate there are two distinct regions of the brain involved: the activity at 40ms is deeper than at the peak of the spike (0ms).
More information about dipole scanning in the tutorial: Computing and displaying dipoles
Dipole fitting
The dipoles scanning approach presented in the previous section estimates the activity of a fixed grid of dipoles and select the most significant one. Another option to represent the source activity as sequences of moving dipoles is to use the FieldTrip function ft_dipolefitting.m to run a non-linear dipole fit at each time point. This process requires that you install the FieldTrip toolbox on your computer.
- In Process1, select the EEG recordings for the average spike.
Run process Sources > FieldTrip: ft_dipolefitting: Time window=[-40,100]ms, Sensors=EEG
Displaying the dipoles with a goodness of fit above 95% leads to very similar observations. It is a good way to cross-validate the dipole results you obtain. If these two approaches lead to completely different interpretations, you should not trust either one.
Source analysis: MEM
The maximum of entropy on the mean (MEM) framework solution gathers several source localization techniques dedicated to estimate accurately the spatial extent of the EEG/MEG generators.
This section is on a different page: ?Link
Time-frequency
We will illustrate two different ways of compute time-frequency decompositions of the epileptic spikes present in these recordings. Exploring the continuous recordings in time-frequency space can help with the detection of the epileptiform activity, while computing the average of the time-frequency power of a few epochs can help understanding the dynamics of the event.
Continuous recordings
Right-click on the filtered continuous file (Raw|band) > Import in database. Select a block of 10s between 1890s and 1900s (this segment contains a lot of spikes). Do not use events.
- In Process1, select the new imported file: Raw (1890.00s,1900.00s)
Run process Frequency > Time-Frequency (Morlet wavelets):
Sensors=EEG, 1/f compensation, Frequency=Log 2:40:80
Display the new time-frequency file. In the Display tab, select channel FC1. You can notice that the vertical stripes in the time-frequency map match the marked spikes in this segment of file. The epileptic brain activity is easier to detect in time-frequency space than in the original signals.
Spike average
- In Process1, select all the imported spike epochs.
Run process Frequency > Time-Frequency (Morlet wavelets):
Sensors=EEG, Spectral flattening=None, Frequency=Log 2:40:80, Save average.
- In Process1, select the new time-frequency average.
Run process Standardize > Baseline normalization: Baseline=[-200,-100]ms,
Right-click on the average > All channels, then adjust the colormap.
Additional documentation
Forum posts
EEG reference: Reference of the gain matrix
Registration: Match known EEG locations to the MRI image
Journal articles
Distributed source models vs. ECD (equivalent current dipole)
Kobayashi K, Yoshinaga H, Ohtsuka Y, Gotman J (2005)
Dipole modeling of epileptic spikes can be accurate or misleading
Epilepsia, 2005 Mar;46(3):397-408.Distributed source models vs. BOLD
Heers M, Hedrich T, An D, Dubeau F, Gotman J, Grova C, Kobayashi E (2014)
Spatial correlation of hemodynamic changes related to interictal epileptic discharges with electric and magnetic source imaging. Human Brain Mapping, published online 24 Feb 2014.ECD vs. BOLD
Benar CG, Grova C, Kobayashi E, Bagshaw AP, Aghakhani Y, Dubeau F, Gotman J (2006)
EEG–fMRI of epileptic spikes: Concordance with EEG source localization and intracranial EEG
NeuroImage, 30:1161-1170.
Scripting
The following script from the Brainstorm distribution reproduces the analysis presented in this tutorial page: brainstorm3/toolbox/script/tutorial_epilepsy.m