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)

Hi all, I have a small question on how to aquired a complete signal in BRUKER AVIII. I want to create a multi pulse sequence (1D), where I want to aquire the signal (sequentially) do not adding or replacing the data before each pulse.

||__________||_________||__________||___________ ...

    tp         tp         tp        tp

...Performing Aquisition all time.................

|| - pulse

tp -time between pulse

When I try to use a simple loop in the most simplest case of the bruker's sequence 'onepulse', always I obtain is a adding or a replacing of the previous signal.

I'm still new in programming pulse sequences, I've been try to understand this problem with the Bruker's pulse sequence manual, and I believe this could be simple..

Any help will be appreciated. Thank you

asked Oct 09 '13 at 14:13

TiagoB's gravatar image


One Answer:
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


there are different possibilities to achieve what you want. If the time between 2 subsequent acquisitions is not too short (>> 10 microseconds), you can save each acquired FID to the disk and advance the file pointer after each write operation so that the next data will not add to the existing data but rather be appended to it. The file created by TopSpin will then no longer be called "fid" but "ser". To achieve this, you do not use any longer the "mc" statement but rather use the "old-fashioned" command "wr" in your program.

This is a simple and nonsense example, but I hope it makes the point clear:

1 ze
2 d1
3 p1 ph1
go=2 ph31
d33 wr #0 if #0
lo to 3 times l4

In this program, you start with your recycle delay (d1) and then you issue a pulse (p1). Afterwards you acquire your FID into the buffer by the go-statement. The data which is now in the buffer is then written to the disk by the wr-command. This happens during the delay d33. The "if"-argument means "increase file pointer". So this means that after writing the data to the disk, the next incoming data will be appended to what you just wrote. If you leave that out, the pointer is set to the beginning again and the next time everything will be added. This is also the argument that causes the creation of an "ser"-file instead of an "fid" file. Afterwards you loop to the position "3" l4-times, which means that the pulse is again issued, the fid is acquired again and the data is appended to the file.

So you have to adapt this to your needs. Please mind that writing data to the disk takes a while. If your pulse program reaches the wr-command before the previous wr-command has finished, you will get an error.

In the ser-file created, all of your acquired FIDs are saved sequentially. I hope this is the result that you were looking for.

If the time between acquisitions is too short to wait for the data to be written to disk, you need more than one data buffer. But even then the time cannot be infinitely short.


answered Oct 09 '13 at 16:29

Pascal%20Fricke's gravatar image

Pascal Fricke

Thank you very much Pascal Fricke! This solved my problems. Another question now, is how can I convert the 'ser' file to ascii or other plain text format (on windows)? - TiagoB (Oct 11 '13 at 05:36)

So you want the values of the unprocessed FID? Then you will find the answer here: http://qa.nmrwiki.org/question/43/how-to-extract-bruker-fid-data-in-topspin-and-xwinnmr-to-ascii-format Regarding "Windows": Install a Linux distribution in a virtual machine ;) Or do you want processed data? - Pascal Fricke (Oct 11 '13 at 06:59)

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