# Automatic phase correction of NMR spectra

My PyQt GUI book Create Simple GUI Applications has been updated, with new chapters on multithreading and packaging your apps. Get it here.

This notebook demonstrates automatic phase correction algorithms implemented for nmrglue. Two standard algorithms are implemented:

• ACME algorithm by Chen Li et al. Journal of Magnetic Resonance 158 (2002) 164-168

• Naive peak minima minimisation

The outputs for the two algorithms are shown below. Automatic phase correction can be used through the addition of an autops function to the proc_base set alongside the algorithm name to employ for scoring of phase. Custom algorithms can be provided via the same parameter.

In [1]:
import nmrglue as ng

data = ng.bruker.remove_digital_filter(dic, data)

In [2]:
%matplotlib inline

In [3]:
import matplotlib.pyplot as plt
plt.figure(figsize=(10,4))
plt.plot(data)

/usr/local/lib/python2.7/site-packages/numpy/core/numeric.py:462: ComplexWarning: Casting complex values to real discards the imaginary part
return array(a, dtype, copy=False, order=order)

Out[3]:
[]
In [4]:
data_fft = ng.proc_base.fft(data)
plt.figure(figsize=(10,4))
plt.plot(data_fft)

Out[4]:
[]
In [5]:
data_pc_pm = ng.proc_base.autops(data_fft,'peak_minima')

Optimization terminated successfully.
Current function value: 0.000037
Iterations: 90
Function evaluations: 165

In [6]:
plt.figure(figsize=(10,4))
plt.plot(data_pc_pm)

Out[6]:
[]
In [7]:
data_pc_acme = ng.proc_base.autops(data_fft,'acme')

Warning: Maximum number of function evaluations has been exceeded.

In [8]:
plt.figure(figsize=(10,4))
plt.plot(data_pc_acme)

Out[8]:
[]