Frank Delaglio, Ph.D.

19804 Maycrest Way
Germantown MD 20876 USA

301 806-0867
delaglio@nmrscience.com



NMRPipe Processing Functions
LP: Linear Prediction.

Flag Argument Default Description
 -pred predPts 1 or SIZE Number of Points to Predict (PRED). See Notes Below.
 -x1 dataStart PRED+1 or 1 First Point of Input Data for Extracting LP Coefficients. See Notes Below.
 -xn dataEnd SIZE Last Point of Input Data for Extracting LP Coefficients.
 -ord order 8 Prediction Order (Number of LP Coefficients).
Prediction Direction:
 -f Forward LP (Default)
 -b Backward LP
 -fb Forward-Backward LP
 -before Prediction region is before data region.
 -after Prediction region is after data region.
Root Fixing:
 -nofix No Root Fixing (Default for -before).
 -fix Use Root Fixing (Default for -after).
 -fixMode fm 1 Root Fixing Mode.
LP Using Mirror Image:
 -ps90-180 Exact Image.
 -ps0-0 One-Point Shifted Image.
LP Using PCA Vectors:
 -pca Set LP Order to YSIZE.
 -extra xOrd 0 Increase LP Order by the Given Amount.
Auto Signal Count Estimation (Not Implemented):
 -auto Use Automated Order.
 -sig sigCount Signal Count.
 -min nMin 4 Min Nonzero Count.
 -max nMax ORDER Max Nonzero Count.
 -nw ww 8 Noise Cell Width, Pts.
 -dw dw 2 Detect Width +/- Pts.
 -nf nf 3.00 Noise Threshold Factor.
 -sf sf 2.00 Signal Count Factor.
 -fr fr 0.33 Histogram Fraction.
Notes:
  1. Default value for -pred is SIZE for LP -after.
  2. Default value for -pred is 1 for LP -before.
  3. Default value for -x1 is PRED+1 for LP -before.
  4. Default value for -x1 is 1 for LP -after.
  5. Use -ord 0 for max order SIZE/2.
  6. Root Fixing Mode Values for -fixMode:
      -1 Fix roots to suppress decreasing signals (Default for -before).
       0 No root fixing.
       1 Fix roots to suppress increasing Signals (Default for -after).

LP is an implementation of Linear Prediction for complex data which has been designed for high stability. As a result, it may be slower than other implementations of Linear Prediction, but perhaps more robust. LP is used primarily to extend time-domain data. By extending the data, Fourier truncation artifacts become less severe, and line broadening due to use of window functions on short data vectors will be less pronounced. LP can also be used to replace missing or distorted points at the start or interior of time-domain data. LP is usually most effective when used on time-domain data vectors which are not decayed substantially, relatively short (~8-256 complex points) and with a small number of signals (~0-8 peaks per vector). It will also be more effective with higher signal-to-noise and limited dynamic range. However, LP can still be useful in cases with a larger number of signals, or with high dynamic-range cases, since it can often reduce the truncation artifacts of the largest peaks which might otherwise obscure smaller peaks.

Linear Prediction makes a model of a given complex data region; this model can then be used to predict points immediately after the modeled data region (points in the future) or to predict points immediately before the data region (points in the past). In the model, a set of coefficients is found such that linear combination of a group of points predicts the next point in the series. A single set of coefficients is determined by considering each successive overlapping group of points in the data region. The number of coefficients extracted is called the linear prediction order, which determines how many NMR signals (damped sinusoids) can be predicted by the model.

There are three ways of organizing the model to establish the LP coefficients. In one method, the points immediately after each group are predicted; this is called forward linear prediction. In the second method, the points immediately before each group are predicted; this is called backward linear prediction. In the third method, called forward-backward linear prediction, the results from separate forward- and backward-linear prediction calculations are combined. Forward-backward linear prediction is more time-consuming because it requires two LP calculations, but it often gives better results. But, regardless of which modeling method is used, the coefficients can still be used (either directly or in modified form) to predict past or future points.

