Non-Uniform Sampling

From Powers Wiki
Revision as of 03:23, 11 September 2021 by Mjeppesen (talk | contribs) (Added to Category)

This page details how to get started collecting decent-quality nonuniformly sampled (NUS) NMR datasets.

Schedule creation

For two-dimensional (2D) NMR datasets, deterministic Sine-Burst sampling (a.k.a. SB) is recommended, as it has a lower average IST reconstruction error than pseudorandom Poisson-Gap sampling (a.k.a PG).

Deterministic Sine-Gap

There's an easy web interface for dgs, located here. Also, the dpg program is available in the path on our cluster, so you can run it from Linux/PuTTY without issues, like so:

dpg 50 512

Since printing the numbers to the screen is fairly useless, you can write a schedule like so:

dpg 50 512 > sched-10-512

In the dpg command, the first value is the number of points to sample in the schedule, and the second value is the total number of complex points in the uniform (reconstructed) dataset.

Pseudorandom Poisson-Gap

The Wagner group hosts an online PG schedule generator here.

Data collection

Once you've generated a schedule, you'll need to set up an experiment in Topspin that uses that new schedule file. On the spectrometer PC, copy the schedule file into the directory that contains variable counter lists:

cp -iv /path/to/my/schedule/file /opt/topspin3.2.6/exp/stan/nmr/lists/vc/

Now, open Topspin and create a new experiment. Set FnTYPE to non-uniform sampling, set TD(F1) to the number of total complex data points that you used to build your schedule, and set NUSLIST to the filename of your schedule that you just placed in the vc directory. (e.g. it would be file for the above example copy statement)

CAUTION! NEVER click Calculate or Show table once you've set the NUSLIST parameter. Doing so will blow away your carefully crafted Poisson-Gap schedule file, turning it into a useless uniform-random schedule file.

Data processing

This section describes the reconstruction and processing of NUS data using hmsIST and nmrPipe. If you want to use different software packages, you'll have to look elsewhere for documentation.

Format conversion

Converting from the Bruker binary format into the nmrPipe format works exactly as before, with the exception that the number of complex points in any nonuniformly sampled dimension must reflect the number of sampled points, not the number of total points. The following script should serve as an example:

#!/bin/bash
# fid.sh: generated as usual from `bruker’

bruk2pipe -in 1/ser                             \
  -bad 0.0 -aswap -DMX -decim 2200 -dspfvs 20   \
  -grpdly 67.986083984375                       \
  -xN              8192  -yN               100  \
  -xT              4096  -yT                50  \
  -xMODE            DQD  -yMODE  Echo-AntiEcho  \
  -xSW         9090.909  -ySW        29239.766  \
  -xOBS         700.213  -yOBS         176.081  \
  -xCAR           4.700  -yCAR          75.000  \
  -xLAB              1H  -yLAB             13C  \
  -ndim               2  -aq2D          States  \
  -out 1/hsqc.fid -verb -ov

The above dataset was collected by sampling 50 complex data points from a Nyquist grid having 512 complex points. (i.e. the TD field in Topspin for 13C was set to 1024)

Direct-dimension processing

Processing the uniformly sampled direct dimension proceeds just like you'd expect, so the proc1.sh script is basically the top half of the proc.sh script used to process uniformly sampled data.

#!/bin/bash
# proc1.sh: basically the first half of proc.sh

nmrPipe -in 1/hsqc.fid                                     | \
  nmrPipe -fn SOL                                          | \
  nmrPipe -fn SP -off 0.45 -end 0.98 -pow 2                | \
  nmrPipe -fn ZF -auto                                     | \
  nmrPipe -fn FT                                           | \
  nmrPipe -fn PS -p0 -43.0 -p1 0.0 -di                       \
    -verb -ov -out 1/hsqc.nus

The output file, 1/hsqc.nus will be processed in the direct dimension only. It's important to open up the 1/hsqc.nus file in nmrDraw to check that the first slice is phased properly before proceeding to the next step.

Reconstruction

Once the direct dimension is processed, the nonuniformly sampled indirect dimension may be reconstructed. The following script shows how to take the hsqc.nus file generated in the previous step and reconstruct the complete dataset into hsqc.ft1:

#!/bin/bash
# procR.sh: reconstruction of the full Nyquist grid

nmrPipe -in 1/hsqc.nus | \
  nmrPipe -fn TP       | \
  hmsIST                 \
    -ref 0               \
    -vlist 1/nuslist     \
    -xN 512              \
    -itr 500             \
    -user 1              \
    -verb 0            > \
      1/hsqc.ft1

The most important options you'll need to edit will be the xN (number of complex total points) and itr (number of reconstruction iterations) flags. Just about everything else can always remain the same.

Indirect-dimension processing

Once reconstruction is complete, you can process the indirect dimension in nmrPipe as you normally would. The following script, which should look eerily like the bottom half of the uniform proc.sh, does exactly that:

#!/bin/bash
# proc2.sh: basically the second half of proc.sh

nmrPipe -in 1/hsqc.ft1                                        | \
  nmrPipe -fn SP -off 0.45 -end 0.98 -pow 2 -size 512 -c 0.5  | \
  nmrPipe -fn FT                                              | \
  nmrPipe -fn PS -p0 -90.0 -p1 0.0 -di                        | \
  nmrPipe -fn TP                                                \
    -verb -ov -out 1/hsqc.ft2