/* maglyco.c from ma_A_i+1_c.c This pulse sequence will allow one to perform the following experiment: 2D G (i+1) 15N-HSQC (enhanced sensitivity PFG and with minimal perturbation of water) correlating n(i+1) with nh(i+1) of sequential neighbors of Gly. F1 N (i+1) F2(acq) NH (i+1) Uses three channels: 1) 1H - carrier (tof) @ 4.7ppm [H2O] 2) 13C - carrier (dof @ 55ppm [CA] and dofcacb @ 45ppm [CA,CB]) (Note: centre of F1 is 45ppm (dofcacb)) 3) 15N - carrier (dof2)@ 119ppm [centre of amide N] Set dm = 'nnnn', dmm = 'cccc' Set dm2 = 'nnny', dmm2 = 'cccp' [15N decoupling during acquisition] dseq2 = 'waltz16' Must set phase = 1,2 and phase2 = 1,2 for States-TPPI acquisition in t1 [carbon] and t2 [N]. [The fids must be manipulated (add/subtract) with 'grad_sort_nd' program (or equivalent) before regular processing.] Flags fsat 'y' for presaturation of H2O f1180 'y' to get 180deg linear phase correction in F1, otherwise linear phase correction is 0. Standard Settings: fsat='n', f1180='n'. The flag f1180 should be set to 'y' if t1 is to be started at halfdwell time. This will give -90, 180 phasing in f1. If it is set to 'n' the phasing will be 0,0 and will still give a perfect baseline. Set f1180 to n for (0,0) in N This pulse program was developed from the hbcbcaconnh_3c_pfg1_sel_600.c from Lewis Kay (last modified Nov. 24, 1995) (REF: Muhandiram and Kay, J. Magn. Reson. B 103, 203-216 (1994).) by Mario and Lawrence 18th June 2002. last modified by Mario 12th July 2002. REF: Schubert et al., J. Magn. Reson. 141, 34-43 (1999). */ #include static int phi1[1] = {0}, phi2[8] = {1,1,3,3,5,5,7,7}, phi3[32] = {0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0, 2,2,2,2,2,2,2,2, 2,2,2,2,2,2,2,2}, phi4[1] = {0}, phi5[2] = {0,2}, phi6[2] = {0,2}, phi7[1] = {0}, phi8[1] = {0}, phi9[32] = {0,0,0,0,0,0,0,0, 1,1,1,1,1,1,1,1, 2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3}, rec[32] = {0,2,2,0,0,2,2,0, 2,0,0,2,2,0,0,2, 2,0,0,2,2,0,0,2, 0,2,2,0,0,2,2,0}, phi11[1] = {0}, phi12[1] = {1}, phi13[1] = {1}; static double d2_init=0.0; pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ spco180a[MAXSTR], spco90b[MAXSTR], spco180b[MAXSTR], cadecseq[MAXSTR]; int phase, ni, icosel, /* used to get n and p type */ t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ taua, /* ~ 1/2JCH = 3.8 ms */ tauc, /* ~ 4.5 ms */ taud, /* ~ 4.5 ms */ taue, /* 1/4JC'N = 12.4 ms */ tauf, /* 1/4JNH = 2.25 ms */ BigTC, /* carbon constant time period */ BigTN, /* nitrogen constant time period */ pwn, /* PW90 for 15N pulse */ pwca90a, /* PW90 for 13C at dvhpwr */ pwca180a, /* PW180 for 13C at dvhpwra */ pwco180a, pwca180b, /* PW180 for ca nucleus @ dvhpwrb */ pwco180b, pwco90b, /* PW90 for co nucleus @ dhpwrb */ tsatpwr, /* low level 1H trans.power for presat */ tpwrml, /* power level for h decoupling */ pwmlev, /* h 90 pulse at tpwrml */ dhpwr, /* power level for 13C pulses on dec1 90 for part a of the sequence at 45 ppm */ dvhpwra, /* power level for 180 13C pulses at 45 ppm */ dhpwrb, /* power level for 13C pulses on dec1 - 55 ppm 90 for part b of the sequence*/ dvhpwrb, /* power level for 13C pulses on dec1 - 55 ppm 180 for part b of the sequence */ dhpwr2, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ dofcacb, /* dof for dipsi part, 45 ppm */ pwcadec, /* seduce ca decoupling at dpwrsed */ dpwrsed, /* power level for seduce ca decoupling */ dressed, /* resoln for seduce decoupling = 2 */ dhpwrcoa, /* power level for pwco180a, 180 shaped C' */ sphase1, /* phase shift for off resonance C' 180 */ BigT1, gt1, gt2, gt4, gt5, gt6, gt7, gt9, gt10, gzlvl1, gzlvl2, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl9, gzlvl10; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("spco180a",spco180a); getstr("spco90b",spco90b); getstr("spco180b",spco180b); getstr("cadecseq",cadecseq); taua = getval("taua"); tauc = getval("tauc"); taud = getval("taud"); taue = getval("taue"); tauf = getval("tauf"); BigTC = getval("BigTC"); BigTN = getval("BigTN"); pwca90a = getval("pwca90a"); pwca180a = getval("pwca180a"); pwco180a = getval("pwco180a"); pwca180b = getval("pwca180b"); pwco90b = getval("pwco90b"); pwco180b = getval("pwco180b"); pwn = getval("pwn"); pwmlev = getval("pwmlev"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); tpwrml = getval("tpwrml"); dhpwr = getval("dhpwr"); dvhpwra = getval("dvhpwra"); dhpwrb = getval("dhpwrb"); dvhpwrb = getval("dvhpwrb"); dpwr = getval("dpwr"); dhpwr2 = getval("dhpwr2"); phase = (int) ( getval("phase") + 0.5); sw1 = getval("sw1"); dofcacb = getval("dofcacb"); ni = getval("ni"); pwcadec = getval("pwcadec"); dpwrsed = getval("dpwrsed"); dressed = getval("dressed"); dhpwrcoa = getval("dhpwrcoa"); BigT1 = getval("BigT1"); sphase1 = getval("sphase1"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt9 = getval("gt9"); gt10 = getval("gt10"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl9 = getval("gzlvl9"); gzlvl10 = getval("gzlvl10"); /* LOAD PHASE TABLE */ settable(t1,1,phi1); settable(t2,8,phi2); settable(t3,32,phi3); settable(t4,1,phi4); settable(t5,2,phi5); settable(t6,2,phi6); settable(t7,1,phi7); settable(t8,1,phi8); settable(t9,32,phi9); settable(t10,32,rec); settable(t11,1,phi11); settable(t12,1,phi12); settable(t13,1,phi13); /* CHECK VALIDITY OF PARAMETER RANGES */ if( ni*1/(sw1) > 2.0*BigTN ) { printf(" ni is too big\n"); abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' || dm[D] == 'y' )) { printf("incorrect dec1 decoupler flags! "); abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnny' "); abort(1); } if( pwmlev < 30.0e-6 ) { printf("too much power during proton waltz sequence\n"); abort(1); } if( tpwrml > 53 ) { printf("tpwrml is too high\n"); abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); abort(1); } if( dpwr > 47 ) { printf("don't fry the probe, DPWR too large! "); abort(1); } if( dpwr2 > 46 ) { printf("don't fry the probe, DPWR2 too large! "); abort(1); } if( dhpwr > 62 ) { printf("don't fry the probe, DHPWR too large! "); abort(1); } if( dhpwrb > 62 ) { printf("don't fry the probe, DHPWRB too large! "); abort(1); } if( dvhpwrb > 62 ) /* pwr level for dipsi */ { printf("don't fry the probe, DVHPWRB too large! "); abort(1); } if( dhpwr2 > 62 ) { printf("don't fry the probe, DHPWR2 too large! "); abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); abort(1); } if( pwmlev > 200.0e-6 ) { printf("dont fry the probe, pwmlev too high ! "); abort(1); } if( pwn > 200.0e-6 ) { printf("dont fry the probe, pwn too high ! "); abort(1); } if( pwca90a > 200.0e-6 ) { printf("dont fry the probe, pwca90a too high ! "); abort(1); } if( pwca180a > 200.0e-6 ) { printf("dont fry the probe, pwca180a too high ! "); abort(1); } if( pwca180b > 200.0e-6 ) { printf("dont fry the probe, pwca180b too high ! "); abort(1); } if( pwco90b > 200.0e-6 ) { printf("dont fry the probe, pwco180b too high ! "); abort(1); } if( pwcadec > 500.0e-6 || pwcadec < 200.0e-6 ) { printf("pwcadec outside reasonable limits: < 500e-6 > 200e-6 \n"); abort(1); } if( dpwrsed > 45 ) { printf("dpwrsed is too high\n"); abort(1); } if( gt1 > 15e-3 || gt2 > 15e-3 || gt4 >=15e-3 || gt5 > 15e-3 || gt6 >= 15e-3 || gt7 >= 15e-3 || gt9 >= 15e-3 || gt10 >= 15e-3) { printf("all gti values must be < 15e-3\n"); abort(1); } if(gt10 > 250.0e-6) { printf("gt10 must be 250e-6\n"); abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t11,2,4); icosel = 1; } else icosel = -1; /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t8,2,4); tsadd(t10,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); offset(dofcacb,DODEV); /* initially pulse at 43 ppm */ rlpower(dhpwr,DODEV); /* Set Dec1 power for hard 13C pulses */ rlpower(dhpwr2,DO2DEV); /* Set Dec2 power for 15N hard pulses */ /* Presaturation Period */ status(B); if (fsat[A] == 'y') { rlpower(tsatpwr,TODEV); /* Set transmitter power for 1H presaturation */ delay(2.0e-5); rgpulse(d1,zero,rof1,rof1); rlpower(tpwr,TODEV); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); } else rlpower(tpwr,TODEV); /* Set transmitter power for hard 1H pulses */ delay(d1); txphase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); rcvroff(); delay(20.0e-6); /* ensure that magnetization originates on H and not 13C */ decrgpulse(pwca90a,zero,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl1); delay(gt1); rgradient('z',0.0); delay(150.0e-6); /*-----------start of M U S I C ------------------------------------------*/ rgpulse(pw,zero,0.0,0.0); /*------1H: 90 deg 1H pulse */ decphase(t3); delay(0.2e-6); rgradient('z',gzlvl2); delay(gt2); rgradient('z',0.0); delay(2.0e-6); rlpower(dhpwr,DODEV); /* */ delay(taua - gt2); /* 1/2JCH = 3.8ms */ simpulse(2*pw,pwca90a,zero,t3,2.0e-6,2.0e-6); /*-1H: 180 /13C: 90 CA/CB*/ decphase(zero); rlpower(dhpwrcoa,DODEV); decshaped_pulse(spco180a,pwco180a,zero,4.0e-6,0.0); /* bloch siegert */ rlpower(dvhpwra,DODEV); delay(0.2e-6); rgradient('z',gzlvl2); delay(gt2); rgradient('z',0.0); delay(2.0e-6); txphase(t1); delay(taua - gt2 - POWER_DELAY - pwco180a); /* 1/2JCH = 3.8 ms */ rgpulse(pw,t1,0.0,0.0); /* ----------1H: 90 pulse */ delay(2.0e-6); stepsize(45.0,TODEV); /*recommeded by ranjith*/ xmtrphase(t2); rgpulse(pw,zero,0.0,0.0); /* ----------1H: 90 pulse */ xmtrphase(zero); decphase(t5); delay(2.0e-6); decrgpulse(pwca180a,t5,0.0,0.0); /* --------- 13C 180 pulse on CA/CB */ decphase(zero); rlpower(dhpwrcoa,DODEV); decshaped_pulse(spco180a,pwco180a,zero,4.0e-6,0.0); /* bloch siegert */ delay(2.0e-6); delay(2*pw); delay(2.0e-6); rgradient('z',gzlvl2); delay(gt2); /*Gradient*/ rgradient('z',0.0); delay(2.0e-6); delay(taua - gt2); /* 3.8ms*/ delay(0.2e-6); rlpower(dhpwr,DODEV); /*-------------------------- End of M U S I C -------------------------------------*/ decrgpulse(pwca90a,zero,2.0e-6,0.0); /* -------- 13C 90 pulse on CA/CB */ delay(0.2e-6); offset(dof,DODEV); rlpower(dhpwrb,DODEV); delay(0.2e-6); rgradient('z',gzlvl4); delay(gt4); rgradient('z',0.0); delay(50.0e-6); txphase(one); delay(2.0e-6); /* H decoupling on */ rlpower(tpwrml,TODEV); obsprgon("waltz16",pwmlev,90.0); xmtron(); /* H decoupling on */ decphase(t6); delay(2.0e-6); decshaped_pulse(spco90b,pwco90b,t6,0.0,0.0); decphase(zero); delay(taud - POWER_DELAY - 4.0e-6); rlpower(dvhpwrb,DODEV); decrgpulse(pwca180b,zero,4.0e-6,0.0); rlpower(dhpwrb,DODEV); delay(taue - taud - POWER_DELAY + 2*pwn); /* adjust phase */ initval(1.0,v2); decstepsize(sphase1); dcplrphase(v2); /* adjust phase */ decshaped_pulse(spco180b,pwco180b,zero,0.0,0.0); dcplrphase(zero); dec2rgpulse(2*pwn,zero,0.0,0.0); delay(taue - 2*POWER_DELAY - 4.0e-6 - 4.0e-6); rlpower(dvhpwrb,DODEV); decrgpulse(pwca180b,zero,4.0e-6,0.0); /* bloch seigert */ rlpower(dhpwrb,DODEV); decshaped_pulse(spco90b,pwco90b,t7,4.0e-6,0.0); /* H decoupling off */ xmtroff(); obsprgoff(); /* H decoupling off */ rgpulse(pwmlev,two,2.0e-6,0.0); delay(0.2e-6); rgradient('z',gzlvl5); delay(gt5); rgradient('z',0.0); delay(50.0e-6); rgpulse(pwmlev,zero,2.0e-6,0.0); txphase(one); delay(2.0e-6); /* H decoupling on */ rlpower(tpwrml,TODEV); obsprgon("waltz16",pwmlev,90.0); xmtron(); /* H decoupling on */ /*------------------------------------start on 15N------------------------*/ dec2rgpulse(pwn,t8,2.0e-6,0.0); dec2phase(t9); decphase(zero); /* seduce on */ rlpower(dpwrsed,DODEV); decprgon(cadecseq,pwcadec,dressed); decon(); /* seduce on */ delay(BigTN - tau1 + WFG_START_DELAY + WFG_STOP_DELAY + pwco180b); /* seduce off */ decoff(); decprgoff(); rlpower(dhpwrb,DODEV); /* seduce off */ dec2rgpulse(2*pwn,t9,0.0,0.0); decshaped_pulse(spco180b,pwco180b,zero,0.0,0.0); dec2phase(t11); /* seduce on */ rlpower(dpwrsed,DODEV); decprgon(cadecseq,pwcadec,dressed); decon(); /* seduce on */ delay(BigTN + tau1 - 5.5e-3 - POWER_DELAY - PRG_STOP_DELAY - pwmlev - 2.0e-6); /* H decoupling off */ xmtroff(); obsprgoff(); /* H decoupling off */ rgpulse(pwmlev,two,2.0e-6,0.0); rlpower(tpwr,TODEV); delay(2.5e-3); /* seduce off */ decoff(); decprgoff(); rlpower(dhpwrb,DODEV); /* seduce off */ delay(0.2e-6); rgradient('z',icosel*gzlvl6); delay(gt6); rgradient('z',0.0); delay(2.0e-6); txphase(zero); dec2phase(t11); delay(3.0e-3 - gt6 - 2.2e-6 - 2.0*GRADIENT_DELAY); sim3pulse(pw,0.0,pwn,zero,zero,t11,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl7); delay(gt7); rgradient('z',0.0); delay(2.0e-6); dec2phase(zero); delay(tauf - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwn,zero,zero,zero,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl7); delay(gt7); rgradient('z',0.0); delay(2.0e-6); txphase(t12); dec2phase(t13); delay(tauf - gt7 - 2.2e-6); sim3pulse(pw,0.0,pwn,t12,zero,t13,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl7); delay(gt7); rgradient('z',0.0); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(tauf - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwn,zero,zero,zero,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl7); delay(gt7); rgradient('z',0.0); delay(2.0e-6); txphase(zero); delay(tauf - gt7 - 2.2e-6); rgpulse(pw,zero,0.0,0.0); txphase(zero); delay(BigT1); rgpulse(2*pw,zero,0.0,0.0); delay(2.0e-6); rgradient('z',gzlvl9); delay(gt9); rgradient('z',0.0); delay(2.0e-6); delay(BigT1 - gt9 - POWER_DELAY - 4.0e-6 - 2*GRADIENT_DELAY); rlpower(dpwr2,DO2DEV); /* set power for 15N decoupling */ /* BEGIN ACQUISITION */ status(D); setreceiver(t10); }