Once the LP model is created, it can be applied to predict a new synthetic point by using a group of existing points from the original data. The new point can then be used along with a group from the original data to predict yet another new point. This process can be continued indefinitely, but in practice it becomes more unstable as additional points are predicted from previous synthetic ones. Therefore, LP is usually limited to extending data to about twice its original size.

Most LP applications will involve setting the following parameters, or using their default values:

  • Linear prediction order. (-ord lpOrder) Default: order 8.
  • Use of forward, backward, or forward-backward LP. (-f -b or -fb) Default: forward.
  • Location and size of data region. (-x1 firstPoint and -xn lastPoint) Default: all points 1 to SIZE.
  • Number of points to predict. (-pred predPointCount) Default: size of original data.
  • Whether to predict past or future data. (-before or -after) Default: future.

In addition, some data may allow use of Mirror Image LP; in this case, there are two possible modes, described in more detail later:

  • Mirror Image for data with no acquisition delay, which therefore require no first-order phase correction. (-ps0-0)
  • Mirror Image for data with a 1/2 dwell delay, which therefore require 180 degree first-order phase correction. (-ps90-180)

LP ORDER

The linear prediction order defines the number of points in each successive group used to build the LP model. Since several successive groups must be analyzed to build a reliable model, the LP order is usually much smaller than the size of the modeled region, and no larger than half the modeled region. But, the number of signals which can be extracted by LP is limited by the LP order itself. So, there is a trade-off; the LP order must be as large as the number of signals to extract, but smaller than half the original data size. Therefore, cases of very small data size cause a problem, but in some situations this can be solved by Mirror Image LP (see below).

PARAMETERS FOR PREDICTION AFTER

By default, LP is set up to work like zero filling; this means that it will double the size of the data by predicting future points using all of the original data in the model. For example, starting with data of 64 complex points, LP with no arguments:

        nmrPipe -fn LP

is equivalent to:

        nmrPipe -fn LP -x1 1 -xn 64 -ord 8 -f -pred 64 -after

which means "use data region of points 1 to 64 and an order=8 forward linear prediction to predict 64 more points immediately after the data region". Another way would be to use forward-backward LP instead:

        nmrPipe -fn LP -fb

which is the same as:

        nmrPipe -fn LP -x1 1 -xn 64 -ord 8 -fb -pred 64 -after

PARAMETERS FOR PREDICTION BEFORE

When LP is used with the "-before" argument, it will work by replacing points before the selected data region, but it will not increase the size of the data (Note: this may change in later implementations). Therefore, in order to extend the data vectors by adding points at the beginning, the data size must first be adjusted "manually" by zero filling and right-shifting. For example, if we start with 100 data points, and want to create 6 additional points before them:

        | nmrPipe -fn ZF -pad 6                           \
        | nmrPipe -fn RS -rs 6 -sw                        \
        | nmrPipe -fn LP -before -x1 7 -xn 106 -pred 6    \

When the -before option is used, the default value for the -x1 parameter is set to 1 plus the -pred value. So, the following LP scheme is equivalent to the one above:

        | nmrPipe -fn ZF  -pad 6                 \
        | nmrPipe -fn RS  -rs 6 -sw              \
        | nmrPipe -fn LP  -before -pred 6        \

which means "make room for 6 new points, move the original data over by 6 points, predict 6 new points before the original data which is now at points 7 to 106".

MIRROR IMAGE LP

In order for LP to analyze NMR data correctly, the data must have uniform sampling, i.e. the time increment must be the same between all points. Furthermore, the signals are assumed to be exponentially damped or undamped sinusoids, with uniform noise.

In the case of constant-time data, the signals have no exponential dampening. So, we can sometimes artificially extend this data temporarily by adding the data's mirror image complex conjugate (imaginary is negated) before LP, then discarding the mirror image after LP. By extending the data this way, we can use larger than usual LP order parameters, and thus have an opportunity to reconstruct more signals. Furthermore, since the original data points are used in both forward and reverse order, mirror image LP provides the stability advantage of forward-backward LP.

