i like this post (click again to cancel)
i dont like this post (click again to cancel) remove favorite mark from this question (click again to restore mark)

Hello, I would like to find detailed technical info on the binary data storage formats for Varian and Bruker. Could anyone point me to such resources?

I'm involved into a student project where NMR data will be displayed in the web browser. The first thing we'd like to explore is the possibility of processing 1D with javascript, but we first have to be able to read the original data...

I've looked through Varian manuals, but apparently the right one did not pop up in front of me :). Could you suggest - which book any other resource could be looked at?

edit: now I recall that Kirk Marat published a C# header file for Varian here ftp://davinci.chem.umanitoba.ca/pub/marat/SpinWorks/source_library/ (part of SpinWorks ftp directory)

But how is the data actually laid out in the file?

Is there some information like this available for Bruker?

Any help will be appreciated.

asked Mar 11 '10 at 14:05

Evgeny%20Fadeev's gravatar image

Evgeny Fadeev

updated Mar 12 '10 at 12:14

5 Answers:
i like this answer (click again to cancel)
i dont like this answer (click again to cancel) the author of the question has selected this answer as correct

Varian's data format is well described in their User Programming Manual. The parameters are in the ASCII procar file, and the data in the fid file. The fid can be 32 bit integer, 16 bit integer or 32 bit float, and has BID ENDIAN (Power PC) byte order. Before the data in the fid file is a file header, and before each block of data (e.g. 2D increment) is a block header. e.g. FH-BH-data-BH-data-BH-data-BH-data... etc. The format of the actual data is specified by the status word in the block header - and is always correct. The block header is there even if there is only one block.

I've worked with the Bruker format for so long that I don't remember what manual it is in. The parameters are all in ASCII files (in essentially JCAMP-DX format), with the most relevant ones being the acqus and acqus2, acqus3.... files. These are the status acquisition parameters in the direct and indirect dimensions. You might also want the proc, proc2, etc files for some processing and referencing parameters. The data are in the fid or ser (for multi D) files. There are no block or file headers, but the byte order can be either BIG ENDIAN or LITTLE ENDIAN depending on the host computer used (X32,SGI or PC). This is specified by the BYTORDA acquisition parameter. There is a similar BYTORDP parameter for processed data. The data are 32 bit signed integers. However, I have heard that newer Bruker systems can use 64 bit floating point numbers in some cases. I haven't run across any yet, but I'll have to give it a try when our new Avance III systems arrive. For multi-D, it is important to note that each block starts on a 1024 byte disk-sector boundary. It will almost always be the case that the previous block will end at the sector boundary, so that you can just sequentially read the data. This will not be the case if the TD parameter is some strange value like 741 points. There is no spectroscopic reason why you couldn't have a TD value like 741, and if you do you would have to read the next block starting in the next disk-sector boundary. I think this may be a hold-over from a time when they used to have their own high speed "BFS" file system on the X32. Reading Bruker 1D processed data is straight forward. Reading processed 2D can be a bit trickier because of the sub-matrix format used. (Something like Sparky).

I am willing to share source code for reading Bruker and Varian data to anyone who wants it. This would be a bit newer than the stuff posted on the ftp site.

For a really tough multi-D data format, try JEOL (no flames please!)


answered Mar 16 '10 at 06:39

Kirk%20Marat's gravatar image

Kirk Marat

updated Mar 24 '10 at 10:26

Thanks, Kirk. This is very clear and helpful. If you could share the data reading code that would be awesome. We'll probably rewrite in C or Python if possible (I assume yours is in C# - is that right?). If we decide to rewrite - we'll share that too. - Evgeny Fadeev (Mar 16 '10 at 10:30)

There is a parameter DTYPA that determines whether the data is integer or floating point (DTYPA = 0 for integer). Presumably there's DTYPP for processed data. - anglican (Mar 18 '10 at 04:13)

Thanks for pointing this out. SpinWorks is all set to handle the FP format, I just haven't actually had any data to try it out on. I've got two new Avance III systems arriving in a month or two. I'll give it a thorough check then. - Kirk Marat (Mar 18 '10 at 04:57)

Does anyone know anything about what data VNMRJ requires to be in a procpar which is loaded ? It appears to be VERY sensitive to having a perfect procpar. Im having trouble generating a VNMRJ compliant procpar. It needs more than just the correct np , ni, sw, sw1, phase, and array values. - j (May 25 '10 at 10:29)

Hi Kirk, I am working on a project that requires the interpretation of Bruker and Varian fid & ser files. I came across your SpinWorks src code but it seems some of the code is missing. I would appreciate it if you could you share the code that reads the data. my email: suppawong at psu.edu. Thanks. - Suppawong Tuarob (Jul 21 '11 at 19:25)

see 6 more comments
i like this answer (click again to cancel)
i dont like this answer (click again to cancel)

I think any of the data can be extracted in binary form from spinworks. In this format one has intensity points vs an arbitrary axis (for frequency dimension). This is comma or tab delimited data.


answered Mar 13 '10 at 10:19

bernie%20o%27hare's gravatar image

bernie o'hare

Oh, we actually need to write our own code, that's why I need specifically the file layout. - Evgeny Fadeev (Mar 13 '10 at 10:52)

i like this answer (click again to cancel)
i dont like this answer (click again to cancel)

For Bruker file formats there is a manual called fileform.pdf in $TOPSPINHOME/prog/docu/english/xwinproc/pdf. It contains some information about the format of the major file types in XWINNMR or TOPSPIN. Let me know if you need a copy of this manual.


answered Mar 16 '10 at 11:19

Clemens%20Anklin's gravatar image

Clemens Anklin

Hi Clemens, thank you. Could you really send it to me - evgeny fadeev at gmail com? Appreciate it. - Evgeny Fadeev (Mar 16 '10 at 12:11)

Hi guys : Im also looking for this file ? can you send it to me at jayunit100 at gmail dot com ? Thanks ! - j (May 21 '10 at 10:05)

i like this answer (click again to cancel)
i dont like this answer (click again to cancel)

We have noticed that VNMRJ is extremely sensitive to the procpar format. We have generated a procpar file, and tried to test it inside of VNMRJ, and it seems as thought VNMRJ really wants to have ALOT (if not ALL) of the procpar parameters that come off of the spectrometer.

This is somewhat surprising to me, since many VNMRJ functions, such as basic processing, only need to know the sweep width and dimension sizes.

Does anyone know anything about what data VNMRJ requires to be in a procpar which is loaded ? Programs like NMRPipe, iNMR, etc only need a very limited subset of procpar data (i.e. they can basically load just fine as long as they have np, ni, sw, sw1 array , phase, and a couple of other parameters .....


answered May 25 '10 at 10:23

j's gravatar image


Hello Jay, I think you should re-post this as a separate question, because discussion threads are hard to follow. This forum does not support discussion threads on purpose. Cheers. - Evgeny Fadeev (May 25 '10 at 10:40)

... plus a separate question will be a lot more visible (will easily get 10x the views) - Evgeny Fadeev (May 25 '10 at 10:42)

i like this answer (click again to cancel)
i dont like this answer (click again to cancel)


As for me, I am testing the related .net barcode generator these days. Do you have any ideas about it? Or any good suggestion? I am totally a green hand on barcode generating field. Any suggestion will be appreciated.

Thanks in advance.

Best regards, Arron


answered Jul 25 '14 at 00:00

arronlee's gravatar image


Your answer
Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a good answer, for discussions, please use comments and please do remember to vote (login to vote)
toggle preview

powered by CNPROG