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)

I was wondering how to add a shaped-pulse to a standard fHSQC pulse program on a Varian?

asked Feb 27 '10 at 08:54

dcapraro's gravatar image


updated Mar 02 '10 at 08:07

Evgeny%20Fadeev's gravatar image

Evgeny Fadeev

btw, this forum uses "karma" reputation to gradually allow certain things - including voting. Maybe barriers are a tad too high at the moment... I should probably attend this issue. Anyway at 15 points you can upvote :). faq page has more details. - Evgeny Fadeev (Feb 27 '10 at 09:09)

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

Varian pulse declarations are fundamentally different from Bruker's.

For example, consider this in Bruker'ese:

(p21 ph1 d21):f3 (p12:sp2 ph1):f2

What's interesting here?

  • square pulse p21 on channel f3 starts simultaneously with shaped pulse sp2 at power setting pl2 on channel f2
  • delay d21 starts immediately after square pulse p21
  • the sequence continues until either d2 or shaped pulse sp2 finish - whichever comes first
  • notice that entry for f3 precedes that for f2 - order of those entries actually does not matter
  • entry for f1 is not present as there is no pulse at channel 1
  • ph1 entry after p21 and pl2:sp2 instructs the instrument to use phase table 1 for phase cycling of both pulses (not so relevant for this discussion)

All of that will be quite different in the Varian programming environment.

Square one pulse statements

Here are the statements for the specification of single square RF pulses from the Varian C programming language library:

//it is important to note that phase variables are special in Varian
//those are so-called real time variables that belong directly to the console
//Varian real time variables are initialized using special function calls
pulse(width, phase); //pulse on observe channel of width and phase
                     //pre-pulse and after-pulse gating delays or rof1 and rof2
                     //are added implicitly
rgpulse(width, phase, rg1, rg2); //same but gating delays rg1 and rg2 are explicit

The following six are directly modeled after the two statements above but apply to decoupler channels (basically your channel 2,3 and 4)

decpulse(width, phase);//first decoupler - a.k.a channel 2
decrgpulse(width, phase, rg1, rg2);
dec2pulse(width, phase);//second decoupler - channel 3
dec2rgpulse(width, phase, rg1, rg2);
dec3pulse(width, phase);//third decoupler - channel 4
dec3rgpulse(width, phase, rg1, rg2);

Shaped one pulse statements

Notice that statements above did not provide shaped pulses, there are separate commands for the shaped pulses, listed below:

shaped_pulse(pattern, width, phase, rg1, rg2);//pattern - is the extra variable

Pattern - is a C programming language string containing basename of the file that has details of that particular shaped pulse - the waveform. For example, if you want to use file gauss.RF probably located in the directory ~/vnmrsys/shapelib/, use "gauss" for the pattern (double quotes are important - they delimit string constants in C).

Likewise, there are statements for the shaped pulses on other channels - they directly follow the pattern of square one pulse statements: decshaped_pulse(...), dec2shaped_pulse(...), and dec3_shapedpulse(...). Function call signature (type and order of parameters) is same as those for the shaped_pulse(...) function.

Simultaneous pulses

The pattern seen in single pulse statements translates onto simultaneous pulse statements.

Important notes about Varian's simultaneous pulse statements:

  • you first have to choose on how many channels you want to pulse simultaneously in a rather special way: if you want to pulse on channels 2 and 3 - the correct choice will be three channels - because you can never omit the "lower" channels (observe channel or number 1 in this case).
  • pulses are always co-centered
  • if you want to edge-align pulses, or insert delays into simultaneous pulse groups - you will have to use one of the simultaneous shaped pulse statements and explicitly code that stuff into the waveform .RF files

  • gating delays rg1 and rg2 apply to the widest pulse within the group

  • if you want to simultaneously apply square and shaped pulses - use one of the "shaped" statements and emulate the square pulse with a simple shaped pulse file (probably you have one called "square.RF")
  • unlike in Bruker format - order of parameters matters in C function calls
  • if you want to omit a pulse on one of the channels, use "" empty string for the shape name and 0 (number zero) for the pulse width and a special real time variable zero - for the phase

The relevant statements are below:

//square simultaneos pulses
simpulse(obswidth, decwidth, obsphase, decphase, rg1, rg2);
sim3pulse(obswidth, decwidth, dec2width, obsphase, decphase, dec2phase, rg1, rg2);
sim4pulse(<same as above but two more parameters>);
//shaped simultaneous pulses
simshaped_pulse(obsshape, decshape, obswidth, decwidth, obsphase, \
                decphase, rg1, rg2);//backslash above is just a line wrap
//continue the pattern above for:

answered Feb 28 '10 at 08:52

Evgeny%20Fadeev's gravatar image

Evgeny Fadeev

updated Mar 02 '10 at 08:15

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

hey, actually Varian has sequence gNhsqc.c - maybe you don't need to implement one... just a quick pointer


answered Feb 28 '10 at 10:00

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