NMRPipe Logo

NMRPipe   [See Also: NMRPipe Gallery And Examples]    [BCHM 669]    [SBGrid 1+2]

NMRPipe is a UNIX-based collection of programs and scripts for manipulating multidimensional Nuclear Magnetic Resonance (NMR) data. NMRPipe has its genesis as a spectral processing engine, and over the years has been augmented with a variety of facilities for spectral analysis and quantification, extraction of structural information from NMR data, and manipulation of molecular structures. The use of NMRPipe is noted in roughly 40% of all NMR structures accepted into the Protein Data Bank (PDB).

NMRPipe scripts are generally UNIX C-shell scripts, or TCL scripts which use NMRPipe's customized interpreter nmrWish. Some of NMRPipe's programs and scripts have interactive graphical interfaces, including NMRPipe's primary program for viewing spectra nmrDraw, scroll.tcl for viewing strips from one or more 3D spectra, and specView.tcl for viewing 1D and 2D spectral series. Many NMRPipe programs are operated from the UNIX command line, and some, such as the nmrPipe program itself, are almost always used from inside a shell script. The nmrWish script interpreter includes the standard features of TCL, TK, and BLT, as well as many other NMR-related functions that have been added.

Most of NMRPipe's programs and scripts have command-line options, which you can list by using the -help option. For example, typing nmrPipe -help will list the general command line arguments for nmrPipe. Typing nmrPipe -help -fn ZF will display information about NMRPipe's Zero Fill function ZF.


Typical NMRPipe Workflow for Spectral Processing

The NMRPipe Demonstration Data Archive contains many example schemes for spectral processing and quantification. The typical NMRPipe processing workflow involves creating and editing UNIX C-shell scripts, and frequent alternation between the UNIX command line and NMRPipe programs such as the nmrDraw graphical interface. For this reason, in order to use NMRPipe you will need a working knowledge of UNIX, including use of a text editor and creation of shell scripts.

  1. Prepare a script to convert spectrometer format data to NMRPipe format via an interactive interface. Commands: bruker / varian / delta.
  2. Execute the conversion script, and inspect the result via the nmrDraw graphical interface. Use the Proc/Auto Process 1D menu option to process the first 1D vector, and use the graphical interface to find a phase correction value.
  3. At the UNIX command-line, use a text editor to create or adjust a processing script containing the needed phase corrections etc. Commonly, the processing script is copied from a previous case. Processing scripts can also be created via new general-purpose scripts: basicFT2.com / basicFT3.com / basicFT4.com.
  4. Execute the processing script and read the processed result with nmrDraw. View vectors from any of the dimensions, and choose new phase correction values as needed.
  5. Repeat steps 3 and 4 to adjust processing parameters as needed.
  6. In the case of 3D data, create and inspect projections and view strips plots of the 3D data to confirm that the data is processed and phased properly. Commands: proj3D.tcl / scroll.tcl
  7. As needed, create and edit peak tables, and quantify spectral signals. Commands: nmrDraw / autoFit.tcl

Since it is script-based, NMRPipe is highly customizable.
Some things that the software can do:

Spectral Processing

  • NMRPipe includes special tools to help automate the conversion of time-domain data from Agilent, Bruker, Varian, and JEOL Delta, with adjustment for digital oversampling, and conversion of Non-Uniformly Sampled (NUS) Data.
  • General-purpose data format conversion tools are provided, so that most any sequential data format can be used to generate input for NMRPipe, and processed data can be saved in other forms.
  • NMRPipe includes comprehensive facilities to process, rephase and display conventional and NUS multidimensional data, including options for Iterative Soft Thresholding (IST), Linear Prediction (LP), Maximum Entropy Reconstruction (MEM), and Maximum Likelihood Frequency Maps (ML).
  • Tools to resample spectral data are provided, to generate NUS-style data from conventional data for testing and demonstration purposes.
  • Rigorous inverse processing facilities are provided for optimal use of special reconstruction methods and schemes.
  • NMRPipe's pipeline-based processing schemes are intrinsically parallel, and multidimensional processing scripts can be modified for distributed processing in multi-CPU environments.
  • NMRPipe includes flexible, effective methods to replace bad values in multidimensional data using Linear Prediction or Iterative Soft Thresholding.
  • Common image processing and segmentation functions.

Spectral Display and Plotting

  • The nmrDraw program can display multidimensional time- frequency- and interferogram data, and multiple 1D overlays. The program also provides real-time interactive phasing of multiple 1D spectra, with automated reconstruction of imaginary data.
  • NMRDraw includes facilities for correlated cursors and data positioning for viewing two or more related spectra.
  • Create and draw strip displays, projections, and overlays. Options include interactive strip displays for multiple spectra with differing PPM ranges, providing drag and drop options to adjust strip order.
  • The specView graphic interface allows viewing of 1D or 2D spectral series in overlay, with interactive Principal Component Analysis (PCA) of any spectral region.
  • Existing scripts can generate PostScript and PDF plots for strip displays of 3D data, and for 1D and 2D spectral series overlay. Custom scripts can be created to generate most any kind of spectral plot format.

Spectral Quantification and Analysis

  • Rapid and effective automated peak detection for 1D-4D spectra.
  • Automated 1D-4D lineshape fitting, for precise and convenient spectral quantification, including direct fitting of pseudo-3D data such as relaxation series or J-modulated series.
  • Simulate time or frequency domain data, including qualitative simulations of common spectral types such as HNCA etc.
  • Form linear combinations of time-domain data or spectra.
  • Vector decomposition of spectral and imaging data using Principal Component Analysis (PCA).
  • General-purpose tools for X,Y model fitting and statistics.

