jjhelmus / nmrglue

A module for working with NMR data in Python
BSD 3-Clause "New" or "Revised" License
211 stars 88 forks source link

make_uc not using correct obs and car #221

Open gageoleighton opened 1 month ago

gageoleighton commented 1 month ago

I'm simply trying to plot with ppm on the x-axis...

However, when trying to convert from varian to pipe and then "make_uc" the carrier and observe frequencies are not set correctly. I'm a bit perplexed by this issue. Not sure if it's something wrong with my script as I didn't see what could be going wrong with ng source code.

Before print(pdic['FDF1OBS'], pdic['FDF1CAR']) returns 799.964 4.773 While after make_uc print(uc._car, uc._obs) returns 999.9900000000001 999.99

Any help would be most appreciated!

Also, then the ppm_scale is always 1.5 to 0.5.

import nmrglue as ng
import matplotlib.pyplot as plt

dic, data = ng.varian.read("test")

udic = ng.varian.guess_udic(dic, data)
udic[0]['size'] = 22322
udic[0]['complex'] = True
udic[0]['encoding'] = 'direct'
udic[0]['sw'] = 11160.714
udic[0]['obs'] = 799.964
udic[0]['car'] = 4.773*799.964
udic[0]['label'] = 'H1'

C = ng.convert.converter()
C.from_varian(dic, data, udic)
pdic, pdata = C.to_pipe()

pdic, pdata = ng.pipe_proc.sp(pdic, pdata, off=0.35, end=0.98)
pdic, pdata = ng.pipe_proc.zf(pdic, pdata, auto=True)
pdic, pdata = ng.pipe_proc.ft(pdic, pdata, auto=True)
pdic, pdata = ng.pipe_proc.ps(pdic, pdata, p0=30.0, p1=0.0)
pdic, pdata = ng.pipe_proc.di(pdic, pdata)

print(pdic['FDF1OBS'], pdic['FDF1CAR'])
uc = ng.pipe.make_uc(pdic, pdata)
print(uc._car, uc._obs)

# Pick peaks
threshold = 10e7
peaks = ng.peakpick.pick(pdata[0], pthres=threshold, algorithm='downward')

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(uc.ppm_scale(),pdata[0],'k-')

for n, peak in enumerate(peaks):
    height = pdata[0][int(peak['X_AXIS'])]
    ppm = uc.ppm(peak['X_AXIS'])
    ax.scatter(ppm, height, marker='o', color='r', s=100, alpha=0.5)
    ax.text(ppm, height + threshold/5, n+1)

ax.invert_xaxis()
plt.show()
kaustubhmote commented 1 month ago

Can you share the data that you are using or point to it if it is one of the sets available in nmrglue? My initial guess is that this is an issue with manual setting of parameters in udic.