= Import and process Neuromag raw recordings = This tutorial describes how to process continuous Neuromag MEG recordings. It is based on median nerve stimulation acquired at the Massachusetts General Hospital in 2005 with a Neuromag Vectorview 306 system. The sample dataset contains the results for one subject for both arms. This document shows what to do step by step, but does not really explain what is happening, the meaning of the different options or processes, the issues or bugs you can encounter, and does not provide an exhaustive description of the software features. Those topics are introduced in the basic tutorials based on CTF recordings; so make sure that you followed all those initial tutorials before going through this one. The script file '''tutorial_neuromag.m''' in the brainstorm3/toolbox/script folder performs exactly the same tasks automatically, without any user interaction. Please have a look at this file if you plan to write scripts to process recordings in .fif format. <> == Download and installation == * '''Requirements''': You have already followed all the basic tutorials and you have a working copy of Brainstorm installed on your computer. * Go to the [[http://neuroimage.usc.edu/brainstorm3_register/download.php|Download]] page of this website and download the file '''sample_neuromag.zip''' * Unzip it in a folder that is not in any of the Brainstorm folders (program folder or database folder). This is really important that you always keep your original data files in a separate folder: the program folder can be deleted when updating the software, and the contents of the database folder is supposed to be manipulated only by the program itself. * Start Brainstorm (Matlab scripts or stand-alone version) * Select the menu File > Create new protocol. Name it "'''!TutorialNeuromag'''" and select the options: * "'''No, use individual anatomy'''", * "'''Yes, use one channel file per subject'''".<
> (we have only one run, it's possible to share the channels positions and head models between different conditions, do not select this option if you have more than one run per subject) * {{attachment:createProtocol.gif||height="331",width="309"}} == Import the anatomy == * Right-click on the !TutorialNeuromag folder > New subject > Subject01 (leave all the defaults)<
><
> {{attachment:createSubjectMenu.gif||height="165",width="343"}} {{attachment:createSubject.gif||height="309",width="296"}} * Right-click on the subject node > Import anatomy folder: * Set the file format: "!FreeSurfer folder" * Select the folder: '''sample_neuromag/anatomy''' * Number of vertices of the cortex surface: 15000 (default value) <
><
> {{attachment:mriImportMenu.gif||height="224",width="180"}} {{attachment:mriFile.gif||height="167",width="362"}} * Set the 6 required fiducial points (indicated in MRI coordinates): * NAS: x=131, y=232, z=123 * LPA: x=48, y=136, z=74 * RPA: x=204, y=131, z=67 * AC: x=127, y=143, z=118 * PC: x=127, y=117, z=111 * IH: x=127, y=120, z=167 (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.<
><
> {{attachment:anatomy.gif||height="248",width="400"}} == Access the recordings == * The sample_neuromag package contains one run for one subject only. * Switch to the "functional data" view, the middle button in the toolbar above the database explorer. * Right click on the Subject01 > Review raw file: * Select the file format: '''MEG/EEG Neuromag FIFF (*.fif)''' * Pick the file: '''sample_neuromag/data/mind004_050924_median01_raw.fif'''<
><
> * Refine registration now? '''YES''' == Pre-processing == == Importing MEG recordings == * Select the "Functional data / sorted by subject" exploration mode (second button in the toolbar on top of the database explorer). * Right click on the subject, select Import MEG/EEG. Select the "Neuromag FIFF" file type, and open the only .fif file in the folder sample_neuromag/data.<
><
> {{attachment:megImportMenu.gif}} * Select "Event channel" when asked about the events.<
><
> {{attachment:eventsImport.gif}} * You have then to select from which technical track you want to read the events. <
><
> {{attachment:eventsChannels.gif}} * In this dataset, the tracks of interest are: * STI 001: Contains the onsets of the electric stimulation of the '''right '''arm. * STI 002: Contains the onsets of the electric stimulation of the '''left '''arm. * Those are not standard settings, they depend on your acquisition setup. In most cases, you would rather import "events" defined with the Neuromag acquisition software, which are saved in tracks STI 014, STI 101, STI 201... * Select "STI 001" and "STI 002". The full track is read, all the changes of values are detected from those two tracks and a list of events is created. * The following figure appears, that asks how to import those recordings in the Brainstorm database.<
><
> {{attachment:importOptions.gif}} * '''Time window''': Time range of interest. Now we want to keep the whole time definition, we are interested by all the stimulations. * '''Split''': Useful to import continuous recordings without events. We do not need this here. * '''Events selection''': Check the "Use events" option, and select both STI001 and STI002. The value in the parenthesis represents the number of occurrences of this event. * '''Epoch time''': Time instants that will be extracted before an after each event, to create the epochs that will be saved in the database. Set it to [-100, +300] ms * '''Use Signal Space Projections''': Save and use the SSP vectors created by !MaxFilter or during other pre-processing steps. Keep this option selected. * '''Remove DC Offset''': Check this option, and select: Time range: [-100, 0] ms. <
>For each epoch, this will: compute the average of each channel over the baseline (pre-stimulus interval: -100ms to 0ms), and subtract it from the channel at all the times in [-100,+300]ms. * '''Resample recordings''': Keep this unchecked * '''Create new conditions for epochs''': If selected, a new condition is created for each event type (here, it will create a condition "Event_5"). If not selected, all the epochs from all the selected events are saved in the same condition, the one that was selected in the database explorer (if no condition selected, create a condition called "New condition"). * Click on Import and wait. * At the end, you're asked if you want to "Refine the registration with the head points". This operation improves the initial MRI/MEG registration by applying and ICP algorithm to make fit the head points digitized at the MEG acquisition and the scalp surface. Answer yes. You'll see that, even if the result is not perfect, it dramatically improves the positioning of the head in the MEG helmet.<
><
> {{attachment:refine.gif}} * At the end, you get something like this:<
><
> {{attachment:treeAfterImport1.gif}} * The files that appear in the folder "''(Common files)''" will be shared for all the conditions of Subject01. This mechanism allows to compute the forward and inverse models only once for all the conditions when there is only one run (= one channel file = one position of sensors recorded). * Rename the condition "STI_001_5" and "STI_002_5" into respectively "Right" and "Left" (Right-click > Rename, or press F2, or click twice waiting a while before the two clicks).<
><
> {{attachment:treeAfterImport2.gif}} * __Note__: Another way to proceed would be: 1) to create a new empty condition Right, and 2) inside it import the STI001 events only. Same for Left and STI002. It can be a safer way to proceed, depending on the cases. == Pre-processing == === Select the files to process === We want to apply the same pre-processing operations to all the trials of both conditions. Drag and drop the "Subject01" node from the database explorer to the tab ''Process1''. Select on the "Recordings" button, then click ''Run''. . {{attachment:cutStimList.gif}} === Create a processing pipeline === * '''Process > Cut stimulation artifact''': The electric stimulation of the median nerve induces a strong artifact right after 0ms. This process uses a simple trick to remove this artifact: re-interpolate the values for the artifact time window (linear interpolation). It doesn't affect much the data but will make all the displays much better. Set the time window to [0, 3.9]ms. Select "Overwrite initial file". * '''Process > Band-pass filter''': Set the frequency range to [2Hz -90Hz]. Select "Overwrite initial file". * '''Detect > Detect bad channels: peak-to-peak''': This process tests the peak-to-peak amplitude of each channel, and defines it is good or bad based on a threshold value that is defined individually for each channel type.Set the following options: * '''Time window''': All the epoch (keep the default value) * '''Meg gradio''': [0, 3500] * '''Meg magneto''': [0, 3500] * '''Reject entire trial''' * '''Average > Average files''': Select "By condition".<
><
> {{attachment:pipeline.gif}} === Run the pipeline === Click on run. Wait. With all those process tags added, the comments of the files are getting a little too long. Rename them respectively Right and Left, by renaming directly the list (the node that contains all the epochs in each condition). It takes a while but will improve a lot the readability later. . {{attachment:treeAfterPreprocess.gif}} {{attachment:treeAfterPreprocess2.gif}} Expand the list of trials Left, and notice that the icons of a few trials have a red flag. * Those are the trials that were identified as bad by the process "Detect bad channels". * Now if you clear the Process1 list and drag and drop again Subject01, you would see the following: there are now only 598 recording files detected, instead of 624 previously. This number is: number total of trials (624) - number of bad trials (28) + the averages (2). * On the right side of the panel, a list of checkboxes appeared. They represent the list of tags that were found in the collection of files in Subject01. Tags "bandpass" and "cutstim" are set for all the trials, and the "none" check box represents the files that do not have tags (the two averages). * If you uncheck "none", it removes the 2 averaged files from the selection. If you uncheck both "bandpass" and "cutstim", it removes all the pre-processed trials from the selection. . {{attachment:treeBad.gif}} {{attachment:treeBadProcess.gif}} === Review the epochs manually === It is always very important to keep an eye on the quality of the data at the different steps of the analysis. There are always a few epochs that are too artifacted or noisy to be used, or one bad sensor. An automatic detection was already applied, but here is the procedure if you need to do it manually. * Double-click on the Right epochs list to expand the list of files contained in it. Then display the time series for the first Right epoch by double-clicking on it.<
><
> {{attachment:reviewEpochs.gif}} * Then press F3 to go to the next epoch (or menu "Navigator > Next data file" in the main Brainstorm window). Do that until you reach the last epoch. For each epoch: * Check that the amplitude range in consistant with the previous epochs (in this study: between 1000fT and 2500fT). * '''Tag channels as bad''': select a sensor by clicking on it and press the Delete key (or right-click > Channel > Mark selected as bad) * '''Tag the entire trial as bad''': You can mark a trial as bad, it will be completely ignored from all the following computations. Right-click 1) on the trial in the explorer or 2) in the time series figure, and select menu ''Reject trial''. Or use the keyboard shortcut ''Ctrl+B''. * In the case of this study, there are so many trials for each condition and the recorded signal is so strong that you do not really need to spend too much time on the selection of the bad channels and bad epochs. If you just keep everything as it is, it is just fine. === Review the average === * Display the time series for each average: Right-click on the file > MEG (All) > Display time series. * Display the 2D topographies for each average: Right-click on the file > MEG (All) > 2D Sensor cap (or press CTRL+T from the time series figures)<
><
> {{attachment:reviewAverages.gif}} * Everything looks ok, the time series figures show a clean signal with a very high SNR, and the topographies at the first response peak (about 22ms) show an activity on the left side for the Right condition, and on the right side for the Left condition. == Forward model == First step of the source estimation process: establishing a model that describes the way the brain electric activities influence the magnetic fields that are recorded by the MEG sensors. This model can be designated in the documentation by the following terms: head model, forward model, lead field matrix. === MEG / MRI registration === An accurate forward model requires first of all an accurate registration of the anatomy files (MRI+surfaces) and functional recordings (position of the MEG sensors and EEG electrodes). A basic registration is provided by the alignment of the fiducials (Nasion, LPA, RPA), that were both located before the acquisition of the recordings and marked on the MRI in Brainstorm. This registration based on three points only can be very inaccurate, because it is sometimes hard to identify clearly those points, and not everybody identify them the same way. Two methods described in the [[Tutorials/TutImportRecordings|introduction tutorial #3]] may help you to improve this registration. * Right-click on the channel file > MRI Registration > Check<
><
> {{attachment:checkRegistration.gif}} {{attachment:checkRegistrationFig.gif}} * The yellow surface represents the inner surface of the MEG helmet, and the green dots represent the head points that where saved with the MEG recordings. * In this case the registration looks acceptable. If you consider it is not your case, you can try the two other menus: "Edit..." and "Refine using head points" === Compute head model === Right-click on any node that contains the channel file (including the channel file itself), and select: "Compute head model". When the computation is done, close the "Check spheres" figure. The lead field matrix is saved in file "Overlapping spheres" in "Common files", in a the "Gain" field. . {{attachment:headmodelStart.gif}} == Noise covariance matrix == To estimate the sources properly, we need an estimation of the noise level for each sensor. A good way to do this is to compute the covariance matrix of the concatenation of the baselines from all the trials in both conditions. * Select at the same time the two groups of trials (Right and Left). To do this: hold the Control key and click successively on the Right and the Left trial lists. * Right-click on one of them and select: Noise covariance > Compute from recordings. Leave all the options unchanged, and click on Ok. * This operation computes the noise covariance matrix based on the baseline, [-100, 0]ms, of all the __good__ trials (596 files). The result is stored in a new file in the "Common files" folder. . {{attachment:noisecovMenu.gif}} {{attachment:noisecovOptions.gif}} == Source estimation == Reconstruction of the cortical sources with a weighted minimum norm estimator (wMNE). * Right-click on "Common files", (or on the head model, or on the subject node, this is all equivalent), and select "Compute sources". <
><
> {{attachment:inverseMenu.gif}} * Select "Yes" to ignore the warning about noise covariance used at the same time for averages and single trials (if you do not see such a warning, that's fine too). In this case, this warning does not really apply, the results are the same if we compute separately the minimum norm estimator for the single trials and the averages. * Select "Normal mode" (not "Expert mode"), wMNE, and both gradiometers and magnetometers, as in the figure below. Click on Run.<
><
> {{attachment:inverseOptions.gif}} {{attachment:treeAfterInverse.gif}} * A shared inversion kernel was created in the ''(Common files)'' folder, and a link node is now visible for each recording file, single trials and averages. For more information about what those links mean and the operations performed to display them, please refer to the [[Tutorials/TutSourceEstimation|tutorial #4 "Source estimation"]]. * For the average of condition Right: display the time series, the 2D sensor topography, the sources on the cortex, the sources on 3D orthogonal slices, and the sources in the MRI Viewer.<
><
> {{attachment:inverseAllDisplay.gif}} * Create a scout called LeftSS that covers the most active region of the cortex at 33ms for condition Right. Display its time series for conditions Left and Right at the same time (select both Left and Right source files, right click > Cortical activations > Scouts time series (check "Overlay: conditions").<
><
> {{attachment:inverseScoutLeft.gif}} == Feedback == <>