*** Outline ***
Denoising an FID with SVD
Denoising an FID increases the signal to noise ratio of the corresponding spectrum without broadening the linewidth.
GPU, 2012 SVD Java 7 application
We provide not only a 32-bit Windows, Java 7 application (svdComplexDevice2014.jar) and a 64-bit Windows, Java 7 application (svdComplexDevice2012X64.jar), but also a 64-bit Linux, Java 7 application (svdComplexDevice2014Ubuntu.jar) which allow us to denoise FID signals acquired with Bruker Avance spectrometer. Thanks to Nvidia GPU and CUDA and CULA tools, the SVD processing duration is much shorter. SVD Java application and TopSpin exchange FID data via TopSpin 4-octet integer binary file: fid.
TopSpin FID file is a 4-octet little-endian integer binary file. On the other hand Java integer number is a 4-octet big-endian number. File conversion is required.
The 32-bit Windows XP/7/8, 32-bit Java Virtual Machine, Java 7 application consists of eight files:
- svdComplexDevice2014.jar (1.8 Mo) (last updated August 08, 2014)
- svdComplexDevice1.dll (35 Ko) (last updated August 08, 2014)
- cublas32_42_6.dll (104.7 Mo)
- cudart32_42_6.dll (422 Ko)
- cula_lapack.dll (21.7 Mo)
- cula_core.dll (40 Ko)
- cudart32_42_9.dll (443 Ko)
- msvcr100d.dll (1.5 Mo)
The 64-bit Windows 7/8, 64-bit Java Virtual Machine, Java 7 application consists of eight files:
- svdComplexDevice2012X64.jar (1.8 Mo) (last updated December 11, 2012)
- svdComplexDevice1.dll (45 ko) (last updated September 04, 2012)
- cublas64_42_6.dll (108.6 Mo)
- cudart64_42_6.dll (588 Ko)
- cula_lapack.dll (34.9 Mo)
- cula_core.dll (39 Ko)
- cudart64_42_9.dll (609 Ko)
- msvcr100d.dll (1.5 Mo)
Download the eight files on the desktop of the computer. The middle four files are provided by CULA dense R15 free edtion for Windows platform. This version supports single-precision real and complex data types. The last two files are provided by DLL-files.com. However, msvcr100d.dll for 64-bit Windows 7/8 is provided by MS Visual C++ 2010 Express setting. The computer must have a Nvidia CUDA-capable GPU installed and NVIDIA CUDA 4.2 driver.
The 64-bit Linux, 64-bit Java Virtual Machine, Java 7 application consists of a compressed folder. The computer must have a Nvidia CUDA-capable GPU installed and NVIDIA CUDA 4.2 driver.
(1) Download the compressed folder (svdLinux.tar.gz) on the desktop of the computer.
(2) Extract this folder on the desktop.
(3) Launch a terminal window.
(4) Run the following command where $USER is username, depending on the computer:
(5) Move to the following directory:
(6) Run the command to launch the SVD Java application:
The command in Step 4 must be performed at each launching of a terminal window.
- Make a copy of experiment data with the wrpa command then display the FID.
- Apply the convdta command if data are obtained in digital mode.
- Double click the svdComplexDevice2014.jar or svdComplexDevice2012X64.jar icon to start the program. The matrix view appears.
- If necessary, check big-endian radio-button for file conversion of other spectrometers. Default state is little-endian radio-button for Bruker TopSpin checked.
- Read the noisy FID binary file fid via File / Open 4-octet integer binary file... menu item, the data are displayed in the two textArea as integer values.
- Make a copy of the original noisy FID binary file (fid) via File / Save original 4-octet integer binary file... menu item, the saved data are those (integer values) displayed in the two textArea.
- Provide the number of complex points for denoising: TDeff/2 smaller or equal to TD/2.
- Provide the number of Hankel matrix columns, it must be smaller or equal to 0.5*TDeff/2.
- Click Run SVD button for denoising. The duration of calculation depends on the number of Hankel matrix columns and the size of random access memory. The singular values and their graph are shown in the SVD view.
- Save this lengthy decomposition on hard disk file using File / Save SVD... menu item in the SVD view.
- Provide a reduced number of singular values in the white textField (this number should be smaller than the number of Hankel matrix columns), then click Hankel button. The denoised FID (non-integer values) is shown in the two textArea of the matrix view.
- Replace the noisy FID binary file fid with denoised data by selecting File / Save denoised fid as binary... menu item.
- Display the denoised FID file in TopSpin, then process the data.
- Jump to Point 7 of "On desktop" part for more denoising if the signal to noise ratio is not good enough. Or recall the saved SV decompostion in Point 8 of "On desktop" part using View / Show SVD... menu item to reach the SVD view; then File / Open SVD... menu item in the SVD view to load the saved SV decomposition.
- Jump to Point 9.
Pascal P. Man, Christian Bonhomme, and Florence Babonneau
Denoising NMR time-domain signal by singular-value decomposition accelerated by graphics processing units,
Solid State Nucl. Magn. Reson. 61-62, 28-34 (2014).
Abstract, PDF, Supplementary data