The MFFT program is the main program in the MNMR package. It reads a file (either a file containing FID's, or a file created previously with the MNMR package), and processes the slice in one dimension.
The MFFT program is called as follows:
<Machine ID>mfft <inputfile
All commands to MFFT are read from standard input, and in the case above, this has been redirected to the file: inputfile. Processing begins when the last command has been read.
The following is a list of all commands accepted by the MFFT program. All commands are given in upper-case, and no abbreviations are allowed.
Comments can be specified starting with a hash sign, #.
Format:
DATAFILE <name> <expno> <procno> <disk> <user>
Description:
Defines the name of the file to hold the processed data. If the NEWFILE command is given as well, a new file is created, else this statement must specify an already existing file. The name of the file is built as follows:
/disk/nmr/user/data/name
Note, the expno and procno parameters are not used for this data format.
Format:
NEWFILE <size1> <size2> <size3> ...
Description:
The NEWFILE statement specifies, that the data file given by the DATAFILE statement is to be created. Any previous information in that datafile (if any) is lost. This statement is normally only used for the FFT in the first dimension. The SMX file can be given together with the NEWFILE statement to set the size of the submatrices. The number of parameters sets the rank of the datafile, thus two parameters for 2D-NMR, three for 3D-NMR, etc. The first parameter is the desired final size of the matrix in the fastest dimension (zero), and the second is for dimension one, etc.
Format:
SMX <size1> <size2> etc.
Description:
Used together with the NEWFILE statement to set the size of the submatrices. This can be useful when doing extractions during the FFT. Size1 is the desired size of the submatrix in dimension zero, etc. The size for an extraction should be a multiple of the submatrix size in the extraction dimension. The total size of the submatrix (the product of the size parameters times 8) should be at least 4096.
Format:
DIMENSION <number>
Description:
This parameter defines the dimension in which the FFT is to be performed. Use 0 for the first FFT, 1 for the second, etc. The FFT's have to be done in increasing dimensionality.
Format:
PHASE <constant> <linear>
Description:
Do a phase correction after the FFT. The constant and linear parameter is specified in degrees. The base for the linear phase correction is the center of the spectrum.
Format:
STRANGE
Description:
Rotates the data points one position to the right after the FFT. This is necessary on some machines in order to get the BFIX function to work.
Format:
WORDSWAP
Description:
Reverses the bytes in the words read from the SER file. This is sometimes necessary when the SER file has been machines of different endian-ness.
Format:
BFIX
Description:
The BFIX command is necessary if the real and imaginary part of the complex point has been acquired at a different time. Use this command for the first FFT if sequential acquisition has been done instead of simultaneous acquisition. For FFT's in higher dimensions, this is only used if TPPI has been used to obtain pure absorption phase.
Format:
NOREVERSE
Description:
Normally the slices are reversed after FFT. Use this statement to avoid this.
Format:
NOSWAP
Description:
Normally the two halves of the slices are swapped after FFT. Use this statement to avoid this.
Format:
NOBC
Description:
Normally the points in a slice are added a constant value so that the sum of the last 1/8 of the slice is zero. Use this statement to avoid this. This is useful if the FID's were made by a simulation program. See also the description of BC.
Format:
EM <line broadening>
Description:
Use an exponential multiplication window function. The line broadening is specified in Hz.
Format:
GM <gm>
Description:
Use gaussian multiplication with the parameter gm. The code to calculate the window function, window, for n1 values is:
factor=exp(-2.0*gm/n1/n1); exponential=1.0; gaussian=1.0;
for(i=0;i<n1;i++)
{
window[i]=gaussian;
exponential*=factor;
gaussian*=exponential;
}
Format:
CCGM <gm> <em>
Description:
Combines EM and GM. The code to set this window function up for n1 data points is:
exponential=1.0/em;
gaussian=1.0/(gm*gm);
for(i=0;i<n1;i++)
{
window[i]=exp(exponential*(double) i -
gaussian*((double) i)*((double) i));
}
Format:
SINE <shift>
Description:
A sine bell, shifted pi/shift, is used as a window function. If shift is specified as 0 (zero), no shift is performed.
Format:
SSINE <shift>
Description:
A squared sine bell, shifted pi/shift, is used as a window function. If shift is specified as 0 (zero), no shift is performed.
Format:
ZERO <size>
Description:
Sets the desired final size of the slices in this dimension to size complex points. Zerofilling or truncation is done before FFT to fulfill this.
Format:
SETEXP <size1> <size2> <size3> etc.
Description:
Defines the size of the input SER file in the non-fastest dimensions. The number of parameters is the number of dimensions minus one, i.e. one parameter is necessary for a 2D experiment, and two parameters are necessary for a 3D experiment. Size1 is the number of real points in dimension 1, Size2 the number of points in dimension 2, etc. This statement can only be used together with a LOAD statement.
Format:
SINESIZE <size>
Description:
The window function will be calculate over the first size points of the slice. Specify the actual number of complex points acquired for size.
Format:
HAMMING
Description:
Uses the following window function, where n1 is the number of points including zerofilling, and old_n1 is the number of complex points before zerofilling:
for(i=0;i<n1;i++) window[i]=(0.54+0.46*cos(M_PI*i/old_n1));
Format:
NORMALIZE <cutoff> <level>
Description:
Normalizes the data. Only used after the last FFT. Normalizes the data so that cutoff % of the data is below level. Use 85 % for COSY types of experiments, and 70 % for NOESY types of experiments, and set level to 1. This will put the necessary contour levels in the range 0.5 - 10.0
- currently not supported. Use the MREAL program instead.
Format:
PPFIX <type>
where type is one of: RR, RI, COSY, or NOESY.
Description:
This statement is necessary in all but the last of the FFT steps to obtain pure absorption phase in the spectrum. Two adjacent slices are combined into one slice. The real part of each element in the new slice is taken from the real part of the corresponding element in the first slice, and the complex part is taken from either the real (RR), imaginary (COSY), -real (NOESY), or -imaginary (RI) part of the second slice. Which of the four choices to use depends upon whether the experiment is of the States type of TPPI type, and the phase cycling used during the acquisition.
Format:
REDFIELD
Description:
Negates every second complex number before FFT. Used in all but the first of the FFT's for a TPPI type of experiment.
Format:
NEUNET
Description:
Normalizes the data so that the maximum value is 0.8
Format:
LOAD <filename>
Description:
Defines the name of the file from which the input FID's are read. The filename specified must contain the full path to the filename containing the actual data, e.g. /u/data/xyz/nmr/incredulase/1/ser
Format:
LOADTYPE <type> <size> <freq> <sweep>
Description:
Type is a number, currently either 1 (the default), 2, 3, or 4. If type 1 is used, the last three parameters need not be specified. Type 1 corresponds to data transferred from a Bruker spectrometer of the AM type (i.e. run by an ASPECT 3000 computer) either by Ethernet (the WORDSWAP command might be necessary as well) or by tape. If the file has been extended into 32 bits, the filename must be terminated with a plus-sign (+). Type 2 corresponds to Bruker data from a X-32 computer (either a workstation or AMX-type spectrometer). The name of the file specified to the LOAD command should be the name of the actual ser file. The files containing the acquisition parameters are not used. In that case the size parameter must be specified with the number of complex points in the fastest dimension, freq with the spectrometer frequency (in MHz) for the fastest dimension, and sweep with the sweep with (in Hz) for the fastest dimension. Type 3 is used to read Varian FID's, for example:
LOAD /nmr1/varian/mk/temp/exp1/acqfil/fid LOADTYPE 3 FREQUENCY 499.84 SWEEP 8400.0
A type of 4 is used to read Felix .ser files.
Format:
T1FIX
Description:
If specified, the first complex point in the FID will be multiplied by 0.5 before FFT. Used to eliminate some of the t1 noise.
Format:
PPM <hz> <ppm>
Description:
Sets the ppm axis of the dimension just transformed. The ppm axis will be set so that the frequency position hz corresponds to the ppm value ppm. The spectrometer frequency and the sweep width must have been set correctly.
Format:
SWEEP <sweep>
Description:
Sets the sweep width of the dimension transformed to sweep Hz.
Format:
FREQUENCY <frequency>
Description:
Sets the spectrometer frequency in the dimension transformed to frequency MHz. Note: The spectrometer frequency and the sweep with are only used to calculate the axes of the spectrum, they are not used by the actual FFT.
Format:
NPROC <number>
Description:
Sets the number of processors used during FFT to number. This is only used on the Stardent 1500 machine, ignored on the other machines.
Format:
EXTRACT <first> <last>
Description:
After FFT, extract and store only a part of each slice. The points stored will be from first to last, both points included. Point numbers start from zero. The size of the part extracted, i.e. last-first+1, should be less than or equal to the size specified in the original NEWFILE statement. If the size is not a multiple of the length of the submatrix in this dimension, disk space will be wasted. You can not specify a final size in NEWFILE less than the number of points to be read from the original SER file, except for the first dimension transformed, i.e. a ser file containing 1024 x 256 x 64 points can as a minimum be transformed to a final size of <anything> x 256 x 64, but the slices in the two last dimensions can be extracts of a larger FFT, i.e. the 256 points in the second dimension can be the first 256 points of an FFT zerofilled to 512 points.
Format:
HSVD <l> <nssv> <nback>
Description:
Perform linear prediction using the HSVD algorithm. The l parameter is the size of the Hankel matrix, and the nssv parameter is the number of roots. The optional nback parameter specifies the number of points to back-predict.
The following requirements for the parameters exist:
ndp/2+1 <= l <= ndp*3/4 nssv <= 50
where ndp is the number of complex points to start with.
The linear prediction is used instead of zerofilling. If 32 complex points are recorded, and a final matrix size of 64 points is desired, set ZERO and SINESIZE to 64 (even though another window function than a sinebell is used), and insert the HSVD command where the first parameter should be in the interval: [17;24], and the value of the second parameters depends upon the maximum number of signals occuring in a slice.
If the nssv parameter is specified too high, the calculation will fail and leave nonsense numbers as a result. Further calculations using NaN's and Inf's can take a very long time. See also the parameter NAN.
Format:
NAN <flag>
Description:
If flag is specified as zero, calculation will continue even though a NaN or Inf occurs as one of the roots of an HSVD calculation. If a non-zero value is specified (the default), the calculation will be interrupted.
Format:
BC <size>
Description:
By default, the FID's are baseline corrected before the FFT. This is done by subtracting the average of the last 1/8 points in each slice. Use the BC command to change this: Instead of the default 1/8 points, use the last size points.
Format:
BLANK <size> <coef>
Description:
This function blanks out the first size points of each slice before FFT: Each point from 1 to size is set equal to the value of point size+1 time coef.
Format:
NOREFL
Description:
This is used together with HSVD: If specified, the roots will not be reflected within the unit circle.
Format:
CT
Description:
Don't use it; it was supposed to be used together with constant-time experiments.
Format:
RUBOUTC <rwidth> <rcenter>
Description:
Remove part of center of spectrum. This is done by phase correcting each slice to obtain pure absorption phase in the center, blanking rwidth points, and setting the phases back. The rcenter parameter is optional: If not specified, the center of the slice is assumed. The rwidth parameter is also optional, default is 20 points. If rcenter is specified, the rwidth parameter must also be present.
Format:
RUBOUTD <rwidth>
Description:
The diagonal is blanked by first phase correcting the slice so that the diagonal is pure absorption phase, blanking rwidth points around the diagonal, and phasing the slice back. Default value for rwidth is 20 points. Note, the ppm axes must be specified in order to use this.
Format:
USEPOINTS <size>
Description:
By default, the HSVD algorithm uses all the data points in the slice. However, if you are only interested in doing backwards prediction, the calculation can be done faster if the HSVD algorithm only works on the first points in the slice. USEPOINTS sets the number of points used by the HSVD algorithm to size.
Format:
FREQ_SHIFT <delta_f>
Description:
Before FFT, the FID is multiplied by exp(i delta_f dt). This corresponds to a first-order phase correction in the frequency domain.
Format:
LSHIFT <points>
Description:
Shifts the transformed spectrum points points to the left.
Format:
LROTATE <points>
Description:
Rotates the FID points points to the left before FFT. Points moved out to the left are moved in from the right. Use a value for points of 70 in the first dimension to transform spectra from the new Bruker series spectrometers.
Format:
FF <width>
Description:
This filter removes signals around the center of the slices. This is implemented in the time domain. The width parameter (specified as an integer) defines the width of the filter: Larger values give smaller filter, but longer execution times. The distance from the center at which the attenuation is 50 % is +- 0.416 SW/width. Removal of the water signal in the time domain is useful, because it makes the following linear prediction task easier.
Format:
NOFT
Description:
If specified, the FFT process is skipped. Useful to determine the effects of window functions and HSVD.
Format:
RFT
Description:
Performs a real FFT instead of a complex FFT. Can be used together with REDFIELD instead of BFIX.
Format:
BRUKER
Description:
Implies: RFT, NOSWAP, and NOREVERSE.
Format:
TEST_WINDOW
Description:
Sets the points in the slices to 1.0 + 1.0i before FFT. Used to extract window functions.
Format:
HSVDR <l> <nssv> <nback>
Description:
Works as HSVD, however, a real HSVD is performed instead of a complex.
Format:
HSVD_LIMIT <limit>
Description:
This command is used to avoid HSVD(R) calculations for slices without signals. If the maximum, absolute value of the first four points in the slice is below limit times the overall maximum value found in the spectrum HSVD is skipped, and zerofilling is used instead. If limit is specified as 1, HSVD is done in all slices, and if limit is zero, no HSVD calculations are done.
Format:
VARIAN <dim>
Description:
Use this flag if multidimensional FID's are read from a Varian file. dim should be set to 1 if a 3D spectrum is recorded with "phase,phase2", and to 2 if it is recorded with "phase2,phase"
Format:
EAE <dim>
Description:
Use this flag in the first dimension for processing of Echo-Antiecho spectra, i.e. spectra that used to be preprocessed with the grad_sort_nd program. dim is set as follows: Set it to 1 for a 2D spectrum.
For at 3D spectrum recorded on a Varian spectrometer, set the VARIAN and EAE parameters as follows:
| Phase array | VARIAN dim | EAE dim |
|---|---|---|
| phase,phase2 | 2 | 2 |
| phase2,phase | 1 | 2 |
Do not use the grad_sort_nd program together with EAE.