Brainstorm
  • Comments
  • Menu
    • Attachments
    • Versions
    • Raw Text
    • Print View
  • Login

Software

  • Introduction

  • Gallery

  • Download

  • Installation

Users

  • Tutorials

  • Forum

  • Courses

  • Community

  • Publications

Development

  • What's new

  • What's next

  • About us

  • Contact us

  • Contribute

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Differences between revisions 4 and 5
⇤ ← Revision 4 as of 2018-06-28 12:35:07 →
Size: 16533
Editor: ?MartinCousineau
Comment:
← Revision 5 as of 2018-06-28 12:35:18 → ⇥
Size: 16534
Editor: ?MartinCousineau
Comment:
Deletions are marked like this. Additions are marked like this.
Line 84: Line 84:
 * Another faster solution, if you have access to digitized head shapes for all the subjects in the MEG files: skip the marking of the fiducials, use default positions estimated from MNI coordinates, and use the head shape for refining the registration. To force the BIDS importer to work this way, use the process "'''Import> Import anatomy > Import BIDS dataset'''" instead of the interactive menu, with the option "Align sensors using head points" selected.  * Another faster solution, if you have access to digitized head shapes for all the subjects in the MEG files: skip the marking of the fiducials, use default positions estimated from MNI coordinates, and use the head shape for refining the registration. To force the BIDS importer to work this way, use the process "'''Import > Import anatomy > Import BIDS dataset'''" instead of the interactive menu, with the option "Align sensors using head points" selected.

Resting state recordings from the OMEGA database (2016)

Authors: Francois Tadel, Guiomar Niso, Elizabeth Bock, Sylvain Baillet

This tutorial introduces how to download resting state recordings from the OMEGA database and process them into Brainstorm. The goal is to evaluate where in the brain is distributed the power in specific frequency bands at rest. This example includes only 5 healthy subjects, but the same pipeline can be applied over larger populations.

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

  1. OMEGA database
  2. Presentation of the experiment
  3. Download and installation
  4. BIDS specifications
  5. Import the dataset
  6. Pre-processing
  7. Artifact cleaning
  8. Source estimation
  9. Power maps
  10. Resting state metrics [TODO]
  11. Scripting

OMEGA database

The Open MEG Archive (OMEGA) is the fruit of a collaborative effort by the McConnell Brain Imaging Centre and the Université de Montréal to build a centralized repository in which to regroup MEG data for open dissemination. This continuously expanding repository also contains anatomical MRI volumes, demographic and questionnaire information, and eventually will feature other forms of electrophysiological data (e.g. EEG, field, and cell recordings). OMEGA features the technological framework for multi-centric data aggregation, and is amongst the largest freely available resting-state MEG datasets presently available. Website: https://www.mcgill.ca/bic/resources/omega

You are free to use all data in OMEGA for research purposes; however, we ask that you please cite the following reference in your publications if you have used data from OMEGA:

Niso G, Rogers C, Moreau JT, Chen LY, Madjar C, Das S, Bock E, Tadel F, Evans A, Jolicoeur P, Baillet S
OMEGA: The Open MEG Archive, Neuroimage, 2015.

Presentation of the experiment

Experiment

  • 5 subjects x 5 minute resting sessions, eyes open

