NMRPipe: Comprehensive Software for Multidimensional NMR
[See Also: The Big NMRPipe Reference Page]
NMRPipe is a UNIX-based collection of programs and scripts for manipulating multidimensional Nuclear Magnetic Resonance (NMR) Spectra. It is developed and maintained by Frank Delaglio, with contributions from the colleagues listed in the link here. A typical NMRPipe installation includes related software such as NMRDraw, NMRWish, DYNAMO, ACME, and MFR. There are also options for installing TALOS+ and SPARTA+ packages for analysis of protein chemical shifts.
NMRPipe has its genesis as a spectral processing engine, emphasizing multidimensional NMR applications. The use of NMRPipe is noted in roughly 40% of all NMR structures accepted into the Protein Data Bank (PDB). Over the years, NMRPipe has been augmented as part of a plan to provide a set of tools under a common framework for all aspects of biomolecular NMR. The key philosophy is a bottom-up approach to software and application development, where simpler components are combined using standard scripting techniques (here, UNIX C-Shell and TCL) to achieve complex goals.
An early focus of the software was flexibility, since protein NMR methods were rapidly changing and expanding, typical protein structure calculation projects took months or even years, and no completely standard protocol was used. Now, computers are fast enough to process 3D spectra in seconds, experimental methods for high-throughput NMR structure determination are available, and NMR structural biology is practiced by those who might not be completely familiar with details of multidimensional signal processing.
In addition, 1D and 2D spectral series are now common tools for ligand screening, quality assurance, metabolomics, and food science. In response, our current software development includes an emphasis on automation and batch processing, and spectral series analysis.
Since it is script-based, NMRPipe is highly customizable.
Some things that the software can do:
- 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.
- 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 multidimensional data, including options for Maximum Entropy Reconstruction (MEM), Linear Prediction (LP), and Maximum Likelihood Frequency Maps (ML).
- NMRPipe provides tools for reconstruction of Non-Uniform Sampled Data (NUS), including Iterative Shrinkage Thresholding (IST). Decomposition.
- Rigorous inverse processing facilities are provided for optimal use of special reconstruction methods.
- 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.
- Common image processing and segmentation functions.
- 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.
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 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