Hi

I have looked at QAtools at

https://surfer.nmr.mgh.harvard.edu/fswiki/QATools. 

But there seem to be some trouble. I have fixed up the wrong file issue
but there is problem with my files being in the wrong order. Should I
try to reorder the files to reflect the new situation or is there
something wrong with my processing of recon-all.

Knut J





mri/transforms/talairach.xfm        mri/rawavg.mgz
mri/rawavg.mgz        mri/orig.mgz
mri/orig.mgz        mri/nu.mgz
mri/transforms/talairach.auto.xfm        mri/transforms/talairach.auto.xfm
mri/nu.mgz        mri/transforms/talairach.xfm
..........        .........
..........        .........
..........        .........
14 outputfiles_NOTOK

#!/bin/csh -ef
# original by Vasanth Pappu

set subjects = ();
set Details = 0;
set missing_outputfiles = 0;
goto parse_args;
parse_args_return:

goto check_params;
check_params_return:

# ---
echo "In output_file_checker"
if ($Details) echo "SUBJECTS_DIR is $SUBJECTS_DIR "
if ($Details) echo ""
#sleep 2;

foreach s ($subjects)

pushd $SUBJECTS_DIR/$s > /dev/null

# first find out the number of 0??.mgz files
#set zerozeroMGZfiles = `ls -1rt mri/orig/0??.mgz`
set zerozeroMGZfiles = `ls -1rt $SUBJECTS_DIR/$s/mri/orig/* | egrep 
"0[0-9][0-9].mgz"`


# then attach rest of files
set files69 = (mri/rawavg.mgz mri/orig.mgz mri/nu.mgz 
mri/transforms/talairach.auto.xfm mri/transforms/talairach.xfm mri/T1.mgz 
mri/brainmask.auto.mgz mri/brainmask.mgz mri/transforms/talairach.lta 
mri/norm.mgz mri/transforms/talairach.m3z 
mri/transforms/talairach.m3z.inv.x.mgz mri/transforms/talairach.m3z.inv.y.mgz 
mri/transforms/talairach.m3z.inv.z.mgz mri/nu_noneck.mgz 
mri/transforms/talairach_with_skull.lta mri/aseg.auto.mgz mri/aseg.mgz 
stats/aseg.stats mri/brain.mgz mri/brain.finalsurfs.mgz mri/wm.seg.mgz 
mri/wm.asegedit.mgz mri/wm.mgz mri/filled.mgz scripts/ponscc.cut.log 
surf/lh.orig.nofix surf/lh.smoothwm.nofix surf/lh.inflated.nofix 
surf/lh.qsphere.nofix surf/lh.orig surf/lh.white surf/lh.curv surf/lh.area 
surf/lh.pial surf/lh.thickness surf/lh.smoothwm surf/lh.sulc surf/lh.inflated 
mri/lh.ribbon.mgz surf/lh.sphere surf/lh.sphere.reg surf/rh.sphere.reg 
surf/lh.avg_curv label/lh.aparc.annot stats/lh.aparc.stats 
label/lh.aparc.a2009s.annot surf/rh.orig.nofix surf/rh.smoothwm.nofix 
surf/rh.inflated.nofix surf/rh.qsphere.nofix surf/rh.orig surf/rh.white 
surf/rh.curv surf/rh.area surf/rh.pial surf/rh.thickness surf/rh.smoothwm 
surf/rh.sulc surf/rh.inflated mri/rh.ribbon.mgz surf/rh.sphere 
surf/rh.sphere.reg  surf/rh.avg_curv label/rh.aparc.annot stats/rh.aparc.stats 
label/rh.aparc.a2009s.annot mri/aparc+aseg.mgz) 
# original output_file_order_file: 
/space/boba/1/users/nrecon/scripts//output_file_order_file1
#set output_file_order_file = 
/space/boba/1/users/nrecon/scripts/output_file_order_file1
echo "checking if output file order file is set..."
if( $?output_file_order_file ) then
    set files_in_order = (`cat $output_file_order_file`);
else
    echo "output_file_order_file not specified, using default order"
    set files_in_order = (`echo $files69`)
endif

set files70plus = "${zerozeroMGZfiles} $files_in_order"
if ($Details) echo "checking these files: "
if ($Details) echo "${files70plus}"

