Diff for "AnalyzingData/MNE_ComputeEstimates" - Meg Wiki
location: Diff for "AnalyzingData/MNE_ComputeEstimates"
Differences between revisions 9 and 33 (spanning 24 versions)
Revision 9 as of 2010-06-10 12:07:22
Size: 2894
Editor: YaaraErez
Comment:
Revision 33 as of 2013-03-08 10:02:25
Size: 6583
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Applying the Inverse Operator (mne_make_movie) = = Compute the Source Estimates (mne_make_movie) =
'''Applying the Inverse Operator'''
Line 3: Line 4:
This script applies the inverse operator to MEG data and outputs the current estimates. The current estimates are morphed to the average brain (see below), for grand-averaging (see further below). The results (*.stc-files) can be viewed in mne_analyze, and read into Matlab using mne_read_stc_file. This script applies the inverse operator to MEG data and outputs the current estimates. The current estimates are morphed to the [[#averagebrain|average brain]], for [[#grandaverage|grand-averaging]]. The results (*.stc-files) can be [[#visualisation|visualised in mne_analyze]], and [[#stcreadwritesubtract|read into Matlab]] using mne_read_stc_file. You can get infos on your stc-files (e.g. maximum value, relevant for scaling your display) using mne_analyze.
Line 5: Line 6:
The main ingredients are  The main ingredients are
Line 9: Line 10:
* the MEG data (fiff-files) * the averaged MEG data (fiff-files)
Line 13: Line 14:
For more details and further options see the MNE manual. There are some [[#exampleestimates|examples of current estimates]] at the bottom.
Line 15: Line 16:
The parameters below are reasonable choices for standard analyses. However, these Wiki pages are not supposed to substitute the [[http://www.nmr.mgh.harvard.edu/meg/manuals/MNE-manual-2.6.pdf|MNE manual]], [[http://imaging.mrc-cbu.cam.ac.uk/meg/MEGpapers|reading papers]], and [[ImagersInterestGroup|discussions]] with more experienced researchers.
Line 19: Line 21:
Line 21: Line 22:
Line 23: Line 23:
Line 25: Line 24:
Line 27: Line 25:
Line 30: Line 27:

Line 35: Line 30:
        'Subject1' \
        'Subject1' \
        'Subject2' \
        'Subject3' \
Line 38: Line 33:
Line 45: Line 39:

# MEG subdirectories (your directory structure may differ)      
# MEG subdirectories (your directory structure may differ)
Line 52: Line 45:
Line 54: Line 46:
Line 57: Line 48:
Line 60: Line 50:

Line 67: Line 55:
   for c in `seq 0 ${lastcond}`
 do
 
  
# Current Estimates
  mne_make_movie \
  --subject {subjects[m]} \
  
--inv ${datapath}/${subj_pre[m]}_0${subjects[m]}/${subj_dir[m]}/YourName_1L-MEG-loose0.2-inv.fif \
  --meas ${datapath}/${subj_pre[m]}/${subj_dir[m]}/${conds[c]}.fif \
  --morph average \

        
for c in `seq 0 ${lastcond}`
        do

                
# Current Estimates
                mne_make_movie \
                --subject ${subjects[m]} \
                
--inv ${datapath}/${subj_pre[m]}/${subj_dir[m]}/YourName_1L-MEG-loose0.2-inv.fif \
                --meas ${datapath}/${subj_pre[m]}/${subj_dir[m]}/${conds[c]}.fif \
                --morph average \
Line 78: Line 66:
  --bmin -100 \                 --bmin -100 \
Line 80: Line 68:
  --stc ${outpath}/STC/${subj_pre[m]}_${conds[c]}
     done # conditions
                --stc ${outpath}/${subj_pre[m]}_${conds[c]}
Line 84: Line 70:
        done # conditions
Line 86: Line 73:
The --morph option produces source estimates morphed to the average brain (necessary for grand-averaging). If you don't use it, source estimates will be computed on individual cortical surfaces.

Some degree of smoothing (--smooth) is necessary for display.

The baseline definition (--bmin/bmax) can be omitted if input data are already appropriately baseline-corrected. Note that this option will not baseline-correct the source estimates.

A few CBSU users have experienced an issue with mne_make_movie. It sometimes misses some output that it is supposed to produce. It is important for you to check whether the number of output stc files matches what you expect. Re-running the script again usually solves the problem.

<<Anchor(averagebrain)>>
Line 88: Line 84:
Line 92: Line 87:
Line 95: Line 89:
"Subject1, Subject2..." etc. are the MRI sub-directories created by Freesurfer. The paths to these sub-directories have to be specified in the environment variables, e.g. "setenv SUBJECTS_DIR /MyMriDirectory/".

Use "--force" to overwrite an existing average brain, "--out" to use an output name other than the default "average".
Line 97: Line 94:
<<Anchor(visualisation)>>

= Visualising STC-files =

You can load STC files into mne_analyze and visualise them interactively (File -> Manage Overlays -> Load stc). You also need to load the brain surface used to compute the source estimates (e.g. the average across subjects, if this was used to morph the single subject results).

You can also produce JPG files or movies using mne_make_movie. Here is an example on how to do it:

{{{

mne_make_movie \
    --subject average \
    --smooth 5 \
    --stcin infile.stc \
    --tmin 0 \
    --tmax 400 \
    --tstep 10 \
    --pickrange \
    --noscalebar \
    --nocomments \
    --jpg outfile.jpg \
    --fthresh 0 --fmid 0.0666 --fmax 0.1
}}}

<<Anchor(grandaverage)>>
Line 98: Line 121:
For grand-averaging, STC-files should have been created using the --morph option in mne_make_movie (see above). You can then average them using the command  For grand-averaging, STC-files should have been created using the --morph option in mne_make_movie (see above). You can then average them using the command
Line 102: Line 126:
Line 109: Line 132:
deststc <youroutputfile>
Line 110: Line 134:
Line 116: Line 139:
Line 121: Line 143:
<<Anchor(stcreadwritesubtract)>>

== Reading, Writing, Subtracting STC-files ==
This simple Matlab script demonstrates how to read and manipulate STC-files.

{{{
data1 = mne_read_stc_file( STCfile1 ); % read STC-file 1
data2 = mne_read_stc_file( STCfile2 ); % read STC-file 2
data3 = data2; % data3 will contain subtracted data, but keep other information from STC-file 2
data3.data = data2.data - data1.data; % subtract STC-file 1 from STC-file 2
mne_write_stc_file( STCfile_out, data3 ); % Write subtracted data to STC-file
}}}


<<Anchor(exampleestimates)>>

== Examples of Current Estimates ==

{{attachment:MNE_Estimates.jpg}}

These figures show MNE current estimates for a visually evoked brain response around 170 ms for a single participant. The left presents the unsigned (intensity), the right the signed version of the estimate. Note that the intensity version ignores the cirection of current flow on the cortical surface. In the signed version, the "speckled" pattern of positive and negative values most likely results from the fact that blurring of sources results in reversed directions of current flow on opposing walls of sulci.

Compute the Source Estimates (mne_make_movie)

Applying the Inverse Operator

This script applies the inverse operator to MEG data and outputs the current estimates. The current estimates are morphed to the average brain, for grand-averaging. The results (*.stc-files) can be visualised in mne_analyze, and read into Matlab using mne_read_stc_file. You can get infos on your stc-files (e.g. maximum value, relevant for scaling your display) using mne_analyze.

The main ingredients are

* the inverse operator

* the averaged MEG data (fiff-files)

* the average cortical surface (see below)

There are some examples of current estimates at the bottom.

The parameters below are reasonable choices for standard analyses. However, these Wiki pages are not supposed to substitute the MNE manual, reading papers, and discussions with more experienced researchers.

#
## Your variables
datapath='<myMEGdatapath>'    # root directory for your MEG data
MRIpath='/myMRIdirectory/'    # where your MRI subdirectories are
outpath='/myoutpath'  # path for output files
#condition names as used in file names to which inverse operator shall be applied
conds=('cond1' 'cond2' 'cond3')
# subjects names used for MRI data
subjects=(\
        'Subject1' \
        'Subject2' \
        'Subject3' \
)
# MEG IDs (your directory structure may differ)
subj_pre=(\
        'meg10_0001' \
        'meg10_0002' \
        'meg10_0003' \
        )
# MEG subdirectories (your directory structure may differ)
subj_dir=(\
         '100001' \
         '100002' \
         '100003' \
        )
## Processing:
nsubjects=${#subjects[*]}
lastsubj=`expr $nsubjects - 1`
nconds=${#conds[*]}
lastcond=`expr $nconds - 1`
for m in `seq 0 ${lastsubj}`
do
  echo " "
  echo " Computing movies  for SUBJECT  ${subjects[m]}"
  echo " "

        for c in `seq 0 ${lastcond}`
        do

                # Current Estimates
                mne_make_movie \
                --subject ${subjects[m]} \
                --inv ${datapath}/${subj_pre[m]}/${subj_dir[m]}/YourName_1L-MEG-loose0.2-inv.fif \
                --meas ${datapath}/${subj_pre[m]}/${subj_dir[m]}/${conds[c]}.fif \
                --morph average \
                --smooth 5 \
                --bmin -100 \
                --bmax 0 \
                --stc ${outpath}/${subj_pre[m]}_${conds[c]}

        done # conditions
done # subjects

The --morph option produces source estimates morphed to the average brain (necessary for grand-averaging). If you don't use it, source estimates will be computed on individual cortical surfaces.

Some degree of smoothing (--smooth) is necessary for display.

The baseline definition (--bmin/bmax) can be omitted if input data are already appropriately baseline-corrected. Note that this option will not baseline-correct the source estimates.

A few CBSU users have experienced an issue with mne_make_movie. It sometimes misses some output that it is supposed to produce. It is important for you to check whether the number of output stc files matches what you expect. Re-running the script again usually solves the problem.

Computing the Average Cortical Surface

#
make_average_subject --subjects   Subject1 Subject2 Subject3

"Subject1, Subject2..." etc. are the MRI sub-directories created by Freesurfer. The paths to these sub-directories have to be specified in the environment variables, e.g. "setenv SUBJECTS_DIR /MyMriDirectory/".

Use "--force" to overwrite an existing average brain, "--out" to use an output name other than the default "average".

Visualising STC-files

You can load STC files into mne_analyze and visualise them interactively (File -> Manage Overlays -> Load stc). You also need to load the brain surface used to compute the source estimates (e.g. the average across subjects, if this was used to morph the single subject results).

You can also produce JPG files or movies using mne_make_movie. Here is an example on how to do it:

mne_make_movie \
    --subject average \
    --smooth 5 \
    --stcin infile.stc \
    --tmin 0 \
    --tmax 400 \
    --tstep 10 \
    --pickrange \
    --noscalebar \
    --nocomments \
    --jpg outfile.jpg \
    --fthresh 0  --fmid 0.0666  --fmax 0.1

Grand-averaging STC-files

For grand-averaging, STC-files should have been created using the --morph option in mne_make_movie (see above). You can then average them using the command

mne_average_estimates --desc <descriptionfile.txt>

where descriptionfile.txt is of the form

stc /yourpath/filetoaverage1.stc
stc /yourpath/filetoaverage2.stc
stc /yourpath/filetoaverage3.stc
deststc <youroutputfile>

You can create description files for every average you want to compute, and execute them in one script

#
mne_average_estimates --desc <descriptionfile1.txt>
mne_average_estimates --desc <descriptionfile2.txt>
mne_average_estimates --desc <descriptionfile3.txt>

Reading, Writing, Subtracting STC-files

This simple Matlab script demonstrates how to read and manipulate STC-files.

data1 = mne_read_stc_file( STCfile1 );  % read STC-file 1
data2 = mne_read_stc_file( STCfile2 );  % read STC-file 2
data3 = data2;  % data3 will contain subtracted data, but keep other information from STC-file 2
data3.data = data2.data - data1.data; % subtract STC-file 1 from STC-file 2
mne_write_stc_file( STCfile_out, data3 );  % Write subtracted data to STC-file

Examples of Current Estimates

MNE_Estimates.jpg

These figures show MNE current estimates for a visually evoked brain response around 170 ms for a single participant. The left presents the unsigned (intensity), the right the signed version of the estimate. Note that the intensity version ignores the cirection of current flow on the cortical surface. In the signed version, the "speckled" pattern of positive and negative values most likely results from the fact that blurring of sources results in reversed directions of current flow on opposing walls of sulci.

CbuMeg: AnalyzingData/MNE_ComputeEstimates (last edited 2013-03-08 10:02:25 by localhost)