Differences between revisions 2 and 24 (spanning 22 versions)
Revision 2 as of 2012-09-20 12:26:30
Size: 4248
Editor: tanha
Comment:
Revision 24 as of 2019-07-11 13:37:50
Size: 7535
Editor: 172
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
= Surface-based Interhemispheric Registration = = Xhemi: Surface-based Interhemispheric Registration and Analysis =
Line 7: Line 7:
Greve, D.N., Sabuncu, M.R., Shafee, R., Schmansky, N., Buckner, R.L.,
and Fischl, B. (2011). Automatic surface-based interhemispheric
registration with FreeSurfer (Quebec City, Canada: 17th Annual Meeting
of the Organization on Human Brain Mapping, June 2011).
http://www.nmr.mgh.harvard.edu/martinos/publications/posters/HBM-2011/HBM11-Greve.pdf
This page describes xhemi, a collection of routines to perform interhemispheric cortical surface-based analysis. Those using this procedure should site the following paper: Greve, Douglas N., Lise Van der Haegen, Qing Cai, Steven Stufflebeam, Mert R. Sabuncu, Bruce Fischl, and Marc Bysbaert. "A surface-based analysis of language lateralization and cortical asymmetry." (2013). Journal of Cognitive Neuroscience 25.9: 1477-1492.
Line 19: Line 15:
ftp://surfer.nmr.mgh.harvard.edu/transfer/outgoing/flat/greve/surfreg
ftp://surfer.nmr.mgh.harvard.edu/transfer/outgoing/flat/greve/xhemireg
ftp://surfer.nmr.mgh.harvard.edu/transfer/outgoing/flat/greve/mris_preproc
ftp://surfer.nmr.mgh.harvard.edu/transfer/outgoing/flat/greve/fsaverage_sym.tar.gz
ftp://surfer.nmr.mgh.harvard.edu/transfer/outgoing/flat/greve/fsaverage_sym.mcc.tar.gz
ftp://surfer.nmr.mgh.harvard.edu/transfer/outgoing/flat/greve/mri_convert.linxu
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/surfreg
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/xhemireg
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mris_preproc
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/fsaverage_sym.tar.gz
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mult-comp-cor.tar.gz
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mri_convert.{linux,mac}
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mri_vol2vol.{linux,mac}
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mri_surf2surf.{linux,mac}
Line 27: Line 25:
Copy surfreg, xhemireg, mris_preproc into $FREESURFER_HOME/bin
Copy mri_convert.linux into $FREESURFER_HOME/bin/mri_convert
Copy surfreg, xhemireg, mris_preproc into $FREESURFER_HOME/bin <<BR>>
Copy mri_convert.{linux,mac} into $FREESURFER_HOME/bin/mri_convert <<BR>>
Copy mri_vol2vol.{linux,mac} into $FREESURFER_HOME/bin/mri_vol2vol <<BR>>
Line 30: Line 29:
# Untar fsaverage_sym.tar.gz into your $SUBJECTS_DIR
cd $SUBJECTS_DIR
tar xvfz fsaverage_sym.tar.gz
# Untar fsaverage_sym.tar.gz into your $SUBJECTS_DIR<<BR>>
cd $SUBJECTS_DIR<<BR>>
tar xvfz fsaverage_sym.tar.gz<<BR>>
Line 34: Line 33:
# Untar fsaverage_sym.mcc.tar.gz into $FREESURFER_HOME/average/mult-comp-cor/
cd $FREESURFER_HOME/average/mult-comp-cor/
tar xvfz fsaverage_sym.mcc
.tar.gz
# Untar mult-comp-cor.tar.gz into $FREESURFER_HOME/average<<BR>>
cd $FREESURFER_HOME/average<<BR>>
tar xvfz
mult-comp-cor.tar.gz<<BR>>
Line 38: Line 37:
# Copy mris_preproc into $FREESURFER_HOME/bin after making a backup
To apply an existing atlas (eg, fsaverage_sym) to an anatomical analysis
# Copy mris_preproc into $FREESURFER_HOME/bin after making a backup<<BR>>
Line 41: Line 39:
== Apply an existing atlas (fsaverage_sym) == == Apply an existing atlas (fsaverage_sym) in a group study ==
Line 43: Line 41:
# Reg to atlas (1-2 hours per subject)
# Creates $subject/xhemi
# Creates lh.fsaverage_sym.sphere.reg in $subject and $subject/xhemi
# Reg to atlas (1-2 hours per subject)<<BR>>
# Creates $subject/xhemi<<BR>>
# Creates lh.fsaverage_sym.sphere.reg in $subject and $subject/xhemi<<BR>>
Line 52: Line 50:
Though the right hemisphere is not explicitly listed above, it is implied by --lh --xhemi. It is possible to run the above commands with --rh, but there is no need to do so unless you are trying to evaluate the bias the procedure. If this is something you choose to do, you can run the first command before the above two commands finish, but wait to run the 2nd (--xhemi) command until the lh --hemi command has finished. <<BR>>
Line 63: Line 62:
# Smooth # Smooth. This example smooths by 10mm on the surface. This is only an
example and your data might be better off being smoothed more or
less. There is no way to determine what the optimal smoothing level is. Note that smoothing is always done on the lh of fsaverage_sym.
Line 65: Line 66:
mris_fwhm --s fsaverage_sym --hemi lh --cortex --smooth-only --fwhm 5\
 --i lh.lh-rh.thickness.sm00.mgh --o lh.lh-rh.thickness.sm05.mgh