Note that mirror-image LP will usually only be an advantage when there are a small number of original data points; in cases with larger number of data points (> 32 to 64), forward-backward LP may be just as good, and it has the added advantage of no special restrictions on delay-time or decay. So, before using mirror-image LP, be sure that the circumstances are appropriate, as described below.

When we create a mirror image for LP use, we have to be sure that the extended data still has a uniform time increment between each point. In the case of data with no delay, the original points are (t=0 t=1 t=2 ... t=n), and they are the same as hypothetical points at "negative time" (t=0 t=-1 t=-2 ... t=-n) since cos(t) = cos(-t).

We can append the mirror image as:

                           mirror
                           image
                           plane
                             |
         t=-n . . t=-2 t=-1 t=0 t=1 t=2 . . t=n
                             |

and we still have uniform increments between all points; the new data has N-1 reflected points, followed by N original points.

If the data have a half-point delay, we can still make a mirror image, but we have to do it a little differently. We start with the original data, which are (t=0.5 t=1.5 t=2.5 ... t=n+0.5). They are the same as the negative time data (t=-0.5 t=-1.5 t=-2.5 ...) so the mirror image is:

                                    mirror
                                    image
                                    plane
                                      |
         t=-(n+0.5) ... t=-1.5 t=-0.5 | t=0.5 t=1.5 ... t=(n+0.5)
                                      |

and again, there are uniform time increments between all points; this time, the new data has N reflected points followed by N original points.

These two cases can be selected by using the options -ps0-0 or -ps90-180. This will automatically build the mirror image, do the LP, and discard the mirror image automatically. By default, both cases will double the number of original data points, as with ordinary LP. For example:

        nmrPipe -fn LP -ps0-0 -ord 12

means "build the mirror image suitable for data with no acquisition delay, extend it LP using a 12-point order, then discard the mirror image part".

However, if the data have more than one point delay, then appending the mirror image will result in data that have a "gap" -- that is the two points on either side of the mirror image plane will not be separated by one time increment. For instance, if there is a two-point delay, there will be a three-point gap:

                          mirror
                          image
                          plane
                            |
         t=-n . . t=-2 ----gap---- t=2 . . t=n
                            |

Therefore, data with a 1 or more than 1-point acquisition delay can not be used directly for mirror image LP. Instead, the missing first points must be replaced before using mirror image LP. It may be possible in these cases to use LP with the -before option to replace the missing points, then later use LP with the -ps0-0 option to do mirror image as usual.

For example, if there are 30 original points with a three point delay:

        | nmrPipe -fn ZF  -pad 3               \
        | nmrPipe -fn RS  -rs 3 -sw            \
        | nmrPipe -fn LP  -before -pred 3      \
        | nmrPipe -fn LP  -ps0-0               \

means "make room for the three missing points, shift the data by three points, create the three missing points by LP, use mirror-image LP to create 33 additional points by extending the data.

DATA WITH 1-DWELL DELAY

Data acquired with a 1-point delay can be thought if as zero-delay data which have been left-shifted by one point. We compensate for this time-domain shift by phase correction in the frequency domain; each one-point shift in the time-domain adds a 360 degree first order correction (P1=360) to the corresponding spectrum.

However, a P1=360 in the frequency-domain does not correspond to exactly to a simple one-point shift in the time-domain; rather, it is equivalent to a circular shift in the time-domain. So, it is as if the missing first point of the FID is replaced by the last original point of the FID (or by zero if the data has been zero filled).

Fourier theory tells us that the amplitude of the first point in the FID is the integral of all points in the frequency-domain; therefore, if the value of the first time-domain point is incorrect, there will be an offset error (constant baseline distortion) in the corresponding spectrum. As a result, data processed with P1=360 will have a baseline offset.

If we want to avoid baseline problems in this case, we must find a way to replace the missing first point accurately. LP can be used for this task, but it is time consuming and sometimes unstable.

A faster and more stable approach takes advantage of the fact that adjustment of the first time-domain point corresponds to adding a constant in the frequency-domain, as mentioned above. So, we can do the equivalent of replacing the first time-domain point by performing a zero-order baseline correction in the frequency domain. In cases with 64 or more data points and spectra which are not too crowded, automated zero-order baseline correction can be faster and more stable than LP. Therefore, the baseline correction approach is often a better one than LP for this purpose.

