are there any downsides to running this script routinely on every diffusion sequence?

cheers,

satra


On Wed, Feb 1, 2012 at 11:22 AM, Tyler Rolheiser <[log in to unmask]> wrote:
I was having some trouble with the old rotbvecs script on a Mac (though not using CentOS), and this new version fixed it. 

Well done!

Tyler


On Wed, Feb 1, 2012 at 10:29 AM, Saad Jbabdi <[log in to unmask]> wrote:
Try this one.

Saad







On 1 Feb 2012, at 11:45, Sean F Walsh wrote:

> Hi All,
>
> I am looking for some advice/help about rotating the gradient table for diffusion data after eddy-current/motion correction. I downloaded the rotate_bvecs script written by Martin Kavec. For some reason when I use this script it always changes the final line in the new rotated bvecs file into (0, 0, 0).
>
> The irritating thing is that the script used to work previously when I ran it on a different computer - although I can't remember if we had to change something first.
>
> I contacted Martin Kavec and he was helpful  but unable to diagnose the problem (and has apparently finished his scientific career).
>
> Any ideas on how I could go about fixing this?
>
> Please find the version of the script that I have at the end of this message.
>
> Many thanks in advance,
>
> Sean
>
> #!/bin/bash
>
> if [[ $# -lt 3 ]] ; then
>  echo "Incorrect Number of Paramaters Specified"
>  echo "Usage: <original bvecs> <rotated bvecs> <ecclog> [-k]"
>  echo ""
>  echo "<ecclog>               the output log file from ecc"
>  echo "-k                             keep the mat files"
>  echo ""
>  exit 1;
> fi
>
> ECCLOG=$3;
> LIST="mat.list"
>
> if [ ! -e $1 ] ; then
>       echo "Source bvecs $1 does not exist!"
>       exit 1
> fi
>
>
> if [ -e $2 ] ; then
>       echo "Target bvecs: $2 already exists!"
>       exit 1
> fi
>
> if [ ! -e $ECCLOG ]; then
>       echo "Ecc log file $3 does not exist!"
>       exit 1
> fi
>
> if [ "$4" == "-k" ] ; then
>       KEEP="YES"
> else
>       KEEP="NO"
> fi
>
> ####################################################################
> # Create the mat files from input
> #
> # Here we read input ecclog file line by line, produce the FSL mat
> # file and fill it with respective trasformation. File listing all
> # the mat files generates is also created
>
> if [ -e ${LIST} ]
> then
>       rm ${LIST}
> fi
>
> cat ${ECCLOG} | while read line; do
>    #create a file name from processed volumes
>    matfile=$(remove_ext $(echo ${line} | grep processing | awk '{print $2}'));
>    if [ "${matfile}" != "" ] ; then
>          matfile=${matfile}.mat;
>       echo "Generating ... ${matfile}";
>       echo ${matfile} >> ${LIST};
>       # following two reads will deal with unimportant lines
>       read line;
>       read line;
>       # read matrix and store it in the current matfile
>       read line;
>       echo ${line} > ${matfile};
>       read line;
>       echo ${line} >> ${matfile};
>       read line;
>       echo ${line} >> ${matfile};
>       read line;
>       echo ${line} >> ${matfile};
>    fi
> done
> #
> ####################################################################
>
> ####################################################################
> # rotate bvecs
>
> newXs="";
> newYs="";
> newZs=""
>
>
> BVECS=$1;
> Xs=$(cat $BVECS | head -1 | tail -1)
> Ys=$(cat $BVECS | head -2 | tail -1)
> Zs=$(cat $BVECS | head -3 | tail -1)
>
> MATs=$(cat mat.list);
>
> VOLUMES=$(cat $BVECS | head -1 | tail -1 | wc -w)
>
> if [ $VOLUMES != $(echo ${MATs} | wc -w) ]
> then
>       echo "Number of *.mat files in $3 is not equal to number"
>       echo "of gradients in $BVECS!"
>       exit 1
> fi
>
> i=1
> while [ $i -le $VOLUMES ] ; do
>       MAT=$(echo ${MATs} | cut -d " " -f ${i});
>       #echo $MAT
>
>       output=$(avscale --allparams ${MAT} | head -2 | tail -1)
>       m11=$(echo $output | cut -d " " -f 1)
>       m12=$(echo $output | cut -d " " -f 2)
>       m13=$(echo $output | cut -d " " -f 3)
>       m11=$(printf "%1.7f" $m11)
>       m12=$(printf "%1.7f" $m12)
>       m13=$(printf "%1.7f" $m13)
>
>       output=$(avscale --allparams ${MAT} | head -3 | tail -1)
>       m21=$(echo $output | cut -d " " -f 1)
>       m22=$(echo $output | cut -d " " -f 2)
>       m23=$(echo $output | cut -d " " -f 3)
>       m21=$(printf "%1.7f" $m21)
>       m22=$(printf "%1.7f" $m22)
>       m23=$(printf "%1.7f" $m23)
>
>       output=$(avscale --allparams ${MAT} | head -4 | tail -1)
>       m31=$(echo $output | cut -d " " -f 1)
>       m32=$(echo $output | cut -d " " -f 2)
>       m33=$(echo $output | cut -d " " -f 3)
>       m31=$(printf "%1.7f" $m31)
>       m32=$(printf "%1.7f" $m32)
>       m33=$(printf "%1.7f" $m33)
>
>       X=$(echo $Xs | cut -d " " -f "$i")
>       Y=$(echo $Ys | cut -d " " -f "$i")
>       Z=$(echo $Zs | cut -d " " -f "$i")
>       X=$(printf "%1.7f" $X)
>       Y=$(printf "%1.7f" $Y)
>       Z=$(printf "%1.7f" $Z)
>
>       rX=$(echo "scale=7;  ($m11 * $X) + ($m12 * $Y) + ($m13 * $Z)" | bc -l);
>       rY=$(echo "scale=7;  ($m21 * $X) + ($m22 * $Y) + ($m23 * $Z)" | bc -l);
>       rZ=$(echo "scale=7;  ($m31 * $X) + ($m32 * $Y) + ($m33 * $Z)" | bc -l);
>
>       rX=$(printf "%1.7f" $rX)
>       rY=$(printf "%1.7f" $rY)
>       rZ=$(printf "%1.7f" $rZ)
>
> #     echo $rX" "$rY" "$rZ;
>
>       rXs=${rXs}${rX}" ";
>       rYs=${rYs}${rY}" ";
>       rZs=${rZs}${rZ}" ";
>
>       i=$(echo "$i + 1" | bc) ;
> done
>
> echo "$rXs" >> $2;
> echo "$rYs" >> $2;
> echo "$rZs" >> $2;
> #
> ####################################################################
>
> if [ "$KEEP" == "NO" ]; then
>       rm $MATs $LIST
> fi
>

--
Saad Jbabdi
University of Oxford, FMRIB Centre

JR Hospital, Headington, OX3 9DU, UK
(+44)1865-222466  (fax 717)
www.fmrib.ox.ac.uk/~saad