mris_fwhm --s fsaverage_sym --hemi lh --cortex --smooth-only --fwhm 10\
 --i lh.lh-rh.thickness.sm00.mgh --o lh.lh-rh.thickness.sm10.mgh
Line 69: Line 70:
# Analyze # Analyze. Note that glmfit is always done on the lh of fsaverage_sym.
Line 71: Line 72:
mri_glmfit --y lh.lh-rh.thickness.sm05.mgh --glmdir glm.lh.lh-rh.thickness.sm05 \ mri_glmfit --y lh.lh-rh.thickness.sm10.mgh --glmdir glm.lh.lh-rh.thickness.sm10 \
Line 75: Line 76:
# View # View. Note that viewing is always done on the lh of fsaverage_sym.
Line 77: Line 78:
tksurfer fsaverage_sym lh inflated -aparc -overlay glm.lh.lh-rh.thickness.sm05/osgm/sig.mgh tksurfer fsaverage_sym lh inflated -aparc -overlay glm.lh.lh-rh.thickness.sm10/osgm/sig.mgh
Line 80: Line 81:
# Correct for MC (need new version of mri_glmfit-sim) # Correct for multiple comparisons
Line 82: Line 83:
mri_glmfit-sim --glmdir glm.lh.lh-rh.thickness.sm05 \
   --cwpvalthresh .5 --cache 2 abs \
   --subject-override fsaverage
mri_glmfit-sim --glmdir glm.lh.lh-rh.thickness.sm10 \
   --cwpvalthresh .5 --cache 2 abs
Line 86: Line 86:

== Apply an existing atlas (fsaverage_sym) to an overlay of an individual ==

Map the left hemi to fsaverage_sym left hemi
{{{
mris_apply_reg --src lh.map.mgh --trg lh.map.lh.fsaverage_sym.mgh
--streg $SUBJECTS_DIR/subject/surf/lh.fsaverage_sym.sphere.reg
        $FREESURFER_HOME/subjects/fsaverage_sym/surf/lh.sphere.reg
}}}

Map the right hemi to fsaverage_sym left hemi. Note that it is not using the above command changing lh and rh. Instead, lh.fsaverage_sym.mgh is still used, but it is the one in the xhemi folder (which means that it is rh). All further commands using rh.map.lh.fsaverage_sym.mgh (eg, smoothing with mris_fwhm or mri_surf2surf) should use the left hemi (lh) of fsaverage_sym and not the right hemi.
{{{
mris_apply_reg --src rh.map.mgh --trg rh.map.lh.fsaverage_sym.mgh
   --streg $SUBJECTS_DIR/subject/xhemi/surf/lh.fsaverage_sym.sphere.reg
           $FREESURFER_HOME/subjects/fsaverage_sym/surf/lh.sphere.reg
}}}

You now how lh.map and rh.map on the lh of fsaverage_sym (and so in vertex-for-vertex alignment). You can look at with with
{{{
tksurferfv fsaverage_sym lh inflated -aparc -ov lh.map.lh.fsaverage_sym.mgh -ov rh.map.lh.fsaverage_sym.mgh
}}}

These will be two different overlays (lh and rh), so one does not expect them to be identical.

== Map the right hemisphere of an individual to the left of same person ==
Thickness map
{{{
cd $SUBJECTS_DIR/subject
mris_apply_reg --src surf/rh.thickness --trg rh-on-lh.thickness.mgh \
  --streg xhemi/surf/lh.fsaverage_sym.sphere.reg surf/lh.fsaverage_sym.sphere.reg
}}}
rh-on-lh.thickness.mgh will be the right hemisphere thickenss sampled
onto the left hemisphere.

