Processing of 2D and 3D data-sets is similar to 1D data-sets in many respects. The processing steps are mostly equivalent : reading the file, windowing, pre-processing and zero-filling, Fourier transformation, Post-Processing (phasing, smoothing, REAL etc...) and writing output file. This is due to the fact that the whole data-set is merely held into central memory.
This design is optimum whenever the data-set is small enough to be kept in memory without even using the disk (up to 2 Mega (2D : 1Kx2K or 3D : 128x128x128) points on a typical system). The main drawback is that there is a definitive upper-limit for the size of the data-set. This limit depends on your system, but is typically 4 Mega (2D : 2Kx2K or 3D : 128x128x256) on most small to middle work-stations, and 16 Mega (2D : 4Kx4K or 3D : 256x256x256) on larger machines. This setting can easily be modified by recompiling the program. If you need to work on a larger data-set, you will have to resort to the cache memory system, see below.
The state of the program is described by the DIM context which holds either 1, 2 or 3 (standing for 1D 2D and 3D). Each mode is associated to a buffer, thus there are 3 buffers, for 1D, 2D and 3D. The unselected buffers remains unchanged during the processing of other buffers. Most of the commands works on all three modes, however, most of the commands will change their behaviour : for instance they will need more parameters.
The following command will be strictly equivalent :
READL, READH, READV, WRITEL, WRITEH, ADD, ADDDATE, SIZE, LIST, ADDBASE, MULT, DSA, ABS, ONE, ZERO, ZEROING, PLUS, MINUS, ZM, PEAK, INTEG, LINEFIT
The following commands will now take more parameters instead of 1. In this case, in 2D the first one always refer to the F1 dimension (non-classical dimension, displayed vertically) and the second to the F2 dimension (classical dimension, displayed horizontally) ; in 3D the order will be F1, F2, F3.
CHSIZE, GB, LB, EM, GM, SPECW, OFFSET, EXTRACT, ZOOM, EVALN, SMOOTH, MEDIAN
The following commands will prompt you for an extra parameter which will describe which dimension the process should be applied : F1 means F1 dimension, F2 means F2 dimension, (in 3D F3 means F3 dimension) and whenever possible (noted (*) in the present list), combination F12 and F13 F23 F123 in 3D :
FT(*), IFT(*), RFT(*), IRFT(*), FTBIS(*), IFTBIS(*), PHASE, HPHASE, REVF(*), REVERSE(*), SIN(*), SQSIN(*), SWA(*),TM(*), USWA(*), BCORR
When in ZOOM mode, this command will jump to the symmetrical zoom window relative to the main diagonal of the spectrum.
Permits to access directly any row (along F2) or column (along F1) of the data set. It is put into the 1D buffer and is displayed in the 1D window. In 3D, will extract rows and cols from the last selected plane (see PLANE).
In 2D will compute the projection of the current data-set along one axis. Axis along which the projection is computed has to be entered, thus PROJ F1, will compute the projection along F1 onto F2. Two algorithms are available : mean value or skyline. Result will be put into 1D buffer.
In 3D, the projection along one axis, onto a plane will be computed and put into the 2D buffer
In 2D, permit to go back and forth from ITYPE=1 to ITYPE=2 data-sets by changing the way the imaginary part is interleaved, i.e. the imaginary part is exchanged between F1 and F2 axes. For instance the following sequence :
Gifa> FT F2 FLIP FT F1
will perform the classical complex Fourier Transform (not hypercomplex). These commands are used when processing phase modulated data-sets. The sequence :
Gifa> REVF F2 RFT F2 FLIP REVF F1 INVF FT F1 FLOP MODULUS
will perform the computation of a phase-modulated data-set acquired on a BRUKER spectrometer in sequential mode.
In 3D, you can exchange the imaginary part of the F3 axis with the F1 or F2 axis.
transposes the 2D matrix . The sizes of the matrix must be power of two for this command to be used. After transposition, the two dimensions are completely permuted. In 3D, 2 dimensions will be exchanged by the TRANSPOSE process.
Transposition is not a natural step when working with Gifa, all the processing can always be performed randomly in any axis.
The transpose process is performed in-place and is very time consuming. On typical systems it is probably faster not to transpose when processing the data set. On very small system with very limited physical memory, it may be faster to use transpose. Try comparing
Gifa> FT F2 FT F1 ; normal processing
to
Gifa> FT F2 TRANSPOSE FT F2 ; transpose during process
on your system
Will select a plane from the 3D data-set, and put it in the 2D buffer. Plane are select by the name of the orthogonal axis : i.e.
Gifa> plane F2 index
will select the plane holding the F1 and F3 dimension, at coordinates F2=index.
Will select a line orthogonal to the currently selected plane. You can choose the coordinates by pointing on the 2D display.
In 2D DIAG will permit to extract the main diagonal of the current data-set. In 3D, it will extract one of the three main diagonal plane of the cube (F1=F2, F1=F3, F2=F3). Extracting the main diagonal 1D of the 3D cube can be done by extracting the 1D diagonal of one of the diagonal plane of the cube.