The wm-anat-snr script (attached in case you don't have it) is good at picking out cases with motion-related noise. You get one number for each subject, and you can then do a statistical comparison between groups on that one number.
doug


On 03/18/2013 03:06 AM, Dusan Hirjak wrote:
Dear FreeSurfer experts,

we did a FreeSurfer-Analysis of cortical thickness in schizophrenia patients with motor abnormalities and found significant changes of cortical thickness in many brain regions. The Qdec p-maps showed many clusters (regions) with "surface" size exceeding 100mm2. We used a 15mm FWHM smoothing.

Does anabody have an idea if there is a reasonable neurobiological/ontological basis/explanation for this finding?

What is the exact size of M1 and SMA in mm2?


Thank you for your time!


Dusan



_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer

--
Douglas N. Greve, Ph.D.
MGH-NMR Center
gr...@nmr.mgh.harvard.edu
Phone Number: 617-724-2358
Fax: 617-726-7422

Bugs: surfer.nmr.mgh.harvard.edu/fswiki/BugReporting
FileDrop: www.nmr.mgh.harvard.edu/facility/filedrop/index.html
Outgoing: ftp://surfer.nmr.mgh.harvard.edu/transfer/outgoing/flat/greve/

#!/bin/tcsh -f

set VERSION = '$Id: wm-anat-snr,v 1.2 2011/01/21 23:11:47 greve Exp $';
set inputargs = ($argv);

set subject = ();
set datfile = ();
set datfilespeced = 0;
set LF = ();
set tmpdir = ();
set nWMErode = 3;
set UpdateOnly = 1;
set cleanup = 1;
set PrintHelp = 0;

if($#argv == 0) goto usage_exit;
set n = `echo $argv | egrep -e -version | wc -l`
if($n != 0) then
  echo $VERSION
  exit 0;
endif
set n = `echo $argv | egrep -e -help | wc -l`
if($n != 0) then
  set PrintHelp = 1;
  goto usage_exit;
endif

goto parse_args;
parse_args_return:
goto check_params;
check_params_return:

set apas = $SUBJECTS_DIR/$subject/mri/aparc+aseg.mgz
if(! -e $apas) then
  echo "ERROR: cannot find $apas" 
  exit 1;
endif
set norm = $SUBJECTS_DIR/$subject/mri/norm.mgz
if(! -e $norm) then
  echo "ERROR: cannot find $norm" 
  exit 1;
endif
if($#datfile == 0) set datfile = 
$SUBJECTS_DIR/$subject/stats/wmsnr.e$nWMErode.dat

set outdir = `dirname $datfile`
mkdir -p $outdir
if($status) exit 1;
if(! -w $outdir) then
  echo "ERROR: cannot write to $outdir"
  exit 1;
endif

set UpdateNeeded = 1;
if(-e $datfile && $UpdateOnly) then
  # Check contingencies
  set UpdateNeeded = `UpdateNeeded $datfile $apas $norm`
endif
if($UpdateNeeded == 0) then
  echo "Output file is up-to-date for $subject"
  exit 0;
endif

if($datfilespeced) set LF = $datfile.log
if($#LF == 0) set LF = $SUBJECTS_DIR/$subject/scripts/wmsnr.log
rm -f $LF

date | tee -a $LF
echo "" | tee -a $LF
echo "setenv SUBJECTS_DIR $SUBJECTS_DIR" | tee -a $LF
echo "cd `pwd`"  | tee -a $LF
echo $0 $inputargs | tee -a $LF
echo "" | tee -a $LF
echo "subject $subject" | tee -a $LF
echo $FREESURFER_HOME   | tee -a $LF
cat $FREESURFER_HOME/build-stamp.txt | tee -a $LF
uname -a | tee -a $LF
echo $VERSION | tee -a $LF
echo UpdateOnly $UpdateOnly | tee -a $LF

if($datfilespeced) set tmpdir = $outdir/tmp.wm-anat-snr.$$ 
if($#tmpdir == 0) set tmpdir = $SUBJECTS_DIR/$subject/tmp
mkdir -p $tmpdir

set wme = $tmpdir/wmeroded.mgh
set cmd = (mri_binarize --i $apas --o $wme --erode $nWMErode \
   --match 2 41 7 46 251 252 253 254 255 77 78 79)
echo $cmd | tee -a $LF
$cmd | tee -a $LF
if($status) exit 1;

set sumfile = $tmpdir/wmeroded.sum
set cmd = (mri_segstats --snr --seg $wme --sum $sumfile \
  --i $norm --excludeid 0)
echo $cmd | tee -a $LF
$cmd | tee -a $LF
if($status) exit 1;

set stats = (`cat $sumfile | grep -v \#`)
echo $stats
set nvox = $stats[3];
set mean = $stats[6];
set std  = $stats[7];
set snr  = $stats[11];

printf "%-15s %5.2f   %6.2f %5.2f %6d  %2d\n" \
   $subject $snr $mean $std $nvox $nWMErode | tee $datfile | tee -a $LF

if($cleanup) rm -r $tmpdir

date | tee -a $LF
echo "wm-anat-snr done" | tee -a $LF

exit 0
###################################################

############--------------##################
parse_args:
set cmdline = ($argv);
while( $#argv != 0 )

  set flag = $argv[1]; shift;

  switch($flag)

    case "--s":
      if ( $#argv < 1) goto arg1err;
      set subject = $argv[1]; shift;
      breaksw

    case "--o":
      if ( $#argv < 1) goto arg1err;
      set datfile = $argv[1]; shift;
      set datfilespeced = 1;
      breaksw

    case "--nerode":
      if ( $#argv < 1) goto arg1err;
      set nWMErode = $argv[1]; shift;
      breaksw

    case "--tmp":
    case "--tmpdir":
      if ( $#argv < 1) goto arg1err;
      set tmpdir = $argv[1]; shift;
      set cleanup = 0;
      breaksw

    case "--no-cleanup":
    case "--nocleanup":
      set cleanup = 0;
      breaksw
    case "--cleanup":
      set cleanup = 1;
      breaksw

    case "--force":
      set UpdateOnly = 0;
      breaksw

    case "--debug":
      set verbose = 1;
      set echo = 1;
      breaksw

    default:
      echo ERROR: Flag $flag unrecognized.
      echo $cmdline
      exit 1
      breaksw
  endsw

end

goto parse_args_return;
############--------------##################

############--------------##################
check_params:

  if($#subject == 0) then
    echo "ERROR: must spec a subject id"
    exit 1;
  endif
  if(! -e $SUBJECTS_DIR/$subject) then
    echo "ERROR: cannot find $subject in $SUBJECTS_DIR"
    exit 1;
  endif

goto check_params_return;
############--------------##################

############--------------##################
arg1err:
  echo "ERROR: flag $flag requires one argument"
  exit 1
############--------------##################

############--------------##################
arg2err:
  echo "ERROR: flag $flag requires two arguments"
  exit 1
############--------------##################

############--------------##################
usage_exit:
  echo ""
  echo "wm-anat-snr "
  echo ""
  echo "   --s subject  : FreeSurfer subject name"
  echo ""
  echo "   --force : force analysis even if output is up-to-date"
  echo "   --o datfile  : output file"
  echo "   --nerode N   : number of erodes of the WM mask"
  echo "   --tmp tmpdir : temporary directory"
  echo "   --cleanup    : delete tmpdir (default)"
  echo "   --no-cleanup : do not delete tmpdir (default)"
  echo "   --help       : print help and exit"
  echo ""

  if($PrintHelp) \
  cat $0 | awk 'BEGIN{prt=0}{if(prt) print $0; if($1 == "BEGINHELP") prt = 1 }'

exit 1;

#---- Everything below here is printed out as part of help -----#
BEGINHELP

Measures the anatomical SNR in white matter (WM). This can be used as
a quality assurance (QA) metric. This metric is experimental and may 
change in the future.

Simply run:  wm-anat-snr --s subject

The WM is determined from the aparc+aseg.mgz automatic segmentation as
voxels with the following indices: 2 41 7 46 251 252 253 254 255 77 78
79. The last three are WM hypointensities.  A mask is made from these
voxels and then eroded by 3 voxels (controlled by --nerode). The mean
and standard deviation (measured over space) of the norm.mgz is
computed within this mask.  The snr is then computed as the
mean/stddev. The output is put in stats/wmsnr.e3.dat (e3 is for erode
by 3, so the name will change if you change the number of erodes). The
output file contains 6 columns:

1. subject name
2. SNR
3. Mean WM intensity
4. Standard deviation of WM intensity
5. Number of voxels in the mask after erosion
6. Number of erodes

Typical values are 15-20. Subjects with less than 15 should be
scrutinized. SNR values may be low because of several factors,
including motion, imperfect intensity inhomogeneity correction, high
background noise, some scanner artifact, a failure in the FreeSurfer
analysis, or some other reason. It might also be low because the
subject biologically has a large range of intensities (eg, many
hypointensities).  Note that a low SNR does not necessarily mean that
the data are bad, and a high SNR does not necessarily mean that
everything is ok.

By default, this program will not re-run an analysis unless the
output file is older than the aparc+aseg.mgz or the norm.mgz. To
force re-analysis, run with --force.

After running on a group of subjects, you can run

cd $SUBJECTS_DIR
cat */stats/wmsnr.e3.dat | sort -k 2 -n 

To get a list of subjects sorted by the SNR.

_______________________________________________
Freesurfer mailing list
Freesurfer@nmr.mgh.harvard.edu
https://mail.nmr.mgh.harvard.edu/mailman/listinfo/freesurfer


The information in this e-mail is intended only for the person to whom it is
addressed. If you believe this e-mail was sent to you in error and the e-mail
contains patient information, please contact the Partners Compliance HelpLine at
http://www.partners.org/complianceline . If the e-mail was sent to you in error
but does not contain patient information, please contact the sender and properly
dispose of the e-mail.

Reply via email to