/* pfg_C_H_cbca(co)nh_se1 (H)CBCA(CO)NH or HBHA(CO)NH straight-through triple resonance experiment using C-C COSY transfer Copyright 1995 Protein NMR Laboratory - Center for Advanced Biotechnology and Medicine, Rutgers University G.T. Montelione modified by GVTS 06 25 97 to import to INOVA 600 from version pfg_C_cbcaconh_se20.c ~/PUBLIC UNITY 500. magnetization begins with HB protons of residue i, transfered by HCC COSY to the CA of residue i, then by CA(i) to CO(i) to N(i+1) to HN(i+1) Based on: -Grzesiek & Bax, JACS 1992, 114: 6291 - 6293 -Grzesiek & Bax, JBNMR 1993, 3: 185 - 204 -Muhandiram & Kay, JMR 1994, 103: 203 - 216 Implemented for four-channel systems with ch4 = 'y'; 3rd channel DO2DEV and 4th channel DO3DEV are used for 13C pulses. This can be modified for 3 channel system using frequency shifted pulses instead with ch4 ='n'. This option has not been implemented yet. Carbonyl decoupling is executed with sinx decoupling, but can also be done with seduce or other band-selective decoupling scheme. ************************************************************************* NOTE: the original versions of this experiment allowed for concat2=n using non-CT N15 freq labeling. We usually run this with concat2=y, giving CT-N15 freq labeling. The current version may not support concat2=n, and some tests should be made if you need to use this option Verification of sensitivity enhancement in C-CO-COSY version. Checked s/y in se='y' vs se='n' gtm, ss,cbr 1.5.95 see ss.II.19 sample: [C65A,C72A]-RNaseA Peak se='n' se='y' enhancement 1. 85 1.8 3.6 2.0 2. 62 5.1 5.7 1.1 3. 98 23.5 39.2 1.7 4. 49 7.0 13.5 1.9 Avg: 1.65 Processing: 2D Spectra - for phase = 1,2 states-tppi in t1. Transform with: wft2d('ni',1,0,0,0,0,0,1,0) in t1 - phase2 = 1,2 nagayama in t2 wft2d('ni2',1,0,1,0,0,-1,0,1) or ('ni2',1,0,0,1,0,1,1,0) in t2 - for phase = 3 tppi in t1. Transform with: wft2d('ni',1,0,1,0,0,0,1,0) in t1 3D Planes - for H-H Planes: wft2d('ni',1,1,0,1,0,0,0,0,0,0,0,0,0,1,0,1,0) pwCA90l/pwCO90l: power for selective 54usec 90 on DO2DEV/DO3DEV pwCA180l/pwCO180l: power for selective 63usec 180 on DO2DEV/DO3DEV C90lvl: full power for simultaneous 90 on DO2DEV C90: 90 degree pulse at C90lvl shco90: filename of selective 90 on C' shca90 filename of selective 90 on CA shco180: filename of selective 180 on C' shca180: filename of selective 180 on CA tseq: filename of multipulse 1H decoupling during t1 and t2 tres: resolution of tseq file tpwr_t1: power level for 1H decoupling during t1 tpwr_t2: power level for 1H decoupling during t2 tmf_t1: tmf degree pulse corresponding to tpwr_t1 tmf_t2: tmf corresponding to tpwr_t2 dpwr3_t1: power for sel C' decoupling (46) dseq3_t1: seq for sel C' decoupling (sinc) dmf3_t1: dmf for dpwr_t2 (800) dres3_t1: res for dseq_t1 (1.0) dpwr2_t2: power for sel Ca decoupling (46) dseq2_t2: seq for sel Ca decoupling (sinc) dmf2_t2: dmf for dpwr_t2 (800) dres2_t2: res for dseq_t2 (1.0) dpwr2: power for simul Ca and C' decoupling (40) dmf2: dmf for dpwr dseq2: waveform for simul Ca and C' decoupling (garp) dres2: resol for dseq dpwr_t1: power for N deccoupling in t1 (38) dmf_t1: dmf for dpwr2_t2 (4096) dpwr: power for N deccoupling in t3 (38) dmf: dmf for dpwr2 (4096) dseq: seq for N decoupling in t1 and t3 (garp1) dres: res for dseq2 (1.0) gzlvl1: amplitude of PFG pulse gt1: unit length of PFG pulse quant1: MQ selection parameters for N15 quant1 = 9.9 to 10.2 recover PFG recovery delay phase: phase=1,2 for States-TPPI phase=3 for TPPI. phase2: phase2=1,2 selects n- and p-type 15N coherence pathways zfilt1 z-filter delay zz-filter (usually 0 - 10 microsec) zfilt2 z-filter delay zz-filter (usually 0) H1frq (Ha + Hb)/2 = 2.5 ppm tof HN (or set to H2O if you have water echos) dofa not used dofb dec offset (CA + CB) / 2 dofc dec offset (CA + CO) / 2 dof not used tauCH: 1/4(J_C-H) ~1.7 ms taufocCH: ~2.2 ms (optimized for CH,CH2,and CH3) tauCACO: 1/4(J_Calpha-C') 3 to 5 ms tauNH: 1/4(J_N-H) ~2.7 ms tauNH1 and tauNH2: delays to optimize transfer for NH2 during sensitivity enhancement taufocNH: delay int NH2 int NH ~2.7 ms for + NH2 and + NH 5.5 ms for 0 NH2 and + NH 8.0 ms for - NH2 and + NH tauNCO: 1/4(J_N-C') 10 - 19 ms tauCACB: 1/4(J_Ca-Cb) modulated by several factors (see plots) for best sensitivity use 3 - 5 ms for phase-labeling of CB and GlyCa ~14 ms Tn: Constant time for 13C freq labeling during t1 N/4(J_Calpha-C') 2.7 to 4 ms for N=1; 13C ct t1-freq labeling (see plots) Tm Constant time for 15N freq labeling during t2 N/4(J_N-C') 11 - 14 ms concat2 flag to implement ct freq labeling code in t2 concat2='y' gives ct 15N freq labeling and enhanced S/N by concatonating coherence evolution periods. use this as default concat2='n' gives non-ct 15N freq labeling. (must make some checks before using) nimax: use macro 'nimax' ni2max: use macro 'ni2max' se se = 'y' for sensitivity enhanced se = 'n' without sensitivity enhancement This may be desirable if you have water echoes. ch4 ch4 = 'y' for using 4th synthesizer for C' pulses ch4 = 'n' for using SLP for C' pulses nuc_t1 = 'C' for CBCA(CO)NH nuc_t1 = 'H' for HBHA(CO)NH */ #include #include pulsesequence() { double tauCH,taufocCH, tauCACO, tauNH,taufocNH,taufNH,tauNH1,tauNH2,tauNH3,tauNCO2, tauNCO,tauNCO1,tauCACB, pwCA90,pwCA180,pwCO90,pwCO180, pwN,pwCA90l,pwCA180l,pwCO90l,pwCO180l,pwNlvl, zfilt1,zfilt2,zfilt3, H1frq,t1evol,t2evol,t2evolA,C90,C90lvl, tpwr_t1,tpwr_t2,tmf_t1,tmf_t2,t90_t1,t90_t2, tres_t1,tres_t2, dpwr3_t1,dmf3_t1,dres3_t1,phase,phase2; double dmf2_t2,dpwr2_t2,dres2_t2; double gzlvl1,gt1,quant1,recover; double dofb,dofc; double Tc,Tc_a,Tc_b,dmf_t1,dpwr_t1; double Tn,Tn1,Tn2; char shco90[MAXSTR],shco180[MAXSTR], shca90[MAXSTR],shca180[MAXSTR], dseq3_t1[MAXSTR],dseq[MAXSTR], dseq2_t2[MAXSTR], tseq_t1[MAXSTR],tseq_t2[MAXSTR]; char ch4[MAXSTR]; char se[MAXSTR],nuc_t1[MAXSTR]; char sense[MAXSTR],concat2[MAXSTR]; /* LOAD VARIABLES */ dmf_t1 = getval("dmf_t1"); dpwr_t1 = getval("dpwr_t1"); Tn = getval("Tn"); Tc = getval("Tc"); tauCH = getval("tauCH"); taufocCH = getval("taufocCH"); tauCACO = getval("tauCACO"); tauCACB = getval("tauCACB"); tauNH = getval("tauNH"); tauNH1 = getval("tauNH1"); tauNH2 = getval("tauNH2"); taufocNH = getval("taufocNH"); tauNCO = getval("tauNCO"); recover = getval("recover"); zfilt1 = getval("zfilt1"); zfilt2 = getval("zfilt2"); zfilt3 = getval("zfilt3"); pwCA90 = getval("pwCA90"); pwCA180 = getval("pwCA180"); pwCA90l = getval("pwCA90l"); pwCA180l = getval("pwCA180l"); pwCO90 = getval("pwCO90"); pwCO180 = getval("pwCO180"); pwCO90l = getval("pwCO90l"); pwCO180l = getval("pwCO180l"); pwN = getval("pwN"); pwNlvl = getval("pwNlvl"); H1frq=getval("H1frq"); dofb = getval("dofb"); dofc = getval("dofc"); dpwr3_t1 = getval("dpwr3_t1"); dmf3_t1 = getval("dmf3_t1"); dres3_t1 = getval("dres3_t1"); dpwr2_t2 = getval("dpwr2_t2"); dmf2_t2 = getval("dmf2_t2"); dres2_t2 = getval("dres2_t2"); tres_t1 = getval("tres_t1"); tres_t2 = getval("tres_t2"); tpwr_t1 = getval("tpwr_t1"); tpwr_t2 = getval("tpwr_t2"); tmf_t1 = getval("tmf_t1"); tmf_t2 = getval("tmf_t2"); C90 = getval("C90"); C90lvl = getval("C90lvl"); phase = getval("phase"); phase2 = getval("phase2"); getstr("shco90",shco90); getstr("shco180",shco180); getstr("shca90",shca90); getstr("shca180",shca180); getstr("dseq3_t1",dseq3_t1); getstr("dseq2_t2",dseq2_t2); getstr("tseq_t1",tseq_t1); getstr("tseq_t2",tseq_t2); getstr("dseq",dseq); gzlvl1=getval("gzlvl1"); gt1=getval("gt1"); quant1=getval("quant1"); getstr("ch4",ch4); getstr("se",se); getstr("nuc_t1",nuc_t1); getstr("sense",sense); getstr("concat2",concat2); /* INITIALIZE VARIABLES */ /* SAFETY CHECKS */ if (( dpwr2 > 45)||( dpwr3 > 45)||( dpwr2_t2 > 46)||(dpwr3_t1 > 45)) { text_error("dpwr2 or dpwr3 or dpwr2_t2 or dpwr3_t1 is > than 45 \n"); abort(1); } if (dseq3_t1[A] == 's') { if (dpwr3_t1 > 52) { text_error("dpwr3_t1 is > than 52 \n"); abort(1); } } else { if (dpwr3_t1 > 35) { text_error("dpwr3_t1 is > than 35 \n"); abort(1); } } if (tauNCO < tauCACO) { text_error("tauNCO is less than tauCACO, d1 is negative \n"); abort(1); } if ((tpwr_t1 > 38) || (tpwr_t2 > 38)) { text_error("tpwr_t1 or _t2 must be less than 38\n"); abort(1); } if (recover > 0.003 ) { text_error("recover may be too long\n"); abort(1); } if (zfilt1 > 0.005 || zfilt2 > 0.005 || zfilt3 > 0.005 ) { text_error("zfilt1 or zfilt2 are too long\n"); abort(1); } if ( Tc < taufocCH ) { text_error("Tc is smaller than taufocCH\n"); abort(1); } if (concat2[A] == 'n') { text_error("concat2 must be = y \n"); abort(1); } /* PHASECYCLE */ loadtable("pfgcocosy.ph"); t90_t1 = 1.0/tmf_t1; t90_t2 = 1.0/tmf_t2; /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); obsoffset(H1frq); dec2offset(dofb); hsdelay(d1); obspower(tpwr); dec2power(C90lvl); decpower(pwNlvl); rcvroff(); /* States-TPPI option */ if (nuc_t1[A] == 'C') getelem(t1,ct,v1); if (nuc_t1[A] == 'H') assign(zero,v1); getelem(t3,ct,v4); assign(v4,oph); 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 CO DIMENSION (T1 EVOLUTION) */ initval((double)((int)(d2*(getval("sw1"))+0.5)),v2); add(v1,v2,v1); /* tppi on t1 */ } /* sensitivity enhancement phase calculation */ getelem(t8,ct,v8); if(phase2 == 1 && se[A] == 'y' ) { add(v8,two,v8); } t1evol=d2/2.0; if (nuc_t1[A] == 'H') { rgpulse(pw,v1,rof1,rof1); delay(t1evol); delay(tauCH); if (t1evol < 1e-6) { sim3pulse(2.0*pw,0.0,2.0*C90,one,one,one,rof2,rof2); } else { dec2rgpulse(2.0*C90,one,rof2,rof2); delay(t1evol); rgpulse(2.0*pw,one,rof1,rof1); } delay(tauCH); } if (nuc_t1[A] == 'C') { rgpulse(pw,zero,rof1,rof1); delay(tauCH); sim3pulse(2.0*pw,0.0,2.0*C90,one,one,v1,rof2,rof2); delay(tauCH); } if ( zfilt1 > 0.0 ) /* zfilter creates HzCz */ { rgpulse(pw,t4,rof1,rof1); rgradient('z',gzlvl1); delay(zfilt1); rgradient('z',0.0); delay(recover); if (nuc_t1[A] == 'C') dec2rgpulse(C90,v1,rof2,rof2); if (nuc_t1[A] == 'H') dec2rgpulse(C90,t1,rof2,rof2); } else { if (nuc_t1[A] == 'C') sim3pulse(pw,0.0,C90,t4,one,v1,rof2,rof2); if (nuc_t1[A] == 'H') sim3pulse(pw,0.0,C90,t4,one,t1,rof2,rof2); } if (dpwr_t1 > 0) { decpower(dpwr_t1); /* N15 decoupling during C13 evolution */ decprgon(dseq,1/dmf_t1,dres); /* turn on wfg programming. */ decon(); /* power level at dpwr_t1 */ } /* if (dpwr3_t1 > 0) {*/ if ( ch4[A] == 'y' ) { dec3power(dpwr3_t1); /* C' decoupling during C13 evolution */ dec3prgon(dseq3_t1,1/dmf3_t1,dres3_t1); /* turn on wfg programming */ dec3on(); } /* else { } } */ delay(taufocCH); if (tpwr_t1 > 0) { obspower(tpwr_t1); /* proton decoupling during C13 evolution */ obsprgon(tseq_t1,t90_t1,tres_t1); /*turn on TODEV wfg*/ xmtron(); /* power level at tpwr_t1 */ } if (nuc_t1[A] == 'H') { Tc_a = Tc - taufocCH; delay(Tc_a); } if (nuc_t1[A] == 'C') { Tc_a = Tc - 3*POWER_DELAY - 3*PRG_START_DELAY; Tc_a = Tc_a - (taufocCH) - WFG_START_DELAY; Tc_a = Tc_a - (2* rof2) - (C90/2.0) - (pwCA180/2.0); delay(Tc_a + t1evol); } dec2power(pwCA180l); dec2shaped_pulse(shca180,pwCA180,one,rof2,rof2); /* Ca refocusing pulse*/ if (nuc_t1[A] == 'H') delay(Tc); if (nuc_t1[A] == 'C') { Tc_b = Tc; Tc_b = Tc_b - (2*POWER_DELAY) - (2*rof2); Tc_b = Tc_b - PRG_STOP_DELAY - (pwCA180/2.0); Tc_b = Tc_b - (pwCA90/2.0); delay(Tc_b - t1evol); } if ( ch4[A] == 'y' ) { dec3prgoff(); /* turn on wfg programming. */ dec3off(); } else { dec2prgoff(); dec2off(); } /* if ( tpwr_t1 > 0.0) { xmtroff(); obsprgoff(); } */ dec2power(pwCA90l); dec2shaped_pulse(shca90,pwCA90,t3,rof2,rof2); /* C-C cosy pulse*/ /* same phase as receiver in order to cancel CxCy after C-C cosy transfer */ delay(tauCACB); dec2power(pwCA180l); if ( ch4[A] == 'y' ) { dec3power(pwCO180l); dec2shaped_pulse(shca180,pwCA180,one,rof2,rof2); /* Ca refocusing pulse*/ dec3shaped_pulse(shco180,pwCO180,one,rof2,rof2); } else { } delay(tauCACB); if (dpwr_t1 > 0) { decoff(); decprgoff(); decpower(pwNlvl); /* reset 15N power level */ } if (tpwr_t1 > 0) { xmtroff(); obsprgoff(); obspower(tpwr); /* reset proton pulse power */ } dec2offset(dof2); dec2power(pwCA90l);dec3power(pwCO90l); dec2shaped_pulse(shca90,pwCA90,zero,rof2,rof2); if ( ch4[A] == 'y' ) { dec3shaped_pulse(shco90,pwCO90,zero,rof2,rof2); /* transfer CA to C' */ } dec2power(pwCA180l); delay(tauCACO); dec2shaped_pulse(shca180,pwCA180,one,rof2,rof2); tauNCO1 = tauNCO - tauCACO; tauNCO2 = tauNCO; delay(tauNCO1); decpower(pwNlvl); if ( ch4[A] == 'y' ) { dec3power(pwCO180l); sim4pulse(0.0,2.0*pwN,0.0,pwCO180,one,one,one,one,rof2,rof2); } delay(tauNCO); obsoffset(tof); if ( ch4[A] == 'y') { dec3power(pwCO90l); sim4pulse(0.0,pwN,0.0,pwCO90,one,t2,zero,t5,rof2,rof2); } t2evol = d3/2.0; /* third 15N axis */ if (tpwr_t2 > 0.1) { obspower(tpwr_t2); obsprgon(tseq_t2,t90_t2,tres_t2); /*turn on TODEV wfg*/ xmtron(); /* replacing rfon(TODEV); */ } if ( dpwr2_t2 > 0.1 ) { dec2power(dpwr2_t2); dec2prgon(dseq2_t2,1/dmf2_t2,dres2_t2); /* turn on wfg programming. */ dec2on(); } Tn1 = Tn - t2evol -rof2 - (0.5 * pwCO90); Tn1 = Tn1 - (WFG_STOP_DELAY) - (3.0*POWER_DELAY)- (2.0*PRG_START_DELAY); Tn1 = Tn1 - (pwN); delay(Tn1); dec3power(pwCO180l); if ( ch4[A] == 'y' ) { sim4pulse(0.0,2.0*pwN,0.0,pwCO180,one,one,one,one,rof1,rof2); } Tn2 = Tn + t2evol - (taufocNH) - (2.0*POWER_DELAY); Tn2 = Tn2 - (PRG_START_DELAY) - rof2; Tn2 = Tn2 - (1.5*pwN) - (PRG_STOP_DELAY); delay(Tn2); if (tpwr_t2 > 0.1) { xmtroff(); /* replacing rfoff(TODEV); */ obsprgoff(); } obspower(tpwr); taufNH = (taufocNH) - (gt1*quant1) - recover; delay(taufNH); if ( se[A] == 'y' ) /* sensitivity enhanced sequence */ { /* gradient */ rgradient('z',gzlvl1); delay(gt1*quant1); rgradient('z',0.0); delay(recover); obspower(tpwr); simpulse(pw,pwN,zero,zero,rof2,rof2); if ( dpwr2_t2 > 0.1 ) { dec2off(); dec2prgoff(); } if (dpwr2 > 0.0) { dec2offset(dofc); dec2power(dpwr2); dec2prgon(dseq2,1/dmf2,dres2); dec2on(); } delay(tauNH1); simpulse(2*pw,2*pwN,one,one,rof2,rof2); delay(tauNH1); simpulse(pw,pwN,one,v8,rof2,rof2);/* pulse to produce enhancement */ if (dpwr2 > 0.1) { dec2off(); dec2prgoff(); } delay(tauNH2); simpulse(2*pw,2*pwN,one,one,rof2,rof2); delay(tauNH2); rgpulse(pw,zero,rof1,rof1); delay(gt1+recover); rgpulse(pw*2.0,zero,rof1,rof1); if (phase2 == 1) { rgradient('z',gzlvl1); } else { rgradient('z',(-1.0*gzlvl1)); } delay(gt1); rgradient('z',0.0); delay(recover); } else { /* se = n */ /* tauc1=tauc1-(gt1*quant1)-recover; delay(tauNH); */ /* gradient */ rgradient('z',gzlvl1); delay(gt1*quant1); rgradient('z',0.0); delay(recover); if ( zfilt2 > 0.0 ) /* zfilter creates HzNz */ { decrgpulse(pwN,zero,rof2,rof2); rgradient('z',gzlvl1); delay(zfilt2); rgradient('z',0.0); delay(recover); rgpulse(pw,zero,rof1,rof1); } else { simpulse(pw,pwN,zero,zero,rof2,rof2); } obspower(tpwr); delay(tauNH-(2*POWER_DELAY)); simpulse(2*pw,2*pwN,one,one,rof2,rof2); tauNH2 = tauNH - pwN -rof1-rof2- PRG_STOP_DELAY - POWER_DELAY; tauNH2=tauNH2-gt1-recover; delay(tauNH2); if (phase2 == 1) { rgradient('z',gzlvl1); } else { rgradient('z',(-1*gzlvl1)); } delay(gt1); rgradient('z',0.0); delay(recover); decrgpulse(pwN,zero,rof2,rof2); } dec2off(); dec2prgoff(); decpower(dpwr); status(B); } /* pfgcocosy.ph phase table for triple resonance experiment t1 = 0 2 0 2 H-C13 INEPT for H-13C t2 = 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 Sel for 15N in 13C-15N INEPT t3 = 0 2 2 0 2 0 0 2 2 0 0 2 0 2 2 0 Receiver t4 = 1 1 1 1 3 3 3 3 Sel for 1H in H-C13 INEPT t5 = 0 0 2 2 phase cycle on C' carbonyl t8 = 1 */