/* pfg_hnca_se1.c triple resonance experiment for H-N-CA out-and-back. based on Grzesiek & Bax JMR 96: 432-440, 1992 Figure 2A Copyright 1995 Center for Advanced Biotechnology and Medicine, Rutgers Univ. H to TODEV, N to DODEV, C to DO2DEV & C' to DO3DEV Set dof2 = CA frequency. Use pwCA180l = pwCA90l + 6 dB Minimum phase cycle = 2 Optimum phase cycle = 4 if se = 'y', it may be advisable to set tof = H2O to suppress H2O echos. No H2O echos with se='n' w1 = CA, states-tppi for phase=1,2; tppi for phase=3 w2 = 15N, nagayama for phase2=1,2 w3 = HN ni2max is limited by tauCAN ni2max = 2 * sw2 * tauCAN; use macro 'ni2maxhnca' for 3D array phase, then phase2 PROCESSING For 2D CA-HN plane: phase = 1,2 for State-TPPI use wft2d('ni',1,0,0,0,0,0,1,0) results in best baselines; lp1 = 0 (but requires back prediction of 1st point) phase = 3 for TPPI use wft2d('ni',1,0,0,0) if phase2 = 1 or 2 or wft2d('ni',1,0,1,0,0,0,0,0) in phase2 = 1,2 baselines show "bleed through"; lp1 = 0 For 2D N-HN plane: phase2 = 1,2 for N- P-type selection use wft2d(1,0,1,0,0,-1,0,1) or wft2d(0,1,1,0,1,0,0,1) flat baseline; lp2 = 0 For first CA-HN plane from 3D phase=1,2; phase2=1,2 (in that order) use wft2d('ni',1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0) For first N-HN plane from 3D phase=1,2; phase2=1,2 (in that order) use wft2d('ni2',1,1,0,1,0,0,0,0,0,0,-1,0,1,0,0,0,0) when using states-tppi in w1, the t1 ridges must be corrected by back-linear prediction of 1st point typical values for combined backward and forward linear prediction with ni = 64: lpopt1 = 'b','f' lpfilt1 = 4,8 lpnupts1 = 32,64 strtlp1 = 2,64 lpext1 = 1,64 strtext1 = 1,65 OTHER PARAMETERS: pwCA90l: power for selective C13 54usec 90 on DO2DEV/DO3DEV pwCA180l: power for selective C13 54usec 180 on DO2DEV/DO3DEV pwNlvl: power for N15 pulse on DODEV pwCA90, pwCA180: C13 pulse width; 63 microsec at 125 MHz pwCO90, pwCO180: C13 pulse width; 63 microsec at 125 MHz pwN: N15 pulse width tauNH: 1/(4*J_N-H) < 2.7ms taufocNH: 1/(2*J_N-H) 5.56 ms for NH (suppress NH2) tauCAN: 1/(4*J_Ca-N) 10 - 15 ms tauCANn: N * tauCAN N=1,3,5 usually 10 - 15 ms gt1: coherence selection gradient. 400 microsec gzlvl1: gradient power for gt1. 30000 recover: gradient recovery time. 150 microsec quant1: for coherence selection. ~9.9 zfilt1: ZZ-filt after first INEPT, usually not used. When used, zlvl1 = 5000 to 10000. tseq_t1: filename of multipulse 1H decoupling during t1 and t2. garp1 tres_t1: resolution of tseq_dec file. 1.0 tpwr_t1: power level for 1H decoupling during t1 and t2 tmf_t1 : transmitter modulation frequency (=1/90 deg pulse) corresponding to tpwr_dec dofc: decoupler offset (ch3, DO2DEV) center of C(alfa) and C' dseq3_t2: filename of selective C' decoupling during t2. sinx dpwr3_t2: power level for C' decoupling during t2. 46 dres3_t2: resolution of dseq_t2 file. 1.0 dmf3_t2: decoupler modulation frequency (=1/90 deg pulse) corresponding to dpwr_t2. */ #include pulsesequence() { double tauNH,taufocNH,tauNH1,tauNH2, tauCAN,tauCAN1, taue,tauNHa,tauNHb,tfocNH, tauCAN3,tauCAN4,tauCAN2,tauNHc, delay_x1, t1evol,t2evol, recover, pwN,dofc, pwCA90l,pwCA180l,pwCO90l,pwCO180l, pwNlvl,pwCO90,pwCO180,pwCA90,pwCA180, tres_t1,tmf_t1,tpwr_t1, dmf3_t1,dpwr3_t1,dres3_t1, dmf3_t2,dpwr3_t2,dres3_t2; double zfilt1,zlvl1; double gzlvl1,gt1,quant1,phase,phase2; char tseq_t1[MAXSTR],dseq3_t1[MAXSTR],dseq3_t2[MAXSTR], se[MAXSTR]; /* LOAD VARIABLES */ zfilt1 = getval("zfilt1"); zlvl1 = getval("zlvl1"); tauNH = getval("tauNH"); taufocNH = getval("taufocNH"); tauCAN = getval("tauCAN"); recover = getval("recover"); pwN = getval("pwN"); pwCA180 = getval("pwCA180"); pwCA90 = getval("pwCA90"); pwCO90 = getval("pwCO90"); pwCO180 = getval("pwCO180"); pwCA180l = getval("pwCA180l"); pwCA90l = getval("pwCA90l"); pwCO90l = getval("pwCO90l"); pwCO180l = getval("pwCO180l"); pwNlvl = getval("pwNlvl"); dpwr3_t1 = getval("dpwr3_t1"); dmf3_t1 = getval("dmf3_t1"); dres3_t1 = getval("dres3_t1"); dpwr3_t2 = getval("dpwr3_t2"); dmf3_t2 = getval("dmf3_t2"); dres3_t2 = getval("dres3_t2"); dofc = getval("dofc"); tpwr_t1 = getval("tpwr_t1"); tmf_t1 = getval("tmf_t1"); tres_t1 = getval("tres_t1"); getstr("tseq_t1",tseq_t1); getstr("dseq3_t1",dseq3_t1); getstr("dseq3_t2",dseq3_t2); getstr("se",se); gzlvl1=getval("gzlvl1"); gt1=getval("gt1"); quant1=getval("quant1"); phase=(int) (getval("phase") + 0.5); phase2=(int) (getval("phase2") + 0.5); /* SAFETY CHECKS */ if (gt1 > 0.010) { text_error ("pulsed gradient time too long"); abort(1); } if (( dpwr3 > 5)|| (dpwr > 50) || (tpwr_t1 > 40)) { text_error("dpwr3,dpwr,or tpwr_t1 are too high!! \n"); abort(1); } if ( dpwr3_t2 > 63 ) { text_error("dpwr3_t2 too high!! \n"); abort(1); } /* PHASECYCLE */ loadtable("pfg_hnca_se1.ph"); /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); obsoffset(tof); decoffset(dof); dec2offset(dof2); dec3offset(dof3); hsdelay(d1); obspower(tpwr); dec2power(pwCA180l); decpower(pwNlvl); getelem(t1,ct,v1); getelem(t7,ct,oph); /* States-TPPI option */ if ( (phase == 1) || (phase == 2) ) { initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v14); add(v1,v14,v1); add(oph,v14,oph); } if ( phase == 2) { decr(v1); } if ( phase == 3 ) { /* TPPI IN CA DIMENSION (T1 EVOLUTION) */ initval(d2*(getval("sw1")),v2); add(v1,v2,v1); } /* H-N TRANSFER */ rcvroff(); rgpulse(pw,zero,rof1,rof1); tauNHa = tauNH - rof2 - pw*0.5 - pwN; delay (tauNH); simpulse(2*pw,2*pwN,one,one,rof2,rof2); delay(tauNH); if ( zfilt1 > 0.0) { rgpulse(pw,one,rof1,rof1); rgradient('z',zlvl1); delay(zfilt1); rgradient('z',0.0); delay(recover); decrgpulse(pwN,zero,rof2,rof2); } else { simpulse(pw,pwN,one,zero,rof2,rof2); } if (dpwr3_t1 > 0) { dec3power(dpwr3_t1); dec3prgon(dseq3_t1,1/dmf3_t1,dres3_t1); dec3on(); } /* H-N antiphase refocusing and N-CA TRANSFER */ tfocNH = taufocNH - pwN*0.5 - rof2 - POWER_DELAY - PRG_START_DELAY; delay(taufocNH); if (tpwr_t1 > 0) { obspower(tpwr_t1); obsprgon(tseq_t1,1/tmf_t1,tres_t1); xmtron(); } tauCAN1 = tauCAN - (taufocNH)- PRG_START_DELAY - POWER_DELAY; tauCAN1 = tauCAN1; delay(tauCAN1); sim3pulse(0.0,2.0*pwN,pwCA180,zero,one,one,rof1,rof2); dec2power(pwCA90l); tauCAN2 = tauCAN - rof2; tauCAN2 = tauCAN2; delay(tauCAN); sim3pulse(0.0,pwN,pwCA90,zero,zero,v1,rof1,rof2); /* T1 EVOLUTION */ delay_x1 = 2*pwN + (rof2) + POWER_DELAY; t1evol = d2/2; if (d2 > delay_x1) { t1evol = (d2/2.0); t1evol = t1evol-(0.5*POWER_DELAY) - (pwN); delay(t1evol); sim3pulse(0.0,2.0*pwN,0.0,one,one,one,rof2,rof2); dec2power(pwCA90l); delay(t1evol); } else { delay(d2); } /* CA-N TRANSFER AND T2 EVOLUTION */ sim3pulse(0.0,pwN,pwCA90,zero,t2,zero,rof2,rof2); if (dpwr3_t1 > 0) { dec3off(); dec3prgoff(); } if (dpwr3_t2 > 0) { dec3power(dpwr3_t2); dec3prgon(dseq3_t2,1/dmf3_t2,dres3_t2); dec3on(); } t2evol = d3/2; tauCAN3 = tauCAN; tauCAN3 = tauCAN3 - PRG_START_DELAY - POWER_DELAY - rof2; tauCAN3 = tauCAN3 - t2evol ; delay(tauCAN3); dec2power(pwCA180l); sim3pulse(0.0,2.0*pwN,pwCA180,one,one,one,rof2,rof2); tauCAN4 = tauCAN; tauCAN4 = tauCAN4 - PRG_STOP_DELAY - POWER_DELAY; tauCAN4 = tauCAN4 - (taufocNH); tauCAN4 = tauCAN4 + t2evol; delay(tauCAN4); if (tpwr_t1 > 0) { xmtroff(); obsprgoff(); obspower(tpwr); } tauNH2 = taufocNH - (gt1*quant1) - recover - rof2; tauNH2 = tauNH2 - PRG_STOP_DELAY; if (tauNH2 < 0) { text_error("2*tauNH < [(gt1*quant1) - recover] \n"); abort(1); } delay(tauNH2); rgradient('z',gzlvl1); delay(gt1*quant1); rgradient('z',0.0); delay(recover); if (dpwr3_t2 > 0) { dec3off(); dec3prgoff(); } dec2offset(dofc); if (dpwr2 > 0) { dec2power(dpwr2); dec2prgon(dseq2,1/dmf2,dres2); dec2on(); } if (se[A] == 'y') { if (phase2 == 1 ) { assign(one,v6); } else { assign(three,v6); } simpulse(pw,pwN,zero,zero,rof2,rof2); tauNHb = tauNH - pwN*1.5 - rof2 - POWER_DELAY - PRG_START_DELAY; delay(tauNH); simpulse(2.0*pw,2.0*pwN,one,one,rof2,rof2); delay(tauNH); if (dpwr2 > 0) { dec2off(); dec2prgoff(); } simpulse(pw,pwN,one,v6,rof2,rof2); tauNHc = tauNH - pwN*1.5 - rof2; delay(tauNH); simpulse(2.0*pw,2.0*pwN,one,one,rof2,rof2); delay(tauNH); rgpulse(pw,zero,rof1,rof1); taue = gt1 + recover; taue = taue + 2*POWER_DELAY + 5e-6; delay(taue); rgpulse(2.0*pw,one,rof1,rof1); if (phase2 == 1 ) { rgradient('z',(-1.0*gzlvl1)); } else { rgradient('z',(gzlvl1)); } delay(gt1); rgradient('z',0.0); delay(recover); } else { if ( zfilt1 > 0.0 ) { decrgpulse(pwN,zero,rof1,rof1); rgradient('z',zlvl1); delay(zfilt1); rgradient('z',0.0); delay(recover); rgpulse(pw,zero,rof1,rof1); } else { simpulse(pw,pwN,zero,zero,rof2,rof2); } delay(tauNH); simpulse(2.0*pw,2.0*pwN,one,zero,rof2,rof2); tauNH1 = tauNH - gt1 - recover; delay(tauNH1); if (phase2 == 1 ) { rgradient('z',(-1.0*gzlvl1)); } else { rgradient('z',gzlvl1); } delay(gt1); rgradient('z',0.0); delay(recover); } decpower(dpwr);dec2power(dpwr2);dec3power(dpwr3); /* DETECTION WITH WALTZ-16 TO N */ status(B); } /* pfg_hnca_se phase table t1 = 0 2 select for CA t2 = 0 0 2 2 select for N15 (inactive) t7 = 0 2 2 0 receiver */