From the Bax Group at the National Institutes of Health ...
NMRPipe Spectral Processing and Analysis System
Peak Analysis and Quantification
by Gabriel Cornilescu
CHAPTER 1. CHEMICAL SHIFT REFERENCING
Since properly referenced chemical shifts tables are a crucial pre-requisite for both automatic assignment programs and manual user assignments (especially when combining data recorded on diferent spectrometers), this section covers the apropriate method for correct and consistent chemical shift referencing that needs to be performed before peak picking.
There are 2 methods to change the spectral referencing (i.e. to apply a chemical shift referencing correction after data was converted and FT transformed):
Method 1. Re-referencing at the early stage of data conversion (requires repeating the raw data conversion and FT transforming steps for the entire dataset with different values for the direct and indirect spectrometer carrier frequency positions).
Method 2. Re-referencing of the FT transformed data in NMRDraw. This method can still provide correct chemical shifts (i.e. correctly referenced peak tables), but the time domain NMR data will not be updated with the corrected chemical shift referencing.
Let's use a dataset included with the NMRPipe package for testing both methods. Download the sample2d.tar.Z and extract it with the (UNIX) command:
zcat sample2d.tar.Z | tar xvf –
This will create 2 directories ("varian2d" and "bruker2d") containing 2D spectra Varian and Bruker format (respectively). Let's process the data in the varian2d directory in the usual way (using the provided fid.com and ft2.com scripts).
Method 1. The proper spectral referencing steps are described in the DATA CONVERSION section of the NMRPipe Introductory Tutorial.
We can inspect the the header of the datafile (e.g "test.ft2") before the chemical referencing adjustment with the command:
showhdr -verb test.ft2
Let's say we decided that a 0.1 ppm correction needs to be added uniformly to all 1H chemical shift and 0.2 ppm needs to subtracted from all 15N chemical shifts of our example data. We edit the fid.com conversion script and manually subtract 0.1 ppm to the -xCAR value and add 2.0 ppm from the -yCAR value (i.e. to get 4.512 and 115.752 ppm respectively). Then we simply re-run the fid.com script followed by ft2.com.
We can check that the correction was indeed applied by inspecting again the header of the datafile (and compare the center and the limits in ppm for each spectral dimension, note that the X/Y axes are switched):
showhdr -verb test.ft2
Note: Don't forget to re-apply the FT processing script (e.g. ft2.com) after correcting the chemical shift referencing in the conversion script (e.g. fid.com).
Method 2. Spectral referencing without re-converting the time domain data and re-transforming the frequency domain data can be performed in nmrDraw.
Once the data is read in nmrDraw, the user can (optionally) choose and display one particular horizontal (keyboard shortcut "h") or vertical (keyboard shortcut "v") 1D slice (e.g. to select a particular peak with know chemical shift). Then the Calibrate Axis pop-up window (Figure 1) from the NMRDraw File menu can be used for chemical shift referencing adjustments (keyboard shortcut Shift+C).
User can re-calibrate the chemical shifts of any axis in the current data:
1. Change the axis selection, axis label, or any other parameter which needs to be adjusted.
2. Enter the "New PPM Value" for the selected point; the default point will be set according to the positions of the last 1D slices displayed.
3. Use the Apply button to re-calculate the chemical shifts according to the new parameters.
4. Use the Save button to write the new calibration data. Note: The new chemical shift calibration, position of the carrier, spectral limits etc. are updated in the header of the re-calibrated data file or template. The header of a datafile (e.g "test.ft2") can be again inspected (to check that the chemical shift correction was applied correctly) with the command:
showhdr -verb test.ft2
CHAPTER 2. PEAK DETECTION QUICK "HOW-TO"
The NMRDraw Peak menu provides commands for automated and interactive peak detection in 1D-4D data. The number of picked peaks depends on the peak detection threshold value used in NMRDraw. A very low threshold (close to the noise level) can result in automatic picking many thousands of peaks which can be a slow process, depending on your computer. To avoid that, use initially the threshold level obtained automatically by "T" (Shift + T) keyboard shortcut (See the Inspecting the processed result section of the NMRPipe Introductory Tutorial.
A properly phased 1D-4D spectrum can be peak picked automatically by a simple menu command in NMRDraw:
From the Peak menu (Figure 2), select Peak Detection, then choose a name for the Peak Table (or leave the default "test.tab" name), select the desired number of Dimensions and hit the Detect button (Figure 3).
Note: If data was read (with File/Select) from a different directory than the current directory (from which nmrDraw was launched) the user can store the peak table in that data directory using the CD (Change Directory) button from the File/Select pop-up window (Figure 6). This directory becomes the "current directory" for all subsequent input or output NMRDraw commands (including save, plot etc.).
The NMRDraw program will save the peak positions and many other spectral characteristics of the peaks in a multiple column table (e.g. named "test.tab"), in the current working directory. One can extract just a few commonly used columns from that comprehensive peak table using the pkFilter.tcl program:
pkFilter.tcl test2.tab test.tab
The program will extract just the peak index (INDEX), chemical shifts (i.e. X_PPM, Y_PPM and Z_PPM), intensity (HEIGHT), volume (VOL) and assignment (i.e. ASS) columns from a 3D peak table ("test.tab") into an output file (e.g named "test2.tab"). The peak table header will also be updated to reflect only the name and format of the variables corresponding to the selected columns).
Note: The pkFilter.tcl program can also be invoked from NMRDraw. From the Peak menu (Figure 3), select Peak Detection, then Settings and fill the Filter Command entry with the name of the program (in this case pkFilter.tcl). Then click on Done and Detect. The program will automatically output 2 files: test.tab, containing the complete peak table and test2.tab, containing only the most commonly used columns.
CHAPTER 3. PEAK DETECTION IN DETAIL
The peak detection in NMRPipe is actually performed in the background by the nmrWish program. The peak positions are estimated by multidimensional parabolic models. These models are also used to estimate the linewidth and extent of the peak in all dimensions. Peak overlap is characterized by a recursive method which identifies continuous collections of points above the detection threshold. Noise peaks are classified according to a Chi-square criterion. Truncation artifacts are also identified based on analysis of Fourier transforms of the window functions used on the spectrum and can be filtered out by appropriate selection of peak detection parameters.
THE PEAK MENU
The commands in the Peak menu are as follows:
Activate the Peak Detection pop-up window (Figure 2). Use this window to view and adjust peak detection settings, and to execute automated peak detect commands.
Draw Labels: re-draws the peak labels.
Erase Labels: erases the peak labels.
Peak Edit: enters peak editing mode, described below.
THE PEAK DETECTION WINDOW
After the spectral region of interest has been selected (zoomed in), user can perform automatic peak picking using the Peak Detection menu entry (right-click on the Peak button).
The first thing to adjust is the desired dimensions for peak picking. One can automatically peak detect the entire spectrum (up to 4D) or just peak pick a 1D trace or a 2D plane of a 3D or 4D spectrum etc.
The Peak Detection Settings pop-up window (Figure 3, details below)
The Peak Detection Settings can be accessed with a left click on the Settings button of the Peak Detection window.
Specifies the file name of the peak table to read or write.
Specifies what information is displayed by the peak labels. There is a pull-down menu to the right (Variables) which lists the options to be displayed. Note that peaks which have been identified as noise are always labeled with asterisks.
Reads the specified peak table; the peak table must already exist in the current working directory and should have point coordinates which correspond to the current spectrum.
Note: Any changes in processing (e.g. changing carrier positions, re-referencing, modifying the number of zero-filling, spectral widths etc.) performed after peak picking will affect the peak positions and will result in a peak position mismatch. Therefore, after re-processing NMR data with such changes, a new peak picking table must be generated.
Saves the current peak table from memory to a file.
Delete the current peak table in memory.
This enables simple editing of the peak table in memory. In this version, there must already be a current peak table, either from Read or Detect. When the Edit option is selected, the mouse can be used to insert, delete, or modify peak parameters (e.g. assignments). As with other mouse modes, the mouse button functions are given in the top border of nmrDraw. Once a peak table is edited, it should be saved using the Save option.
In the peak editing mode, the [Left] mouse button inserts a peak, the [Middle] mouse button can be used to adjust (edit) the value of a peak variable, and the [Right] mouse button will delete the nearest peak.
When using the middle mouse button to edit a peak, the variable to be adjusted is the one selected for the label (see Labels above). For example, if the assignment value ASS is selected for the label, you can modify the recorded assignment. After clicking the middle mouse button over the peak to change, type in the new value followed by the <Enter> key. The CLUSTID value which defines clusters of partially overlapping peaks can also be displayed and modified this way. Because of keyboard focus issues, you may have to move the mouse in and out of the graphics area before typing; using the "-focus" option of nmrDraw may help this.
Sets the number of dimensions for the peak detection. One can automatically peak detect the entire spectrum (up to 4D) or just peak pick a 1D trace or a 2D plane of a 3D or 4D spectrum etc.
Activate the Peak Detection Settings pop-up, for specification of detection parameters described below.
Select this button to detect peaks according to the current settings (Figure 4). This will be performed by creating and executing a new peak detection script pk.tcl in the current directory. Therefore, peak detection will only work if you have access permissions to create files in the current directory.
Use this button to dismiss the Peak Detection pop–up window.
PEAK DETECTION SETTINGS POP-UP
Filter Command: The name of a command to execute after peak detection; when executed, the command will be given the name of the current peak table as its last argument. The intent of this option is to allow special filtering of the peak table. For example, using the command pkFilter.tcl will generate a "simple" version of the peak table from the original one.
Noise: Enter an estimate of the standard deviation of the spectral noise here. The default value comes from an automated estimate. This parameter is used in the Chi-squared test to classify random noise peaks. It is also used to estimate errors in peak position due to random noise (parameters DX DY DZ and DA in the peak table).
Chi2 Threshold: This is a probability threshold for noise peak rejection by Chi-square test. The Chi-square test estimates the probability that the sum-of-squares intensity in the peak's neighborhood could be caused by random noise alone. To use this test, you must enter a reasonable Noise value above. Increasing the chi2 threshold increase the rejection of peaks near the noise level. If the value is set to one or zero, no peaks will be rejected.
Contour: Specify the minimum number of contour levels which define the High and Low peak detection thresholds.
High: The detection threshold for positive peaks. By default, it is set to the height of the first positive contour level in use when the Peak Detection pop-up window appears.
Low: The detection threshold for negative peaks. By default, it is set to the height of the first negative contour level in use when the Peak Detection pop-up window appears. If want to detect positive peaks only, set this parameter to a large negative number.
DDX: Size of the detection region in +/- points. A given point must be larger than all of the other points in this detection region in order to be detected as a peak.
IDX: Size of the parabolic interpolation region in +/- points.
IncX: Defines how much of the spectral data is read into memory for peak detection. Values of zero will cause the entire spectral region to be read at once. Since some spectral data may be too large for this, it is possible to perform peak detection automatically on overlapping regions. For example, if 3D peak detection is performed with a setting of IncX = 0, IncY = 0, IncZ = 16, the data will be read and analyzed in 16-plane slabs. This will not affect determination of peak positions, widths, and heights, however it can affect the volume (VOL) and bounding region values (X1/X3 etc).
Local Noise: By default, the Chi-square noise classification scheme uses a uniform noise estimate for all parts of the spectrum. Selecting one of the X Y Z or A checkboxes will allow for an adaptive noise estimate with respect to the selected dimension. This can help compensate for noise ridges!
Currently, these options select how noise peaks are identified and handled:
Sinc Detect: If this option is selected, the peak detection module will attempt to identify peaks which are due to truncation noise (sinc artifacts).
Reject Noise Peaks: If this option is selected, any peak classified as noise (either random noise or truncation noise) will be automatically eliminated from the peak table.
Sinc Detect Parameters: The peak detection module attempts to identify truncation artifacts based on the details of window function and zero filling which were applied to each dimension of the data. By taking this information into account, it is possible to estimate for a given peak how far truncation wiggles would extend in each dimension before falling below the detection threshold.
Xadj: In the artifact detection procedure, the height and extent of the truncation peaks are modeled as a profile which decreases as 1/X, where X is the distance from the peak center, and in order for a small peak to be classified as the truncation artifact of a larger peak, the smaller peak must fall below the profile. This value is used as a multiplying factor to increase or decrease the overall profile height.
Xtol: In order for a small peak to be classified as the truncation artifact of a larger peak, the two peaks must align along a given dimension. This value specifies the tolerance in points for deciding whether two peaks are aligned.
XLW: A rough estimate of the original linewidth in Hz in a given dimension before any window function was used.
Save Script: Selecting this command will save a new version of the peak detection script pk.tcl without executing it.
Done: Use this button to dismiss the Peak Detection Settings pop-up window.
PEAK TABLE VARIABLES
By selecting any of the peak table variables from the Variables pull-down menu (righ-click on Variables button in the Peak Detection pop-up window), their corresponding values will be shown in the main NMRDraw window, on top of each detected peak. A ">" or "<" sign indicates (in the case of a 3D or a 4D) that the peak maximum is below or above the current selected Z or A 2D slice (Figure 5).
INDEX: the unique peak ID number.
X_AXIS: the position of the peak in points, by parabolic interpolation.
DX: estimate of the error in peak position due to random noise, in points.
X_PPM: the position of the peak in PPM, by parabolic interpolation.
X_HZ: the position of the peak in Hz, by parabolic interpolation.
XW: the full width at half height in points, estimated by parabolic interpolation.
XW_HZ: the full width at half height in Hz, estimated by parabolic interpolation.
X1/X3: coordinates of the bounding region surrounding the peak or its cluster in points.
HEIGHT: the peak height, estimated by parabolic interpolation.
DHEIGHT: the error peak height due to random noise, estimated by parabolic interpolation.
VOL: the peak volume, estimated as the sum of intensities in the neighborhood of the peak maximum.
PCHI2: the Chi-square probability for the peak (i.e. probability that the peak could be due to random noise alone).
TYPE: An integer describing the peak classification; currently 1 = Peak, 2 = Random Noise, 3 = Truncation artifact.
ASS: Assignment labels.
CLUSTID: identifies the cluster of peaks that a given peak overlaps. Peaks with the same CLUSTID value are considered to be in one overlapped group.
MEMCNT: the total number of peaks which are in a given peak's cluster (i.e. peaks which have the same CLUSTID value).
CHAPTER 4. EDITING A PEAK TABLE FOR SPECTRAL QUANTIFICATION PURPOSES
The most common feature used in routine spectral analysis is making peak assignments. A manually assigned peak table can be used later on to automatically superimpose its existing assignments on other unassigned peak tables (as described in CHAPTER 5).
Following peak detection, a table containing all spectral information of detected peaks is generated in the current directory. If data is read (with File/Select) from a different directory than the current directory (from which nmrDraw was launched) the user can store the peak table in that data directory using the "CD" (Change Directory) button from the File/Select pop-up window (Figure 6). This directory becomes the "current directory" for all subsequent input or output commands (including save, plot etc.)
All random noise peaks and truncation artifacts classified as such by the picking program have specific values in the TYPE field (2 and 3 respectively) and can be easily inspected by displaying the TYPE value (Figure 7).
The noise peaks can be removed altogether from the table by selecting the Reject Noise Peaks option. Peaks can also be re-classified using different parameters for the automatic peak picking process (e.g. Xadj, Xtol, XLW for truncation filters or Chi2 Threshold for random noise as described above etc.) and the spectrum can be re-detected using the new parameters.
Alternatively just a subset of the noise peaks can be manually re-classified as useful peaks. When entering an assignment (as described below) for a noise peak (initially TYPE 2 or 3), this will be automatically re-classified as normal (TYPE 1) peak.
By displaying the CLUSTID variable user can inspect the overlapping peaks (i.e. having same CLUSTID value, Figure 8)
By entering the Peak Edit mode (either from the Peak Menu or using the corresponding <%> or <Shift + 5> shortcut) users can manually add new peaks, modify any peak variable or manually remove some peaks classified as noise or artifacts from the peak table. The assignment variable "ASS" for all peaks in a new peak table contains a generic "None" value (Figure 9). These labels can be manually edited in the Peak Edit mode (effectively assigning the spectrum).
Anytime during peak assignment editing these labels can be displayed or hidden using the Show Labels or Erase labels commands either from the Peak Menu or by using their corresponding keyboard shortcuts "[" and "]". As with all modes, the Peak Edit mode displays the mouse button functions in the top window border (Figure 10).
For example, deleting characters from the labels is performed with <Ctrl + Backspace> or <Ctrl + H> and deleting entire label is done using <Ctrl + U>. After an assignment is typed and the <Enter> key is pressed, the new label value is saved in the assignment table. After each such editing a single backup copy of the table is generated, each time overwriting the previous version, therefore the table can be saved with different names if different stages of such a manual label editing need to be stored (Figure 11).
CHAPTER 5. How to superimpose existing assignments on a peak table
Once a spectrum was assigned, its assignments can be mapped onto an unassigned peak table using the Tcl script ipap.tcl. For example, the assignments of a 2D H-N HSQC spectrum can be used to automatically assign 2D H(N)CO or 3D HNCO spectra, or both the upfield and lowfield components of a coupled 2D H-N HSQC or IPAP spectrum.
The script will search in a closed vicinity of the assigned peaks and if a unique peak is found this can be automatically assigned. The dimension of the searching vicinity is adjustable and can be optimized by trial and error to maximize the number of automatic assignments. The remaining degenerate cases (e.g. overlapping peaks) can be manually assigned after user inspection.
An example is provided with the NMRPipe package. The conversion, processing, and analysis schemes described here require the latest version of the NMRPipe software system.
The example data can be found in the file ipap.tar.Z in the demo data collection. The example directory, called ipap_nhsqc.fid, can be extracted with the (UNIX) command:
zcat ipap.tar.Z | tar xvf –
After converting and processing the data in the usual way (using the provided fid.com and procgauss.com scripts), the user can inspect all the options and syntax of the ipap.tcl program issuing the ipap.tcl command with the "-help" option ("ipap.tcl -help").
The program provides input options of a coupling constant in any dimension, multiplet peak description via a common or individual peak offsets, adjustable search regions, chemical shift offsets and a customizable graphical interface for inspection and eventual adjustment of the automatically mapped assignments.
The example provides a typical automatic assignment mapping for extracting isotropic (J) and residual dipolar (D) couplings from the sum and difference of in-phase/anti-phase (IPAP) spectra using a previously assigned 2D H-N HSQC. The peak positions correspond to the previously assigned HSQC peaks shifted by +/- J/2 or +/- (J+D)/2 in the indirect dimension of the isotropic or aligned spectra respectively.
The program opens a main window (IPAP) containing the graphical interface and an additional window (Changes) that allows navigation across assigned peaks. The Changes window is synchronized with the main window: a click on any assignment will center the spectrum in the main window on that particular assignment (and the neighboring peaks, candidates for assignment mapping, will be also displayed).
In the main IPAP window, display of any of the two spectra to be assigned (color coded white/blue) can be switched off/on by checking their selection boxes on the top line. Similar, the peak labels belonging to each spectrum can be switched off/on from their selection boxes on the top line. The same applies to the source assignment label (to be mapped), situated in this case in the middle of the two mapped assignment labels (color coded red for the selected assignment and yellow for the others). The threshold level (first drawn contour level) displayed in the top line can be increased or decreased using the "+/-" buttons and the spectra can be re-drawn using the Draw button.
The functions of the 3 mouse buttons are displayed on the top window bar (similar to any nmrPipe graphical programs). Peaks can be selected with a left-click (Select) and their automatic (mapped) assignments can be reset using a right-click (Reset). Subsequently any selected peak will get the current assignment (selected in the Changes window). In the case of overlapping assignment labels in the main window, the obstructing label can be send to back (underneath the obstructed label) using a middle-click (Lower).
In the Changes window the Prev and Next buttons are used to navigate sequentially the assignment list and the Reset button will reset both assignments simultaneously. The assignments can be saved at any moment using the Save button and program may be exited using the Quit button.
CHAPTER 6. How to fit a 2D spectrum, evaluate the fit, and revise a peak table accordingly
In many spectroscopic applications the evolution of a particular characteristic (linewidth, intensity, volume etc.) of a peak needs to be evaluated in a series of spectra acquired while a parameter is varied (e.g. relaxation delay, spin coupling evolution delay, etc.).
The NMRPipe package provides tools for extraction of evolution curves for peak intensities across 2D spectral series and fitting those curves with different functional forms.
Example: 2D J-Modulated Spectral Series
The first example provided with the NMRPipe package demonstrates two methods for extracting evolution curves from a 2D spectral series, in this case a 2D J-modulated spectral series. The scalar coupling (J) is encoded in the peak amplitudes and let to evolve under a variable delay tau in the pulse sequence of a 2D series of spectra. In both cases, the evolution of a given peak's amplitude is extracted, and this evolution curve is later fitted to a damped sinusoid model with a frequency corresponding to the J coupling.
The conversion, processing, and analysis schemes described here require the latest version of the NMRPipe software system.
The example data can be found in the file jmod.tar.Z in the demo data collection. The example directory, called jmod, can be extracted with the (UNIX) command:
zcat jmod.tar.Z | tar xvf –
The experimental data contains JCH modulated series (JCaHa ~ 141 ± 8 Hz). Two scripts will automatically process the data:
demo1.com: extract peak heights by Fourier interpolation; this method is quick, but does not account for peak overlap. This demo also fits each evolution curve to a sinusoid, and generates a PostScript plot of each result.
demo2.com: extract evolution curves by pseudo-3D lineshape fitting, which accounts for peak overlap. It also displays evolution curves on the screen, with the option of fitting the current curve to a sinusoid.
Other output directories:
nJ J0 dJ0 amp0 [J1 dJ1 amp1 ...] damp dDamp pkID xPPM yPPM ass
In this case options are:
The "-gsin" option refers to the Gauss Damped Sinusoid function:
amp*exp(sign*alpha^2 * x^2)*sin(PI*(beta*x + phi))
so the coupling constant JCH corresponds to the beta variable and the expected value of this fitted variable should be given as a starting value for the fit (e.g. ~145 Hz or ~290 Hz etc.)
During display of evolution curves by showEvolve.tcl there is an option to save the results as a table.
Scripts and macros:
CHAPTER 7. How to fit pseudo 3D spectra
Example: 2D Relaxation Series
This example is also provided with the NMRPipe package to show a method for extracting evolution curves from a 2D relaxation spectral series. The relaxation time (T1, T2 or T1ρ) is encoded in the peak amplitudes and let to evolve under a variable delay tau in the pulse sequence of a 2D series of spectra (pseudo 3D spectrum). The evolution of a given peak's amplitude is extracted and this evolution curve is later fitted to an exponential model with a decay rate corresponding to the relaxation time.
The conversion, processing, and analysis schemes described here require the latest version of the NMRPipe software system.
The example data can be found in the file relax.tar.Z in the demo data collection. The example directory, called relax, can be extracted with the (UNIX) command:
zcat relax.tar.Z | tar xvf –
The experimental data contains T1 relaxation time series.
Note: proc.com uses scripts fid.com and ft2.com to convert and process each spectrum in the series. proc.com sets the header of the result spectra via series.com so that the data are pseudo-3D.
fid.com is the usual conversion script, but adjusted to take input name, output name, and tau value from the command-line. In the example script here, the tau value is set during conversion. The tau value recorded with a particular spectrum is included in the output of the showhdr command (only non-zero tau values are listed). One can also set or change the recorded tau value of an NMRPipe FID or spectrum with the sethdr command, for example: sethdr ft/test001.dat -tau 8
ft2.com is the usual processing script, but adjusted to take input name, and output name from the command-line. In the example script here, the GM window function is used to make the final lineshapes as close to Gaussian as possible, since the spectrum will later be fit to Gaussian lineshapes (see the section on GM below).
Note: fit.com produces both the nlin.tab (the result of the lineshape fitting program) and the aux.tab (the result of the seriesTab program). The script also produces a simulated spectral series sim/test%03d.ft2 and a residual series dif/test%03d.ft2. The simulated spectra and residual should be inspected carefully to evaluate the success of the lineshape fitting procedure.
How to select GM Gaussian window parameters in NMRDraw
The "nmrpipe -fn GM" command applies a Lorentz-to-Gauss window, which is a combination of an inverse exponential and a Gaussian. The purpose of the window is to replace the exponential decay of the original data with a Gaussian decay, so that the transformed result will have Gaussian-like lineshapes rather than Lorentzian-like ones.
The exponential term -g1 is specified as a line sharpening in Hz. The Gaussian term -g2 is specified as a line broadening in Hz. This line broadening will generally be set much larger than the line sharpening, so that the final result decays close to zero at the last points of the FID. In most cases, the g1 parameter is selected to match the natural exponential decay of the FID. One way to select g1 is to interactively apply several -g1 values to an FID or interferogram in an attempt to get a non-decaying result.
In the case of a 2D or 3D spectrum:
(SP –off 0.5 –end 0.95 –c …)
GM -gl 10 (not enough, signal still decays, Figure 22)
GM -g1 -10 (start over, Figure 23)
GM -g1 20 (too much, signal increases, Figure 24)
GM -g1 -20 (start over, Figure 23)
GM -g1 15 (just right, signal is uniform, Figure 25)
5. You can choose the g2 parameter in a similar way, with the goal of getting an exponentially well-decayed FID after both g1 and g2 are applied together. In practice g2 will be 1.5 to 3.0 times larger than g1 for a good result (Figure 26).