diff --git a/Makefile b/Makefile index 14c1ffcdec646606d138678cb895024aa410d645..bd1ce77310d7471874bc2f22370b5157bbd5362f 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,7 @@ XFILES = avwcpgeom avwmerge avwnvols avwsplit \ avwstats avwcomplex avwstats++ avwfft avwmeants avwcheck avwswapdim avwconv avwslice avworient SCRIPTS = avwval avwchpixdim avwanimate sliceanimate avwsize avwinfo avwedithd avwchfiletype +FSCRIPTS = fmriborient RUNAVWS = avw2ascii avwmaths avwcc avwroi avwfill avwinterleave diff --git a/fmriborient b/fmriborient new file mode 100755 index 0000000000000000000000000000000000000000..ba5663f484da70d1806681dab85a510a72199546 --- /dev/null +++ b/fmriborient @@ -0,0 +1,110 @@ +#!/bin/sh + +if [ $# -lt 1 ] ; then + echo "$0 <list of files>" + echo " Fixes the orientation of all pre-3.2beta nifti1 files written in fmrib" + exit 1 +fi + + +FSLDIR=/usr/local/fsltest +export FSLDIR + +for fm in $@ ; do + stdspace=0; + if [ `$FSLDIR/bin/imtest $fm` = 1 ] ; then + fn=`$FSLDIR/bin/imglob $fm` + fb=`$FSLDIR/bin/remove_ext $fn` + if [ X`$FSLDIR/bin/avwval $fb descrip` != XFSL3.2beta ] ; then + + # make a backup copy and check to see if it copied OK (exit if not) + ftmp=`echo ${fn} | sed 's/.nii/_niifix.nii/'` + if [ X$ftmp = X$fn ] ; then + ftmp=${fn}_niifix + fi + /bin/cp -p $fn ${ftmp} + if [ `$FSLDIR/bin/imtest ${ftmp}` != 1 ] ; then + echo "FAIL 1" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + statsA=`$FSLDIR/bin/avwstats++ ${fb} -R -V` + statsB=`$FSLDIR/bin/avwstats++ ${ftmp} -R -V` + min=`echo $statsA | awk '{ print $1 }'` + mint=`echo $statsB | awk '{ print $1 }'` + if [ $min != $mint ] ; then + echo "FAIL 2: $min $mint" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + max=`echo $statsA | awk '{ print $2 }'` + maxt=`echo $statsB | awk '{ print $2 }'` + if [ $max != $maxt ] ; then + echo "FAIL 3: $max $maxt" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + mvv=`echo $statsA | awk '{ print $3 }'` + mvvt=`echo $statsB | awk '{ print $3 }'` + if [ $mvv != $mvvt ] ; then + echo "FAIL 4: $mvv $mvvt" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + + # OK, now remove orientation information + $FSLDIR/bin/avworient -deleteorient $fb + + # check if it should be in standard space + hdrinfo=`$FSLDIR/bin/avwhd $fn`; + nx=`echo $hdrinfo | sed 's/ \([a-z]\)/X\1/g' | tr 'X' '\n' | grep dim1 | head -1 | awk '{ print $2 }'`; + ny=`echo $hdrinfo | sed 's/ \([a-z]\)/X\1/g' | tr 'X' '\n' | grep dim2 | head -1 | awk '{ print $2 }'`; + nz=`echo $hdrinfo | sed 's/ \([a-z]\)/X\1/g' | tr 'X' '\n' | grep dim3 | head -1 | awk '{ print $2 }'`; + dx=`echo $hdrinfo | sed 's/ \([a-z]\)/X\1/g' | tr 'X' '\n' | grep pixdim1 | head -1 | awk '{ print $2 }'`; + dy=`echo $hdrinfo | sed 's/ \([a-z]\)/X\1/g' | tr 'X' '\n' | grep pixdim2 | head -1 | awk '{ print $2 }'`; + dz=`echo $hdrinfo | sed 's/ \([a-z]\)/X\1/g' | tr 'X' '\n' | grep pixdim3 | head -1 | awk '{ print $2 }'`; + + if [ $nx -eq 91 -a $ny -eq 109 -a $nz -eq 91 ] ; then + if [ `echo "( $dx * $dx - 4.0 ) * 1000" | bc -l` -eq 0 ] ; then + if [ `echo "( $dy * $dy - 4.0 ) * 1000" | bc -l` -eq 0 ] ; then + if [ `echo "( $dz * $dz - 4.0 ) * 1000" | bc -l` -eq 0 ] ; then + # treat it as a standard space image + $FSLDIR/bin/avwcpgeom /usr/local/fsl/etc/standard/avg152T1 $fb -d + fi + fi + fi + fi + + # check if stats are still OK, if not then restore copy + if [ `$FSLDIR/bin/imtest ${fb}` != 1 ] ; then + /bin/cp -p ${ftmp} ${fn} + echo "FAIL 5: ${fb}" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + statsA=`$FSLDIR/bin/avwstats++ ${fb} -R -V`; + statsB=`$FSLDIR/bin/avwstats++ ${ftmp} -R -V`; + min=`echo $statsA | awk '{ print $1 }'` + mint=`echo $statsB | awk '{ print $1 }'` + if [ $min != $mint ] ; then + /bin/cp -p ${ftmp} ${fn} + echo "FAIL 6: $min $mint" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + max=`echo $statsA | awk '{ print $2 }'` + maxt=`echo $statsB | awk '{ print $2 }'` + if [ $max != $maxt ] ; then + /bin/cp -p ${ftmp} ${fn} + echo "FAIL 7: $max $maxt" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + mvv=`echo $statsA | awk '{ print $3 }'` + mvvt=`echo $statsB | awk '{ print $3 }'` + if [ $mvv != $mvvt ] ; then + /bin/cp -p ${ftmp} ${fn} + echo "FAIL 8: $mvv $mvvt" + echo ${fb} >> /tmp/NIIFIXFAILS ; exit 2 ; + fi + + # if all checks are fine then remove the backup + $FSLDIR/bin/imrm ${ftmp} + + fi + fi +done + diff --git a/fsledithd b/fsledithd index 1b718282e1f64b5c673cfeaeb3e9fdce6846eea2..91e5669dbadd39669fc546f3e8bfaa4f4544de17 100755 --- a/fsledithd +++ b/fsledithd @@ -23,11 +23,11 @@ if [ _$FSLDIR = _ ] ; then export FSLDIR fi -if [ X$EDITOR = X ] ; then - EDITOR=pico +if [ X$FSLEDITOR = X ] ; then + FSLEDITOR=pico fi if [ $# -ge 2 ] ; then - EDITOR=$2 + FSLEDITOR=$2 fi tmpbase=`${FSLDIR}/bin/tmpnam`; @@ -67,7 +67,7 @@ echo " " >> ${tmpbase} echo "/>" >> ${tmpbase} # edit header, reprocess and pass onto avwcreatehd -${EDITOR} ${tmpbase} +${FSLEDITOR} ${tmpbase} cat ${tmpbase} | grep -v '^[ ]*#' | grep -v '^[ ]*$' > ${tmpbase2} ${FSLDIR}/bin/avwcreatehd ${tmpbase2} $1