Map a label
{{{
cd $SUBJECTS_DIR/subject
mris_apply_reg --src-label label/rh.V1_exvivo.thresh.label --trg rh-on-lh.V1_exvivo.thresh.label \
--streg xhemi/surf/lh.fsaverage_sym.sphere.reg surf/lh.fsaverage_sym.sphere.reg
}}}
rh-on-lh.V1_exvivo.thresh.label is now a label on the right hemisphere
Line 141: Line 182:
# Note: you may need to iterate "many" times to reach convergence. How
many is "many"? Not sure, but in the above publication is was about 30
times. Probably overkill.
Line 146: Line 191:
  --xhemi --hemi lh   --xhemi --lh

1. Xhemi: Surface-based Interhemispheric Registration and Analysis

This page describes xhemi, a collection of routines to perform interhemispheric cortical surface-based analysis. Those using this procedure should site the following paper: Greve, Douglas N., Lise Van der Haegen, Qing Cai, Steven Stufflebeam, Mert R. Sabuncu, Bruce Fischl, and Marc Bysbaert. "A surface-based analysis of language lateralization and cortical asymmetry." (2013). Journal of Cognitive Neuroscience 25.9: 1477-1492.

1.1. Installation

Note: you only need to do this installation if you have version 5.1 or lower

Download these files

ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/surfreg
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/xhemireg
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mris_preproc
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/fsaverage_sym.tar.gz
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mult-comp-cor.tar.gz
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mri_convert.{linux,mac}
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mri_vol2vol.{linux,mac}
ftp://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/5.1.0/xhemi/mri_surf2surf.{linux,mac}

Copy surfreg, xhemireg, mris_preproc into $FREESURFER_HOME/bin
Copy mri_convert.{linux,mac} into $FREESURFER_HOME/bin/mri_convert
Copy mri_vol2vol.{linux,mac} into $FREESURFER_HOME/bin/mri_vol2vol

# Untar fsaverage_sym.tar.gz into your $SUBJECTS_DIR
cd $SUBJECTS_DIR
tar xvfz fsaverage_sym.tar.gz

# Untar mult-comp-cor.tar.gz into $FREESURFER_HOME/average
cd $FREESURFER_HOME/average
tar xvfz mult-comp-cor.tar.gz

# Copy mris_preproc into $FREESURFER_HOME/bin after making a backup

1.2. Apply an existing atlas (fsaverage_sym) in a group study

# Reg to atlas (1-2 hours per subject)
# Creates $subject/xhemi
# Creates lh.fsaverage_sym.sphere.reg in $subject and $subject/xhemi

foreach subject (subjectlist)
  surfreg --s $subject --t fsaverage_sym --lh
  surfreg --s $subject --t fsaverage_sym --lh --xhemi
end

Though the right hemisphere is not explicitly listed above, it is implied by --lh --xhemi. It is possible to run the above commands with --rh, but there is no need to do so unless you are trying to evaluate the bias the procedure. If this is something you choose to do, you can run the first command before the above two commands finish, but wait to run the 2nd (--xhemi) command until the lh --hemi command has finished.

# Create a stack of subjects

mris_preproc --target fsaverage_sym --hemi lh 
  --xhemi --paired-diff \
  --srcsurfreg fsaverage_sym.sphere.reg \
  --meas thickness \
  --out lh.lh-rh.thickness.sm00.mgh \
  --s subj1 --s subj2 ...

# Smooth. This example smooths by 10mm on the surface. This is only an example and your data might be better off being smoothed more or less. There is no way to determine what the optimal smoothing level is. Note that smoothing is always done on the lh of fsaverage_sym.

mris_fwhm --s fsaverage_sym --hemi lh --cortex --smooth-only --fwhm 10\
 --i lh.lh-rh.thickness.sm00.mgh --o lh.lh-rh.thickness.sm10.mgh

# Analyze. Note that glmfit is always done on the lh of fsaverage_sym.

mri_glmfit --y lh.lh-rh.thickness.sm10.mgh --glmdir glm.lh.lh-rh.thickness.sm10 \
 --osgm --surf fsaverage_sym lh 

# View. Note that viewing is always done on the lh of fsaverage_sym.

tksurfer fsaverage_sym lh inflated -aparc -overlay glm.lh.lh-rh.thickness.sm10/osgm/sig.mgh

