00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
#include "test-sequence.h"
00042
#include "idvol.h"
00043
#include "idacr.h"
00044
#include "simri3d.h"
00045
#include "experience.h"
00046
#include "object.h"
00047
#include "object-simple.h"
00048
#include "object-compound.h"
00049
#include "object-brain.h"
00050
#include "object-ki.h"
00051
#include "output.h"
00052
#include "display.h"
00053
#include "seq-se.h"
00054
#include "sequence.h"
00055
00056
#ifdef HAVE_MPI
00057
#include <mpi.h>
00058
#endif
00059
00082 void TestSequence2D(
int obj,
int objsize,
int imasize,
00083
double tacq,
double TE,
double TR,
double teta,
00084
double b0,
double db0,
double b0def,
int flagres,
int flagdech,
int filter,
00085
char * fileout,
char * seqname,
int display)
00086 {
00087
char fic[80];
00088
int ntx, nty, ntz;
00089
double fovx,fovy,fovz;
00090
OBJECT3D *
object;
00091
EXPERIENCE3D *expr;
00092
SEQPARAM seqparam;
00093
PPPVOLUME_COMPLEX_DOUBLE volrf;
00094
PPPVOLUME_FLOAT volrecmod;
00095
#ifdef HAVE_MPI
00096
int rank;
00097
#endif
00098
fic[0]=
'\0';
00099
00100 printf(
"TestSequence2D start\n");
00101
00102
if (objsize<imasize)
00103 {
00104 printf(
"The object has more pixel than the image !! \n");
00105 exit(0);
00106 }
00107
00108
00109
object =
GetTestObject2D(obj,objsize,objsize,db0);
00110
00111
00112
00113
00114 expr=
AllocExperience();
00115 ntx=imasize; nty=ntx; ntz=1;
00116 fovx=0.20; fovy=0.20; fovz=0.0020;
00117
SetFovExperience(expr,fovx,fovy,fovz,0.0,0.0,0.0);
00118
SetAcqExperience(expr,ntx,nty,ntz,tacq*1e-3);
00119
SetResonanceExperience(expr,flagres);
00120
SetFlagdechExperience(expr,flagdech);
00121
SetB0Experience(expr,b0);
00122
SetB0DefExperience(expr,b0def);
00123
00124
00125
SetSeqParamTE(&seqparam,TE);
00126
SetSeqParamTR(&seqparam,TR);
00127
SetSeqParamTeta(&seqparam,teta);
00128
00129
00130 volrf =
RunSequence(seqname,&seqparam,
object,expr);
00131
00132
FreeObject(
object);
00133
00134
if (filter==1)
VolRFFiltering(volrf,
HANNING);
00135
00136
00137 volrecmod =
RecVolIFFTModuleFromVol(volrf);
00138 volrf=NULL;
00139
00140
00141
#ifdef HAVE_MPI
00142
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
00143
if (rank==0)
WriteVolRecUchar(volrecmod,fileout);
00144
#else
00145
if (display==1)
DisplayVolXY((
PPPVOLUME)volrecmod,0,
"Recvol2D");
00146
WriteVolRecUchar(volrecmod,fileout);
00147
#endif
00148
printf(
"min=%e max=%e \n",
IdVolMinima(volrecmod),
IdVolMaxima(volrecmod));
00149
IdVolFree(volrecmod);
00150
00151 printf(
"TestSequence2D End\n");
00152 }
00153
00176 void TestSequence3D(
int obj,
int objsize,
int imasize,
double tacq,
double TE,
double TR,
double teta,
00177
double b0,
double db0,
double b0def,
int flagres,
int flagdech,
int filter,
00178
char * fileout,
char * seqname,
int display)
00179 {
00180
char fic[80];
00181
int ntx, nty, ntz;
00182
double fovx,fovy,fovz;
00183
OBJECT3D *
object;
00184
EXPERIENCE3D *expr;
00185
SEQPARAM seqparam;
00186
PPPVOLUME_COMPLEX_DOUBLE volrf;
00187
PPPVOLUME_FLOAT volrecmod;
00188
#ifdef HAVE_MPI
00189
int rank;
00190
#endif
00191
fic[0]=
'\0';
00192
00193 printf(
"TestSequence3D start\n");
00194
00195
if (objsize<imasize)
00196 {
00197 printf(
"L'object est plus petit que l'image !! \n");
00198 exit(0);
00199 }
00200
00201
00202
object=
GetTestObject3D(obj,objsize,objsize,objsize,db0);
00203
00204
00205
00206
00207 expr=
AllocExperience();
00208 ntx=imasize; nty=ntx; ntz=ntx;
00209 fovx=0.20; fovy=0.20; fovz=0.20;
00210
SetFovExperience(expr,fovx,fovy,fovz,0.0,0.0,0.0);
00211
SetAcqExperience(expr,ntx,nty,ntz,tacq*1e-3);
00212
SetResonanceExperience(expr,flagres);
00213
SetFlagdechExperience(expr,flagdech);
00214
SetB0Experience(expr,b0);
00215
SetB0DefExperience(expr,b0def);
00216
00217
00218
SetSeqParamTE(&seqparam,TE);
00219
SetSeqParamTR(&seqparam,TR);
00220
SetSeqParamTeta(&seqparam,teta);
00221
00222
00223 volrf =
RunSequence(seqname,&seqparam,
object,expr);
00224
FreeObject(
object);
00225
00226
00227
if (filter==1)
VolRFFiltering(volrf,
HANNING);
00228
00229
00230 volrecmod =
RecVolIFFTModuleFromVol(volrf);
00231 volrf=NULL;
00232
00233
00234
#ifdef HAVE_MPI
00235
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
00236
if (rank==0)
00237
WriteVolRecUchar(volrecmod,
"volse3dsimri.acr");
00238
#else
00239
if (display==1)
DisplayVolXY((
PPPVOLUME)volrecmod,0,
"Recvol2D");
00240
WriteVolRecUchar(volrecmod,
"volse3dsimri.acr");
00241
#endif
00242
IdVolFree(volrecmod);
00243
00244 printf(
"TestSequence3D End\n");
00245 }