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)

Question about how to make a 3D experiment in which one of the dimensions is a variable counter (vc) list. I'm using TopSpin 3.1.

I'm working on diffusion-relaxation correlation with a third, spectral dimension: first dimension is a gradient list (for diffusion measurements), second dimension a vc list (for CPMG train), third dimension the FID.

I expected this to be relatively simple. To create the acquisition loops for the first and second dimensions, I was using the mc statement with two clauses: F1QF for the gradient list (this is the way it is done in "diff" pulse programs), and F2QF for the vc list. Analogous to the statement for a delay increment, I used F2QF(ivc) for incrementing the vc list. This doesn't seem to work, because F*QF only seems to be able to work with delay increments, not list increments.

I like to use F*QF because it adjusts the loop timings automatically. Does anyone know if this is possible?

asked Jun 04 '14 at 13:41

DaanMR's gravatar image


2 Answers:
i like this answer (click again to cancel)
i dont like this answer (click again to cancel)


for the diffusion dimension you should use F1QF(calgrad(diff)). For the counter list you should use internal lists.

So somewhere at the top, for example under the #include lines you put this

define list<loopcounter> cpmglist=<$VCLIST>

cpmglist is just an example name you can use anything. <$VCLIST> points to the VClist in eda.

In the sequence you can use "cpmglist" where you would have been using vc.

The you increment it with vclist.inc You can do this within the sequence and just use

F2QF() with the mc command. There is also the option of F2QF(cpmglist.inc)

The lastest version Topspin3.2 pl 6 also supports F2QF(calclist(cpmglist,1))

I hope one of the versions works.



answered Jun 04 '14 at 19:25

Clemens%20Anklin's gravatar image

Clemens Anklin

Great, this works. Thanks. - DaanMR (Jun 04 '14 at 22:28)

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

I managed to solve the problem, according to the suggestions by Clemens.

The option F1QF(calclist(cpmglist,1)) didn't work, although in fact I am using TopSpin 3.2.

No errors appeared when using F1QF(cpmglist.inc). However, while running the cpmglist was in fact not incremented: only the first value of the list was used throughout the experiment. I then adapted to F2QF(exec(cpmglist.inc)). The program now steps through the cpmglist, but in a very strange order....

For example: 3 diffusion steps, 2 CPMG steps

difflist 1-2-3-1-2-3 cpmglist 2-1-2-2-1-2

Of course what I would like it to do is:

difflist 1 2 3 1 2 3 cpmglist 1 1 1 2 2 2

So I abandoned this route.

Now I tried the suggestion to use vclist.inc in the pulse program and F1QF() without arguments. This works, but only if you write cpmglist.inc instead of vclist.inc. However, because I necessarily put the inc statement between the "go" and "mc" statements (I can't put it after the "mc" statment, I think, and definitely not before the "go" statement because it would increment the list within the phase cycle), the CPMG dimension should be chosen to be F2, which is the inner loop in a 3D expt. The diffusion dimension should be F1, although the "diff" macro chooses F2.

For clarity, I now use the following mc statement:

100u cpmglist.inc 100u mc #0 to start F1QF(calgrad(diff)) F2QF()

This seems to work :-).


answered Jun 05 '14 at 08:26

DaanMR'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