pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ C_flg[MAXSTR], dtt_flg[MAXSTR]; int phase, phase2, ni, ni2, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JHC = 1.6 ms */ taub, /* 1/6JCH = 1.1 ms */ BigTC, /* Carbon constant time period = 1/4Jcc = 7.0 ms */ BigTC1, /* Carbon constant time period2 < 1/4Jcc to account for relaxation */ pwN, /* PW90 for 15N pulse @ pwNlvl */ pwC, /* PW90 for c nucleus @ pwClvl */ pwcrb180, /* PW180 for C 180 reburp @ rfrb */ pwClvl, /* power level for 13C pulses on dec1 */ compC, compH, /* compression factors for H1 and C13 amps */ rfrb, /* power level for 13C reburp pulse */ pwNlvl, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ tofps, /* tof for presat */ gt0, gt1, gt2, gt3, gt4, gstab, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, decstep1, bw, ofs, ppm, pwd1, dpwr3_D, pwd, tpwrs, pwHs, dof_me, tof_dtt, tpwrs1, pwHs1, dpwrsed, pwsed, dressed, rfrb_cg, pwrb_cg; /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("C_flg",C_flg); getstr("dtt_flg",dtt_flg); tofps = getval("tofps"); taua = getval("taua"); taub = getval("taub"); BigTC = getval("BigTC"); BigTC1 = getval("BigTC1"); pwC = getval("pwC"); pwcrb180 = getval("pwcrb180"); pwN = getval("pwN"); tpwr = getval("tpwr"); pwClvl = getval("pwClvl"); compC = getval("compC"); compH = getval("compH"); dpwr = getval("dpwr"); pwNlvl = getval("pwNlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gstab = getval("gstab"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); decstep1 = getval("decstep1"); pwd1 = getval("pwd1"); dpwr3_D = getval("dpwr3_D"); pwd = getval("pwd"); pwHs = getval("pwHs"); dof_me = getval("dof_me"); pwHs1 = pwHs; tpwrs=-16.0; tpwrs1=tpwrs; tof_dtt = getval("tof_dtt"); dpwrsed = -16; pwsed = 1000.0; dressed = 90.0; pwrb_cg = 0.0; setautocal(); /* activate auto-calibration */ if(FIRST_FID) /* make shapes */ { ppm = getval("dfrq"); bw = 80.0*ppm; rb180 = pbox_make("rb180P", "reburp", bw, 0.0, compC*pwC, pwClvl); bw = 8.125*ppm; ofs = -24.0*ppm; rb180_cg = pbox_make("rb180_cgP", "reburp", bw, ofs, compC*pwC, pwClvl); bw = 20.0*ppm; ofs = 136.0*ppm; cosed = pbox("COsedP", CODEC, CODECps, dfrq, compC*pwC, pwClvl); if(taua < (gt4+106e-6+pwHs)) printf("gt4 or pwHs may be too long! "); if(taub < rb180_cg.pw) printf("rb180_cgP pulse may be too long! "); } pwcrb180 = rb180.pw; rfrb = rb180.pwrf; /* set up parameters */ pwrb_cg = rb180_cg.pw; rfrb_cg = rb180_cg.pwrf; /* set up parameters */ tpwrs = tpwr - 20.0*log10(pwHs/((compH*pw)*1.69)); /* sinc=1.69xrect */ tpwrs = (int) (tpwrs); tpwrs1=tpwrs; dpwrsed = cosed.pwr; pwsed = 1.0/cosed.dmf; dressed = cosed.dres; /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,4,phi3); settable(t4,4,phi4); settable(t5,8,phi5); settable(t6,8,phi6); settable(t7,8,phi7); settable(t8,1,phi8); settable(t9,2,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( BigTC - 0.5*(ni2-1)*1/(sw2) - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 < 0.2e-6 ) { printf(" ni2 is too big\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnnn' "); psg_abort(1); } if( satpwr > 6 ) { printf("SATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > -16 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( pwcrb180 > 500.0e-6 ) { printf("dont fry the probe, pwcrb180 too high ! "); psg_abort(1); } if(dpwr3 > 51) { printf("dpwr3 is too high; < 52\n"); psg_abort(1); } if(dpwr3_D > 49) { printf("dpwr3_D is too high; < 50\n"); psg_abort(1); } if(d1 < 1) { printf("d1 must be > 1\n"); psg_abort(1); } if(dpwrsed > 48) { printf("dpwrsed must be less than 49\n"); psg_abort(1); } if( gt0 > 5.0e-3 || gt1 > 5.0e-3 || gt2 > 5.0e-3 || gt3 > 5.0e-3 || gt4 > 5.0e-3 ) { printf(" all values of gti must be < 5.0e-3\n"); psg_abort(1); } if(ix==1) { printf("make sure that BigTC1 is set properly for your application\n"); printf("7 ms, neglecting relaxation \n"); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t1,1,4); tsadd(t2,1,4); tsadd(t3,1,4); tsadd(t4,1,4); } if (phase2 == 2) tsadd(t8,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; tau1 = tau1 - 2.0*pw - 4.0/PI*pwC - POWER_DELAY - 2.0e-6 - PRG_START_DELAY - PRG_STOP_DELAY - POWER_DELAY - 2.0e-6; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.4e-6) tau1 = 4.0e-7; } tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.4e-6) tau2 = 4.0e-7; } tau2 = tau2/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(t1,2,4); tsadd(t9,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t8,2,4); tsadd(t9,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(satpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 to low power */ /* Presaturation Period */ status(B); if (fsat[0] == 'y') { obsoffset(tofps); delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat with transmitter */ 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.0*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 */ obsoffset(tof); txphase(t1); decphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); decoffset(dof_me); lk_hold(); rcvroff(); delay(20.0e-6); /* ensure that magnetization originates on 1H and not 13C */ if(dtt_flg[A] == 'y') { obsoffset(tof_dtt); obspower(tpwrs1); shaped_pulse("H2Osinc",pwHs1,zero,10.0e-6,0.0); obspower(tpwr); obsoffset(tof); } decrgpulse(pwC,zero,0.0,0.0); zgradpulse(gzlvl0,gt0); delay(gstab); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ zgradpulse(gzlvl1,gt1); delay(gstab); delay(taua - gt1 -gstab); simpulse(2.0*pw,2.0*pwC,zero,zero,0.0,0.0); txphase(one); delay(taua - gt1 - gstab); zgradpulse(gzlvl1,gt1); delay(gstab); rgpulse(pw,one,0.0,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ decoffset(dof); /* jump 13C to 40 ppm */ zgradpulse(gzlvl2,gt2); delay(gstab); decrgpulse(pwC,t1,4.0e-6,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t2); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t2,0.0,0.0); decphase(zero); /* turn on 2H decoupling */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); dec3prgon(dseq3,pwd,dres3); dec3on(); /* turn on 2H decoupling */ initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC1 - POWER_DELAY - 4.0e-6 - pwd1 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t3); decpwrf(4095.0); delay(BigTC1 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t3,0.0,0.0); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t4); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t4,0.0,0.0); if(C_flg[A] == 'n') { decpower(dpwrsed); decunblank(); decphase(zero); delay(2.0e-6); decprgon(cosed.name,pwsed,dressed); decon(); delay(tau1); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau1); decoff(); decprgoff(); decblank(); decpower(pwClvl); } else simpulse(2.0*pw,2.0*pwC,zero,zero,4.0e-6,4.0e-6); decrgpulse(pwC,t5,2.0e-6,0.0); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t6); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t6,0.0,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC1 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t7); decpwrf(4095.0); delay(BigTC1 - WFG_STOP_DELAY - POWER_DELAY - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6 - pwd1); /* 2H decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2H decoupling off */ decrgpulse(pwC,t7,0.0,0.0); decphase(zero); delay(tau2); rgpulse(2.0*pw,zero,0.0,0.0); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - 2.0*pw - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t8); decpwrf(4095.0); delay(BigTC - tau2 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decrgpulse(pwC,t8,4.0e-6,0.0); decoffset(dof_me); zgradpulse(gzlvl3,gt3); delay(gstab); lk_sample(); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ rgpulse(pw,zero,4.0e-6,0.0); zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - gt4 -gstab - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - 2.0e-6); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ simpulse(2.0*pw,2.0*pwC,zero,zero,2.0e-6,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - POWER_DELAY - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - gt4 - gstab - 2.0*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t9); }
pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ codecseq[MAXSTR], ddseq[MAXSTR], shca180[MAXSTR], shca90[MAXSTR]; int phase, ni, t1_counter, /* used for states tppi in t1 */ tau2; double tau1, /* t1 delay */ taua, /* ~ 1/4JCH = 1.7 ms */ taub, /* ~ 1/2JCH for AX spin systems */ taud, /* ~ 1/4JCD 12.5 ms for AX spin system */ TC, /* carbon constant time period 1/2JCC */ pwc, /* 90 c pulse at dhpwr */ tsatpwr, /* low level 1H trans.power for presat */ dhpwr, /* power level for high power 13C pulses on dec1 */ sw1, /* sweep width in f1 */ time_T2, /* total relaxation time for T2 measurement */ pwcodec, /* pw90 for C' decoupling */ dressed, /* = 2 for seduce-1 decoupling */ dpwrsed, pwd, /* pulse width for D decoupling at dpwr3_D */ dresD, dpwr3_D, lk_wait, /* delay for lk receiver recovery */ pwd1, /* pulse width for D +/- pulses at dpwr3 */ d_ca180, pwca180, pwca90, /* ca selective pulse at 57.5 ppm */ d_ca90, /* power level for pwca90 */ dpwr3_sl, /* D power level for spin locking */ pwd_sl, /* pw for D at dpwr3_sl */ gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gstab=getval("gstab"), gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("fscuba",fscuba); getstr("codecseq",codecseq); getstr("ddseq",ddseq); getstr("shca180",shca180); getstr("shca90",shca90); taua = getval("taua"); taub = getval("taub"); taud = getval("taud"); TC = getval("TC"); pwc = getval("pwc"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dhpwr = getval("dhpwr"); dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); sw1 = getval("sw1"); ni = getval("ni"); pwcodec = getval("pwcodec"); dressed = getval("dressed"); dpwrsed = getval("dpwrsed"); pwd = getval("pwd"); dresD = getval("dresD"); dpwr3_D = getval("dpwr3_D"); lk_wait = getval("lk_wait"); pwd1 = getval("pwd1"); d_ca180 = getval("d_ca180"); pwca180 = getval("pwca180"); pwca90 = getval("pwca90"); d_ca90 = getval("d_ca90"); dpwr3_sl = getval("dpwr3_sl"); pwd_sl = getval("pwd_sl"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); 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,16,phi1); settable(t2,2,phi2); settable(t3,16,phi3); settable(t4,4,phi4); settable(t6,4,phi6); settable(t7,8,phi7); settable(t5,16,rec_d); /* CHECK VALIDITY OF PARAMETER RANGES */ if( TC - 0.50*(ni-1)*1/(sw1) - WFG_STOP_DELAY - gt6 - 102e-6 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - 4.0e-6 - pwd1 - POWER_DELAY - PRG_START_DELAY - PRG_STOP_DELAY - 2.0e-6 - POWER_DELAY - 2.0e-6 < 0.2e-6 ) { printf(" ni is too big\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { printf("incorrect dec2 decoupler flags! "); psg_abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 49 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( dhpwr > 63 ) { printf("don't fry the probe, DHPWR too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if(gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 || gt7 > 15e-3 || gt8 > 15e-3) { printf("gradients on for too long. Must be < 15e-3 \n"); psg_abort(1); } if(dpwr3_D > 54) { printf("D decoupling power is too high\n"); psg_abort(1); } if(lk_wait > .015 ) { printf("lk_wait delay may be too long\n"); psg_abort(1); } /* change back to 48 */ if(dpwr3_sl > 53) { printf("dpwr3_sl is too large; must be less than 53\n"); psg_abort(1); } /* change back to 250 */ if(pwd_sl < 170.0e-6) { printf("pwd_sl is too large; Must be larger than 170 us\n"); psg_abort(1); } /* Calculation of IzCzDz relaxation delay */ tau2 = (int) (d3+0.1); time_T2 = z_array[tau2]; if(time_T2 > 0.030) { printf("time_T2 is too long; Must be less than 30 ms\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t7,1,4); } /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.4e-6) tau1 = 0.4e-6; } 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(t7,2,4); tsadd(t5,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); decoffset(dof); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(dhpwr); /* Set Dec1 power for hard 13C pulses */ dec2power(dpwr2); /* Set Dec2 power for 15N decoupling */ /* Presaturation Period */ status(B); if (fsat[0] == 'y') { rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat */ 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); decphase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); /* Prepare for signs of gradients 0 1 0 1 0 1 */ mod2(ct,v1); rcvroff(); lk_hold(); delay(20.0e-6); /* first ensure that magnetization does infact start on H and not C */ decrgpulse(pwc,zero,2.0e-6,2.0e-6); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); /* this is the real start */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6); /* taua <= 1/4JCH */ simpulse(2*pw,2*pwc,zero,zero,0.0,0.0); txphase(one); decphase(t1); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ decrgpulse(pwc,t1,2.0e-6,0.0); decphase(zero); delay(taub - 2.0*pw - 2.0e-6); rgpulse(pw,zero,0.0,0.0); rgpulse(pw,t2,2.0e-6,0.0); delay(TC - taub - gt4 - 102e-6 - PRG_STOP_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupling off */ ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl4,gt4); delay(gstab); endif(v1); initval(1.0,v3); decstepsize(353.0); dcplrphase(v3); decpower(d_ca180); decshaped_pulse(shca180,pwca180,zero,4.0e-6,0.0); dcplrphase(zero); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl4,gt4); delay(gstab); endif(v1); /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(TC - taud - WFG_STOP_DELAY - gt4 - 102e-6 - POWER_DELAY - 4.0e-6 - pwd1 - POWER_DELAY - PRG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); decphase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupling off */ delay(taud - PRG_STOP_DELAY -POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - WFG_START_DELAY - pwca90 - 4.0e-6 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decpower(d_ca90); decshaped_pulse(shca90,pwca90,t3,4.0e-6,0.0); decpower(dhpwr); decrgpulse(pwc,one,4.0e-6,0.0); /* T2 period */ dec3power(dpwr3); dec3rgpulse(pwd1,t4,2.0e-6,0.0); dec3phase(one); dec3power(dpwr3_sl); dec3rgpulse(time_T2,one,2.0e-6,2.0e-7); dec3phase(zero); dec3power(dpwr3); dec3rgpulse(pwd1,zero,2.0e-6,0.0); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl5,gt5); delay(gstab); endif(v1); decphase(zero); decrgpulse(pwc,t7,4.0e-6,0.0); /* C' decoupling on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* C' decoupling on */ if(taud + 3.0*POWER_DELAY + 2.0*PRG_START_DELAY + pwd1 + 4.0e-6 >= tau1) { delay(tau1); rgpulse(2.0*pw,zero,0.0,0.0); delay(taud + 3.0*POWER_DELAY + 2.0*PRG_START_DELAY + pwd1 + 4.0e-6 - tau1); /* 2D decoupling on */ dec3phase(t6); dec3power(dpwr3); dec3rgpulse(pwd1,t6,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(TC - taud + tau1 - POWER_DELAY - PRG_START_DELAY - 2.0*pw - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_START_DELAY - 3.0*POWER_DELAY - 2.0*PRG_START_DELAY - pwd1 - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - gt6 - 102e-6 - WFG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupler off */ /* C' decoupling off */ decoff(); decprgoff(); decpower(d_ca180); /* set power for reburp */ /* C' decoupling off */ } else { delay(taud); /* 2D decoupling on */ dec3phase(t6); dec3power(dpwr3); dec3rgpulse(pwd1,t6,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(tau1 - taud - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_START_DELAY); rgpulse(2.0*pw,zero,0.0,0.0); delay(TC - 2.0*pw - PRG_STOP_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_STOP_DELAY - gt6 - 102e-6 - WFG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupler off */ /* C' decoupling off */ decoff(); decprgoff(); decpower(d_ca180); /* set power for reburp */ /* C' decoupling off */ } initval(1.0,v4); decstepsize(353.0); dcplrphase(v4); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl6,gt6); delay(gstab); endif(v1); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dcplrphase(zero); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl6,gt6); delay(gstab); endif(v1); /* C' decoupling on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* C' decoupling on */ /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(TC - tau1 - WFG_STOP_DELAY - gt6 - 102e-6 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_START_DELAY - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); /* C' decoupling off */ decoff(); decprgoff(); decpower(dhpwr); /* C' decoupling off */ decrgpulse(pwc,one,4.0e-6,0.0); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupler off */ ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl7,gt7); delay(gstab); endif(v1); delay(lk_wait); /* delay for lk receiver recovery */ rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl8,gt8); decphase(zero); delay(taua - gt8 - 4.0e-6); simpulse(2*pw,2*pwc,zero,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(2.0e-6); delay(taua - 2*POWER_DELAY - gt8 - 4.0e-6); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* Set power for decoupling */ rgpulse(pw,zero,0.0,rof2); lk_sample(); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t5); }
pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ sh_reb[MAXSTR], codec[MAXSTR], MQ_flg[MAXSTR], filter_flg[MAXSTR]; int phase, t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ taua, /* set to exactly 1/4JCH */ tsatpwr, /* low level 1H trans.power for presat */ sw1, /* sweep width in f1 */ tpwr_cp, /* power level for 1H CPMG */ pw_cp, /* 1H pw for CPMG */ ncyc_cp, /* number of CPMG cycles */ time_T2, /* total time for CPMG trains */ tau_cpmg, dhpwr, pwc, dmf_co, dpwr_co, dresco, gt0, gt1, gt2, gt3, gt4, gt5, gt6, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, tpwr, pw, d_reb, pwc_reb, dpwr3_D, pwd, pwd1, tau_eq, pwn, dhpwr2; /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("fscuba",fscuba); getstr("sh_reb",sh_reb); getstr("codec",codec); getstr("MQ_flg",MQ_flg); getstr("filter_flg",filter_flg); taua = getval("taua"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); sw1 = getval("sw1"); tpwr_cp = getval("tpwr_cp"); pw_cp = getval("pw_cp"); ncyc_cp = getval("ncyc_cp"); time_T2 = getval("time_T2"); dhpwr = getval("dhpwr"); pwc = getval("pwc"); pwn = getval("pwn"); dhpwr2 = getval("dhpwr2"); dmf_co = getval("dmf_co"); dpwr_co = getval("dpwr_co"); dresco = getval("dresco"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); tpwr = getval("tpwr"); pw = getval("pw"); d_reb = getval("d_reb"); pwc_reb = getval("pwc_reb"); dpwr3_D = getval("dpwr3_D"); pwd = getval("pwd"); pwd1 = getval("pwd1"); tau_eq = getval("tau_eq"); /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t2,2,phi2); settable(t4,8,phi4); settable(t5,4,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { printf("incorrect dec2 decoupler flags! "); abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); abort(1); } if(tpwr_cp > 62) { printf("don't fry the probe, tpwr_cp too large: < 62! "); abort(1); } if(pw_cp < 9.5e-6) { printf("pw_cp is too low; > 9.5us\n"); abort(1); } if( dpwr2 > -16 ) { printf("don't fry the probe, DPWR2 too large! "); abort(1); } if( pw > 20.0e-6 ) { printf("dont fry the probe, pw too high ! "); abort(1); } if(gt1 > 3e-3 || gt2 > 3e-3 || gt3 > 3e-3 || gt4 > 3e-3 || gt5 > 3e-3 || gt6 > 3e-3) { printf("gradients on for too long. Must be < 3e-3 \n"); abort(1); } if(ncyc_cp > 80) { printf("ncyc_cp is too large; must be less than 81\n"); abort(1); } if(time_T2 > .080) { printf("time_T2 is too large; must be less than 80 ms\n"); abort(1); } if(ncyc_cp > 0) { tau_cpmg = time_T2/(4.0*ncyc_cp) - pw_cp; if(ix==1) printf("nuCPMG for curent experiment is (Hz): %5.3f\n",1/(4.0*(tau_cpmg+pw_cp))); } else { tau_cpmg = time_T2/(4.0) - pw_cp; if(ix==1) printf("nuCPMG for curent experiment is (Hz): not applicable"); } if(tau_cpmg + pw_cp < 125e-6) { printf("tau_cpmg is too small; decrease ncyc_cp\n"); abort(1); } if(dpwr_co > 42) { printf("dpwr_co is too high; < 42\n"); abort(1); } if(dpwr3_D > 51) { printf("dpwr3_D is too high; < 52\n"); abort(1); } if(dpwr3 > 59) { printf("dpwr3 is too high; < 60\n"); abort(1); } if(ix==1) printf("If at 800 turn dpwr3=-16, pwd1=0\n"); /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) tsadd(t1,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; if(MQ_flg[A] == 'n') tau1 = tau1 - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 2.0*pw - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6; else tau1 = tau1 - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 2.0*pw - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1)); if(tau1 < 0.4e-6) tau1 = 0.4e-6; } if(tau1 < 0.4e-6) tau1 = 0.4e-6; 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(t1,2,4); tsadd(t5,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); rlpower(tsatpwr,TODEV); /* Set transmitter power for 1H presaturation */ rlpower(dhpwr,DODEV); /* Set Dec1 power for 13C pulses */ rlpower(dhpwr2,DO2DEV); /* Set Dec2 power for 15N pulses */ obsoffset(tof); /* Presaturation Period */ status(B); if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presaturation */ rlpower(tpwr,TODEV); /* 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); } rlpower(tpwr,TODEV); /* Set transmitter power for 1H CPMG pulses */ txphase(zero); dec2phase(zero); decphase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); rcvroff(); delay(20.0e-6); decrgpulse(pwc,zero,4.0e-6,0.0); delay(2.0e-6); rgradient('z',gzlvl1); delay(gt1); rgradient('z',0.0); delay(250.0e-6); rgpulse(pw,zero,0.0,0.0); decpower(d_reb); delay(2.0e-6); rgradient('z',gzlvl2); delay(gt2); rgradient('z',0.0); delay(150.0e-6); if(filter_flg[A] == 'y') delay(taua - POWER_DELAY - gt2 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb - 4.0/PI*pw); else delay(taua - POWER_DELAY - gt2 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb); simshaped_pulse("hard",sh_reb,2.0*pw,pwc_reb,zero,zero,0.0,0.0); txphase(one); decpower(dhpwr); decphase(t4); delay(taua - 0.5*pwc_reb - WFG2_STOP_DELAY - POWER_DELAY - gt2 - 152e-6 ); delay(2.0e-6); rgradient('z',gzlvl2); delay(gt2); rgradient('z',0.0); delay(150.0e-6); if(filter_flg[A] == 'n') rgpulse(pw,one,0.0,0.0); if(filter_flg[A] == 'y') { decrgpulse(pwc,t4,0.,0.); decpower(d_reb); decphase(zero); delay(2.0e-6); rgradient('z',gzlvl0); delay(gt0); rgradient('z',0.0); delay(150.0e-6); delay(taua - POWER_DELAY - gt0 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb); simshaped_pulse("hard",sh_reb,2.0*pw,pwc_reb,zero,zero,0.0,0.0); txphase(one); decpower(dhpwr); decphase(t4); delay(taua - 0.5*pwc_reb - WFG2_STOP_DELAY - POWER_DELAY - gt0 - 152e-6 ); delay(2.0e-6); rgradient('z',gzlvl0); delay(gt0); rgradient('z',0.0); delay(150.0e-6); decrgpulse(pwc,t4,0.0,0.0); rgpulse(pw,one,0.0,0.0); } decphase(t1); delay(2.0e-6); rgradient('z',gzlvl3); delay(gt3); rgradient('z',0.0); delay(250.0e-6); /* turn on 2H decoupling */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); dec3prgon(dseq3,pwd,dres3); dec3on(); /* turn on 2H decoupling */ if(MQ_flg[A] == 'y') { rgpulse(pw,zero,2.0e-6,0.0); delay(2.0*pwn - PRG_START_DELAY - PRG_STOP_DELAY); } decrgpulse(pwc,t1,4.0e-6,0.0); decphase(zero); /* 13CO decoupling on */ decpower(dpwr_co); decprgon(codec,1.0/dmf_co,dresco); decon(); /* 13CO decoupling on */ delay(tau1); rgpulse(2.0*pw,zero,0.0,0.0); dec2rgpulse(2.0*pwn,zero,0.0,0.0); delay(tau1); /* 13CO decoupling off */ decoff(); decprgoff(); /* 13CO decoupling off */ decpower(dhpwr); decrgpulse(pwc,zero,4.0e-6,0.0); if(MQ_flg[A] == 'y') rgpulse(pw,zero,0.0,0.0); /* turn off decoupling */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* turn off decoupling */ obspower(tpwr_cp); if(MQ_flg[A] == 'n') { delay(2.0e-6); rgradient('z',gzlvl4); delay(gt4); rgradient('z',0.0); delay(250.0e-6); } else { delay(2.0e-6); rgradient('z',-1.0*gzlvl4); delay(gt4); rgradient('z',0.0); delay(250.0e-6); } /* now include a delay to allow the spin system to equilibrate */ delay(tau_eq); rgpulse(pw_cp,t2,4.0e-6,0.0); txphase(one); /* start of the CPMG period 1 */ if(ncyc_cp == 1) { delay(tau_cpmg - (2.0/PI)*pw_cp); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); } if(ncyc_cp == 2) { delay(tau_cpmg - (2.0/PI)*pw_cp); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); } if(ncyc_cp > 2) { delay(tau_cpmg - (2.0/PI)*pw_cp); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); initval(ncyc_cp-2,v4); loop(v4,v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); endloop(v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); } txphase(t4); decphase(zero); rgpulse(2.0*pw_cp,t4,2.0e-6,2.0e-6); txphase(one); if(ncyc_cp == 1) { delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); txphase(one); delay(tau_cpmg - 2.0/PI*pw_cp); } if(ncyc_cp == 2) { delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); txphase(one); delay(tau_cpmg - 2.0/PI*pw_cp); } if(ncyc_cp > 2) { delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); initval(ncyc_cp-2,v4); loop(v4,v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); endloop(v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); txphase(one); delay(tau_cpmg - 2.0/PI*pw_cp); } rgpulse(pw_cp,zero,0.0,0.0); delay(2.0e-6); rgradient('z',gzlvl5); delay(gt5); rgradient('z',0.0); delay(250.0e-6); obspower(tpwr); rgpulse(pw,zero,4.0e-6,0.0); decpower(d_reb); delay(2.0e-6); rgradient('z',gzlvl6); delay(gt6); rgradient('z',0.0); delay(150.0e-6); delay(taua - POWER_DELAY - gt6 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb); simshaped_pulse("hard",sh_reb,2.0*pw,pwc_reb,zero,zero,0.0,0.0); delay(taua - 0.5*pwc_reb - WFG2_STOP_DELAY - 2.0*POWER_DELAY - gt6 - 152e-6); rlpower(dpwr,DODEV); /* Set power for decoupling */ rlpower(dpwr2,DO2DEV); /* Set power for decoupling */ delay(2.0e-6); rgradient('z',gzlvl6); delay(gt6); rgradient('z',0.0); delay(150.0e-6); rgpulse(pw,zero,0.0,0.0); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t5); }
pulsesequence() { /* DECLARE VARIABLES */ char fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ fulldwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ C_flg[MAXSTR], dtt_flg[MAXSTR]; int phase, phase2, ni, ni2, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JHC = 1.6 ms */ taub, /* 1/6JCH = 1.1 ms */ BigTC, /* Carbon constant time period = 1/4Jcc = 7.0 ms */ pwN, /* PW90 for 15N pulse @ pwNlvl */ pwC, /* PW90 for c nucleus @ pwClvl */ pwcrb180, /* PW180 for C 180 reburp @ rfrb */ pwClvl, /* power level for 13C pulses on dec1 */ compC, compH, /* compression factors for H1 and C13 amps */ rfrb, /* power level for 13C reburp pulse */ pwNlvl, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ bw, ofs, ppm, gt0, gt1, gt2, gt3, gt4, gt5, gt6, gstab, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, decstep1, decstep2, decstep3, tpwrs, pwHs, dof_me, rfrb_cg, rfrb_co, pwrb_co, pwrb_cg, tof_dtt, rfca90, pwca90, rfca180, pwca180, pwco90, dofCO; /* LOAD VARIABLES */ getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("C_flg",C_flg); getstr("dtt_flg",dtt_flg); taua = getval("taua"); taub = getval("taub"); BigTC = getval("BigTC"); pwC = getval("pwC"); pwcrb180 = getval("pwcrb180"); pwN = getval("pwN"); tpwr = getval("tpwr"); pwClvl = getval("pwClvl"); compC = getval("compC"); compH = getval("compH"); dpwr = getval("dpwr"); pwNlvl = getval("pwNlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); gstab = getval("gstab"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); decstep1 = getval("decstep1"); decstep2 = getval("decstep2"); decstep3 = getval("decstep3"); pwHs = getval("pwHs"); dof_me = getval("dof_me"); tof_dtt = getval("tof_dtt"); dofCO = getval("dofCO"); tpwrs = 0.0; setautocal(); /* activate auto-calibration */ if(FIRST_FID) /* make shapes */ { ppm = getval("dfrq"); bw = 80.0*ppm; rb180 = pbox_make("rb180P", "reburp", bw, 0.0, compC*pwC, pwClvl); bw = 8.125*ppm; ofs = -24.0*ppm; rb180_cg = pbox_make("rb180_cgP", "reburp", bw, ofs, compC*pwC, pwClvl); bw = 60*ppm; ofs = 136.0*ppm; rb180_co = pbox_make("rb180_coP", "reburp", bw, ofs, compC*pwC, pwClvl); bw = 118.0*ppm; ofs = -118.0*ppm; ca180 = pbox_make("ca180P", "square180n", bw, ofs, compC*pwC, pwClvl); bw = 118.0*ppm; ofs = 18.0*ppm; ca90 = pbox_make("ca90P", "square90n", bw, ofs, compC*pwC, pwClvl); } pwcrb180 = rb180.pw; rfrb = rb180.pwrf; /* set up parameters */ pwrb_cg = rb180_cg.pw; rfrb_cg = rb180_cg.pwrf; /* set up parameters */ pwrb_co = rb180_co.pw; rfrb_co = rb180_co.pwrf; /* set up parameters */ pwca90 = ca90.pw; rfca90 = ca90.pwrf; /* set up parameters */ pwca180 = ca180.pw; rfca180 = ca180.pwrf; /* set up parameters */ pwco90 = pwca90; tpwrs = tpwr - 20.0*log10(pwHs/((compH*pw)*1.69)); /* sinc=1.69xrect */ tpwrs = (int) (tpwrs); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,4,phi3); settable(t4,4,phi4); settable(t5,1,phi5); settable(t6,16,phi6); settable(t7,8,phi7); settable(t8,8,phi8); settable(t9,8,phi9); settable(t10,1,phi10); settable(t11,8,phi11); settable(t12,16,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( BigTC - 0.5*(ni2-1)*1/(sw2) - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 < 0.2e-6 ) { printf(" ni2 is too big\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if( satpwr > 9 ) { printf("SATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > -16 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( pwcrb180 > 500.0e-6 ) { printf("dont fry the probe, pwcrb180 too high ! "); psg_abort(1); } if(dpwr3 > 51) { printf("dpwr3 is too high; < 52\n"); psg_abort(1); } if(d1 < 1) { printf("d1 must be > 1\n"); psg_abort(1); } if( gt0 > 5.0e-3 || gt1 > 5.0e-3 || gt2 > 5.0e-3 || gt3 > 5.0e-3 || gt4 > 5.0e-3 || gt5 > 5.0e-3 || gt6 > 5.0e-3 ) { printf(" all values of gti must be < 5.0e-3\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t11,1,4); } if (phase2 == 2) tsadd(t10,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; tau1 = tau1 - 4.0/PI*pwco90 - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwca180 - WFG_STOP_DELAY - POWER_DELAY - 2.0*pwN; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.4e-6) tau1 = 4.0e-7; } tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.4e-6) tau2 = 4.0e-7; } tau2 = tau2/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(t11,2,4); tsadd(t12,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t10,2,4); tsadd(t12,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(satpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 to high power */ /* Presaturation Period */ if (satmode[A] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat with transmitter */ 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.0*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(t1); decphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); decoffset(dof_me); lk_hold(); lk_sampling_off(); rcvroff(); delay(20.0e-6); /* ensure that magnetization originates on 1H and not 13C */ if(dtt_flg[A] == 'y') { obsoffset(tof_dtt); obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,10.0e-6,0.0); obspower(tpwr); obsoffset(tof); } decrgpulse(pwC,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl0,gt0); delay(gstab); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); delay(taua - gt1 -gstab -2.0e-6 ); simpulse(2.0*pw,2.0*pwC,zero,zero,0.0,0.0); txphase(one); delay(taua - gt1 - gstab -2.0e-6); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); rgpulse(pw,one,0.0,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ decoffset(dof); /* jump 13C to 40 ppm */ delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(gstab); decrgpulse(pwC,t1,4.0e-6,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t2); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t2,0.0,0.0); decphase(zero); /* turn on 2H decoupling */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(1/dmf3,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3prgon(dseq3,1/dmf3,dres3); dec3on(); /* turn on 2H decoupling */ initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - 4.0e-6 - 1/dmf3 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t3); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t3,0.0,0.0); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t4); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t4,0.0,0.0); decpwrf(rfrb_co); decphase(zero); decshaped_pulse(rb180_co.name,pwrb_co,zero,4.0e-6,0.0); /* BS */ decpwrf(rfrb); delay(taub - (2.0/PI)*pwC - POWER_DELAY - 4.0e-6 - WFG_START_DELAY - pwrb_co - WFG_STOP_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep2); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_co); decshaped_pulse(rb180_co.name,pwrb_co,zero,4.0e-6,0.0); decphase(t5); decpwrf(rfca90); delay(taub - WFG_STOP_DELAY - 4.0e-6 - WFG_START_DELAY - pwcrb180 - WFG_STOP_DELAY - POWER_DELAY - WFG_START_DELAY - (2.0/PI)*pwca90); decshaped_pulse(ca90.name,pwca90,t5,0.0,0.0); decoffset(dofCO); /* 2H decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3rgpulse(1/dmf3,three,4.0e-6,0.0); /* 2H decoupling off */ delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); decrgpulse(pwco90,t11,4.0e-6,0.0); if(C_flg[A] == 'n') { decpwrf(rfca180); delay(tau1); decshaped_pulse(ca180.name,pwca180,zero,4.0e-6,0.0); decpwrf(rfca90); decphase(zero); dec2rgpulse(2.0*pwN,zero,0.0,0.0); delay(tau1); } else decrgpulse(2.0*pwco90,zero,4.0e-6,4.0e-6); decrgpulse(pwco90,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); /* turn on 2H decoupling */ dec3phase(one); dec3rgpulse(1/dmf3,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3prgon(dseq3,1/dmf3,dres3); dec3on(); /* turn on 2H decoupling */ decoffset(dof); decpwrf(rfca90); decshaped_pulse(ca90.name,pwca90,t6,4.0e-6,0.0); decpwrf(rfrb_co); decphase(zero); delay(taub - WFG_STOP_DELAY - (2.0/PI)*pwca90 - POWER_DELAY - WFG_START_DELAY - pwrb_co - WFG_STOP_DELAY - 2.0e-6 - WFG_START_DELAY); decshaped_pulse(rb180_co.name,pwrb_co,zero,0.0,0.0); decpwrf(rfrb); initval(1.0,v3); decstepsize(decstep3); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_co); delay(taub - WFG_STOP_DELAY - 4.0e-6 - WFG_START_DELAY - pwcrb180 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 - (2.0/PI)*pwC); decshaped_pulse(rb180_co.name,pwrb_co,zero,4.0e-6,0.0); /* BS */ decpwrf(4095.0); decrgpulse(pwC,t7,4.0e-6,0.0); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t8); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t8,0.0,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t9); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6 - 1/dmf3); /* 2H decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3rgpulse(1/dmf3,three,4.0e-6,0.0); lk_autotrig(); /* 2H decoupling off */ decrgpulse(pwC,t9,0.0,0.0); decphase(zero); delay(tau2); rgpulse(2.0*pw,zero,0.0,0.0); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - 2.0*pw - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t10); decpwrf(4095.0); delay(BigTC - tau2 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decrgpulse(pwC,t10,4.0e-6,0.0); decoffset(dof_me); delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); lk_sample(); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ rgpulse(pw,zero,4.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - gt4 - gstab -2.0e-6 - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - 2.0e-6); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ simpulse(2.0*pw,2.0*pwC,zero,zero,2.0e-6,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - gt4 - gstab -2.0e-6 - 2.0*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* BEGIN ACQUISITION */ lk_sample(); status(C); setreceiver(t12); }