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