STRATEGIES FOR USE OF LP

LP will work best when the time-domain vectors to extend have the fewest possible signals. In order to achieve this, all of the other dimensions of the spectrum should be Fourier Transformed first; this will localize the spectral signals in the transformed dimensions and simplify the remaining time-domain dimension. This means that inverse processing schemes will be required for cases where LP will be used in two of the spectral dimensions. Inverse processing will usually involve the following steps to restore a spectrum to its original time-domain form:

  1. If the imaginary data was deleted previously, reconstruct it using the Hilbert Transform (HT).
  2. Remove the phase correction which was applied previously, using the negative of the original phase values P0 and P1.
  3. Apply an inverse Fourier Transform to restore the data to the time domain.
  4. Remove the zeros which were appended by previous zero filling.
  5. Divide the data by the window and first point scale used previously during forward processing.

When creating inverse processing schemes, the following should be considered:

  • Zero Filling: in order to reconstruct imaginary data correctly using the Hilbert Transform (HT), the original data must have been zero-filled to at least twice its original size.
  • Acquisition Delay: the Hilbert Transform will only produce ideal reconstruction of imaginary data in two cases: an ordinary HT can be used for data with no acquisition delay (P1=0); a mirror-image HT can be used for data with a half-dwell delay (P1=180). In all other cases, the HT may introduce distortions at the edges of the data, but these may only be serious in cases where the data size is small or where signals of interest lie at the edges of the spectrum.
  • Window Function: inverse processing will require dividing the data by the original window function. This means that the original window function should be chosen so that none of the window values are close to or equal to zero.
As noted, the results of an inverse processing scheme will be affected by details such as reconstruction of imaginary data, the inverse window function, and prior use of baseline correction. In some cases, the results of an inverse processing scheme might distort the first or last point of the reconstructed time-domain data. In particular, a distortion in the last point will be especially bad for LP, since this last point will be used directly to append the first synthetic point, and any error will tend to be propagated and amplified as additional synthetic LP points are added.

For this reason, if LP results seem poor when inverse processing schemes are used, examine the intermediate reconstructed time-domain data. In some cases, the distortion in the last points will be obvious, and can be repaired by either changing the original processing scheme, of simply discarding the last time-domain point before applying LP.

OPTIONS

The LP command-line options are detailed below; use the command nmrPipe -fn LP -help to generate a complete list of options and their default values.

-pred predPts
Specifies the number of complex points to predict. In the -after mode (default), the predicted points will be placed after the selected data region, replacing any existing points, and extending the size of the data automatically if needed. When the -after mode is used, the default number of points to predict is set to the original size of the data, so that the data size will be doubled by prediction. If the -before mode is used, the given number of predicted points will be placed before the selected data region, however the size of the data will not be adjusted. When the -before mode is selected, the default number of predicted points is 1, so that the first point of the FID will be replaced.

-x1 dataStart
Specifies the first complex point in the range of points from the original data which will be used to generate the LP model. In the -after mode (default), the default value is 1, which means the region of data to model will start at the first point of the FID. In the -before mode, the default value is set to 1 plus the number of points to predict (-pred predPts), which means the first points of the FID will be replaced by LP.

-xn dataEnd
Specifies the last complex point in the range of points from the original data which will be used to generate the LP model. The default value is set to the original size, which means that the region to model will extend to the last point of the original data.

-ord order
Specifies the LP order, the number of complex coefficients which will be extracted by the LP model. The LP order can be no larger than half the number of points in the data region to model. The LP order also determines the maximum number of NMR signals (damped sinusoids) which can be represented by the model.

-f
When this flag is used, LP coefficients will be extracted using forward-mode equations (default).

-b
When this flag is used, LP coefficients will be extracted using backward-mode equations.

-fb
When this flag is used, LP coefficients will be extracted using both forward- and backward-mode equations, and the two sets of coefficients are then averaged for enhanced stability.

