/* VARIAN VNMR MENU GENERATED PULSE SEQUENCE: waterROE.c Ref.: S. Grzesiek & Ad Bax, J. Biomol. NMR, 3, 627-638, (1993) Parameters: dof = frequency for decoupling during acquisition pw = 90 degree xmtr pulse length (hard pulse) pwn = 90 degree decoupler pulse length for the heteronucleus pwlow = 90 degree xmtr low power pulse length for protons pwshape1 = 90 degree 1st shaped pulse length for protons (sinx/x) pwshape2 = 90 degree 2nd shaped pulse length for protons (left half of gauss) tpwr = power level for xmtr hard pulse pwnlvl = power level for decoupler pulses pwlowlvl = power level for low power pulse on water protons shape1lv = power level for shaped pulse on water protons (sinx/x) shape2lv = power level for shaped pulse on water protons (left half of gauss) shape1 = shape of the 1st selective pulse on water (sinx/x) shape2 = shape of the 2nd selective pulse on water (left half of gauss) j = one-bond heteronuclear coupling constant (in Hz) dm = 'nnn': no broadband decoupling of heteronucleus during acquisition; this is mandatory if mbond='y' 'nny': broadband heteronuclear decoupling during acquisition (recommended for mbond='n') phase = 1,2: hypercomplex experiment with F1 quadrature (complex F1-FT) 3: TPPI experiment with F1 quadrature (complex F1-FT) 1,4: TPPI experiment with F1 quadrature (real F1-FT) nt = multiple of 8 (minimum) */ #include /* static double d2_init = 0.0; */ static int phi1[1] = {0}, phi2[8] = {0,0,0,0,2,2,2,2}, phi3[8] = {2,2,2,2,0,0,0,0}, phi4[2] = {0,2}, phi5[1] = {2}, phi6[4] = {2,2,0,0}, phi7[4] = {0,0,2,2}, rec[8] = {0,2,0,2,2,0,2,0}; pulsesequence() { /* declare variables */ int phase, watrsign; double pwshape1, /* duration of 90 degree 1st shaped pulse on water (sinx/x) */ shape1lv, /* power level for 1st shaped pulse on water */ pwshape2, /* duration of 90 degree 2nd shaped pulse on water (left half of gauss) */ shape2lv, /* power level for shaped pulse on water (left half of gauss) */ pwsl, /* duration of the spinlock */ slpwr, /* power of the spinlock */ pwn, /* PW90 FOR N */ pwnlvl, /* HARD POWER FOR 15N */ pwlow, /* duration of 90 degree low power pulse on water */ pwlowlvl, /* power level for low power pulse on water */ /* tau, */ /* DELAY BETWEEN JUMP AND RETURN */ deltaa, /* 1/[2*J(CH)] */ lambda, /* 1/[2*J(NH)] */ gzlvl1, /* level of Gradient G1 */ gt1, /* grad time of G1 */ /* gzlvl2, */ /* level of Gradient G2 */ /* gt2, */ /* grad time of G2 */ gzlvl3, /* level of Gradient G3 */ gt3, /* grad time of G3 */ gzlvl4, /* level of Gradient G4 */ gt4, /* grad time of G4 */ gzlvl5, /* level of Gradient G5 */ gt5, /* grad time of G5 */ gstab; char satflg[MAXSTR], shape1[MAXSTR], /* shape of the selective water excitation pulse (sinx/x) */ shape2[MAXSTR]; /* shape of the selective water excitation pulse (left half of gauss) */ /* load variables */ pwshape1 = getval("pwshape1"); pwshape2 = getval("pwshape2"); pwsl = getval("pwsl"); slpwr = getval("slpwr"); pwn = getval("pwn"); shape1lv = getval("shape1lv"); shape2lv = getval("shape2lv"); pwnlvl = getval("pwnlvl"); pwlow = getval("pwlow"); pwlowlvl = getval("pwlowlvl"); /* tau = getval("tau"); */ deltaa = getval("deltaa"); lambda = getval("lambda"); getstr("satflg", satflg); getstr("shape1", shape1); getstr("shape2", shape2); phase = (int) ( getval("phase") ); watrsign =(int) ( getval("watrsign") ); gt1 = getval("gt1"); /* gt2 = getval("gt2"); */ gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gzlvl1 = getval("gzlvl1"); /* gzlvl2 = getval("gzlvl2"); */ gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gstab = getval("gstab"); settable(t1, 1, phi1); settable(t2, 8, phi2); settable(t3, 8, phi3); settable(t4, 2, phi4); settable(t5, 1, phi5); settable(t6, 4, phi6); settable(t7, 4, phi7); settable(t8, 8, rec); /* CHEK VALIDITY OF PARAMER RANGE */ if((dm[A] == 'y' || dm[B] == 'y')) { printf("incorrect Dec1 decoupler flags! "); abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y')) { printf("Warning! this sequence not designed to use channel 3 ! "); abort(1); } if( dpwr > 50 ) { printf("don't fry the probe, dpwr too large! "); abort(1); } if(gt1 > 15.0e-3 || gt3 > 15.0e-3 || gt4 > 15.0e-3 || gt5 > 15.0e-3 ) { printf("gti must be less than 15 ms \n"); abort(1); } /* PHASE INCREMETATION FOR HYPERCOMPLEX DATA */ if ( phase == 2) { tsadd(t4, 1, 4); } /* water inversion */ if ( watrsign == 1) { tsadd(t1, 2, 4); tsadd(t3, 2, 4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); rcvroff(); hsdelay(d1); /* WATER-ROE */ rlpower(shape1lv,TODEV); shaped_pulse(shape1,pwshape1,t1,rof1,rof1); /* 90 degree water pulse */ zgradpulse(gzlvl1,gt1); delay(deltaa); shaped_pulse(shape1,2*pwshape1,one,rof1,rof1); /* 180 degree water */ zgradpulse(gzlvl1,gt1); delay(deltaa); shaped_pulse(shape1,pwshape1,zero,rof1,rof1); /* 90 degree water pulse */ /* zgradpulse(gzlvl2,gt2); only NOE */ /* delay(tau); water NOE mixing time */ rlpower(tpwr,TODEV); rlpower(pwnlvl,DODEV); txphase(t2); rgpulse(pw,t2,0.0,0.0); rlpower(slpwr,TODEV); rgpulse(pwsl,one,0.0,0.0); /* spinlock("hard",pwsl,90.0,one,1); */ rlpower(tpwr,TODEV); status(B); /* HSQC */ delay(lambda); txphase(one); decphase(zero); simpulse(2*pw,2*pwn,one,zero,0.0,0.0); delay(lambda); txphase(one); decphase(t4); rgpulse(pw,one,0.0,0.0); rlpower(pwlowlvl,TODEV); rgpulse(pwlow,t3,0.0,0.0); zgradpulse(gzlvl3,gt3); delay(gstab); decrgpulse(pwn,t4,0.0,0.0); delay(d2/2); txphase(zero); rlpower(tpwr,TODEV); rgpulse(2*pw,zero,0.0,0.0); rlpower(shape2lv,TODEV); delay(d2/2); decphase(zero); decrgpulse(pwn,zero,0.0,0.0); zgradpulse(gzlvl4,gt4); delay(gstab); txphase(t5); shaped_pulse(shape2,pwshape2,t5,0.0,0.0); txphase(zero); rlpower(tpwr,TODEV); rgpulse(pw,zero,0.0,0.0); zgradpulse(gzlvl5,gt5); delay(lambda); txphase(t6); rlpower(pwlowlvl,TODEV); rgpulse(pwlow,t6,0.0,0.0); rlpower(tpwr,TODEV); txphase(t7); simpulse(2*pw,2*pwn,t7,zero,0.0,0.0); rlpower(dpwr,DODEV); /* lower decou:q :q pler power for decoupling */ txphase(t6); rlpower(pwlowlvl,TODEV); rgpulse(pwlow,t6,0.0,0.0); zgradpulse(gzlvl5,gt5); delay(lambda); /* DATA ACQUISITION */ rcvron(); status(C); setreceiver(t8); }