# Correct for multiple comparisons

mri_glmfit-sim --glmdir glm.lh.lh-rh.thickness.sm10 \
   --cwpvalthresh .5 --cache 2 abs

1.3. Apply an existing atlas (fsaverage_sym) to an overlay of an individual

Map the left hemi to fsaverage_sym left hemi

mris_apply_reg --src lh.map.mgh --trg lh.map.lh.fsaverage_sym.mgh 
--streg $SUBJECTS_DIR/subject/surf/lh.fsaverage_sym.sphere.reg  
        $FREESURFER_HOME/subjects/fsaverage_sym/surf/lh.sphere.reg

Map the right hemi to fsaverage_sym left hemi. Note that it is not using the above command changing lh and rh. Instead, lh.fsaverage_sym.mgh is still used, but it is the one in the xhemi folder (which means that it is rh). All further commands using rh.map.lh.fsaverage_sym.mgh (eg, smoothing with mris_fwhm or mri_surf2surf) should use the left hemi (lh) of fsaverage_sym and not the right hemi.

mris_apply_reg --src rh.map.mgh --trg rh.map.lh.fsaverage_sym.mgh 
   --streg $SUBJECTS_DIR/subject/xhemi/surf/lh.fsaverage_sym.sphere.reg  
           $FREESURFER_HOME/subjects/fsaverage_sym/surf/lh.sphere.reg

You now how lh.map and rh.map on the lh of fsaverage_sym (and so in vertex-for-vertex alignment). You can look at with with

tksurferfv fsaverage_sym lh inflated -aparc -ov lh.map.lh.fsaverage_sym.mgh -ov rh.map.lh.fsaverage_sym.mgh

These will be two different overlays (lh and rh), so one does not expect them to be identical.

1.4. Map the right hemisphere of an individual to the left of same person

Thickness map

cd $SUBJECTS_DIR/subject
mris_apply_reg --src surf/rh.thickness --trg rh-on-lh.thickness.mgh \
  --streg xhemi/surf/lh.fsaverage_sym.sphere.reg surf/lh.fsaverage_sym.sphere.reg 

rh-on-lh.thickness.mgh will be the right hemisphere thickenss sampled onto the left hemisphere.

Map a label

cd $SUBJECTS_DIR/subject
mris_apply_reg --src-label label/rh.V1_exvivo.thresh.label --trg rh-on-lh.V1_exvivo.thresh.label \
--streg xhemi/surf/lh.fsaverage_sym.sphere.reg surf/lh.fsaverage_sym.sphere.reg 

rh-on-lh.V1_exvivo.thresh.label is now a label on the right hemisphere

1.5. Build Your Own Atlas

# Create xhemi subject (don't reg, a few minutes to finish)

foreach subject (subjectlist)
  xhemireg --s $subject
end

# Reg to existing sym atlas # Note: if you want test how symmetrical the atlas is use --lhrh # (but it takes twice as long)

foreach subject (subjectlist)
  surfreg --s $subject --t fsaverage_sym --lh
  surfreg --s $subject --t fsaverage_sym --xhemi --lh
end

# Make first iteration (<5min)

make_average_subject --out myatlas.i1 \
  --surf-reg fsaverage_sym.sphere.reg \
  --subjects subjectlist \
  --xhemi \
  --no-vol --template-only 

# Reg to first iteration # Note: if you want test the symmetry, use --lhrh

foreach subject (subjectlist)
  surfreg --s $subject --t myatlas.i1 --lh
  surfreg --s $subject --t myatlas.i1 --xhemi --lh
end

# Make second iteration (<5min)

make_average_subject --out myatlas.i2 \
  --surf-reg myatlas.i1.sphere.reg \
  --subjects subjectlist \
  --xhemi \
  --no-vol --template-only 

# Reg to second iteration. Note: if you want test the symmetry, use --lhrh

foreach subject (subjectlist)
  surfreg --s $subject --t myatlas.i2 --lh
  surfreg --s $subject --t myatlas.i2 --xhemi --lh
end

# Note: you may need to iterate "many" times to reach convergence. How many is "many"? Not sure, but in the above publication is was about 30 times. Probably overkill.

# Make final iteration (1-2 hours)

 make_average_subject --out myatlas.i3 \
  --surf-reg myatlas.i2.sphere.reg \
  --subjects subjectlist \
  --xhemi --lh

Xhemi (last edited 2025-06-03 10:54:09 by DougGreve)