# list the files/check to see all files exist
# check to see if all files exist
echo "check to see if all files exist..."
set commonOrder = ($files70plus)
foreach f ($commonOrder)
    if (! -e $f) then
        echo "$s missing output files"
        if ($Details) echo "$s has no $f"
        set missing_outputfiles = 1;
        goto theend;
    endif 
end 
set realOrder = `ls -1rt $files70plus`


# check if both lists are same size
if ($#realOrder == $#commonOrder) then 
    if ($Details) echo "found $#realOrder files ..."
else
    echo "ERROR: some files are missing."
    exit 1;
endif



# check list against common order
set ok = 1;
set x = 1;
set nextx = 2;
@ realOrder_plus1 = $#realOrder + 1;
if ($Details) echo "realOrder_plus1 is $realOrder_plus1"
#foreach x (`seq 1 $#realOrder`)
while ($x < $realOrder_plus1)
    #if ($Details) echo "x is $x" 
    #sleep 1;
    #echo "looking at commonOrder[$x] is $commonOrder[$x]"
    if ($realOrder[$x] == $commonOrder[$x]) then
        if ($Details) echo "$realOrder[$x] last modified `stat -c %y 
$realOrder[$x]`"
        @ x = $x + 1; @ nextx = $nextx + 1;
        continue;
    # some exceptions (files that are generated in the same step that may have 
very close date stamps)
    else if ($commonOrder[$x] == "mri/filled.mgz" && $realOrder[$x] == 
"scripts/ponscc.cut.log" && $commonOrder[$nextx] == "scripts/ponscc.cut.log" && 
$realOrder[$nextx] == "mri/filled.mgz") then
        if ($Details) echo "$realOrder[$x] last modified `stat -c %y 
$realOrder[$x]`"
        if ($Details) echo "$realOrder[$nextx] last modified `stat -c %y 
$realOrder[$nextx]`"
        @ x = $x + 2; @ nextx = $nextx + 2;
        continue;
    else
        if ($Details) echo "ERROR: order is not commmon order: stopped at 
$realOrder[$x], should be $commonOrder[$x] ..."
        
        @ a = $x - 2; 
        @ z = $x + 4;
        if ($Details) echo "real order:         common order:"
        if ($Details) echo "..........          ........."
        if ($Details) echo "..........          ........."
        if ($Details) echo "..........          ........."
        foreach az (`seq $a $z`)
            if ($Details) echo "$realOrder[$az]         $commonOrder[$az]"
        end
        if ($Details) echo "..........          ........."
        if ($Details) echo "..........          ........."
        if ($Details) echo "..........          ........."
        set ok = 0;
        break;
    endif
    @ x = $x + 1; @ nextx = $nextx + 1;
end





if ($ok) then
    if ($Details) echo ""
    if ($Details) echo "real file order agrees with common file order"
    echo "$s outputfiles_OK"
else
    echo "$s outputfiles_NOTOK"
endif 

theend:

popd > /dev/null


end










exit 0;


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

  set flag = $argv[1]; shift;

  switch($flag)

    case "-s":
    case "-subjid":
        if ( $#argv == 0) goto arg1err;
        set proceed = 1;
        while ( $#argv != 0 && $proceed )
            set subjects = ($subjects $argv[1]); shift;
            if ( $#argv != 0 ) then
                set proceed = `echo "$argv[1]" | gawk '{ if (substr($1, 1, 1) 
== "-") {print "0"} else {print "1"} }'`;
            endif
        end
      breaksw

    case "-sf":
      if ( $#argv == 0) goto arg1err;
      set subjects = `cat $argv[1]`; shift;
      breaksw

    case "-outputfileorderfile"
        set output_file_order_file = $argv[1]; shift;
      breaksw

    case "-details":
        set Details = 1;
      breaksw

    case "-summary":
        set Details = 0;
      breaksw

    

    # ----

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

end
goto parse_args_return;



############--------------##################
############--------------##################
check_params:
    if($#subjects == 0) then
        echo "USAGE ERROR: must specify a subjid"
        exit 1;
    endif
goto check_params_return;
############--------------##################


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





##############--------------##################
##############--------------##################
usage_err:
  echo "USAGE: flags:"
  echo "    "
  echo "-s"
  echo "-subjid"
  echo "-sf"
  echo "        a file of a list of subjects"
  echo "-outputfileorderfile"
  echo "        the file which has the order of the output files"
  echo "-details"
  echo "-summary"
  exit 1
##############--------------##################
##############--------------##################

_______________________________________________
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