Print

Print


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
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>