/* hacaco_co_T1R_500_fm_v3.c Modified from hacaco_co_T1R_500_fm.c This pulse sequence will allow one to measure carbonyl off-resonance T1rho relaxation, acquired as 2D HA(CA)CO suitable choices of delays allow for simultaneous acq of backbone CO and Asp & Glu sidechain carboxyl carbons For sidechain CO relaxation a 50% 2H-labelled sample is used and signal arises only from HCD and DCH isotopomers. Note that the CO chemical shifts are slightly changed by the two-bond isotope shift F1 Co (i-1) F2(acq) 1H (Ha) This sequence uses the standard three channel configuration 1) 1H - carrier (tof) @ H2O [4.77 ppm] 2) 13C - carrier (dof) @ CA [56 ppm] - jumped to (dof_co) @ CO [178 ppm for bb&sc] 3) 15N - carrier (dof2) @ center of amides [119 ppm] Set dm = 'nnny', dmm = 'cccp' Set dm2 = 'nnnn' Must set phase = 1,2 for States-TPPI acquisition in t1 [CO]. Flags fsat 'y' for presaturation of H2O fscuba 'y' for apply scuba pulse after presaturation of H2O f1180 'y' for 180 deg linear phase correction in F1 Standard Settings fsat='n',fscuba='n',f1180='y' Set the carbon carrier on Ca and jump to Co in sequence CO spin lock will be executed at carrier frequency dof_co + delta_dof delta_dof > 0 will ensure that no other carbons are affected Use dof_co as reference in t2 for processing written by Frans Mulder 13 Feb 2003 water that comes back along +z during reldelay is treated with flip back strategy Version 2: 11 Aug 2003 (fm) Extended 1H dec throughout to avoid evolution of long range 13Cbg - 1H couplings during evolution to C' and 13C' - 1H couplings during refocusing to Cbg, and during t1 Since water may be saturated, 1H waltz runs through grads too Version 3: 11 Aug 2003 (fm) Including optional 2H decoupling during Cbg --> C' coupling periods to avoid loss due to Cbg --> D evolution (Jcd ~ 20 Hz) for side chains and Gly TC is used for Cbg --> C' , which is < 1/2Jcaco [7 ms] due to relaxation and evolution to the adjacent aliphatic carbon TD is used for C' --> Cbg, which is ~ 1/2Jcaco [9 ms] */ #include static int phi1[2] = {0,2}, phi2[4] = {0,0,2,2}, phi3[1] = {1}, phi4[1] = {0}, rec[4] = {0,2,2,0}; static double d2_init=0.0 ; pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fDdec[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ spca180[MAXSTR], /* shape for off-resonance Ca 180 */ spco180[MAXSTR], /* shape for off-resonance Co 180 */ spco_off[MAXSTR]; /* shape for off-resonance Co SL */ int phase, ni, t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ taua, /* ~ 1/4JCH = 1.7 ms */ taub, /* = 1/4JCH or 1/8JCH for editing */ TC, /* < 1/2JCaCo = 7 ms */ TD, /* ~ 1/2JCaCo = 9 ms */ pw_ml, /* PW90 for mlev 1H decoupling */ pwn, /* PW90 for 15N pulse */ pwc, /* PW90 hard 13C pulse */ pwc90, /* PW90 for Ca or Co nucleus */ pwcon180, /* PW90 for Ca or Co on-res 180 */ pwcoff180, /* PW90 for Ca or Co off-res 180 */ pwco_off, /* PW90 for Co off-res WFG timing */ pwd, /* PW90 2H pulse */ tsatpwr, /* low level 1H trans.power for presat */ tpwrml, /* power for 1H decoupling */ dhpwr, /* power level for 13C pulses on dec1 - 64 us 90 for part a of the sequence */ d_c90, /* power level for Ca or Co 90 pulse */ d_c180, /* power level for Ca or Co 180 pulse */ pwr_co_off, /* power level for Co off-res SL */ dhpwr2, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ dof_co, /* Co offset */ delta_dof, /* offset for CO spin lock */ dres_off, /* dres_off = 1 for spin-lock pattern file */ reldelay, /* relaxation delay for entire SL pulse, incl ramps */ gt0, gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8; /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("fDdec",fDdec); getstr("f1180",f1180); getstr("fscuba",fscuba); getstr("spco_off",spco_off); getstr("spco180",spco180); getstr("spca180",spca180); taua = getval("taua"); taub = getval("taub"); TC = getval("TC"); TD = getval("TD"); pwc90 = getval("pwc90"); pwcon180 = getval("pwcon180"); pwcoff180 = getval("pwcoff180"); pwco_off = getval("pwco_off"); pw_ml = getval("pw_ml"); pwn = getval("pwn"); pwc = getval("pwc"); pwd = getval("pwd"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); tpwrml = getval("tpwrml"); dhpwr = getval("dhpwr"); d_c90 = getval("d_c90"); d_c180 = getval("d_c180"); pwr_co_off = getval("pwr_co_off"); dpwr = getval("dpwr"); dhpwr2 = getval("dhpwr2"); phase = (int) ( getval("phase") + 0.5); sw1 = getval("sw1"); ni = getval("ni"); dof_co = getval("dof_co"); delta_dof = getval("delta_dof"); dres_off = getval("dres_off"); reldelay = getval("reldelay"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl8 = getval("gzlvl8"); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,1,phi3); settable(t4,1,phi4); settable(t6,4,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); abort(1); } if( tpwrml > 46 ) { printf("TPWRML too large !!! "); abort(1); } if( dpwr > 46 ) { 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( dhpwr2 > 62 ) { printf("don't fry the probe, DHPWR2 too large! "); abort(1); } if( dpwr3 > 50 ) { printf("dont fry the probe, dpwr3 too high ! "); abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); abort(1); } if( pw_ml > 200.0e-6 ) { printf("dont fry the probe, pw_ml too high ! "); abort(1); } if( pwn > 200.0e-6 ) { printf("dont fry the probe, pwn too high ! "); abort(1); } if( pwc > 200.0e-6 ) { printf("dont fry the probe, pwc too high ! "); abort(1); } if( gt0 > 10.0e-3 || gt1 > 10.0e-3 || gt2 > 10.0e-3 || gt3 >10.0e-3 || gt4 > 10.0e-3 || gt5 > 10.0e-3 || gt6 > 10.0e-3 || gt7 > 10.0e-3 ) { printf("gt values are too long. Must be < 10.0e-3\n"); abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) tsadd(t2,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) - 2.0*POWER_DELAY - 2.0*2.0e-6 - WFG_START_DELAY \ - WFG_STOP_DELAY - pwcoff180 - 2.0*pwn ); if(tau1 < 0.4e-6) { tau1 = 0.4e-6; printf("tau1 is negative; decrease sw1 for proper phasing \n"); } } 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(t2,2,4); tsadd(t6,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obsoffset(tof); decoffset(dof); dec2offset(dof2); dec3offset(dof3); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(dhpwr); /* Set Dec1 power for hard 13C pulses */ dec2power(dhpwr2); /* Set Dec2 power for 15N hard pulses */ dec3power(dpwr3); /* Set low power for 2H decoupling */ /* Presaturation Period */ status(B); if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presaturation */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); rcvroff(); lk_hold(); delay(20.0e-6); decrgpulse(pwc,zero,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl0); delay(gt0); rgradient('z',0.0); delay(250.0e-6); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(0.2e-6); rgradient('z',gzlvl1); delay(gt1); rgradient('z',0.0); delay(200.0e-6); delay(taua - gt1 - 200.2e-6); /* taua <= 1/4JCH */ simpulse(2*pw,2*pwc,zero,zero,0.0,0.0); txphase(one); decphase(zero); delay(taua - gt1 - 200.2e-6); /* taua <= 1/4JCH */ delay(0.2e-6); rgradient('z',gzlvl1); delay(gt1); rgradient('z',0.0); delay(200.0e-6); rgpulse(pw,one,0.0,0.0); decpower(d_c90); delay(0.2e-6); rgradient('z',gzlvl2); delay(gt2); rgradient('z',0.0); delay(200.0e-6); if(fDdec[0] == 'y') { /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3on(); /* 2D decoupling on */ } /* Ca to Co */ decrgpulse(pwc90,zero,0.0,0.0); if(taub > 0.5*TC - POWER_DELAY - 2.0e-6 - pw_ml - 2.0e-6 - PRG_START_DELAY \ - POWER_DELAY - WFG_START_DELAY - pwcoff180 - WFG_STOP_DELAY - 2.0e-6 ) { decpower(d_c180); delay(0.5*TC - POWER_DELAY - WFG_START_DELAY - pwcoff180 - WFG_STOP_DELAY - 2.0e-6 ); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); simpulse(2*pw,pwcon180,zero,zero,0.0,0.0); delay(taub - TC*0.5 - POWER_DELAY - 2.0e-6 - pw_ml - 2.0e-6 - PRG_START_DELAY); obspower(tpwrml); /* H decoupling on */ rgpulse(pw_ml,one,2.0e-6,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16",pw_ml,90.0); xmtron(); delay(TC - taub - WFG_START_DELAY - pwcoff180 - 2.0e-6 - WFG_STOP_DELAY - POWER_DELAY); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); /* BS compensation */ decpower(d_c90); decrgpulse(pwc90,zero,0.0,0.0); /* CAzCOz */ } else { delay(taub); obspower(tpwrml); /* H decoupling on */ rgpulse(pw_ml,one,2.0e-6,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16",pw_ml,90.0); xmtron(); decpower(d_c180); delay(0.5*TC - taub - POWER_DELAY - 2.0e-6 - pw_ml - 2.0e-6 - PRG_START_DELAY \ - POWER_DELAY - WFG_START_DELAY - pwcoff180 - WFG_STOP_DELAY - 2.0e-6 ); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); decrgpulse(pwcon180,zero,0.0,0.0); delay(0.5*TC - WFG_START_DELAY - pwcoff180 - 2.0e-6 - WFG_STOP_DELAY - POWER_DELAY); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); /* BS compensation */ decpower(d_c90); decrgpulse(pwc90,zero,0.0,0.0); /* CAzCOz */ } if(fDdec[0] == 'y') { /* 2D decoupling off */ dec3off(); dec3blank(); dec3phase(three); dec3rgpulse(pwd,three,4.0e-6,0.0); /* 2D decoupling off */ } decoffset(dof_co); delay(0.2e-6); rgradient('z',gzlvl3); delay(gt3); rgradient('z',0.0); delay(100.0e-6); decrgpulse(pwc90,one,0.0,0.0); decpower(d_c180); delay(0.5*TD - POWER_DELAY - 2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); decshaped_pulse(spca180,pwcoff180,zero,0.0,2.0e-6); decrgpulse(pwcon180,zero,0.0,0.0); delay(0.5*TD - POWER_DELAY - 2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); decshaped_pulse(spca180,pwcoff180,zero,0.0,0.0); /* BS compensation */ decpower(d_c90); decrgpulse(pwc90,t1,2.0e-6,0.0); /* pure +/- COz */ xmtroff(); /* H decoupling off */ obsprgoff(); rgpulse(pw_ml,three,2.0e-6,0.0); delay(0.2e-6); rgradient('z',gzlvl4); delay(gt4); rgradient('z',0.0); delay(100.0e-6); /* relaxation period with off-res CO irradiation */ decphase(zero); decpower(pwr_co_off); decoffset(dof_co + delta_dof); decprgon(spco_off,pwco_off,dres_off); decon(); delay(reldelay); decoff(); decprgoff(); decpower(d_c90); decphase(t2); /* relaxation period with off-res CO irradiation */ decoffset(dof_co); delay(0.2e-6); rgradient('z',gzlvl5); delay(gt5); rgradient('z',0.0); delay(200.0e-6); obspower(tpwrml); /* H decoupling on */ rgpulse(pw_ml,one,2.0e-6,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16",pw_ml,90.0); xmtron(); decrgpulse(pwc90,t2,0.0,0.0); /* Co evolution */ delay(tau1); decpower(d_c180); dec2rgpulse(2*pwn,zero,2.0e-6,0.0e-6); decshaped_pulse(spca180,pwcoff180,zero,2.0e-6,0.0e-6); decpower(d_c90); delay(tau1); /* refocus Co-Ca coupling */ decpower(d_c180); delay(0.5*TD - POWER_DELAY - 2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); decshaped_pulse(spca180,pwcoff180,zero,0.0,2.0e-6); decrgpulse(pwcon180,zero,0.0,0.0); delay(0.5*TD - POWER_DELAY - 2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); decshaped_pulse(spca180,pwcoff180,zero,0.0,0.0); /* BS compensation */ decpower(d_c90); decrgpulse(pwc90,t3,2.0e-6,0.0); /* CAzCOz */ delay(20.0e-6); decoffset(dof); delay(0.2e-6); rgradient('z',gzlvl6); delay(gt6); rgradient('z',0.0); delay(100.0e-6); if(fDdec[0] == 'y') { /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3on(); /* 2D decoupling on */ } /* refocus Ca-Co coupling */ decrgpulse(pwc90,t4,0.0,2.0e-6); if(taub > 0.5*TC - POWER_DELAY - 2.0e-6 - pw_ml - 2.0e-6 - PRG_STOP_DELAY \ - POWER_DELAY - WFG_START_DELAY - pwcoff180 - WFG_STOP_DELAY - 2.0e-6 ) { delay(TC - taub - 2.0e-6 - pw_ml - PRG_STOP_DELAY); xmtroff(); /* H decoupling off */ obsprgoff(); rgpulse(pw_ml,one,2.0e-6,0.0); delay(taub - 0.5*TC - 2.0*POWER_DELAY - 2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); obspower(tpwr); decpower(d_c180); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); simpulse(2*pw,pwcon180,zero,zero,0.0,0.0); delay(0.5*TC - POWER_DELAY -2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); /* BS compensation */ decpower(d_c90); decrgpulse(pwc90,zero,2.0e-6,0.0); } else { decpower(d_c180); delay(0.5*TC - POWER_DELAY -2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); decrgpulse(pwcon180,zero,0.0,0.0); delay(0.5*TC - taub - 2.0e-6 - pw_ml - PRG_STOP_DELAY); xmtroff(); /* H decoupling off */ obsprgoff(); rgpulse(pw_ml,one,2.0e-6,0.0); delay(taub - 2.0*POWER_DELAY - 2.0e-6 - pwcoff180 - WFG_START_DELAY - WFG_STOP_DELAY); obspower(tpwr); decshaped_pulse(spco180,pwcoff180,zero,0.0,2.0e-6); /* BS compensation */ decpower(d_c90); decrgpulse(pwc90,zero,2.0e-6,0.0); } if(fDdec[0] == 'y') { /* 2D decoupling off */ dec3off(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd,three,4.0e-6,0.0); /* 2D decoupling off */ } decpower(dhpwr); delay(0.2e-6); rgradient('z',gzlvl7); delay(gt7); rgradient('z',0.0); delay(200.0e-6); rgpulse(pw,zero,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl8); delay(gt8); rgradient('z',0.0); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(taua - gt8 - 2.2e-6 - 0.5*(pwc-pw)); simpulse(2*pw,2*pwc,zero,zero,0.0,0.0); delay(0.2e-6); rgradient('z',gzlvl8); delay(gt8); rgradient('z',0.0); delay(200.0e-6); delay(taua - gt8 - 200.2e-6 - 2.0*POWER_DELAY); dec2power(dpwr2); /* set power for 15N decoupling */ decpower(dpwr); /* set power for 13C decoupling */ rgpulse(pw,zero,0.0,0.0); lk_sample(); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t6); }