MEG acquisition

  • Acquisition at 2400Hz, with a CTF 275 MEG system,

  • Recorded at the Montreal Neurological Institute in 2015-2016.
  • Anti-aliasing low-pass filter at 600Hz
  • Files may be saved with or without the CTF 3rd order gradient compensation applied.
  • Recorded channels (at least 297):
    • 26 MEG reference sensors (#2-#27)
    • 270 MEG axial gradiometers (#28-#297)
    • 1 ECG bipolar (EEG057/#298) - Not available in the empty room recordings
    • 1 vertical EOG bipolar (EEG058/#299) - Not available in the empty room recordings
    • 1 horizontal EOG bipolar (EEG059/#300) - Not available in the empty room recordings
  • The data in this dataset has been organized according to the BIDS specifications
    (Brain Imaging Data Structure, http://bids.neuroimaging.io)

Head shape and fiducial points

3D digitization using a Polhemus Fastrak device driven by Brainstorm. The .pos files contain:

  • The center of the CTF coils,
  • The anatomical references we use in Brainstorm: nasion and ears as illustrated here,

  • Around 100 head points distributed on the hard parts of the head (no soft tissues).

Subject anatomy

  • Structural T1 image (defaced for anonymization purposes)
  • Processed with FreeSurfer 5.3

  • The anatomical fiducials (NAS, LPA, RPA) have already been marked and saved in the files fiducials.m

Download and installation

  • First, make sure you have at least 40Gb of free space on your hard drive (raw files: 12Gb).

  • The OMEGA database is not in it its final release stage, so we temporarily distribute the 5 subjects used in this tutorial from the Brainstorm website.
  • Go to the Download page, and download the file: sample_omega.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). For help, see the Installation page.

  • Select the menu File > Create new protocol. Name it "TutorialOmega" and select the options:

    • "No, use individual anatomy",

    • "No, use one channel file per condition".

BIDS specifications

The Brain Imaging Data Structure (BIDS) standard for neuroimaging data organization was first established for MRI and fMRI (Gorgolewski, 2016). It is based on simple file formats and folder structures that can readily expand to additional data modalities.

An extension of the BIDS for MEG datasets is currently under review. The data distributed with this tutorial is organized following this prototype (which may change in the future). One objective is that analysis pipelines designed with major analysis tools (such as Brainstorm, FieldTrip, MNE, SPM and others) can be readily applied without requiring software or pipeline redevelopments.

We have already implemented a set of functions that can load automatically into a Brainstorm database any dataset following the BIDS specification. The files that are read by this function are the following:

sample_omega/

  • derivatives/: Everything that cannot be considered as raw data

    • freesurfer/: Result of the FreeSurfer segmentation for all the subjects

      • sub-000X_ses-0001/: Output of FreeSurfer for subject 000X (session 0001)

  • sub-000X/: Raw data for subject 000X

    • ses-0001/: Only one session per subject (the subject visited the center only once)

      • anat/: Anatomical MRI scans for subject 000X (not used if FreeSurfer output available)

        • sub-000X_T1w.nii.gz: T1 scan

      • meg/: Unprocessed MEG recordings

        • sub-000X_task-rest_run-01_meg.ds: Resting MEG recordings (subject data)

        • sub-000X_task-noise_run-01_meg.ds: Empty room recordings (noise measure)

Import the dataset

  • Select the menu File > Load protocol > Import BIDS dataset > Select the folder sample_omega.

  • Keep the default values for all the questions that may be asked during the import process (eg. number of vertices in the cortex surfaces). Once done, you should be able to access the data for the 5 subjects in your database explorer: anatomy, and subject and noise recordings.

    load_bids.gif

  • For this example dataset, the fiducials NAS/LPA/RPA were previously marked using the menu File > Batch MRI fiducials, which creates a file fiducials.m in the FreeSurfer folder. When importing the FreeSurfer folders, these fiducials are used by default.

  • If you want to use this feature on your own BIDS-formatted dataset, using the menu Import BIDS dataset may ask you to select for each subject the position of the fiducials NAS/LPA/RPA. You can mark them in advance using the menu Batch MRI fiducials as we did.
  • Another faster solution, if you have access to digitized head shapes for all the subjects in the MEG files: skip the marking of the fiducials, use default positions estimated from MNI coordinates, and use the head shape for refining the registration. To force the BIDS importer to work this way, use the process "Import > Import anatomy > Import BIDS dataset" instead of the interactive menu, with the option "Align sensors using head points" selected.

Pre-processing

  • Switch to the functional view of the protocol (second button above the database explorer).
  • Drag and drop all the subjects into the Process1 box, and click on [Run].
  • Select process: Import > Import recordings > Convert to continuous: Continuous

  • Add process: Frequency > Power spectrum density (Welch): All file, 4s, 50% overlap, Individual

    psd_process.gif

  • Run, then check the quality of the PSD for all the files, as documented in this tutorial.

    psd_before.gif

  • In Process1, keep the same files selected and click on [Run].
  • Select process: Pre-process > Notch filter: 60 120 180 240 300 Hz, Process the entire file at once

  • Add process: Pre-process > Band-pass filter: High-pass filter at 0.3Hz, 60dB, Process entire file.

  • Add process: Frequency > Power spectrum density (Welch): Same options

    filter_process.gif

  • Run, then check the PSD after filtering.

    psd_after.gif

  • Delete all the folders corresponding to the original recordings (_meg) and the notch filtered data (_meg_notch). Only keep the fully processed files (_meg_notch_high).

    delete_original.gif delete_after.gif

Artifact cleaning

We will now run the automatic procedure for cleaning the heartbeats, as described in the introduction tutorials (detection, SSP). The results we want to illustrate here are robust enough, the recordings do not need to be processed any further. If you want to improve the quality of the data with more manual cleaning (blinks, saccades, movements, bad segments), please refer to the introduction tutorials.

  • In Process1, select all the subject rest recordings (task-rest).

  • Select process: Events > Detect heartbeats: ECG, All file, cardiac

  • Add process: Artifacts > SSP: Heartbeats: cardiac, MEG, Use existing SSP

  • Add process: File > Snapshot: Sensor/MRI registration

  • Add process: File > Snapshot: SSP projectors

    ssp_process.gif

  • Run, then review the registration and the SSP topographies for all the subjects. Make sure that the subjects' heads are well aligned in the MEG, and that the spatial components that are removed are really representative of the cardiac artifact.

    ssp_report.gif

Source estimation

  • In Process1, select all the noise recordings (task-noise).

  • Run process: Sources > Compute covariance: All file, Noise covariance, Copy to other folders.

    noiscov_process.gif

  • In Process1, select all the subject rest recordings (task-rest).

  • Run process: Sources > Compute head model: Cortex surface, MEG=Overlapping spheres.

    headmodel_process.gif

  • Run process: Sources > Compute sources [2016]: Kernel only, one per file, dSPM, constrained.

    inverse_process.gif

Power maps

We have now access to continuous recordings in source space, we can estimate the average power over this resting period, for various frequency bands. We propose here to compute the PSD from the first 100s instead of the full 600s rest recordings, it is faster and leads to very similar results. For more stable estimates, you can compute the the PSD over all the data available instead.

  • In Process1, select all the subject rest recordings (task-rest), click the [Process sources] button.

  • Select process: Frequency > Power spectrum density (Welch): [0,100s], Window=4s, 50% overlap, Group in frequency bands (use the default frequency bands), Save individual PSD values.

  • Add process: Standardize > Spectrum normalization: Relative power (divide by total power). This normalization is done independently for each source, the output for each frequency band is a percentage of how much this frequency band contributes to the total power of the source signal.

  • Add process: Sources > Project on default anatomy: Cortex.

  • Add process: Sources > Spatial smoothing: FWHM=3mm, Overwrite.

    psd_sources_process.gif

    psd_sources_normalize.gif

  • Execute this pipeline, then open the results for the different subjects and visualize the different frequency bands. They should look similar across subjects. This measure of relative power is very robust and usually do not vary much between subjects or duration of the input signals.
  • The values in this figure represent the relative power of each source. At each vertex of the cortex surface, the value between 0 and 1 indicates what is the contribution of the current frequency band to the total power in the signal. To obtain comparable colormaps across multiple figures, you can set a fixed maximum (right-click on a figure > Colormap: Timefreq > Maximum: Custom).

    psd_sources_proj.gif

  • We will now average these files across subjects. In Process1, select all the projected subject averages in the Group analysis folder, and click on the button [Process time-freq].

  • Run process: Average > Average files: Everything, Arithmetic average, Do not match signals

    psd_sources_avgsubj.gif

  • Double-click on the average to display it. To create the figures below, right-click on the figure > Snapshot > Frequency contact sheet.

    psd_sources_left.gif psd_sources_top.gif

  • We can relate these figures with associations commonly reported in the literature:
    • Theta: Mostly frontal.

    • Alpha: Parieto-occipital.

    • Beta: Central regions (motor cortex).

    • Gamma: Pre-frontal and occipital. However, the occipital sources could be related with muscle activity in the neck. We haven't cleaned the recordings much, we should go back to the recordings and mark as bad all the segments in which we observe a lot of muscle activity.

    • Delta: Questionable - these source maps showing high values at the poles of the frontal and temporal lobes are typical of eye movements. We should try doing some cleaning of the ocular artifacts (blinks and saccades) and compute these maps again.

  • You can compute the same results in the head volume. You just have to use a volume head model on a group grid instead of the one we used here. This is explained in the tutorial Group analysis. This seems to confirm that the power in the delta and gamma bands is mostly coming from non-brain regions (eyes and neck muscles).

    psd_volume_delta.gif psd_volume_gamma.gif

  • You can produce similar plots at the sensor level: Compute the PSD by frequency band of the rest recordings for each subject, then compute the average across subjects (not as reliable as averaging in source space, as explained here).

    psd_avgsubj.gif

Resting state metrics [TODO]

Discuss what other measures can be used in resting state MEG.

Add references to a few recent publications.

Scripting

The following script from the Brainstorm distribution reproduces the analysis presented in this tutorial page: brainstorm3/toolbox/script/tutorial_omega.m

1 function tutorial_omega(BidsDir) 2 % TUTORIAL_OMEGA: Script that reproduces the results of the online tutorial "Resting state and OMEGA database". 3 % 4 % CORRESPONDING ONLINE TUTORIALS: 5 % https://neuroimage.usc.edu/brainstorm/Tutorials/RestingOmega 6 % 7 % INPUTS: 8 % tutorial_dir: Directory where the OMEGA_RestingState_sample.tar file has been unzipped 9 10 % @============================================================================= 11 % This function is part of the Brainstorm software: 12 % https://neuroimage.usc.edu/brainstorm 13 % 14 % Copyright (c) University of Southern California & McGill University 15 % This software is distributed under the terms of the GNU General Public License 16 % as published by the Free Software Foundation. Further details on the GPLv3 17 % license can be found at http://www.gnu.org/copyleft/gpl.html. 18 % 19 % FOR RESEARCH PURPOSES ONLY. THE SOFTWARE IS PROVIDED "AS IS," AND THE 20 % UNIVERSITY OF SOUTHERN CALIFORNIA AND ITS COLLABORATORS DO NOT MAKE ANY 21 % WARRANTY, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF 22 % MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, NOR DO THEY ASSUME ANY 23 % LIABILITY OR RESPONSIBILITY FOR THE USE OF THIS SOFTWARE. 24 % 25 % For more information type "brainstorm license" at command prompt. 26 % =============================================================================@ 27 % 28 % Author: Francois Tadel, 2016-2018 29 30 31 %% ===== FILES TO IMPORT ===== 32 % You have to specify the folder in which the tutorial dataset is unzipped 33 if (nargin == 0) || isempty(BidsDir) || ~file_exist(BidsDir) 34 error('The first argument must be the full path to the tutorial dataset folder.'); 35 end 36 37 38 %% ===== CREATE PROTOCOL ===== 39 % The protocol name has to be a valid folder name (no spaces, no weird characters...) 40 ProtocolName = 'TutorialOmega'; 41 % Start brainstorm without the GUI 42 if ~brainstorm('status') 43 brainstorm nogui 44 end 45 % Delete existing protocol 46 gui_brainstorm('DeleteProtocol', ProtocolName); 47 % Create new protocol 48 gui_brainstorm('CreateProtocol', ProtocolName, 0, 0); 49 % Start a new report 50 bst_report('Start'); 51 52 53 %% ===== IMPORT BIDS DATASET ===== 54 % Process: Import BIDS dataset 55 sFilesRaw = bst_process('CallProcess', 'process_import_bids', [], [], ... 56 'bidsdir', {BidsDir, 'BIDS'}, ... 57 'nvertices', 15000, ... 58 'channelalign', 0); 59 60 % Process: Remove head points 61 sFilesRaw = bst_process('CallProcess', 'process_headpoints_remove', sFilesRaw, [], ... 62 'zlimit', 0); 63 64 % Process: Refine registration 65 sFilesRaw = bst_process('CallProcess', 'process_headpoints_refine', sFilesRaw, []); 66 67 % Process: Convert to continuous (CTF): Continuous 68 sFilesRaw = bst_process('CallProcess', 'process_ctf_convert', sFilesRaw, [], ... 69 'rectype', 2); % Continuous 70 71 72 %% ===== PRE-PROCESSING ===== 73 % % Process: Power spectrum density (Welch) 74 % sFilesPsdBefore = bst_process('CallProcess', 'process_psd', sFilesRaw, [], ... 75 % 'timewindow', [], ... 76 % 'win_length', 4, ... 77 % 'win_overlap', 50, ... 78 % 'sensortypes', 'MEG, EEG', ... 79 % 'edit', struct(... 80 % 'Comment', 'Power', ... 81 % 'TimeBands', [], ... 82 % 'Freqs', [], ... 83 % 'ClusterFuncTime', 'none', ... 84 % 'Measure', 'power', ... 85 % 'Output', 'all', ... 86 % 'SaveKernel', 0)); 87 88 % Process: Notch filter: 60Hz 120Hz 180Hz 240Hz 300Hz 89 sFilesNotch = bst_process('CallProcess', 'process_notch', sFilesRaw, [], ... 90 'freqlist', [60, 120, 180, 240, 300], ... 91 'sensortypes', 'MEG, EEG', ... 92 'read_all', 1); 93 94 % Process: High-pass:0.3Hz 95 sFilesBand = bst_process('CallProcess', 'process_bandpass', sFilesNotch, [], ... 96 'sensortypes', 'MEG, EEG', ... 97 'highpass', 0.3, ... 98 'lowpass', 0, ... 99 'attenuation', 'strict', ... % 60dB 100 'mirror', 0, ... 101 'useold', 0, ... 102 'read_all', 1); 103 104 % Process: Power spectrum density (Welch) 105 sFilesPsdAfter = bst_process('CallProcess', 'process_psd', sFilesBand, [], ... 106 'timewindow', [0 100], ... 107 'win_length', 4, ... 108 'win_overlap', 50, ... 109 'sensortypes', 'MEG, EEG', ... 110 'edit', struct(... 111 'Comment', 'Power', ... 112 'TimeBands', [], ... 113 'Freqs', [], ... 114 'ClusterFuncTime', 'none', ... 115 'Measure', 'power', ... 116 'Output', 'all', ... 117 'SaveKernel', 0)); 118 119 % Process: Snapshot: Frequency spectrum 120 bst_process('CallProcess', 'process_snapshot', sFilesPsdAfter, [], ... 121 'target', 10, ... % Frequency spectrum 122 'modality', 1); % MEG (All) 123 124 % Process: Delete folders 125 bst_process('CallProcess', 'process_delete', [sFilesRaw, sFilesNotch], [], ... 126 'target', 2); % Delete folders 127 128 129 %% ===== ARTIFACT CLEANING ===== 130 % Process: Select data files in: */* 131 sFilesBand = bst_process('CallProcess', 'process_select_files_data', [], [], ... 132 'subjectname', 'All'); 133 134 % Process: Select file names with tag: task-rest 135 sFilesRest = bst_process('CallProcess', 'process_select_tag', sFilesBand, [], ... 136 'tag', 'task-rest', ... 137 'search', 1, ... % Search the file names 138 'select', 1); % Select only the files with the tag 139 140 % Process: Detect heartbeats 141 bst_process('CallProcess', 'process_evt_detect_ecg', sFilesRest, [], ... 142 'channelname', 'ECG', ... 143 'timewindow', [], ... 144 'eventname', 'cardiac'); 145 146 % Process: SSP ECG: cardiac 147 bst_process('CallProcess', 'process_ssp_ecg', sFilesRest, [], ... 148 'eventname', 'cardiac', ... 149 'sensortypes', 'MEG', ... 150 'usessp', 1, ... 151 'select', 1); 152 153 % Process: Snapshot: Sensors/MRI registration 154 bst_process('CallProcess', 'process_snapshot', sFilesRest, [], ... 155 'target', 1, ... % Sensors/MRI registration 156 'modality', 1, ... % MEG (All) 157 'orient', 1); % left 158 159 % Process: Snapshot: SSP projectors 160 bst_process('CallProcess', 'process_snapshot', sFilesRest, [], ... 161 'target', 2, ... % SSP projectors 162 'modality', 1); % MEG (All) 163 164 165 %% ===== SOURCE ESTIMATION ===== 166 % Process: Select file names with tag: task-rest 167 sFilesNoise = bst_process('CallProcess', 'process_select_tag', sFilesBand, [], ... 168 'tag', 'task-noise', ... 169 'search', 1, ... % Search the file names 170 'select', 1); % Select only the files with the tag 171 172 % Process: Compute covariance (noise or data) 173 bst_process('CallProcess', 'process_noisecov', sFilesNoise, [], ... 174 'baseline', [], ... 175 'sensortypes', 'MEG', ... 176 'target', 1, ... % Noise covariance (covariance over baseline time window) 177 'dcoffset', 1, ... % Block by block, to avoid effects of slow shifts in data 178 'identity', 0, ... 179 'copycond', 1, ... 180 'copysubj', 1, ... 181 'copymatch', 1, ... 182 'replacefile', 1); % Replace 183 184 % Process: Compute head model 185 bst_process('CallProcess', 'process_headmodel', sFilesRest, [], ... 186 'sourcespace', 1, ... % Cortex surface 187 'meg', 3); % Overlapping spheres 188 189 % Process: Compute sources [2018] 190 sSrcRest = bst_process('CallProcess', 'process_inverse_2018', sFilesRest, [], ... 191 'output', 2, ... % Kernel only: one per file 192 'inverse', struct(... 193 'Comment', 'dSPM: MEG', ... 194 'InverseMethod', 'minnorm', ... 195 'InverseMeasure', 'dspm2018', ... 196 'SourceOrient', {{'fixed'}}, ... 197 'Loose', 0.2, ... 198 'UseDepth', 1, ... 199 'WeightExp', 0.5, ... 200 'WeightLimit', 10, ... 201 'NoiseMethod', 'reg', ... 202 'NoiseReg', 0.1, ... 203 'SnrMethod', 'fixed', ... 204 'SnrRms', 1e-06, ... 205 'SnrFixed', 3, ... 206 'ComputeKernel', 1, ... 207 'DataTypes', {{'MEG'}})); 208 209 210 %% ===== POWER MAPS ===== 211 % Process: Power spectrum density (Welch) 212 sSrcPsd = bst_process('CallProcess', 'process_psd', sSrcRest, [], ... 213 'timewindow', [0, 100], ... 214 'win_length', 4, ... 215 'win_overlap', 50, ... 216 'clusters', {}, ... 217 'scoutfunc', 1, ... % Mean 218 'edit', struct(... 219 'Comment', 'Power,FreqBands', ... 220 'TimeBands', [], ... 221 'Freqs', {{'delta', '2, 4', 'mean'; 'theta', '5, 7', 'mean'; 'alpha', '8, 12', 'mean'; 'beta', '15, 29', 'mean'; 'gamma1', '30, 59', 'mean'; 'gamma2', '60, 90', 'mean'}}, ... 222 'ClusterFuncTime', 'none', ... 223 'Measure', 'power', ... 224 'Output', 'all', ... 225 'SaveKernel', 0)); 226 227 % Process: Spectrum normalization 228 sSrcPsdNorm = bst_process('CallProcess', 'process_tf_norm', sSrcPsd, [], ... 229 'normalize', 'relative', ... % Relative power (divide by total power) 230 'overwrite', 0); 231 232 % Process: Project on default anatomy: surface 233 sSrcPsdProj = bst_process('CallProcess', 'process_project_sources', sSrcPsdNorm, [], ... 234 'headmodeltype', 'surface'); % Cortex surface 235 236 % Process: Spatial smoothing (3.00) 237 sSrcPsdProj = bst_process('CallProcess', 'process_ssmooth_surfstat', sSrcPsdProj, [], ... 238 'fwhm', 3, ... 239 'overwrite', 1); 240 241 % Process: Average: Everything 242 sSrcPsdAvg = bst_process('CallProcess', 'process_average', sSrcPsdProj, [], ... 243 'avgtype', 1, ... % Everything 244 'avg_func', 1, ... % Arithmetic average: mean(x) 245 'weighted', 0, ... 246 'matchrows', 0, ... 247 'iszerobad', 0); 248 249 % Screen capture of final result 250 hFig = view_surface_data([], sSrcPsdAvg.FileName); 251 set(hFig, 'Position', [200 200 200 200]); 252 hFigContact = view_contactsheet(hFig, 'freq', 'fig'); 253 bst_report('Snapshot', hFigContact, sSrcPsdAvg.FileName, 'Power'); 254 close([hFig, hFigContact]); 255 256 % Save and display report 257 ReportFile = bst_report('Save', []); 258 bst_report('Open', ReportFile); 259 260 261 262





Feedback: Comments, bug reports, suggestions, questions
Email address (if you expect an answer):


  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01