-before
When this flag is used, the LP predicted points will be placed before the modeled data region.

-after
When this flag is used, the LP predicted points will be placed after the modeled data region (default).

-nofix
This flag turns off the LP root reflection procedure. This procedure adjusts the LP coefficients to suppress creation of signals which do not have the desired exponential envelope.

-fix
This flag enables the LP root reflection procedure. This procedure adjusts the LP coefficients to suppress creation of signals which do not have the desired exponential envelope.

-fixMode fm
Specifies the type of root reflection to use. The options are: -1 Suppress Decreasing Exponentials (default for -before) 0 No Adjustment 1 Suppress Increasing Exponentials (default for -after)

-ps90-180
This flag performs mirror-image LP for data with a half-dwell delay (i.e., data that require P0=-90,P1=180 phasing). It is intended for use with data having little or no dampening.

-ps0-0
This flag performs mirror-image LP for data with no acquisition delay (i.e., data that require P0=0,P1=0 phasing). It is intended for use with data having little or no dampening.

EXPERIMENTAL OPTIONS

The following are experimental options, and thus should not be relied on; the descriptions are included for development purposes.

-pca
Sets the LP order to the Y-Axis size; this assumes that the data set is actually a matrix decomposition result created by the Principal Component Analysis (PCA) program pcaNMR.

-extra xOrd
The LP order established by PCA will be increased by the value given here. This is used to insure a minimum reasonable LP order.

-sig sigCount
Specifies the number of signals to reconstruct, in case this should be less than the LP order.

-auto
This flag enables automatic signal count estimation, which will adjust the LP order on a vector-by-vector basis.

-min nmin
The minimum allowable number of signals for automatic signal count estimation.

-max nmax
The minimum allowable number of signals for automatic signal count estimation.

-nw nw
Specifies the cell size in points for noise determination.

-dw dw
Specifies the +/- width in points for signal detection.

-nf nf
Specifies the noise threshold factor for signal detection.

-sf sf
Specifies the signal count factor.

-fr hf
Specifies the minimum fraction of data considered to belong to baseline.

EXAMPLES

The following example shows LP used to extend the 15N dimension of a 2D HN/N correlated spectrum. nmrPipe -in test.fid \ | nmrPipe -fn SOL \ | nmrPipe -fn SP -off 0.5 -end 0.98 -pow 2 -c 0.5 \ | nmrPipe -fn ZF -auto \ | nmrPipe -fn FT \ | nmrPipe -fn PS -p0 194 -p1 0.0 -di \ | nmrPipe -fn EXT -x1 10.5ppm -xn 6.5ppm -sw -verb \ | nmrPipe -fn TP \ | nmrPipe -fn LP -fb \ | nmrPipe -fn SP -off 0.5 -end 0.95 -pow 1 -c 0.5 \ | nmrPipe -fn ZF -auto \ | nmrPipe -fn FT \ | nmrPipe -fn PS -p0 0 -p1 0 -di \ | nmrPipe -fn TP \ | nmrPipe -fn POLY -auto \ -verb -ov -out lp.ft2

The following example shows conventional processing of a data plane with a 1-dwell delay in the indirect dimension. This requires a phase correction of P0=-180,P1=360 which leads to baseline distortions. So, the result from this scheme will have a baseline distortion. Compare this scheme to the following two alternative schemes, which attempt to compensate for the distortion.

      #!/bin/csh

      nmrPipe -in fid/test001.fid                            \
      | nmrPipe -fn SOL                                      \
      | nmrPipe -fn SP -off 0.35 -end 0.99 -pow 2 -c 0.5     \
      | nmrPipe -fn ZF -auto                                 \
      | nmrPipe -fn FT                                       \
      | nmrPipe -fn PS -p0 0.0 -p1 0.0 -di                   \
      | nmrPipe -fn EXT -x1 10.5ppm -xn 5.5ppm -sw -verb     \
      | nmrPipe -fn TP                                       \
      | nmrPipe -fn SP -off 0.5 -end 0.95 -pow 1 -c 1.0      \
      | nmrPipe -fn ZF -auto                                 \
      | nmrPipe -fn FT                                       \
      | nmrPipe -fn PS -p0 -180 -p1 360 -di                  \
        -out test.ps.ft2 -ov -verb

