Incrementing shaped gradient pulses on AMX2

From: rmair@cfa.harvard.edu
Date: Wed Aug 16 2000 - 10:53:19 PDT


Greetings BUMers,

Here is a question that has so far stumped the imaging applications guys in
Karlsruhe, and is possibly now defeating the hi-res folks as well. It has
certainly outworn my imagination!

We are running a 4.7T horizontal imaging system with an AMX2 console.
It has a GCON board and BGUII gradient unit, but the old MCI 3-channel
system and CPU/4. Host computer is a SGI O2 running IRIX 6.5 and XWIN-NMR
2.6.

I am trying to implement shaped gradients on this system, in order to avoid
the deleterious effects of square gradients on such large gradient coils.
This invloves using a binary file (in this case, sine.500) mapping out the
shape, and a loop in the pulse sequence to step thru every value of the
shape file. (As it is an AMX, not an Avance, I can't use the gpnam/gpx/gpy/
gpz parameters, or the :gp command in the pulsesequence; despite the fact I
am running the most recent software release.) Therefore, the gradient program
looks like this:

loop l1 <2D>
{
{ (0.0),sine.500(50.0) | (0.0) | (0.0)}
}
{ (0.0) | (0.0) | (0.0)}

where, according to my understanding, the sine.500 file (numbers between 0
and 1) is multiplied by 50 and offset by 0 to give a half-sine pulse of 50%
amplitude.

I am now trying to increment the amplitude of the shaped gradient pulse.
This is for use in experiments like phase-encoding for imaging sequences,
and pgse-style diffusion experiments. With square gradients, I have always
used commands like:

   { (0) | (0) | (50),,r3d(50) }
   { (0) | (0) | (0) }

for diffusion (step +/- 50% around 50%) or

   { (0) | (0) | (0),r2d(50) }
   { (0) | (0) | (0) }

for imaging (step +/- 50% around 0%) , with r2d/r3d depending on the
looping arrangement of the sequence.

I am yet to figure out how to use this syntax with the shaped pulse syntax.
I have tried lines like:

  loop l31 <2D>
  {
    { (0) | (0) | (0.0),sine.500(30),,r3d(0.0),sine.500(30) }
  }

and it throws more compliation errors than I have ever seen from a gradient
program.

I am now trying to figure out if I can make the shaped pulse amplitude a
constant like cnst21, so the program would read:

  loop l31 <2D>
  {
    { (0) | (0) | (0.0),sine.500(cnst21) }
  }

and then see if there is a way to manually increment cnst21 as the pulse
program proceeds. I don't think the cnst values can be incremented while a
zg is in progress, so it may have to be some other variable that doesn't
cause an error if it appears in the gradient program. But trying to put a
delay value (eg D 10) in the gradient program causes errors - delays
shouldn't be in the gp obviously, even tho it could store any real number
which can be incremented during the sequence. So, running out of options
here.

The other option is to write out a long gradient program, avoiding the use
of secondary loops to explcitly state every shaped gradient value, but my
first attempt at this gave an error of "too many loops in gradient program".

Has anyone tried doing anything like this on an AMX system before - perhaps
in the high-res spectroscopy world, if not an imaging person??
Or is this one reason DMX's were invented??

Many Thanks,

Ross

--
Ross Mair
Staff Scientist                             Office Phone:     (617) 495 7218
Harvard-Smithsonian Centre for Astrophysics Office Fax:       (617) 496 7690
60 Garden St, MS 59,                        email:     rmair@cfa.harvard.edu
Cambridge, MA 02138                         NMR lab at MIT    (617) 252 7011
USA



This archive was generated by hypermail 2b29 : Sun Dec 31 2000 - 01:15:03 PST