Varian Sequence for CPMG:
/* N15 T2 Relaxation Experiment Using CPMG and heating compensation*/
/* Erik R.P. Zuiderweg, University of Michigan, 06/20/01, all
rights reserved*/
/* Coding style: Erik R.P. Zuiderweg + Ananya Majumdar, Sloan-Kettering*/
/*
All parameters are declared in the file erpz_include.h
Relevant here are:
hpwr0: 1H high power (57 -60 dB)
hpwr1: 1H solvent selective power (20 dB)
npwr0: 15N high power (57 -60 dB)
npwr10: 15N CPMG power (50 -55 dB)
cpdpwr2: 15N decoupling power (40 dB)
p90h: 1H high power 90 deg pulse
pul20: 1H high power purge pulse (1 ms)
pul21: 1H high power purge pulse (1 ms)
pul22: 1H high power purge pulse (1 ms)
pul8: 1H solvent selective 90 pulse (1 ms)
p90n: 15N high power 90 deg pulse
pul10: 15N CPMG 90 deg pulse
grpwr1-5: gradient power (1000 -10000)
grpul1-5: square gradient pulse length (1ms)
phcor12: phase correction for watergate
del18: recycle delay
del16: tcp /2
del10: gradient recovery time (100 us)
del3: 1/4JNH or shorter
del4: 1/4JNH
tau1: t1/2
loop10: counter for cpmg period (duration = del16*4*loop10)
loop11: counter for heating comp period (duration = del16*4*loop11)
loop10+loop11 should be constant over the series (done by the
operator)
this code computes that the relaxation delay stays constant.
recorded with states-tppi - no sensitivity enhancement or trosy
water suppression by soft-hard-soft watergate
solvent kept saturated in sequence
to avoid variation over the relaxation series
*/
#include <standard.h>
static double d2_init = 0.0;
static int phi1[2] = {0,2},
phi4[4] = {0,0,2,2},
phi5[8] ={0,0,0,0,2,2,2,2},
phi3[1] = {1},
psirec[4] ={0,2,2,0};
pulsesequence()
{
/* DECLARE AND LOAD VARIABLES */
#include "erpz_include.h"
/* Load Phase Table */
settable(t1,2,phi1);
settable(t4,4,phi4);
settable(t5,8,phi5);
settable(t3,1,phi3);
settable(t31,4,psirec);
initval(loop10,v8);
initval(loop11,v9);
del19=del18-del16*4.*loop11;
if(ix == 1) {
printf("The T2 time (loop 10) is %f ms\n",del16*4000.0*loop10);
printf("The compensation time (loop 11) is %f ms\n",del16*4000.0*loop11);
printf("set the recycle delay with Del18,it will
calculate del19\n" );
}
/* create phase correction */
if(phcor12 < 360) phcor12 = phcor12+360;
initval(phcor12,v12);
/* CHECK VALIDITY OF PARAMETER RANGE */
if(cpdpwr2 > 50 )
{
printf("cpdpwr too high");
abort(1);
}
if(npwr10 > 55 )
{
printf("npwr10 > 55, are
you sure??? ");
}
if(del19 < 0 )
{
printf("del19 negative!!");
abort(1);
}
if(dm[B]=='y')
{
printf("decoupler1 illegally
on");
abort(1);
}
if(dm3[B]=='y')
{
printf("decoupler3 illegally
on");
abort(1);
}
/* Phase incrementation for hypercomplex data */
if ( phase1 == 2 ) /* Hypercomplex
in t1 */
tsadd(t3, 1, 4);
/* calculate modification to phases based on current t1 values
to achieve States-TPPI acquisition */
if(ix == 1)
d2_init = d2;
t1_counter = (int) ( (d2-d2_init)*sw1
+ 0.5);
if(t1_counter %2) {
tsadd(t3,2,4);
tsadd(t31,2,4);
}
tau1 = d2/2.;
/* BEGIN ACTUAL PULSE SEQUENCE */
/* Receiver off time */
status(A);
rcvroff();
obspower(hpwr0); xmtrphase(zero) ;
dec2power(npwr10);
delay(5e-6);
if(loop11 > 0.0)
{
starthardloop(v9);
delay(del16-2.0e-6-pul10);
dec2rgpulse(pul10*2,t5,2.0e-6,2.0e-6);
delay(del16-4.0e-6-pul10-p90h);
delay(p90h*2);
delay(del16-4.0e-6-pul10-p90h);
dec2rgpulse(pul10*2,t5,2.0e-6,2.0e-6);
delay(del16-2.0e-6-pul10);
endhardloop();
}
dec2power(npwr0);
delay(del19);
delay(10.e-6);
dec2rgpulse(p90n,zero,2.0e-6,0.);
delay(10.e-6);
zgradpulse(grpwr1,grdel1);
delay(del10);
rgpulse(p90h,t4,2.0e-6,0.);
delay(del3);
rgpulse(p90h*2.0,one,2.0e-6,0.);
dec2rgpulse(p90n*2.0,zero,2.0e-6,0.);
delay(del3-p90n*2.0);
rgpulse(pul20,zero,2.0e-6,0.);
rgpulse(p90h,one,2.0e-6,0.);
delay(10.e-6);
zgradpulse(grpwr2,grdel2);
delay(del10);
dec2rgpulse(p90n,t1,2.0e-6,0.);
delay(del4);
rgpulse(p90h*2.0,one,2.0e-6,0.);
dec2rgpulse(p90n*2.0,zero,2.0e-6,0.);
dec2power(npwr10);
delay(del4+p90h*2.0);
if(loop10 > 0.0)
{
starthardloop(v8);
delay(del16-2.0e-6-pul10);
dec2rgpulse(pul10*2,t5,2.0e-6,2.0e-6);
delay(del16-4.0e-6-pul10-p90h);
rgpulse(p90h*2,t5,2.0e-6,2.0e-6);
delay(del16-4.0e-6-pul10-p90h);
dec2rgpulse(pul10*2,t5,2.0e-6,2.0e-6);
delay(del16-2.0e-6-pul10);
endhardloop();
}
dec2power(npwr0);
delay(5.e-6);
dec2rgpulse(p90n,one,2.0e-6,0.);
rgpulse(pul21,zero,2.0e-6,0.);
rgpulse(pul22,one,2.0e-6,0.);
delay(10.e-6);
zgradpulse(grpwr3,grdel3);
delay(del10);
dec2rgpulse(p90n,t3,2.0e-6,0.);
delay(del4+d2_init);
dec2rgpulse(p90n*2.0,zero,2.0e-6,0.);
delay(tau1);
rgpulse(p90h*2.0,zero,2.0e-6,0.);
delay(del4 + tau1-p90h*2.0);
dec2rgpulse(p90n,zero,2.0e-6,0.);
delay(10.e-6);
zgradpulse(grpwr4,grdel4);
delay(del10);
rgpulse(p90h,two,2.0e-6,0.);
delay(del3-grdel5-1.5e-5-del10-pul8);
zgradpulse(grpwr5,grdel5); delay(1e-5);
delay(del10);
obspower(hpwr1); obsstepsize(1.0); xmtrphase(v12) ; txphase(two);
delay(5.e-6);
rgpulse(pul8,two,2.0e-6,0.);
obspower(hpwr0); xmtrphase(zero) ;
delay(5.e-6);
delay(p90n*2.0);
rgpulse(p90h*2.0,zero,2.0e-6,0.);
dec2rgpulse(p90n*2.0,zero,2.0e-6,0.);
obspower(hpwr1); obsstepsize(1.0); xmtrphase(v12) ; txphase(two);
delay(5.e-6);
rgpulse(pul8,two,2.0e-6,0.);
/* shaped GRD */
zgradpulse(grpwr5,grdel5); delay(1e-5);
delay(del10+rof2);
dec2power(cpdpwr2);
delay(del3-grdel5-1.5e-5-del10-pul8);
status(B);
setreceiver(t31);
}