In the following scheme, the data above are processed with a one-point shift followed by Linear Prediction to replace the missing first point caused by the 1-dwell delay. The right-shift also removes the need for a phase-correction, so that after the first point is replace by LP, the data can be treated as if P1=0.

      #!/bin/csh

      nmrPipe -in fid/test001.fid                            \
      | nmrPipe -fn SOL                                      \
      | nmrPipe -fn SP -off 0.35 -end 0.99 -pow 2 -c 0.5     \
      | nmrPipe -fn ZF -auto                                 \
      | nmrPipe -fn FT                                       \
      | nmrPipe -fn PS -p0 0.0 -p1 0.0 -di                   \
      | nmrPipe -fn EXT -x1 10.5ppm -xn 5.5ppm -sw -verb     \
      | nmrPipe -fn TP                                       \
      | nmrPipe -fn ZF -pad 1                                \
      | nmrPipe -fn RS -rs 1 -sw                             \
      | nmrPipe -fn LP -before -pred 1                       \
      | nmrPipe -fn SP -off 0.5 -end 0.95 -pow 1 -c 0.5      \
      | nmrPipe -fn ZF -auto                                 \
      | nmrPipe -fn FT                                       \
      | nmrPipe -fn PS -p0 0.0 -p1 0.0 -di                   \
         -out test.lp.ft2 -ov -verb

In the following scheme, the data above are processed with a an automated zero-order baseline correction. This has the same effect as replacing the missing first point caused by the 1-dwell delay. As noted previously, this method is often faster and more reliable than the LP method given above.

      #!/bin/csh

      nmrPipe -in fid/test001.fid                            \
      | nmrPipe -fn SOL                                      \
      | nmrPipe -fn SP -off 0.35 -end 0.99 -pow 2 -c 0.5     \
      | nmrPipe -fn ZF -auto                                 \
      | nmrPipe -fn FT                                       \
      | nmrPipe -fn PS -p0 0.0 -p1 0.0 -di                   \
      | nmrPipe -fn EXT -x1 10.5ppm -xn 5.5ppm -sw -verb     \
      | nmrPipe -fn TP                                       \
      | nmrPipe -fn SP -off 0.5 -end 0.95 -pow 1 -c 1.0      \
      | nmrPipe -fn ZF -auto                                 \
      | nmrPipe -fn FT                                       \
      | nmrPipe -fn PS -p0 -180 -p1 360 -di                  \
      | nmrPipe -fn POLY -auto -ord 0                        \
         -out test.poly.ft2 -ov -verb

The following script demonstrates an LP scheme which was used to repair bad 1D vectors in a 2D States-Mode FID. The defects occurred in 1D vectors 9-12 in the raw data, which contained 128 total 1D vectors (64 complex points in the Y-Axis). The defects were found by graphical inspection of the FID using the nmrDraw program. Since the 1D vectors in the FID represent interleaved real and imaginary points, the bad vectors correspond to complex points 5 and 6 in the Y-Axis. Since the bad points lie near the beginning of the FID, LP is used in the -before mode, to predict the two bad points before the good points 7-64. Note: to find the complex point corresponding to interleaved point N, use the formula int[(N-1)/2] + 1.

      #!/bin/csh

      nmrPipe -in hcabgco2d.fid \
      | nmrPipe -fn GM -g1 10 -g2 30 -c 0.5               \
      | nmrPipe -fn ZF -size 1024                         \
      | nmrPipe -fn FT                                    \
      | nmrPipe -fn PS -p0 206.4 -p1 0.0                  \
      | nmrPipe -fn EXT -x1 1.0ppm -xn 6.0ppm -sw -verb   \
      | nmrPipe -fn PS -p0 0 -p1 0  -di                   \
      | nmrPipe -fn TP                                    \
      | nmrPipe -fn LP -before -x1 7 -pred 2 -ord 16      \
      | nmrPipe -fn GM -g1 10 -g2 30                      \
      | nmrPipe -fn ZF -size 512                          \
      | nmrPipe -fn FT                                    \
      | nmrPipe -fn PS -p0 217 -p1 159 -di                \
      | nmrPipe -fn TP                                    \
      | nmrPipe -fn POLY -auto                            \
        -out hcabgco2d.ft2 -verb -ov

