Hello, This is probably a basic question, alas it has caused considerable turmoil, so at the risk of embarrassing myself. . . I am trying to implement some algorithms for processing NMR spectra using Matlab. I got data for the 1D FID of ethanol from the biomolecular magnetic resonance database which, as far as I can tell, is in the Bruker format. I opened the file in spinworks without problems and used the "export xy data" function to get a text file of what appears to be the real channel(?) I loaded this into Matlab and the intially the FID appeared to be the same, but there are some differences from that which is produced by spinworks. (1) There are negative time values. (2) I took the Fourier transform (using the fft() fuction in Matlab), and from the exported data file found a field that appears to be the reference frequence (400MHz ish?), so I adjusted the frequencies to be (frequency - reference)/reference. The frequency values have a factor of 1e4 attached though, and even worse are a bit different from those in spinworks, (3ppm instead of 5ppm etc.). The overall shape and difference between the peaks is just like the spinworks spectrum though. (3) Also there only appears to be a real channel. . . Am I supposed to take a Hilbert transform? Or is the imaginary channel hiding somewhere? My feeling was that maybe spinworks exports the "raw" uncorrected data from the Bruker file and they are full of Bruker eccentricities that I should correct for in order to get the right data. If this is the case, is there somewhere I can find out the things I need to correct for? And additionally, is simply using the FFT directly, oversimplifying what's required to get a spectrum, or am I on the right track? Sorry for the incredible long winded post by the way. . . Thanks in advance asked Oct 05 '10 at 01:43 jeffery |
Hi Jeffery, have you looked at matNMR? It's a Matlab package that processes NMR data and it can read the spectrometer files directly. Regarding the Spinworks, I'm not sure why there are negative time values, but maybe it's the way it it is trying to fit in the imaginary and real data into a single vector... Anyway, since your goal is to use Matlab, it might be easier to read the data into Matlab directly. answered Oct 05 '10 at 09:37 Evgeny Fadeev Thanks for you reply. I opened the data in MatNMR and it displays the spectrum, but a large component of it is before the t=0 with what apears to be the FID starting after this, is this normal? Also the Fourier transform is quite a lot noisier than spinworks, does it do some kind of apodization? - jeffery (Oct 06 '10 at 06:17) sorry, can't advise any further. You can open source code of mat nmr and see what it does. I guess you can truncate some initial data and apply extra phase correction. - Evgeny Fadeev (Oct 06 '10 at 13:31) It turns out that in my haste to get the data I was using the incorrect import function, as far as I can tell I now have both channels of the FID data. Thanks for your help. - jeffery (Oct 07 '10 at 06:47) I should point out that the "Dump xy Points to File..." feature in SpinWorks is intended for producing a text file of the real part of processed data (spectrum) for use in things like spreadsheets, etc. It is not intended for fid export. I would consider adding such a feature if there is demand. - Kirk Marat (Oct 12 '10 at 20:11) |