Processing S3E filtered data example


This example is taken from Listing S7, S8 and S9 in the 2013 JBNMR nmrglue paper. In this example a 2D Agilent/Varian data set collect using a S3E filter is seperated (, converted to NMRPipe format (Sparky file (`data.ucsf) is converted to a NMRPipe file (‘’) and finally processed (


Execute python to seperate the S3E sum and difference spectra from data set in the Agilent/Varian fid file. This creates the files fid_dif and fid_sum.

Execute python to convert these two files to NMRPipe format. This step creates the files test_sum.fid and test_dif.fid.

Execute python to process and combine the sum and different spectra. This step creates the test.ft2 file.

The data used in this example is available for download. [5.42 MB]

Listing S7


import nmrglue as ng
dic, data ='.', as_2d=True)
dic['nblocks'] /= 2
A = data[::2]
B = data[1::2]
ng.varian.write_fid('fid_sum', dic, A + B, overwrite=True)
ng.varian.write_fid('fid_dif', dic, A - B, overwrite=True)

Listing S8


import nmrglue as ng

# read in the sum data set
dic, data ='.', fid_file='fid_sum', as_2d=True)

# set the spectral parameters
udic = ng.varian.guess_udic(dic, data)
udic[1]['size']     = 1500             ; udic[0]['size']     = 256
udic[1]['complex']  = True             ; udic[0]['complex']  = True
udic[1]['encoding'] = 'direct'         ; udic[0]['encoding'] = 'states'
udic[1]['sw']       = 50000.000        ; udic[0]['sw']       = 5000.0
udic[1]['obs']      = 125.690          ; udic[0]['obs']      = 50.648
udic[1]['car']      = 174.538 * 125.690; udic[0]['car']      = 119.727 * 50.648
udic[1]['label']    = 'C13'            ; udic[0]['label']    = 'N15'

# convert to NMRPipe format
C = ng.convert.converter()
C.from_varian(dic, data, udic)
pdic, pdata = C.to_pipe()

# write out the NMRPipe file
ng.pipe.write("test_sum.fid", pdic, pdata, overwrite=True)

# repeat for the difference data set
dic, data ='.', fid_file='fid_dif', as_2d=True)
C = ng.convert.converter()
C.from_varian(dic, data, udic)
pdic, pdata = C.to_pipe()
ng.pipe.write("test_dif.fid", pdic, pdata, overwrite=True)

Listing S9


import nmrglue as ng

# process the direct dimension of the sum data set
sdic, sdata ='test_sum.fid')
sdic, sdata = ng.pipe_proc.sp(sdic, sdata, off=0.45, end=0.95, pow=1, c=1.0)
sdic, sdata = ng.pipe_proc.zf(sdic, sdata, size=8192)
sdic, sdata = ng.pipe_proc.ft(sdic, sdata)
uc = ng.pipe.make_uc(sdic, sdata, dim=1)
pts = uc.f('27.5 Hz') - uc.f('0 Hz')
sdic, sdata = ng.pipe_proc.fsh(sdic, sdata, dir='ls', pts=pts)
sdic, sdata =, sdata, p0=-79.0, p1=0.0)
sdic, sdata = ng.pipe_proc.di(sdic, sdata)

# process the direct dimension of the difference data set
ddic, ddata ='test_dif.fid')
ddic, ddata = ng.pipe_proc.sp(ddic, ddata, off=0.45, end=0.95, pow=1, c=1.0)
ddic, ddata = ng.pipe_proc.zf(ddic, ddata, size=8192)
ddic, ddata = ng.pipe_proc.ft(ddic, ddata)
ddic, ddata =, ddata, p0=-90.0, p1=0.0)
uc = ng.pipe.make_uc(ddic, ddata, dim=1)
pts = uc.f('27.5 Hz') - uc.f('0 Hz')
ddic, ddata = ng.pipe_proc.fsh(ddic, ddata, dir='rs', pts=pts)
ddic, ddata =, ddata, p0=-79.0, p1=0.0)
ddic, ddata = ng.pipe_proc.di(ddic, ddata)

# sum the different and sum data sets
data = sdata + ddata
dic = ddic

# process the indirect dimension
dic, data =, data)
dic, data = ng.pipe_proc.sp(dic, data, off=0.45, end=0.95, pow=1, c=1.0)
dic, data = ng.pipe_proc.zf(dic, data, size=2048)
dic, data = ng.pipe_proc.ft(dic, data, neg=True)
dic, data =, data, p0=0.0, p1=0.0)
dic, data = ng.pipe_proc.di(dic, data)
dic, data =, data)

# write out the results
ng.pipe.write('test.ft2', dic, data, overwrite=True)