In some cases, bad data points might be close to the center of an interferogram, so that it is reasonable to consider using either the points before the bad ones for repair, or the points after the bad ones. It is also possible to repair the bad points using both methods, and then to add the resulting repaired interferograms together to give a result which might be better. This procedure can be applied to 1D or 2D data, or even to replace an individual plane from 3D data. For example, to replace points 30 and 31 in a 2D:

      #!/bin/csh

      nmrPipe -in hcabgco2d.fid \
      | nmrPipe -fn GM -g1 10 -g2 30 -c 0.5               \
      | nmrPipe -fn ZF -size 1024                         \
      | nmrPipe -fn FT                                    \
      | nmrPipe -fn PS -p0 206.4 -p1 0.0                  \
      | nmrPipe -fn EXT -x1 1.0ppm -xn 6.0ppm -sw -verb   \
      | nmrPipe -fn PS -p0 0 -p1 0  -di                   \
      | nmrPipe -fn TP                                    \
        -out test.ft1 -ov

      nmrPipe -in test.ft1 \
      | nmrPipe -fn LP -before -x1 32 -pred 2             \
        -out before.ft1 -ov

      nmrPipe -in test.ft1 \
      | nmrPipe -fn LP -after  -xn 29 -pred 2             \
        -out after.ft1 -ov

      addNMR -in1 before.ft1 -in2 after.ft2 -c1 0.5 -c2 0.5 \
             -out avg.ft1

      nmrPipe -in avg.ft1 \
      | nmrPipe -fn GM -g1 10 -g2 30                      \
      | nmrPipe -fn ZF -size 512                          \
      | nmrPipe -fn FT                                    \
      | nmrPipe -fn PS -p0 217 -p1 159 -di                \
      | nmrPipe -fn TP                                    \
      | nmrPipe -fn POLY -auto                            \
        -out hcabgco2d.ft2 -verb -ov

The following scheme demonstrates LP used to repair bad data planes within a 3D spectrum. In this example, planes 58 and 59 in the original FID were corrupted during acquisition. The complete FID consisted of 64 planes. Since the FID planes represent alternating real and imaginary points in the Z-Axis, plane 58 corresponds to the imaginary part of complex point 29, and plane 59 corresponds to the real part of complex point 30. Therefore, points 29 and 30 must be replaced in the Z-Axis. In this case, since the bad data is towards the end of the FID, LP is used in the -after mode (default), to replace the two bad points after points 1-28. Note that the LP is not applied until after the other dimensions have been transformed.

      #!/bin/csh

      xyz2pipe -in fid/test%03d.fid -x -verb \
      | nmrPipe  -fn SP -off .35 -end .95 -pow 2 -c 0.5     \
      | nmrPipe  -fn ZF -auto                               \
      | nmrPipe  -fn FT                                     \
      | nmrPipe  -fn PS -p0 -112.0  -p1 0.0  -di            \
      | nmrPipe  -fn TP                                     \
      | nmrPipe  -fn SP -off .35 -end 1.0 -pow 1   -c 1.0   \
      | nmrPipe  -fn ZF -auto                               \
      | nmrPipe  -fn FT                                     \
      | nmrPipe  -fn PS -p0 -90.0 -p1 180.0 -di             \
      | nmrPipe  -fn TP                                     \
      | nmrPipe  -fn POLY -auto                             \
      | pipe2xyz -out ft/test%03d.ft2 -x -ov

      xyz2pipe -in ft/test%03d.ft2 -z -verb                 \
      | nmrPipe  -fn LP -xn 28 -pred 2 -ord 12              \
      | nmrPipe  -fn SP -off .35 -end 1.0 -pow 1 -c 1.0     \
      | nmrPipe  -fn ZF -auto                               \
      | nmrPipe  -fn FT                                     \
      | nmrPipe  -fn PS -p0 -90.0 -p1 180.0  -di            \
      | pipe2xyz -out ft/test%03d.ft3 -z  -ov

