This page details how to get started collecting decent-quality nonuniformly sampled (NUS) NMR datasets.
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).
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.
The Wagner group hosts an online PG schedule generator here.
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.
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.
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)
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.
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.
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