import nmrglue as ng
import numpy as np
import os
from math import sqrt
import csv
def find_nearest(array,value):
return (np.abs(array-value)).argmin()
with open('7000noise.csv', 'wb') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['dir', 'romi', 'roma', 'rtmi', 'rtma', 'n_avg/3.18'])
root = '/Volumes/Data/7000/'
for dir in os.listdir(root):
if dir.startswith('7000'):
odic,odata = ng.varian.read(os.path.join(root,dir,dir,'data/Metnoesy_01.fid/'))
udic = ng.varian.guess_udic(odic,odata)
udic[0]['size'] = odata.shape[0] # Dimension size (R|I for last axis, R+I for others)
udic[0]['sw'] = float(odic['procpar']['sw']['values'][0]) # Spectral width in Hz.
udic[0]['obs'] = float(odic['procpar'][u'sfrq'][u'values'][0]) # Observation frequency in MHz.
udic[0]['car'] = 71.01+float(odic['procpar']['rfp1']['values'][0]) # Carrier frequency in Hz.
udic[0]['label'] = '1H'
udic[0]['complex'] = True
udic[0]['encoding'] = 'direct'
C = ng.convert.converter()
C.from_varian(odic, odata, udic)
dic,data = C.to_pipe()
dic,data = ng.pipe_proc.zf(dic, data, size=128E3) # Zero fill
dic,data = ng.pipe_proc.em(dic, data, 0.5) # line broadening
dic,data = ng.pipe_proc.ft(dic, data, auto=True) # Complex Fourier transform.
data = ng.proc_autophase.autops(data, 'peak_minima')
dic,data = ng.pipe_proc.di(dic, data) # Delete imaginaries
dic,data = ng.pipe_proc.mult(dic, data, r=7.5E4, inv=True) # Multiply by a constant
dic,data = ng.pipe_proc.med(dic, data) # Median baseline correction
uc = ng.pipe.make_uc(dic, data)
x = uc.ppm_scale()
y = data
ro = y[find_nearest(x,0.3):find_nearest(x,0.15)]
roma = ro.max()
romi = ro.min()
rt = y[find_nearest(x,10.4):find_nearest(x,9.4)]
rtma = rt.max()
rtmi = rt.min()
n_avg = ( (roma - romi) + (rtma - rtmi) ) / ( 2.0 * sqrt(2) )
writer.writerow([dir, roma, romi, rtma, rtmi, n_avg/3.18])