The following scheme illustrates LP used in the two indirect dimensions of a constant-time 3D CBCANH experiment. The scheme is arranged so that the 1D time-domain vectors to be extended by LP are as simple as possible (i.e. have the fewest possible signals). To achieve this, LP is only used on a given dimension when all the remaining dimensions have been processed. This localizes the spectral signals as much as possible, since in the time-domain, a given signal can extend significantly across the spectrum, but in the frequency-domain the signal will be "concentrated" into a peak.

In this example, the HN and N dimensions are transformed, then the CACB dimension is Linear Predicted and then transformed. Finally, the N dimension is inverse transformed, Linear Predicted, then re-transformed. Note the use of "-inv" to undo the effects of not only the Fourier Transform, but also the phasing (if any), the zero filling, and the window function. Note also that the forward-backward LP option -fb could be used as an alternative to the mirror-image options -ps0-0 and -ps90-180:

      #!/bin/csh

      xyz2pipe -in fid/test%03d.fid -x  -verb             \
      | nmrPipe  -fn SOL                                  \
      | nmrPipe  -fn SP -off 0.5 -end 0.98 -pow 2 -c 0.5  \
      | nmrPipe  -fn ZF -auto                             \
      | nmrPipe  -fn FT                                   \
      | nmrPipe  -fn PS -p0 43  -p1 0.0 -di               \
      | nmrPipe  -fn EXT -left -sw                        \
      | pipe2xyz -out lp/test%03d.ft3 -x

      xyz2pipe -in lp/test%03d.ft3 -z -verb               \
      | nmrPipe  -fn SP -off 0.5 -end 0.95 -pow 1 -c 0.5  \
      | nmrPipe  -fn ZF -auto                             \
      | nmrPipe  -fn FT                                   \
      | nmrPipe  -fn PS -p0 0.0 -p1 0.0 -di               \
      | pipe2xyz -out lp/test%03d.ft3 -z -inPlace

      xyz2pipe -in lp/test%03d.ft3 -y -verb               \
      | nmrPipe  -fn LP -ps90-180 -ord 10                 \
      | nmrPipe  -fn SP -off 0.5 -end 0.98 -pow 1 -c 1.0  \
      | nmrPipe  -fn ZF -auto                             \
      | nmrPipe  -fn FT                                   \
      | nmrPipe  -fn PS -p0 -90 -p1 180 -di               \
      | pipe2xyz -out lp/test%03d.ft3 -y -inPlace

      xyz2pipe -in lp/test%03d.ft3 -z -verb               \
      | nmrPipe  -fn HT  -auto                            \
      | nmrPipe  -fn PS  -inv -hdr                        \
      | nmrPipe  -fn FT  -inv                             \
      | nmrPipe  -fn ZF  -inv                             \
      | nmrPipe  -fn SP  -inv -hdr                        \
      | nmrPipe  -fn LP  -ps0-0                           \
      | nmrPipe  -fn SP  -hdr                             \
      | nmrPipe  -fn ZF  -auto                            \
      | nmrPipe  -fn FT                                   \
      | nmrPipe  -fn PS  -hdr -di                         \
      | pipe2xyz -out lp/test%03d.ft3 -z -inPlace

HEADER VALUES

LP updates the recorded time-domain sizes (NDAPOD and NDTDSIZE), so that window functions applied after data extension via LP will automatically extend to the correct number of points to cover both the original data and the predicted points.

LP also updates some chemical shift calibration information (NDCENTER and NDORIG) to accommodate the new position of the zero-frequency point which is anticipated for the corresponding spectrum.

LIMITATIONS

LP used in the -before mode will not increase the data size automatically.

Using LP to back-predicting missing or distorted points at the start of an FID is often unreliable.

LP is often not effective on data with many signals, data with high dynamic range, data with low signal-to-noise ratios, or heavily damped data.