From f6194ab2522035b39f706fff1608ea5c9b89c57b Mon Sep 17 00:00:00 2001 From: Mark Jenkinson <mark@fmrib.ox.ac.uk> Date: Tue, 28 Sep 2004 11:12:34 +0000 Subject: [PATCH] minor, but useful, touches --- avwcpgeom.c | 32 +++++++++++++++++++++++--------- fslchfiletype | 8 +++++--- fsledithd | 6 ++++-- 3 files changed, 32 insertions(+), 14 deletions(-) diff --git a/avwcpgeom.c b/avwcpgeom.c index 91ce80c..4d031eb 100644 --- a/avwcpgeom.c +++ b/avwcpgeom.c @@ -2,7 +2,7 @@ /* avwcpgeom.c - Copy certain parts of an AVW header - Stephen Smith, FMRIB Image Analysis Group + Mark Jenkinson and Stephen Smith, FMRIB Image Analysis Group Copyright (C) 2001 University of Oxford */ @@ -36,8 +36,10 @@ int main(argc,argv) { /* struct dsr hdr, hdr2; */ FSLIO *src = NULL, *dest = NULL; - short x, y, z, v, copydim=1, t; + short x, y, z, v, copydim=1, t, scode, qcode, dt=-1; float vx, vy, vz, tr; + int filetype; + mat44 smat, qmat; void *buffer = NULL; char desthdrname[10000]; @@ -72,9 +74,12 @@ int main(argc,argv) strcpy(desthdrname,dest->niftiptr->fname); + /* store the filetype and datatype */ + filetype = FslGetFileType(dest); + FslGetDataType(dest,&dt); FslClose(dest); /* ...and now reopen destination for writing */ - dest = FslOpen(desthdrname, "wb"); + dest = FslXOpen(desthdrname, "wb", filetype); FslCloneHeader(dest,src); @@ -93,12 +98,18 @@ int main(argc,argv) /* hdr2.dime.dim[i]=hdr.dime.dim[i]; */ /* } */ - FslGetVoxDim(src, &vx, &vy, &vz, &tr); - FslSetVoxDim(dest, vx, vy, vz, tr); - if (copydim) { - FslGetDim(src, &x, &y, &z, &v); - FslSetDim(src, x, y, z, v); - } + scode = FslGetStdXform(src,&smat); + FslSetStdXform(dest,scode,smat); + qcode = FslGetRigidXform(src,&qmat); + FslSetRigidXform(dest,qcode,qmat); + + FslGetVoxDim(src, &vx, &vy, &vz, &tr); + FslSetVoxDim(dest, vx, vy, vz, tr); + + if (copydim) { + FslGetDim(src, &x, &y, &z, &v); + FslSetDim(src, x, y, z, v); + } /* }}} */ /* {{{ write destination */ @@ -106,6 +117,9 @@ int main(argc,argv) /* if ( doswap ) */ /* swap_hdr(&hdr2); */ + /* Preserve the datatype */ + FslSetDataType(dest,dt); + FslWriteHeader(dest); FslWriteVolumes(dest, buffer, v); FslClose(dest); diff --git a/fslchfiletype b/fslchfiletype index c674d88..73d3216 100755 --- a/fslchfiletype +++ b/fslchfiletype @@ -23,10 +23,10 @@ storedval=$FSLOUTPUTTYPE FSLOUTPUTTYPE=$1 export FSLOUTPUTTYPE -oldfile=$2 +oldfile=`$FSLDIR/bin/remove_ext $2` if [ $# -ge 3 ] ; then - newfile=$3 + newfile=`$FSLDIR/bin/remove_ext $3` inplace=0 else newfile=`$FSLDIR/bin/tmpnam` @@ -49,7 +49,9 @@ fi # for inplace stuff remove and copy old one if [ $inplace = 1 ] ; then - $FSLDIR/bin/imrm $oldfile + if [ `$FSLDIR/bin/imtest $newfile` = 1 ] ; then + $FSLDIR/bin/imrm $oldfile + fi $FSLDIR/bin/immv $newfile $oldfile fi diff --git a/fsledithd b/fsledithd index 8155f14..f0942d4 100755 --- a/fsledithd +++ b/fsledithd @@ -23,12 +23,14 @@ if [ _$FSLDIR = _ ] ; then export FSLDIR fi -EDITOR=pico +if [ X$EDITOR = X ] ; then + EDITOR=pico +fi if [ $# -ge 2 ] ; then EDITOR=$2 fi tmpbase=`${FSLDIR}/bin/tmpnam`; -${FSLDIR}/bin/avwhd -x $1 > ${tmpbase} +${FSLDIR}/bin/avwhd -x $1 > ${tmpbase} || exit ${EDITOR} ${tmpbase} ${FSLDIR}/bin/avwcreatehd ${tmpbase} $1 -- GitLab