Chemical Shift Analysis, Dipolar Couplings, and NMR Homology

  • Predict protein backbone angles based on backbone chemical shifts.
  • Simulate and display protein backbone chemical shifts based on protein strucuture.
  • Calculate J-couplings from Karplus parameters
  • Extensive facilities to manipulate and visualize Dipolar Couplings, including restrained fitting and cross-validation of tensor parameters.
  • Use NMR homology search to estimate protein alignment tensor parameters from measured dipolar couplings without prior knowledge of the structure.
  • Visualize tensor parameters with respect to a PDB file.
  • Extract structural information by NMR Homology Search (Molecular Fragment Replacement, MFR).

Molecular Structure Utilities

  • List or display backbone and sidechain angles, visualize ramachandran trajectory for one or more proteins or fragments.
  • Analyze Protein PDB for H-bonds, secondary structure and turn classification, mass, volume, and surface area.
  • Find coordinate or torsion RMSD between two or more structures, form overlay.
  • Simple Simulated annealing structure calculation, including NOEs, J-coupling, torsion restraints, absolute or relative atomic coordinate restraints, radius of gyration, pseudo-contact shifts, and dipolar couplings.
  • Easily add Hydrogen atoms to a protein PDB file via simulated annealing.
  • Since many NMRPipe facilities use input and output in the form of text tables, a variety of applications are available to manipulate tables as well as PDB files.

For Software Developers

  • The NMRPipe distribution includes C source code for programs which read and write NMRPipe-format data, as a guide to development of software which maniupulates NMRPipe data.
  • The NMRPipe distribution includes C source code for NMRPipe plug-in creation, so that developers can build their own processing functions for use in NMRPipe pipeline schemes.

The NMRPipe Spectral Processing Engine

The spectral processing engine of NMRPipe is based on the concept of UNIX filters and pipes. A filter program is one which reads some input, processes it in some way, and produces an output of the result. One example of a filter is the UNIX command sort, which reads lines of text, and writes them sorted in alphabetical order. By analogy, we can implement individual spectral processing functions in this way. For example, a filter program for Fourier Transform would read a series of time-domain vectors as input, and produce a series of frequency-domain vectors as output. A UNIX pipe is used to connect two of more filter programs in series, so that the output of one program is used as the input to the next program in the series. This allows sophisticated schemes to be constructed from a series of simpler steps. The steps can be organized into a text file (a shell script) for easy manipulation and re-use. In the case of a spectral processing scheme, the steps in the pipeline will be functions such as a window function (here, SB, a sine-bell digital filter), zero filling (ZF), Fourier transform (FT), and phase adjustment (PS). Since the programs in a pipeline operate simultaneously, pipeline-based approaches are naturally parallel, and can immediately take advantage of multi-CPU architecture.


Conversion of 3D and Processing of First 2D Plane:
#!/bin/csh

var2pipe -in ./hnco.fid -noaswap \
 -xN         1024  -yN          128  -zN           64 \
 -xT          512  -yT           64  -zT           32 \
 -xMODE   Complex  -yMODE   Complex  -zMODE   Complex \
 -xSW    8000.000  -ySW    1500.000  -zSW    1650.000 \
 -xOBS    499.843  -yOBS    125.707  -zOBS     50.654 \
 -xCAR      4.773  -yCAR    175.019  -zCAR    118.019 \
 -xLAB         HN  -yLAB         CO  -zLAB          N \
 -ndim          3  -aq2D     States                   \
 -out fid/test%03d.fid -verb -ov

nmrPipe -in fid/test001.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 -verb                               \
| nmrPipe  -fn PS -p0 43 -p1 0.0 -di                  \
| nmrPipe  -fn EXT -x1 10.5ppm -xn 5.5ppm -sw         \
| nmrPipe  -fn TP                                     \
| nmrPipe  -fn SP -off 0.5 -end 0.98 -pow 1 -c 1.0    \
| nmrPipe  -fn ZF -auto                               \
| nmrPipe  -fn FT -verb                               \
| nmrPipe  -fn PS -p0 -135 -p1 180 -di                \
| nmrPipe  -fn TP                                     \
| nmrPipe  -fn POLY -auto                             \
   -verb -ov -out test.ft2
Typical 3D Processing and Automated Strip Display:
#!/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                                   \
| nmrPipe  -fn FT                                   \
| nmrPipe  -fn PS -p0 43  -p1 0.0 -di               \
| nmrPipe  -fn EXT -x1 10.5ppm -xn 5.5ppm -sw       \
| nmrPipe  -fn TP                                   \
| nmrPipe  -fn SP -off 0.5 -end 0.98 -pow 1 -c 1.0  \
| nmrPipe  -fn ZF                                   \
| nmrPipe  -fn FT                                   \
| nmrPipe  -fn PS -p0 -135 -p1 180 -di              \
| nmrPipe  -fn TP                                   \
| nmrPipe  -fn POLY -auto                           \
| pipe2xyz -out ft/test%03d.ft2 -x

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

proj3D.tcl -in ft/test%03d.ft3 -abs
peakHN.tcl -proj -in ft/test%03d.ft3 -out hn.proj.tab -hi Full
scroll.tcl -in ft/test%03d.ft3 -tab hn.proj.tab -hi Full 

Citation Information

NMRPipe

NMRPipe: a multidimensional spectral processing system based on UNIX pipes
   Frank Delaglio, Stephan Grzesiek, Geerten. W. Vuister, Guang Zhu, John. Pfeifer, and Ad Bax, J. Biomol. NMR. 6, 277-293 (1995).