Scheme Files for General Gradient Waveforms

This tutorial describes the general waveform scheme file format, what it describes and what the parameters mean.

1.  Scheme files

Scheme files are what gets information about the data acquisition used in the scanner into Camino for the analysis pipeline. Different scheme file formats contain different levels of detail about what's going on as some analyses and techniques require more information than others. At a minimum, a scheme file can contain b-values and directions but some formats, particularly those used by the simulation for data synthesis, specify the pulse sequence more exactly.

2.  General waveforms

Camino contains schemes based around simple PGSE acquisitions, twice-refocussed acquisitions and other common pulse sequences, but as the types of pulse sequence used for diffusion imaging develop and increase in complexity, it has become necessary to have a more general format that can describe more exotic sequences. This tutorial describes the general waveform scheme format, which allows pulse sequences to be specified as three dimensional waveforms. This format allows a set of acquisitions with completely general shapes in three dimensions. As such, they are suitable for almost any pulse sequence that is not covered by the other existing waveforms. They are specifically designed to work with simulations for data synthesis.

3.  General waveform scheme file format

Scheme files are just formatted text files and as such are human readable. The first thing to do is to create a new file in your favourite text editor with a ".scheme" extension. let's call it genwave.scheme.

All scheme files start with a line specifying what format they are and gen waves are no exception. The first line of your text file should read:


(This is case sensitive, and don't forget to include the space after the colon!)
After this comes the main body of the file. Each acquisition is defined on a single (quite long) line of the file. Each line specifies the waveform for a complete acquisition. These waveforms are specified as a 3d histogram, which defines the shape of the pulses on BOTH sides of the 180 (or equivalent). RF pulses aren't encoded in the scheme at this time, although it is possible this may change later if the need arises.

Each line is formatted as follows:

K dt G1x G1y G1z G2x G2y G2z ... GKx GKy GKz


  • K is the number of blocks in the waveform histogram
  • dt is the time increment associated with each block (so Kdt = the duration of the wave)
  • Gix, Giy, Giz are the 3d gradient during the i-th block

You're free to choose K to be whatever you like in order to specify the wave correctly. It does not need to be the same as the time increment of the simulation, any mis-match is automatically taken care of, although it is probably best to have a higher K in your waveform than the number of steps in your simulation. There is no constraint on the shape of the waves, including no checking against slew rate and no constraint for pulses to be symmetric or even sum to zero -- the wave will behave exactly as you specify, right or wrong!

One very important thing to remember is that the second half of the GEN wave must be multiplied by -1 with respect to the first! This mimics the actions of the 180-degree pulse. Without it, the two halves will not cancel each other out and the data synthesised will be biased and not correctly diffusion weighted. If your sequence seems correct but you are getting crazy data out of the simulation, this is probably why.

And that's it! Specify as many lines as you need, and data will be generated from a simulation in the order specified. b-zero measurements can be encoded with K=1, dt=TE and Gix, Giy, Giz = 0.0.

As with everything in Camino, all units are SI (kg, s, m).