From 219c944c7940c914f9f67e5a0f1ede3545f57d7b Mon Sep 17 00:00:00 2001 From: Stephen Smith <steve@fmrib.ox.ac.uk> Date: Mon, 20 Feb 2006 12:04:45 +0000 Subject: [PATCH] CVS: ---------------------------------------------------------------------- --- Makefile | 4 +- doc/index.html | 8 ++-- lesions_0.1 | 6 +-- lesions_0.2 | 6 +-- lesions_0.3 | 6 +-- siena | 70 ++++++++++++++-------------- siena_cal | 2 +- siena_diff.c | 2 +- siena_flow2tal => siena_flow2std | 20 ++++---- sienax | 78 ++++++++++++++++---------------- 10 files changed, 102 insertions(+), 100 deletions(-) rename siena_flow2tal => siena_flow2std (66%) diff --git a/Makefile b/Makefile index a454d9b..8b59d6f 100644 --- a/Makefile +++ b/Makefile @@ -14,13 +14,15 @@ GT_OBJS = groupttest.o XFILES = siena_diff surface_norm cylsamp groupttest -SCRIPTS = siena siena_flirt siena_cal sienax siena_flow2tal +SCRIPTS = siena siena_flirt siena_cal sienax siena_flow2std all: ${XFILES} docscripts # DON'T REMOVE THE -O0!!!! siena_diff doesn't work with optimisation siena_diff: siena_diff.c $(CC) $(CFLAGS) -O0 -DFDT="float" -o siena_diff siena_diff.c $(LDFLAGS) $(LIBS) +siena_diffCC: siena_diff.cc + ${CXX} $(LDFLAGS) -o $@ ${SN_OBJS} ${LIBCC} surface_norm: ${SN_OBJS} ${CXX} ${LDFLAGS} -o $@ ${SN_OBJS} ${LIBCC} diff --git a/doc/index.html b/doc/index.html index c3a2ba0..1191c06 100644 --- a/doc/index.html +++ b/doc/index.html @@ -463,7 +463,7 @@ significantly with age or disease progression. <LI> Run <br><code>siena A B</code><br> on all subjects' two-timepoints data (here <code>A</code> and <code>B</code>). -<LI> For each subject run <br><code>siena_flow2tal A B</code><br> - +<LI> For each subject run <br><code>siena_flow2std A B</code><br> - this runs flirt to generate the transform to standard space (if it doesn't already exist), takes the edge flow (atrophy) image generated by <code>siena</code>, dilates this several times (to "thicken" this edge @@ -471,15 +471,15 @@ flow image), transforms to standard space, and masks with a standard space edge mask. It then smooths this with a Gaussian filter of half-width 10mm before remasking; you may want to edit this or even remove this step - find the call to <code>ip</code> in -$FSLDIR/bin/siena_flow2tal and change the <code>10</code> or just remove +$FSLDIR/bin/siena_flow2std and change the <code>10</code> or just remove that line. <LI> All subjects will now have an edge flow image in standard edge -space called <code>A_to_B_flow_to_tal</code>. Merge these into a single 4D +space called <code>A_to_B_flow_to_std</code>. Merge these into a single 4D image; for example, if each subject's analysis has so far been carried out in a subdirectory called siena_subject_*, where the * could be subject ID or name, use a command such as:<br><code> -avwmerge -t flow_all_subjects `imglob -oneperimage siena_subject_*/A_to_B_flow_to_tal*`</code><br> +avwmerge -t flow_all_subjects `imglob -oneperimage siena_subject_*/A_to_B_flow_to_std*`</code><br> Note: it is very important that the order that the subjects appear in this command matches the order you intend when you then create the diff --git a/lesions_0.1 b/lesions_0.1 index fa88ede..fd0e70b 100755 --- a/lesions_0.1 +++ b/lesions_0.1 @@ -37,12 +37,12 @@ ${FSLDIR}/bin/bet $1 $1_brain -m ${FSLDIR}/bin/fast -e -ov $1_brain # register t1 to standard space and invert transform -${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in $1_brain -omat $1_brain_2_tal.mat -${FSLDIR}/bin/convert_xfm -inverse -omat tal_2_$1_brain.mat $1_brain_2_tal.mat +${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in $1_brain -omat $1_brain_2_std.mat +${FSLDIR}/bin/convert_xfm -inverse -omat std_2_$1_brain.mat $1_brain_2_std.mat # dilate (6mm) standard space structural segmentation, bring into t1 space and re-binarise ${FSLDIR}/bin/avwmaths ${FSLDIR}/etc/standard/avg152T1_strucseg -thr 3.5 -bin -dil -dil -dil strucseg_2_$1_brain -${FSLDIR}/bin/flirt -in strucseg_2_$1_brain -ref $1_brain -out strucseg_2_$1_brain -applyxfm -init tal_2_$1_brain.mat +${FSLDIR}/bin/flirt -in strucseg_2_$1_brain -ref $1_brain -out strucseg_2_$1_brain -applyxfm -init std_2_$1_brain.mat ${FSLDIR}/bin/avwmaths strucseg_2_$1_brain -bin strucseg_2_$1_brain # produce t1-derived CSF mask and also dilate in-plane: 5 voxels outside central mask, 1 voxel inside mask diff --git a/lesions_0.2 b/lesions_0.2 index af2f7af..a2c204c 100755 --- a/lesions_0.2 +++ b/lesions_0.2 @@ -53,12 +53,12 @@ ${FSLDIR}/bin/bet $A ${A}_brain -m ${FSLDIR}/bin/fast -e -ov ${A}_brain # register t1 to standard space and invert transform -${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_brain_2_tal.mat -${FSLDIR}/bin/convert_xfm -inverse -omat tal_2_${A}_brain.mat ${A}_brain_2_tal.mat +${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_brain_2_std.mat +${FSLDIR}/bin/convert_xfm -inverse -omat std_2_${A}_brain.mat ${A}_brain_2_std.mat # dilate (6mm) standard space ventricles+deep-grey, bring into t1 space and re-binarise to make "CENTRAL MASK" ${FSLDIR}/bin/avwmaths ${FSLDIR}/etc/standard/avg152T1_strucseg -thr 3.5 -bin -dil -dil -dil strucseg_2_${A}_brain -${FSLDIR}/bin/flirt -in strucseg_2_${A}_brain -ref ${A}_brain -out strucseg_2_${A}_brain -applyxfm -init tal_2_${A}_brain.mat +${FSLDIR}/bin/flirt -in strucseg_2_${A}_brain -ref ${A}_brain -out strucseg_2_${A}_brain -applyxfm -init std_2_${A}_brain.mat ${FSLDIR}/bin/avwmaths strucseg_2_${A}_brain -bin strucseg_2_${A}_brain # produce t1-derived CSF mask and also dilate in-plane: 5 voxels outside CENTRAL MASK, 1 voxel inside mask diff --git a/lesions_0.3 b/lesions_0.3 index 865209c..6273f26 100644 --- a/lesions_0.3 +++ b/lesions_0.3 @@ -54,12 +54,12 @@ ${FSLDIR}/bin/bet $A ${A}_brain -m ${FSLDIR}/bin/fast -e -ov ${A}_brain # register t1 to standard space and invert transform -${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_brain_2_tal.mat -${FSLDIR}/bin/convert_xfm -inverse -omat tal_2_${A}_brain.mat ${A}_brain_2_tal.mat +${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_brain_2_std.mat +${FSLDIR}/bin/convert_xfm -inverse -omat std_2_${A}_brain.mat ${A}_brain_2_std.mat # dilate (6mm) standard space ventricles+deep-grey, bring into t1 space and re-binarise to make "CENTRAL MASK" ${FSLDIR}/bin/avwmaths ${FSLDIR}/etc/standard/avg152T1_strucseg -thr 3.5 -bin -dil -dil -dil strucseg_2_${A}_brain -${FSLDIR}/bin/flirt -in strucseg_2_${A}_brain -ref ${A}_brain -out strucseg_2_${A}_brain -applyxfm -init tal_2_${A}_brain.mat +${FSLDIR}/bin/flirt -in strucseg_2_${A}_brain -ref ${A}_brain -out strucseg_2_${A}_brain -applyxfm -init std_2_${A}_brain.mat ${FSLDIR}/bin/avwmaths strucseg_2_${A}_brain -bin strucseg_2_${A}_brain # produce t1-derived CSF mask and also dilate in-plane: 5 voxels outside CENTRAL MASK, 1 voxel inside mask diff --git a/siena b/siena index b37dd38..f4e9b49 100755 --- a/siena +++ b/siena @@ -50,9 +50,9 @@ debug=0 betopts="" sdopts="" sdo="-m" -dotal=0 -talmask=0 -talroi="" +dostd=0 +stdmask=0 +stdroi="" origin3=37 # `avwval ${FSLDIR}/etc/standard/avg152T1 origin3` pixdim3=2 # `avwval ${FSLDIR}/etc/standard/avg152T1 pixdim3` @@ -75,20 +75,20 @@ while [ _$1 != _ ] ; do is_t2=" -s -t2" shift elif [ $1 = -m ] ; then - talmask=1 - dotal=1 + stdmask=1 + dostd=1 shift elif [ $1 = -t ] ; then - dotal=1 - talt=`echo $2 | sed 's/-/_/g'` - talt=`echo "10 k $talt $pixdim3 / $origin3 + p" | dc -` - talroi="$talroi -roi 0 1000000 0 1000000 0 $talt 0 1" + dostd=1 + stdt=`echo $2 | sed 's/-/_/g'` + stdt=`echo "10 k $stdt $pixdim3 / $origin3 + p" | dc -` + stdroi="$stdroi -roi 0 1000000 0 1000000 0 $stdt 0 1" shift 2 elif [ $1 = -b ] ; then - dotal=1 - talb=`echo $2 | sed 's/-/_/g'` - talb=`echo "10 k $talb $pixdim3 / $origin3 + p" | dc -` - talroi="$talroi -roi 0 1000000 0 1000000 $talb 1000000 0 1" + dostd=1 + stdb=`echo $2 | sed 's/-/_/g'` + stdb=`echo "10 k $stdb $pixdim3 / $origin3 + p" | dc -` + stdroi="$stdroi -roi 0 1000000 0 1000000 $stdb 1000000 0 1" shift 2 else Usage @@ -122,15 +122,15 @@ ${FSLDIR}/bin/flirt -in ${A}_valid_mask -ref $B -out ${A}_valid_mask_to_${B} -ap ${FSLDIR}/bin/avwmaths ${A}_valid_mask -mul ${B}_valid_mask_to_${A} ${A}_valid_mask_with_$B ${FSLDIR}/bin/avwmaths ${B}_valid_mask -mul ${A}_valid_mask_to_${B} ${B}_valid_mask_with_$A -if [ $dotal = 1 ] ; then +if [ $dostd = 1 ] ; then echo "" >> ${A}_to_${B}.siena echo "---------- standard space masking ----------------------------------" >> ${A}_to_${B}.siena - ${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_to_tal.mat >> ${A}_to_${B}.siena - ${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${B}_brain -omat ${B}_to_tal.mat >> ${A}_to_${B}.siena - ${FSLDIR}/bin/convert_xfm -inverse -omat ${A}_to_tal_inv.mat ${A}_to_tal.mat - ${FSLDIR}/bin/convert_xfm -inverse -omat ${B}_to_tal_inv.mat ${B}_to_tal.mat + ${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_to_std.mat >> ${A}_to_${B}.siena + ${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${B}_brain -omat ${B}_to_std.mat >> ${A}_to_${B}.siena + ${FSLDIR}/bin/convert_xfm -inverse -omat ${A}_to_std_inv.mat ${A}_to_std.mat + ${FSLDIR}/bin/convert_xfm -inverse -omat ${B}_to_std_inv.mat ${B}_to_std.mat - ${FSLDIR}/bin/convert_xfm -concat ${B}_to_tal_inv.mat -omat ${A}_to_${B}_tmp.mat ${A}_to_tal.mat + ${FSLDIR}/bin/convert_xfm -concat ${B}_to_std_inv.mat -omat ${A}_to_${B}_tmp.mat ${A}_to_std.mat RMSDIFF=`${FSLDIR}/bin/rmsdiff ${A}_to_${B}.mat ${A}_to_${B}_tmp.mat $A | sed 's/\..*$/ /g'` # last part makes it integer echo "rmsdiff for standard space transform is $RMSDIFF mm" >> ${A}_to_${B}.siena if [ $RMSDIFF -ge 10 ] ; then @@ -138,19 +138,19 @@ if [ $dotal = 1 ] ; then echo "Warning! Probably failed consistency check for standard-space registrations!" >> ${A}_to_${B}.siena fi - if [ $talmask = 1 ] ; then - ${FSLDIR}/bin/flirt -in ${FSLDIR}/etc/standard/avg152T1_brain_mask_dil2 -ref $A -out ${A}_talmask -applyxfm -init ${A}_to_tal_inv.mat - ${FSLDIR}/bin/flirt -in ${FSLDIR}/etc/standard/avg152T1_brain_mask_dil2 -ref $B -out ${B}_talmask -applyxfm -init ${B}_to_tal_inv.mat - ${FSLDIR}/bin/avwmaths ${A}_brain_mask -mas ${A}_talmask ${A}_brain_mask - ${FSLDIR}/bin/avwmaths ${B}_brain_mask -mas ${B}_talmask ${B}_brain_mask + if [ $stdmask = 1 ] ; then + ${FSLDIR}/bin/flirt -in ${FSLDIR}/etc/standard/avg152T1_brain_mask_dil2 -ref $A -out ${A}_stdmask -applyxfm -init ${A}_to_std_inv.mat + ${FSLDIR}/bin/flirt -in ${FSLDIR}/etc/standard/avg152T1_brain_mask_dil2 -ref $B -out ${B}_stdmask -applyxfm -init ${B}_to_std_inv.mat + ${FSLDIR}/bin/avwmaths ${A}_brain_mask -mas ${A}_stdmask ${A}_brain_mask + ${FSLDIR}/bin/avwmaths ${B}_brain_mask -mas ${B}_stdmask ${B}_brain_mask fi - if [ "$talroi" != "" ] ; then - ${FSLDIR}/bin/avwmaths ${FSLDIR}/etc/standard/avg152T1_brain_mask -mul 0 -add 1 $talroi ${A}_and_${B}_talmask - ${FSLDIR}/bin/flirt -in ${A}_and_${B}_talmask -ref $A -out ${A}_talmask -applyxfm -init ${A}_to_tal_inv.mat - ${FSLDIR}/bin/flirt -in ${A}_and_${B}_talmask -ref $B -out ${B}_talmask -applyxfm -init ${B}_to_tal_inv.mat - ${FSLDIR}/bin/avwmaths ${A}_valid_mask_with_$B -mul ${A}_talmask ${A}_valid_mask_with_$B - ${FSLDIR}/bin/avwmaths ${B}_valid_mask_with_$A -mul ${B}_talmask ${B}_valid_mask_with_$A + if [ "$stdroi" != "" ] ; then + ${FSLDIR}/bin/avwmaths ${FSLDIR}/etc/standard/avg152T1_brain_mask -mul 0 -add 1 $stdroi ${A}_and_${B}_stdmask + ${FSLDIR}/bin/flirt -in ${A}_and_${B}_stdmask -ref $A -out ${A}_stdmask -applyxfm -init ${A}_to_std_inv.mat + ${FSLDIR}/bin/flirt -in ${A}_and_${B}_stdmask -ref $B -out ${B}_stdmask -applyxfm -init ${B}_to_std_inv.mat + ${FSLDIR}/bin/avwmaths ${A}_valid_mask_with_$B -mul ${A}_stdmask ${A}_valid_mask_with_$B + ${FSLDIR}/bin/avwmaths ${B}_valid_mask_with_$A -mul ${B}_stdmask ${B}_valid_mask_with_$A fi fi @@ -181,18 +181,18 @@ if [ $debug = 0 ] ; then ${B}_brain.* ${B}_brain_mask.* ${B}_brain_skull.* \ ${A}_halfwayto_${B}.* ${A}_halfwayto_${B}_mask.* \ ${B}_halfwayto_${A}.* ${B}_halfwayto_${A}_mask.* \ - ${A}_halfwayto_${B}_talmask.* \ - ${B}_halfwayto_${A}_talmask.* \ + ${A}_halfwayto_${B}_stdmask.* \ + ${B}_halfwayto_${A}_stdmask.* \ ${A}_halfwayto_${B}_brain.* \ ${A}_halfwayto_${B}_brain_seg.* \ ${A}_to_${B}_flowneg.* \ ${B}_halfwayto_${A}_brain.* \ ${B}_halfwayto_${A}_brain_seg.* \ ${B}_to_${A}_flowneg.* \ - ${A}_talmask.* ${B}_talmask.* \ - ${A}_and_${B}_talmask.* \ + ${A}_stdmask.* ${B}_stdmask.* \ + ${A}_and_${B}_stdmask.* \ ${A}_valid_mask.* ${B}_valid_mask.* ${A}_valid_mask_to_${B}.* ${B}_valid_mask_to_${A}.* ${A}_valid_mask_with_$B.* ${B}_valid_mask_with_$A.* ${A}_halfwayto_${B}_valid_mask.* ${B}_halfwayto_${A}_valid_mask.* - /bin/rm -f ${A}_to_tal_inv.mat ${B}_to_tal_inv.mat ${A}_to_${B}_tmp.mat \ + /bin/rm -f ${A}_to_std_inv.mat ${B}_to_std_inv.mat ${A}_to_${B}_tmp.mat \ ${A}_halfwayto_${B}_brain.vol ${B}_halfwayto_${A}_brain.vol \ ${B}_to_${A}.mat_avscale fi diff --git a/siena_cal b/siena_cal index 71eb4d2..2b62cf9 100755 --- a/siena_cal +++ b/siena_cal @@ -72,7 +72,7 @@ $FSLDIR/bin/imrm sc${input}.* \ ${input}_halfwayto_sc${input}_brain.* \ ${input}_halfwayto_sc${input}_brain_seg.* \ ${input}_halfwayto_sc${input}_mask.* \ - ${input}_halfwayto_sc${input}_talmask.* \ + ${input}_halfwayto_sc${input}_stdmask.* \ sc${input}_halfwayto_${input}.* \ sc${input}_halfwayto_${input}_mask.* \ ${input}_to_sc${input}_flow.* \ diff --git a/siena_diff.c b/siena_diff.c index db3b36e..3176c42 100644 --- a/siena_diff.c +++ b/siena_diff.c @@ -27,7 +27,7 @@ void usage() printf("[-c <corr>] apply self-calibrating correction factor\n"); printf("[-e] erode joint mask a lot instead of dilating it slightly (ie find ventricle surface)\n"); printf("[-i] ignore flow in z (may be good if top of brain is missing)\n"); - printf("[-m] apply <input1_basename>_talmask to brain edge points\n"); + printf("[-m] apply <input1_basename>_stdmask to brain edge points\n"); /* printf("[-t <n>] ignore top n slices (may be good if top of brain is missing)\n");*/ /* printf("[-b <n>] ignore bottom n slices (may be good if top of brain is missing)\n");*/ printf("[-s <options>] <options> to be passed to segmentation (type \"fast\" to get these)\n\n"); diff --git a/siena_flow2tal b/siena_flow2std similarity index 66% rename from siena_flow2tal rename to siena_flow2std index 0296d4b..6ed198c 100755 --- a/siena_flow2tal +++ b/siena_flow2std @@ -1,6 +1,6 @@ #!/bin/sh -# siena_flow2tal - warp flow image into standard space +# siena_flow2std - warp flow image into standard space # # Stephen Smith, FMRIB Image Analysis Group # @@ -10,7 +10,7 @@ Usage() { - echo "Usage: siena_flow2tal <fileroot2> <fileroot2> [-d]" + echo "Usage: siena_flow2std <fileroot2> <fileroot2> [-d]" echo "-d : debug (don't delete intermediate files)" exit } @@ -37,25 +37,25 @@ for opts in $@ ; do done -# register to MNI152 if not already done, and create halfway2tal transform -if [ ! -f ${A}_to_tal.mat ] ; then +# register to MNI152 if not already done, and create halfway2std transform +if [ ! -f ${A}_to_std.mat ] ; then if [ `${FSLDIR}/bin/imtest ${A}_brain` = 0 ] ; then ${FSLDIR}/bin/bet $A ${A}_brain fi - ${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_to_tal.mat + ${FSLDIR}/bin/flirt -ref ${FSLDIR}/etc/standard/avg152T1_brain -in ${A}_brain -omat ${A}_to_std.mat fi ${FSLDIR}/bin/convert_xfm -omat ${A}_halfwayto_${B}_inv.mat -inverse ${A}_halfwayto_${B}.mat -${FSLDIR}/bin/convert_xfm -omat ${A}_halfwayto_${B}_to_tal.mat -concat ${A}_to_tal.mat ${A}_halfwayto_${B}_inv.mat +${FSLDIR}/bin/convert_xfm -omat ${A}_halfwayto_${B}_to_std.mat -concat ${A}_to_std.mat ${A}_halfwayto_${B}_inv.mat # dilate flow image, -> standard space -> mask with ss edge image -> blur -> remask ${FSLDIR}/bin/avwmaths ${A}_to_${B}_flow -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil ${A}_to_${B}_flow_dil ${FSLDIR}/bin/avwmaths ${B}_to_${A}_flow -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil -dil ${A}_to_${B}_flow_dilback ${FSLDIR}/bin/avwmaths ${A}_to_${B}_flow_dil -sub ${A}_to_${B}_flow_dilback -div 2 ${A}_to_${B}_flow_dil /bin/rm ${A}_to_${B}_flow_dilback* -${FSLDIR}/bin/flirt -in ${A}_to_${B}_flow_dil -ref ${FSLDIR}/etc/standard/avg152T1_brain -out ${A}_to_${B}_flow_to_tal -applyxfm -init ${A}_halfwayto_${B}_to_tal.mat -${FSLDIR}/bin/avwmaths ${A}_to_${B}_flow_to_tal -mas ${FSLDIR}/etc/standard/avg152T1_edges ${A}_to_${B}_flow_to_tal -${FSLDIR}/bin/ip ${A}_to_${B}_flow_to_tal ${A}_to_${B}_flow_to_tal 0 -s 10 -${FSLDIR}/bin/avwmaths ${A}_to_${B}_flow_to_tal -mas ${FSLDIR}/etc/standard/avg152T1_edges ${A}_to_${B}_flow_to_tal +${FSLDIR}/bin/flirt -in ${A}_to_${B}_flow_dil -ref ${FSLDIR}/etc/standard/avg152T1_brain -out ${A}_to_${B}_flow_to_std -applyxfm -init ${A}_halfwayto_${B}_to_std.mat +${FSLDIR}/bin/avwmaths ${A}_to_${B}_flow_to_std -mas ${FSLDIR}/etc/standard/avg152T1_edges ${A}_to_${B}_flow_to_std +${FSLDIR}/bin/ip ${A}_to_${B}_flow_to_std ${A}_to_${B}_flow_to_std 0 -s 10 +${FSLDIR}/bin/avwmaths ${A}_to_${B}_flow_to_std -mas ${FSLDIR}/etc/standard/avg152T1_edges ${A}_to_${B}_flow_to_std # cleanup if [ $debug = 0 ] ; then diff --git a/sienax b/sienax index 223b69b..01e737f 100755 --- a/sienax +++ b/sienax @@ -49,7 +49,7 @@ regional=0 betopts="" segopts="" nseg=3 -talroi="" +stdroi="" origin3=37 # `avwval ${FSLDIR}/etc/standard/avg152T1 origin3` pixdim3=2 # `avwval ${FSLDIR}/etc/standard/avg152T1 pixdim3` imtype=-t1 @@ -75,14 +75,14 @@ while [ _$1 != _ ] ; do imtype=-t2 shift elif [ $1 = -t ] ; then - talt=`echo $2 | sed 's/-/_/g'` - talt=`echo "10 k $talt $pixdim3 / $origin3 + p" | dc -` - talroi="$talroi -roi 0 1000000 0 1000000 0 $talt 0 1" + stdt=`echo $2 | sed 's/-/_/g'` + stdt=`echo "10 k $stdt $pixdim3 / $origin3 + p" | dc -` + stdroi="$stdroi -roi 0 1000000 0 1000000 0 $stdt 0 1" shift 2 elif [ $1 = -b ] ; then - talb=`echo $2 | sed 's/-/_/g'` - talb=`echo "10 k $talb $pixdim3 / $origin3 + p" | dc -` - talroi="$talroi -roi 0 1000000 0 1000000 $talb 1000000 0 1" + stdb=`echo $2 | sed 's/-/_/g'` + stdb=`echo "10 k $stdb $pixdim3 / $origin3 + p" | dc -` + stdroi="$stdroi -roi 0 1000000 0 1000000 $stdb 1000000 0 1" shift 2 elif [ $1 = -lm ] ; then lm=$2 @@ -104,54 +104,54 @@ echo "---------- extract brain --------------------------------------------" > ${FSLDIR}/bin/bet $I ${I}_brain -s $betopts >> ${I}.sienax echo "" >> ${I}.sienax -echo "---------- register to talairach space using brain and skull --------" >> ${I}.sienax +echo "---------- register to stdairach space using brain and skull --------" >> ${I}.sienax echo "(do not worry about histogram warnings)" >> ${I}.sienax -${FSLDIR}/bin/pairreg ${FSLDIR}/etc/standard/avg152T1_brain ${I}_brain ${FSLDIR}/etc/standard/avg152T1_skull ${I}_brain_skull ${I}2tal.mat >> ${I}.sienax 2>&1 -${FSLDIR}/bin/avscale ${I}2tal.mat ${FSLDIR}/etc/standard/avg152T1 > ${I}2tal.avscale -xscale=`grep Scales ${I}2tal.avscale | awk '{print $4}'` -yscale=`grep Scales ${I}2tal.avscale | awk '{print $5}'` -zscale=`grep Scales ${I}2tal.avscale | awk '{print $6}'` +${FSLDIR}/bin/pairreg ${FSLDIR}/etc/standard/avg152T1_brain ${I}_brain ${FSLDIR}/etc/standard/avg152T1_skull ${I}_brain_skull ${I}2std.mat >> ${I}.sienax 2>&1 +${FSLDIR}/bin/avscale ${I}2std.mat ${FSLDIR}/etc/standard/avg152T1 > ${I}2std.avscale +xscale=`grep Scales ${I}2std.avscale | awk '{print $4}'` +yscale=`grep Scales ${I}2std.avscale | awk '{print $5}'` +zscale=`grep Scales ${I}2std.avscale | awk '{print $6}'` vscale=`echo "10 k $xscale $yscale * $zscale * p"|dc -` echo "VSCALING $vscale" >> ${I}.sienax echo "" >> ${I}.sienax -echo "---------- mask with talairach mask ---------------------------------" >> ${I}.sienax -${FSLDIR}/bin/convert_xfm -inverse -omat ${I}2tal_inv.mat ${I}2tal.mat +echo "---------- mask with std mask ---------------------------------------" >> ${I}.sienax +${FSLDIR}/bin/convert_xfm -inverse -omat ${I}2std_inv.mat ${I}2std.mat MASK=${FSLDIR}/etc/standard/avg152T1_brain_mask_dil -if [ "$talroi" != "" ] ; then - ${FSLDIR}/bin/avwmaths $MASK $talroi ${I}_talmaskroi - MASK=${I}_talmaskroi +if [ "$stdroi" != "" ] ; then + ${FSLDIR}/bin/avwmaths $MASK $stdroi ${I}_stdmaskroi + MASK=${I}_stdmaskroi fi -${FSLDIR}/bin/flirt -in $MASK -ref ${I}_brain -out ${I}_talmask -applyxfm -init ${I}2tal_inv.mat -${FSLDIR}/bin/avwmaths ${I}_brain -mask ${I}_talmask ${I}_talmaskbrain +${FSLDIR}/bin/flirt -in $MASK -ref ${I}_brain -out ${I}_stdmask -applyxfm -init ${I}2std_inv.mat +${FSLDIR}/bin/avwmaths ${I}_brain -mask ${I}_stdmask ${I}_stdmaskbrain if [ $regional = 1 ] ; then - ${FSLDIR}/bin/flirt -in ${FSLDIR}/etc/standard/avg152T1_strucseg_periph -ref ${I}_brain -out ${I}_talmask_segperiph -applyxfm -init ${I}2tal_inv.mat + ${FSLDIR}/bin/flirt -in ${FSLDIR}/etc/standard/avg152T1_strucseg_periph -ref ${I}_brain -out ${I}_stdmask_segperiph -applyxfm -init ${I}2std_inv.mat ${FSLDIR}/bin/avwmaths ${FSLDIR}/etc/standard/avg152T1_strucseg -thr 4.5 -bin ${I}_tmpmask - ${FSLDIR}/bin/flirt -in ${I}_tmpmask -ref ${I}_brain -out ${I}_talmask_segvent -applyxfm -init ${I}2tal_inv.mat + ${FSLDIR}/bin/flirt -in ${I}_tmpmask -ref ${I}_brain -out ${I}_stdmask_segvent -applyxfm -init ${I}2std_inv.mat /bin/rm ${I}_tmpmask* fi echo "" >> ${I}.sienax echo "---------- segment tissue into types --------------------------------" >> ${I}.sienax if [ $nseg = 2 ] ; then - ${FSLDIR}/bin/fast -c 2 $imtype -e -ov $segopts ${I}_talmaskbrain >> ${I}.sienax 2>&1 + ${FSLDIR}/bin/fast -c 2 $imtype -e -ov $segopts ${I}_stdmaskbrain >> ${I}.sienax 2>&1 echo "" >> ${I}.sienax echo "---------- convert brain volume into normalised volume --------------" >> ${I}.sienax - S=`${FSLDIR}/bin/avwstats ${I}_talmaskbrain_pve_1 -m -v` + S=`${FSLDIR}/bin/avwstats ${I}_stdmaskbrain_pve_1 -m -v` xa=`echo $S | awk '{print $1}'` xb=`echo $S | awk '{print $3}'` brain=`echo "2 k $xa $xb * $vscale * p" | dc -` else if [ _$lm != _ ] ; then - ${FSLDIR}/bin/avwmaths_32R $lm -bin -mul -1 -add 1 -mul ${I}_talmaskbrain ${I}_talmaskbrain + ${FSLDIR}/bin/avwmaths_32R $lm -bin -mul -1 -add 1 -mul ${I}_stdmaskbrain ${I}_stdmaskbrain fi - ${FSLDIR}/bin/fast $imtype -e -ov $segopts ${I}_talmaskbrain >> ${I}.sienax 2>&1 + ${FSLDIR}/bin/fast $imtype -e -ov $segopts ${I}_stdmaskbrain >> ${I}.sienax 2>&1 if [ _$lm != _ ] ; then - ${FSLDIR}/bin/avwmaths_32R $lm -bin -max ${I}_talmaskbrain_pve_2 ${I}_talmaskbrain_pve_2 - ${FSLDIR}/bin/avwmaths_32SI $lm -bin -mul 3 -max ${I}_talmaskbrain_seg ${I}_talmaskbrain_seg + ${FSLDIR}/bin/avwmaths_32R $lm -bin -max ${I}_stdmaskbrain_pve_2 ${I}_stdmaskbrain_pve_2 + ${FSLDIR}/bin/avwmaths_32SI $lm -bin -mul 3 -max ${I}_stdmaskbrain_seg ${I}_stdmaskbrain_seg fi echo "" >> ${I}.sienax @@ -159,29 +159,29 @@ else echo "" >> ${I}.sienax echo "tissue volume unnormalised-volume" >> ${I}.sienax if [ $regional = 1 ] ; then - ${FSLDIR}/bin/avwmaths_32R ${I}_talmaskbrain_pve_1 -mas ${I}_talmask_segperiph ${I}_talmaskbrain_pve_1_segperiph - S=`${FSLDIR}/bin/avwstats ${I}_talmaskbrain_pve_1_segperiph -m -v` + ${FSLDIR}/bin/avwmaths_32R ${I}_stdmaskbrain_pve_1 -mas ${I}_stdmask_segperiph ${I}_stdmaskbrain_pve_1_segperiph + S=`${FSLDIR}/bin/avwstats ${I}_stdmaskbrain_pve_1_segperiph -m -v` xa=`echo $S | awk '{print $1}'` xb=`echo $S | awk '{print $3}'` uxg=`echo "2 k $xa $xb * 1 / p" | dc -` xg=`echo "2 k $xa $xb * $vscale * 1 / p" | dc -` echo "pgrey $xg $uxg (peripheral grey)" >> ${I}.sienax - ${FSLDIR}/bin/avwmaths_32R ${I}_talmaskbrain_pve_0 -mas ${I}_talmask_segvent ${I}_talmaskbrain_pve_0_segvent - S=`${FSLDIR}/bin/avwstats ${I}_talmaskbrain_pve_0_segvent -m -v` + ${FSLDIR}/bin/avwmaths_32R ${I}_stdmaskbrain_pve_0 -mas ${I}_stdmask_segvent ${I}_stdmaskbrain_pve_0_segvent + S=`${FSLDIR}/bin/avwstats ${I}_stdmaskbrain_pve_0_segvent -m -v` xa=`echo $S | awk '{print $1}'` xb=`echo $S | awk '{print $3}'` uxg=`echo "2 k $xa $xb * 1 / p" | dc -` xg=`echo "2 k $xa $xb * $vscale * 1 / p" | dc -` echo "vcsf $xg $uxg (ventricular CSF)" >> ${I}.sienax fi - S=`${FSLDIR}/bin/avwstats ${I}_talmaskbrain_pve_1 -m -v` + S=`${FSLDIR}/bin/avwstats ${I}_stdmaskbrain_pve_1 -m -v` xa=`echo $S | awk '{print $1}'` xb=`echo $S | awk '{print $3}'` ugrey=`echo "2 k $xa $xb * 1 / p" | dc -` ngrey=`echo "2 k $xa $xb * $vscale * 1 / p" | dc -` echo "GREY $ngrey $ugrey" >> ${I}.sienax - S=`${FSLDIR}/bin/avwstats ${I}_talmaskbrain_pve_2 -m -v` + S=`${FSLDIR}/bin/avwstats ${I}_stdmaskbrain_pve_2 -m -v` xa=`echo $S | awk '{print $1}'` xb=`echo $S | awk '{print $3}'` uwhite=`echo "2 k $xa $xb * 1 / p" | dc -` @@ -193,16 +193,16 @@ ubrain=`echo "2 k $uwhite $ugrey + 1 / p" | dc -` nbrain=`echo "2 k $nwhite $ngrey + 1 / p" | dc -` echo "BRAIN $nbrain $ubrain" >> ${I}.sienax -${FSLDIR}/bin/overlay 1 1 -c ${I} -a ${I}_talmaskbrain_seg 1.9 5 ${I}_render +${FSLDIR}/bin/overlay 1 1 -c ${I} -a ${I}_stdmaskbrain_seg 1.9 5 ${I}_render if [ $regional = 1 ] ; then - ${FSLDIR}/bin/overlay 1 1 -c ${I} -a ${I}_talmaskbrain_pve_1_segperiph 0.3 0.7 ${I}_periph_render - ${FSLDIR}/bin/overlay 1 1 -c ${I} -a ${I}_talmaskbrain_pve_0_segvent 0.3 0.7 ${I}_vent_render + ${FSLDIR}/bin/overlay 1 1 -c ${I} -a ${I}_stdmaskbrain_pve_1_segperiph 0.3 0.7 ${I}_periph_render + ${FSLDIR}/bin/overlay 1 1 -c ${I} -a ${I}_stdmaskbrain_pve_0_segvent 0.3 0.7 ${I}_vent_render fi if [ $debug = 0 ] ; then - /bin/rm -f `$FSLDIR/bin/imglob ${I}_brain* ${I}_talmask*` - /bin/rm -f ${I}2tal.avscale ${I}2tal_inv.mat + /bin/rm -f `$FSLDIR/bin/imglob ${I}_brain* ${I}_stdmask*` + /bin/rm -f ${I}2std.avscale ${I}2std_inv.mat fi echo "$nbrain" -- GitLab