= Full analysis with one script = This tutorial explains how to use the Brainstorm scripting interface to run a full analysis, from the raw recordings to the source reconstruction. It is based on a median nerve stimulation experiment recorded at the Montreal Neurological Institute in 2011 with a CTF MEG 275 system. The sample dataset contains 6 minutes of recordings at 1200Hz for one subject and includes 100 stimulations of each arm. The tutorial follows the analysis steps detailed in the three advanced tutorials in the category [[Tutorials|Processing continuous recordings]]. You should read them before reading this tutorial, to have the explanations that go with the analysis steps. <> == Creating the analysis pipeline == Select the menu File > Create new protocol. Name it "'''!TutorialScript'''" and select the options: * "'''No, use individual anatomy'''", * "'''Yes, use one channel file per subject'''". To start building your analysis pipeline, just click on the "'''Run'''" button in the Process1 tab. Then add all the processes listed below. The output of each process is the input of the following one, this is why they cannot necessarily be shuffled. === Import anatomy > Import FreeSurfer folder === * Subject name: Subject01 * Folder to import: Select the folder sample_raw/Anatomy * Number of vertices (cortex): 15000 * Fiducials: Copy what is indicated below. This is a reason it is usually easier to do this step in interactive mode, and then run only the script starting from the next step. * Input: None; Output: None {{attachment:procImportFs.gif}} === Import recordings > Create link to raw file === Input: None; Output: Raw file {{attachment:procLinkRaw.gif|procImportFs.gif}} === Pre-process > Sinusoid removal (notch) === Input: Raw file ; Output: Raw file (new) {{attachment:procSin.gif|procImportFs.gif}} === Artifacts > Detect eye blinks === Input: Raw file ; Output: Raw file {{attachment:procDetectEog.gif|procImportFs.gif}} === Artifacts > Compute SSP: eye blinks === Input: Raw file ; Output: Raw file {{attachment:procSspEog.gif|procImportFs.gif}} === Import recordings > Import MEG/EEG : Events === Input: Raw file ; Output: 199 epochs in 2 conditions {{attachment:procImportEvt.gif|procImportFs.gif}} === Pre-process > Remove DC offset === Input: 199 epochs ; Output: 199 epochs {{attachment:procBaseline.gif|procImportFs.gif}} === Sources > Compute noise covariance === Since the epochs are currently selected and pre-processed: we can use them to estimate the noise covariance matrix before we move on with the calculation of the average. Input: 199 epochs ; Output: 199 epochs {{attachment:procNoiseCov.gif|procImportFs.gif}} === Average > Average files === Input: 199 epochs ; Output: 2 averages {{attachment:procAverage.gif|procImportFs.gif}} === File > Save snapshot: Sensors/MRI registration === Input: 2 averages ; Output: 2 averages {{attachment:procSnapReg.gif|procImportFs.gif}} === File > Save snapshot: Recordings time series === Input: 2 averages ; Output: 2 averages {{attachment:procSnapTs.gif|procImportFs.gif}} === Sources > Compute head model === Input: 2 averages ; Output: 2 averages {{attachment:procHeadmodel.gif|procImportFs.gif}} === Sources > Compute sources === Input: 2 averages ; Output: all the source files (1 raw + 2 average + 199 epochs = 202 files) {{attachment:procSources.gif|procImportFs.gif}} == Save the pipeline == === Save in current workspace === Use the menus on top of the pipeline editor to save this list of processes on your computer. The menu "Save > New..." will create an entry readily available in your Brainstorm installation. {{attachment:savePipeline.gif|procImportFs.gif}} === Export as script === Use the menu "Generate .m script" to create a Matlab script that would have the exact same result as running this analysis pipeline from the Brainstorm interface. {{{ % Script generated by Brainstorm v3.1 (11-Jan-2013) % Input files FileNamesA = []; % Start a new report bst_report('Start', FileNamesA); % Process: Import FreeSurfer folder sFiles = bst_process(... 'CallProcess', 'process_import_freesurfer', ... FileNamesA, [], ... 'subjectname', 'Subject01', ... 'mrifile', {'C:\Work\RawData\Tutorials\sample_raw\Anatomy', 'FsDir', [...] 'nvertices', 15000, ... 'nas', [126, 215, 138], ... 'lpa', [58, 136, 121], ... 'rpa', [197, 138, 118], ... 'ac', [128, 137, 157], ... 'pc', [128, 113, 157], ... 'ih', [128, 125, 216]); % Process: Create link to raw file sFiles = bst_process(... 'CallProcess', 'process_import_data_raw', ... sFiles, [], ... 'subjectname', 'Subject01', ... 'datafile', {'C:\Work\RawData\Tutorials\sample_raw\Data\EF1982_somatosensory_ [...] 'channelalign', 1); % Process: Sinusoid removal: 60Hz 120Hz 180Hz sFiles = bst_process(... 'CallProcess', 'process_sin_remove', ... sFiles, [], ... 'freqlist', [60, 120, 180], ... 'sensortypes', 'MEG, EEG', ... 'reverse', 1); % Process: Detect eye blinks sFiles = bst_process(... 'CallProcess', 'process_evt_detect_eog', ... sFiles, [], ... 'channelname', 'EEG058', ... 'timewindow', [0, 359.999167], ... 'eventname', 'blink'); % Process: SSP EOG: blink sFiles = bst_process(... 'CallProcess', 'process_ssp_eog', ... sFiles, [], ... 'eventname', 'blink', ... 'sensortypes', 'MEG, MEG MAG, MEG GRAD'); % Process: Import MEG/EEG: Events sFiles = bst_process(... 'CallProcess', 'process_import_data_event', ... sFiles, [], ... 'subjectname', 'Subject01', ... 'condition', '', ... 'eventname', 'left, right', ... 'timewindow', [0, 359.999167], ... 'epochtime', {[-100, 300], 'ms'}, ... 'createcond', 1, ... 'ignoreshort', 1, ... 'usectfcomp', 1, ... 'usessp', 1, ... 'freq', [], ... 'baseline', []); % Process: Remove baseline: [-100ms,0ms] sFiles = bst_process(... 'CallProcess', 'process_baseline', ... sFiles, [], ... 'baseline', [-0.10001, -0.00017], ... 'sensortypes', 'MEG, EEG', ... 'overwrite', 1); % Process: Compute noise covariance sFiles = bst_process(... 'CallProcess', 'process_noisecov', ... sFiles, [], ... 'baseline', [-0.10001, -0.000843], ... 'dcoffset', 1, ... 'method', 1, ... 'copycond', 0, ... 'copysubj', 0); % Process: Average: By condition sFiles = bst_process(... 'CallProcess', 'process_average', ... sFiles, [], ... 'avgtype', 3); % Process: Snapshot: Sensors/MRI registration sFiles = bst_process(... 'CallProcess', 'process_snapshot', ... sFiles, [], ... 'target', {1, {'Sensors/MRI registration', [...] 'modality', {1, {'MEG (All)', [...] 'orient', {1, {'left', 'right', 'top', 'bottom', 'front', 'back'}}, ... 'time', 0, ... 'contact', '0.000, 0.100, 12', ... 'comment', 'Registration'); % Process: Snapshot: Recordings time series sFiles = bst_process(... 'CallProcess', 'process_snapshot', ... sFiles, [], ... 'target', {5, {'Sensors/MRI registration', [...] 'modality', {1, {'MEG (All)', [...] 'orient', {1, {'left', 'right', 'top', 'bottom', 'front', 'back'}}, ... 'time', 0, ... 'contact', '0.000, 0.100, 12', ... 'comment', 'Evoked responses'); % Process: Snapshot: Recordings topography (one time) sFiles = bst_process(... 'CallProcess', 'process_snapshot', ... sFiles, [], ... 'target', {6, {'Sensors/MRI registration', [...] 'modality', {1, {'MEG (All)', [...] 'orient', {1, {'left', 'right', 'top', 'bottom', 'front', 'back'}}, ... 'time', 0.035, ... 'contact', '0.000, 0.100, 12', ... 'comment', 'Evoked responses'); % Process: Compute head model sFiles = bst_process(... 'CallProcess', 'process_headmodel', ... sFiles, [], ... 'sourcespace', 1, ... 'meg', {3, {'', 'Single sphere', 'Overlapping spheres', 'OpenMEEG BEM'}}, ... 'eeg', {3, {'', '3-shell sphere', 'OpenMEEG BEM'}}, ... 'openmeeg', struct(... 'BemFiles', {{}}, ... 'BemNames', {{'Scalp', 'Skull', 'Brain'}}, ... 'BemCond', [1, 0.0125, 1], ... 'BemSelect', [1, 1, 1], ... 'isAdjoint', 0, ... 'isAdaptative', 1, ... 'isSplit', 0, ... 'SplitLength', 4000)); % Process: Compute sources sFiles = bst_process(... 'CallProcess', 'process_inverse', ... sFiles, [], ... 'method', 1, ... 'wmne', struct(... 'NoiseCov', [], ... 'InverseMethod', 'wmne', ... 'SNR', 3, ... 'diagnoise', 0, ... 'SourceOrient', {{'fixed'}}, ... 'loose', 0.2, ... 'depth', 1, ... 'weightexp', 0.5, ... 'weightlimit', 10, ... 'regnoise', 1, ... 'magreg', 0.1, ... 'gradreg', 0.1, ... 'eegreg', 0.1, ... 'fMRI', [], ... 'fMRIthresh', [], ... 'fMRIoff', 0.1, ... 'pca', 1), ... 'sensortypes', 'MEG, MEG MAG, MEG GRAD, EEG', ... 'output', 1); % Save and display report ReportFile = bst_report('Save', sFiles); bst_report('Open', ReportFile); }}} == Report viewer == Click on Run to start the pipeline. As this process is taking screen captures, do not use your computer for something else at the same time: if another window covers the Brainstorm figure, it will not capture the right image. At the end, the report viewer is opened to show the status of all the processes and the screen captures. The report is saved in your home folder ($home/.brainstorm/reports). If you close this window, you can get it back with the menu File > Report viewer.