pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ RELAY[MAXSTR], /* Insert HCCH-relay delay */ ribose[MAXSTR], /* ribose CHn groups only */ aromatic[MAXSTR], /* aromatic CHn groups only */ rna_stCshape[MAXSTR], /* calls sech/tanh pulses from shapelib */ rna_stCdec[MAXSTR], /* calls STUD+ waveforms from shapelib */ mag_flg[MAXSTR], /* Flag to use magic-angle gradients */ H2O_flg[MAXSTR], sspul[MAXSTR], SHAPE[MAXSTR], STUD[MAXSTR]; /* apply automatically calculated STUD decoupling */ int t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ delta1,delta2, ni = getval("ni"), lambda = 0.94/(4*getval("JCH")), /* 1/4J H1 evolution delay */ tCH = 1/(6.0*getval("JCH")), /* 1/4J C13 evolution delay */ tCC = 1/(8*getval("JCC")), pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rfC, /* maximum fine power when using pwC pulses */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ /* temporary Pbox parameters */ bw, pws, ofs, ppm, nst, /* bandwidth, pulsewidth, offset, ppm, # steps */ /* Sech/tanh inversion pulses automatically calculated by macro "rna_cal" */ /* and string parameter rna_stCshape calls them from your shapelib. */ rfst = 0.0, /* fine power for the rna_stCshape pulse, initialised */ dofa, /* dof shifted to 80 or 120ppm for ribose or aromatic spectra */ /* string parameter stCdec calls stud decoupling waveform from your shapelib.*/ studlvl, /* coarse power for STUD+ decoupling */ stdmf = getval("dmf80"), /* dmf for 80 ppm of STUD decoupling */ rf80 = getval("rf80"), /* rf in Hz for 80ppm STUD+ */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), gt8 = getval("gt8"), gt9 = getval("gt9"), gzcal = getval("gzcal"), grecov = getval("grecov"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl7 = getval("gzlvl7"), /* triax option */ gzlvl8 = getval("gzlvl8"), gzlvl9 = getval("gzlvl9"); getstr("f1180",f1180); getstr("mag_flg",mag_flg); getstr("f2180",f2180); getstr("RELAY",RELAY); getstr("ribose",ribose); getstr("aromatic",aromatic); getstr("H2O_flg",H2O_flg); getstr("sspul",sspul); getstr("SHAPE",SHAPE); getstr("STUD",STUD); /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses */ rfC = 4095.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* 50ppm sech/tanh inversion */ rfst = (compC*4095.0*pwC*4000.0*sqrt((7.5*sfrq/600+3.85)/0.41)); rfst = (int) (rfst + 0.5); } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 50.0*ppm; pws = 0.001; ofs = 0.0; nst = 500.0; stC50 = pbox_makeA("rna_stC50", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); if (dm3[B] == 'y') H2ofs = 3.2; ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } rfst = stC50.pwrf; } strcpy(rna_stCshape, "rna_stC50"); strcpy(rna_stCdec, "wurst80"); studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf80); studlvl = (int) (studlvl + 0.5); /* RIBOSE spectrum only, centered on 80ppm. */ if (ribose[A]=='y') dofa = dof - 30.0*dfrq; /* AROMATIC spectrum only, centered on 120ppm */ else dofa = dof + 10*dfrq; /* CHECK VALIDITY OF PARAMETER RANGES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } if( pwC > (24.0e-6*600.0/sfrq) ) { printf("Increase pwClvl so that pwC < 24*600/sfrq"); 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')) { printf("incorrect Dec2 decoupler flags! "); psg_abort(1);} if((dm3[A] == 'y' || dm3[C] == 'y' )) {printf("incorrect dec1 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1); } if ((dm3[B] == 'y' && dpwr3 > 44 )) { printf("Deuterium decoupling power too high ! "); psg_abort(1);} if( dpwr > 50 ) { printf("don't fry the probe, dpwr too large! "); psg_abort(1);} if( dpwr2 > 50 ) { printf("don't fry the probe, dpwr2 too large! "); psg_abort(1); } /* CHOICE OF PULSE SEQUENCE */ if ( ((ribose[A]=='y') && (aromatic[A]=='y')) ) { text_error("Choose ONE of ribose='y' OR aromatic='y' ! "); psg_abort(1); } if ( ((aromatic[A]=='y') && (RELAY[A]=='y')) ) { text_error("No RELAY with aromatic='y' ! "); psg_abort(1); } /* LOAD VARIABLES */ settable(t1, 2, phi1); settable(t2, 4, phi2); settable(t3, 16, phi3); settable(t4, 2, phi4); settable(t11,8, rec); /* INITIALIZE VARIABLES */ /* Phase incrementation for hypercomplex data */ if ( phase1 == 2 ) /* Hypercomplex in t1 */ tsadd(t1,1,4); if ( phase2 == 2 ) tsadd(t2,1,4); /* calculate modification to phases based on current t1 values to achieve 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(t11,2,4); } /* calculate modification to phases based on current t2 values to achieve States-TPPI acquisition */ if(ix == 1) d3_init = d3; t2_counter = (int)((d3-d3_init)*sw2 + 0.5); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t11,2,4); } /* set up so that get (90, -180) phase corrects in F1 if f1180 flag is y */ tau1 = d2; if(f1180[A] == 'y') { tau1 += (1.0/(2.0*sw1)); } if (tau1 < 1.0e-6) tau1 = 0.0; tau1 = tau1/2.0; /* set up so that get (90, -180) phase corrects in F2 if f2180 flag is y */ tau2 = d3; if(f2180[A] == 'y') { tau2 += (1.0/(2.0*sw2)); } if (tau2 < 1.0e-6) tau2 = 0.0; tau2 = tau2/2.0; if (ni > 1) delta1 = (double)(t1_counter*(lambda - gt5 - 0.2e-3))/((double)(ni-1)); else delta1 = 0.0; if (ni2 > 1) delta2 = (double)(t2_counter*(tCC - 0.6e-3))/((double)(ni2-1)); else delta2 = 0.0; initval(7.0, v1); obsstepsize (45.0); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obsoffset(tof); decoffset(dofa); dec2offset(dof2); obspower(tpwr-12); decpower(pwClvl); decpwrf(rfC); dec2power(pwNlvl); decphase(zero); dec2phase(zero); if (sspul[0] == 'y') { rgpulse(200*pw, one, 10.0e-6, 0.0e-6); rgpulse(200*pw, zero, 0.0e-6, 1.0e-6); } obspower(tpwr); xmtrphase(v1); txphase(t1); if (dm3[B] == 'y') lk_sample(); delay(d1); if (dm3[B] == 'y') lk_hold(); rcvroff(); decrgpulse(pwC, zero, rof1, rof1); delay(rof1); zgradpulse(gzlvl0,0.5e-3); delay(grecov); if(dm3[B] == 'y') /*optional 2H decoupling on */ { dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } status(B); rgpulse(pw, t1, 1.0e-4, rof1); xmtrphase(zero); txphase(zero); zgradpulse(gzlvl5,gt5); /* decpwrf(rfst); delay(lambda - gt5 - rof1 - SAPS_DELAY - GRADIENT_DELAY - POWER_DELAY - WFG2_START_DELAY - 0.5e-3 + 70.0e-6 + tau1); decshaped_pulse(rna_stCshape, 1.0e-3, zero, 0.0, 0.0); delay(tau1 - delta1); rgpulse(2.0*pw, zero, 0.0, rof1); txphase(one); decpwrf(rfC); zgradpulse(gzlvl5,gt5); delay(lambda - delta1 - gt5 - rof1 - GRADIENT_DELAY - POWER_DELAY - 0.5e-3 + 70.0e-6); */ delay(lambda - gt5 - rof1 - SAPS_DELAY - GRADIENT_DELAY + tau1); decrgpulse(2*pwC, zero, 0.0, 0.0); delay(tau1 - delta1); rgpulse(2.0*pw, zero, 0.0, rof1); txphase(one); zgradpulse(gzlvl5,gt5); delay(lambda - delta1 - gt5 - rof1 - GRADIENT_DELAY); rgpulse(pw, one, 0.0, rof1); decphase(t2); txphase(zero); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl3,gt3); else zgradpulse(gzlvl3,gt3); delay(grecov); decrgpulse(pwC, t2, rof1, 0.0); decphase(zero); delay(tau2); dec2rgpulse(2.0*pwN,zero,0.0,0.0); delay(tCH - 2*pwN); rgpulse(2.0*pw, zero, 0.0, 0.0); decphase(t3); delay(tCC - tCH + tau2 - delta2 - 2.0*pw); decrgpulse(2.0*pwC, t3, 0.0, 0.0); decphase(t4); delay(tCC - delta2); decrgpulse(pwC, t4, 0.0, rof1); txphase(zero); decphase(zero); if(RELAY[A] == 'y') { zgradpulse(gzlvl4, gt4); delay(tCC - gt4 - GRADIENT_DELAY - pwC); decrgpulse(2.0*pwC, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); delay(tCC - gt4 - GRADIENT_DELAY - pwC); decrgpulse(pwC, zero, 0.0, 0.0); } zgradpulse(gzlvl4,gt4); delay(tCC - gt4); decrgpulse(2.0*pwC, zero, 0.0, rof1); if (H2O_flg[A] == 'y') { delay(tCC - gt4 - grecov - POWER_DELAY); zgradpulse(gzlvl4,gt4); txphase(one); decphase(one); delay(grecov); decrgpulse(pwC, one, 0.0, rof1); rgpulse(900*pw, one, 0.0, rof1); txphase(zero); rgpulse(500*pw, zero, rof1, rof1); decphase(one); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl7,gt7); else zgradpulse(gzlvl7,gt7); delay(200.0e-6); simpulse(pw, pwC, zero, one, 0.0, rof1); decphase(zero); zgradpulse(gzlvl4,gt4); delay(tCH - gt4); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, rof1); zgradpulse(gzlvl4,gt4); delay(tCH - gt4); } else { delay(tCC - tCH - 2.0*pw - POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof1); zgradpulse(gzlvl4,gt4); delay(tCH - gt4 - rof1); } decrgpulse(pwC, zero, 0.0, rof1); txphase(zero); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl8,gt8); else zgradpulse(gzlvl8,gt8); delay(grecov); if(dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } rgpulse(pw, zero, 0.0, rof1); if (SHAPE[A] =='y') { decpwrf(rfst); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); delay(lambda - gt9 - GRADIENT_DELAY - POWER_DELAY - WFG2_START_DELAY - 0.5e-3 + 70.0e-6); simshaped_pulse("",rna_stCshape,2*pw, 1.0e-3, zero, zero, 0.0, rof1); decphase(zero); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); decpwrf(rfC); if (STUD[A]=='y') decpower(studlvl); else decpower(dpwr); delay(lambda - gt9 -rof1 -0.5*pw - 2*POWER_DELAY - GRADIENT_DELAY - 0.5e-3 + 70.0e-6); } else { if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); delay(lambda - gt9 - GRADIENT_DELAY); simpulse(2*pw, 2*pwC, zero, zero, 0.0, rof1); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); if (STUD[A]=='y') decpower(studlvl); else decpower(dpwr); delay(lambda - gt9 -rof1 -0.5*pw - POWER_DELAY - GRADIENT_DELAY); } rgpulse(pw, zero, rof1, rof2); rcvron(); if (dm3[B] == 'y') lk_sample(); setreceiver(t11); if ((STUD[A]=='y') && (dm[C] == 'y')) { decunblank(); decon(); decprgon(rna_stCdec,1/stdmf, 1.0); startacq(alfa); acquire(np, 1.0/sw); decprgoff(); decoff(); decblank(); } else status(C); setreceiver(t11); }
pulsesequence() { char f1180[MAXSTR], f2180[MAXSTR], mag_flg[MAXSTR], flg_3919[MAXSTR], ref_flg[MAXSTR]; int phase, ni2, t1_counter, t2_counter; double gzcal = getval("gzcal"), factor = 0.08, /* used for 3-9-19 water gate */ tau_3919 = getval("tau_3919"), flipphase = getval("flipphase"), tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* 1/4JNH ~ 2.3 ms */ taub, /* 1/4JNH ~ 2.3 ms */ bigT, /* ~ 19 ms */ pwNlvl, pwN, gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, compH = getval("compH"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf = getval("tpwrsf"), /* fine power adjustment for flipback pulse */ tpwrs; /* power for the pwHs ("H2Osinc") pulse */ /* LOAD VARIABLES */ getstr("f1180",f1180); getstr("f2180",f2180); getstr("flg_3919", flg_3919); getstr("mag_flg", mag_flg); getstr("ref_flg", ref_flg); taua = getval("taua"); taub = getval("taub"); bigT = getval("bigT"); tpwr = getval("tpwr"); pwNlvl = getval("pwNlvl"); pwN = getval("pwN"); dpwr = getval("dpwr"); dpwr2 = getval("dpwr2"); phase = (int)( getval("phase") + 0.5); phase2 = (int)( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); 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,4,phi1); settable(t2,2,phi2); settable(t3,8,phi3); settable(t4,16, phi4); if (ref_flg[A] == 'y') { settable(t10,8,ref); } else { settable(t10,8,rec); } /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ /* CHECK VALIDITY OF PARAMETER RANGES */ if (ref_flg[A] == 'y' && ni > 1) { printf(" Incorrect setting of ni and ref_flg.\n"); printf(" Please choose either ni=1 or ref_flg=n.\n"); psg_abort(1); } if (ref_flg[A] == 'y' && dps_flag) { printf(" Please use phase2 and ni2 for 2D reference spectrum\n"); if (ni2/sw2 > 2.0*(2.0*bigT - gt5 - 200.0e-6)) { printf("ni2 is too big, should be < %f\n", 2.0*sw2*(2.0*bigT-gt5-200.0e-6)); psg_abort(1); } } if ((ni2/sw2 > 2.0*(bigT - gt5 - 200.0e-6)) && (ref_flg[A] !='y')) { printf(" ni2 is too big, should be < %f\n", 2.0*sw2*(bigT-gt6-200.0e-6)); psg_abort(1); } if(dpwr2 > 50) { printf("don't fry the probe, dpwr2 is too large! "); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y')) { printf("incorrect dec1 decoupler flags! should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' )) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t1,1,4); } if (phase2 == 2) { tsadd(t2,1,4); } /* Set up f1180 half_dwell time (1/sw1)/2.0 */ tau1 = d2 - (4.0*pw/PI + 2.0*pwN); if(f1180[A] == 'y') { tau1 += (1.0/(2.0*sw1)); } if(tau1 < 0.2e-6) tau1 = 0.0; tau1 = tau1/2.0; /* Set up f2180 half dwell time (1/sw2)/2.0 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += (1.0/(2.0*sw2)); } if(tau2 < 0.2e-6) tau2 = 0.0; 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(t10,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int)((d3-d3_init)*sw2 + 0.5); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t10,2,4); } if (flipphase < -0.01) flipphase = flipphase + 360.0; initval(flipphase, v10); obsstepsize(0.25); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); dec2power(pwNlvl); txphase(zero); dec2phase(zero); delay(d1); if(gt1 > 0.2e-6) { dec2rgpulse(pwN, zero, 0.2e-6, 0.0); delay(2.0e-6); zgradpulse(gzlvl1, gt1); delay(0.001); } rcvroff(); status(B); rgpulse(pw, zero,rof1, 0.0); delay(2.0e-6); if (gt2 > 0.2e-6) zgradpulse(gzlvl2,gt2); delay(taua - gt2 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0,2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(taua - gt2 - 400.0e-6); if (gt2 > 0.2e-6) { zgradpulse(gzlvl2,gt2); } txphase(one); dec2phase(t2); delay(400.0e-6); rgpulse(pw, one, 0.0, 0.0); if (gt3 > 0.2e-6) { delay(2.0e-6); zgradpulse(gzlvl3, gt3); delay(200.0e-6); } txphase(zero); dec2rgpulse(pwN, t2, 0.0, 0.0); if (ref_flg[A] == 'y') { delay(tau2); rgpulse(2.0*pw, zero, 0.0, 0.0); dec2phase(t3); if (gt5 > 0.2e-6) { delay(2.0*bigT - gt5 - 2.0*pw - 1.0e-3); zgradpulse(gzlvl5, gt5); delay(1.0e-3); dec2rgpulse(2.0*pwN, t3, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl5, gt5); delay(2.0*bigT - tau2 - gt5 - 2.0e-6); } else { delay(2.0*bigT - 2.0*pw); dec2rgpulse(2.0*pwN, t3, 0.0, 0.0); delay(2.0*bigT - tau2); } } else { dec2phase(zero); if (gt4 > 0.2e-6) { delay(2.0e-6); zgradpulse(gzlvl4, gt4); delay(bigT - gt4 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl4, gt4); delay(1.0e-3 - 2.0e-6); } else { delay(bigT); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(1.0e-3); gt4 = 0.0; } zgradpulse(gzlvl5, gt5); txphase(t1); delay(bigT - gt4 - gt5 - 1.0e-3 - 2.0*GRADIENT_DELAY); rgpulse(pw, t1, 0.0, 0.0); delay(tau1); dec2rgpulse(2.0*pwN, t3, 0.0, 0.0); txphase(zero); delay(tau1); rgpulse(pw, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl5, gt5); dec2phase(t4); if (gt6 > 0.2e-6) { delay(tau2 + 100.0e-6); zgradpulse(gzlvl6, gt6); delay(bigT - gt5 - gt6 - 100.0e-6 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, t4, 0.0, 0.0); delay(2.0e-6); dec2phase(zero); zgradpulse(gzlvl6, gt6); delay(bigT - tau2 - gt6 - 2.0e-6); } else { delay(bigT + tau2 - gt5 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, t4, 0.0, 0.0); dec2phase(zero); delay(bigT - tau2); } } if (gt7 > 0.2e-6) { dec2rgpulse(pwN, zero, 0.0,2.0e-6); zgradpulse(gzlvl7, gt7); txphase(zero); delay(200.0e-6); if (pwHs > 0.2e-6) { xmtrphase(v10); if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); txphase(two); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 0.0); xmtrphase(zero); obspower(tpwr); obspwrf(4095.0); } rgpulse(pw, zero, 2.0e-6, 0.0); } else { sim3pulse(pw,(double)0.0, pwN, zero,zero, zero, 0.0, 0.0); } delay(2.0e-6); if(mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl8, gt8); } else { zgradpulse(gzlvl8, gt8); } if (flg_3919[A] == 'y') { delay(taub - 31.0*factor*pw - 2.5*tau_3919 - gt8 - 2.0e-6); rgpulse(pw*factor*3.0, two, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*9.0, two, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*19.0, two, 0.0, 0.0); delay(tau_3919/2.0 - pwN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(tau_3919/2.0 - pwN); rgpulse(pw*factor*19.0, zero, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*9.0, zero, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*3.0, zero, 0.0, 0.0); delay(taub - 31.0*factor*pw - 2.5*tau_3919 - gt8 - POWER_DELAY - 402.0e-6); } else { if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); txphase(two); xmtrphase(v10); delay(taub - pwHs - gt8 - 2.0*POWER_DELAY - 2.0e-6); shaped_pulse("H2Osinc", pwHs, two, 0.0, 0.0); obspower(tpwr); obspwrf(4095.0); xmtrphase(zero); txphase(zero); sim3pulse(2.0*pw, (double)0.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); txphase(two); xmtrphase(v10); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 0.0); xmtrphase(zero); obspower(tpwr); obspwrf(4095.0); dec2power(dpwr2); delay(taub - pwHs - gt8 - 3.0*POWER_DELAY - 402.0e-6); } dec2power(dpwr2); if(mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl8, gt8); } else { zgradpulse(gzlvl8, gt8); } delay(400.0e-6); status(C); setreceiver(t10); rcvron(); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ PRexp, /* projection-reconstruction flag */ ni = getval("ni"), ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ tauCH = getval("tauCH"), /* 1/4J delay for CH */ zeta = getval("zeta"), /* zeta delay, 0.006 for 1D, 0.011 for 2D*/ timeTN = getval("timeTN"), /* constant time for 15N evolution */ timeCH = 1.1e-3, /* other delays */ timeAB = 3.3e-3, kappa = 5.4e-3, lambda = 2.4e-3, csa, sna, pra = M_PI*getval("pra")/180.0, bw, ofs, ppm, /* temporary Pbox parameters */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* 90 degree pulse at Cab(46ppm), first off-resonance null at CO (174ppm) */ pwC1, /* 90 degree pulse length on C13 at rf1 */ rf1, /* fine power for 5.1 kHz rf for 600MHz magnet */ /* 180 degree pulse at Cab(46ppm), first off-resonance null at CO(174ppm) */ pwC2, /* 180 degree pulse length at rf2 */ rf2, /* fine power for 11.4 kHz rf for 600MHz magnet */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "biocal". SLP pulse shapes, "offC7" etc are called */ /* directly from your shapelib. */ pwC7, /* 180 degree selective sinc pulse on CO(174ppm) */ rf7, /* fine power for the pwC7 ("offC7") pulse */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwH, /* H1 90 degree pulse length at tpwr1 */ tpwr1, /* 9.2 kHz rf magnet for DIPSI-2 */ DIPSI2time, /* total length of DIPSI-2 decoupling */ ncyc_dec, waltzB1=getval("waltzB1"), pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("TROSY",TROSY); csa = cos(pra); sna = sin(pra); /* LOAD PHASE TABLE */ settable(t3,1,phx); settable(t4,1,phx); if (TROSY[A]=='y') {settable(t8,2,phi8T); settable(t9,1,phx); settable(t10,1,phy); settable(t11,1,phx); settable(t12,2,recT);} else {settable(t8,2,phi8); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* set zeta to 6ms for 1D spectral check, otherwise it will be the */ /* value in the dg2 parameter set (about 11ms) for 2D/13C and 3D work */ if (ni>1) zeta = zeta; else zeta = 0.006; /* maximum fine power for pwC pulses */ rf0 = 4095.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* 90 degree pulse on Cab, null at CO 128ppm away */ pwC1 = sqrt(15.0)/(4.0*128.0*dfrq); rf1 = 4095.0*(compC*pwC/pwC1); rf1 = (int) (rf1 + 0.5); /* 180 degree pulse on Cab, null at CO 128ppm away */ pwC2 = sqrt(3.0)/(2.0*128.0*dfrq); rf2 = (4095.0*compC*pwC*2.0)/pwC2; rf2 = (int) (rf2 + 0.5); if( rf2 > 4295 ) { printf("increase pwClvl"); psg_abort(1);} if(( rf2 < 4296 ) && (rf2>4095)) rf2=4095; /* 180 degree one-lobe sinc pulse on CO, null at Ca 118m away */ pwC7 = getval("pwC7"); rf7 = (compC*4095.0*pwC*2.0*1.65)/pwC7; /* needs 1.65 times more */ rf7 = (int) (rf7 + 0.5); /* power than a square pulse */ } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 128.0*ppm; ofs = bw; offC1 = pbox_Rcal("square90n", bw, compC*pwC, pwClvl); offC2 = pbox_Rcal("square180n", bw, compC*pwC, pwClvl); bw = 118.0*ppm; offC7 = pbox_make("offC7", "sinc180n", bw, ofs, compC*pwC, pwClvl); if (dm3[B] == 'y') H2ofs = 3.2; ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } pwC1 = offC1.pw; rf1 = offC1.pwrf; pwC2 = offC2.pw; rf2 = offC2.pwrf; pwC7 = offC7.pw; rf7 = offC7.pwrf; /* Example of semi-automatic calibration - use parameters, if they exist : if ((autocal[0] == 's') || (autocal[1] == 's')) { if (find("pwC1") > 0) pwC1 = getval("pwC1"); if (find("rf1") > 0) rf1 = getval("rf1"); } */ } /* power level and pulse times for DIPSI 1H decoupling */ DIPSI2time = 2.0*zeta + 2.0*timeTN - 5.4e-3 + pwC1 + 5.0*pwN + gt3 + 5.0e-5 + 2.0*GRADIENT_DELAY + 3.0*POWER_DELAY; pwH=1.0/(4.0*waltzB1); ncyc_dec = (DIPSI2time*90.0)/(pwH*2590.0*4.0); ncyc_dec = (int) (ncyc_dec +0.5); pwH = (DIPSI2time*90.0)/(ncyc_dec*2590.0*4.0); /* adjust pwH */ tpwr1 = 4095.0*(compH*pw/pwH); tpwr1 = (int) (2.0*tpwr1 + 0.5); /* x2 because obs atten will be reduced by 6dB */ /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni*1/(sw1) > timeAB - gt4 - WFG_START_DELAY - pwC7 ) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((timeAB - gt4 - WFG_START_DELAY - pwC7)*2.0*sw1))); psg_abort(1);} PRexp = 0; if((pra > 0.0) && (pra < 90.0)) PRexp = 1; if (PRexp) { if( 0.5*ni*sna/sw1 > timeTN - WFG3_START_DELAY) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw1/sna))); psg_abort(1);} } else { if ( 0.5*ni2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" ni2 is too big. Make ni2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} } if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dm3[A] == 'y' || dm3[C] == 'y' ) { printf("incorrect dec3 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1);} if ( dpwr2 > 50 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 20.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( pwN > 100.0e-6 ) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A]=='y' && dm2[C] == 'y') { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (TROSY[A]=='y') { if (phase2 == 2) icosel = +1; else {tsadd(t4,2,4); tsadd(t10,2,4); icosel = -1;} } else { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } /* Set up f1180 */ if(PRexp) /* set up Projection-Reconstruction experiment */ tau1 = d2*csa; else tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ if(PRexp) tau2 = d2*sna; else { tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } } 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(t3,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(t8,2,4); tsadd(t12,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); if (TROSY[A] == 'n') dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); if (TROSY[A] == 'n') dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ decphase(zero); zgradpulse(gzlvl0, gt0); delay(tauCH - gt0); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); txphase(one); decphase(t3); zgradpulse(gzlvl0, gt0); delay(tauCH - gt0); rgpulse(pw, one, 0.0, 0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { gt4=0.0; /* no gradients during 2H decoupling */ dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } decrgpulse(pwC, t3, 0.0, 0.0); /* point a */ txphase(zero); decphase(zero); decpwrf(rf7); delay(tau1); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC7", "", 0.0, pwC7, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); decpwrf(rf2); if ( pwC7 > 2.0*pwN) {delay(timeCH - pwC7 - gt4 - WFG3_START_DELAY - 2.0*pw);} else {delay(timeCH - 2.0*pwN - gt4 - WFG3_START_DELAY - 2.0*pw);} rgpulse(2.0*pw,zero,0.0,0.0); delay(timeAB - timeCH); decrgpulse(pwC2, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); decpwrf(rf7); delay(timeAB - tau1 - gt4 - WFG_START_DELAY - pwC7 - 2.0e-6); /* WFG_START_DELAY */ decshaped_pulse("offC7", pwC7, zero, 0.0, 0.0); decpwrf(rf1); /* point b */ decrgpulse(pwC1, zero, 2.0e-6, 0.0); obspwrf(tpwr1); obspower(tpwr-6); /* POWER_DELAY */ obsprgon("dipsi2", pwH, 5.0); /* PRG_START_DELAY */ xmtron(); /* point c */ dec2phase(zero); decpwrf(rf2); delay(zeta - POWER_DELAY - PRG_START_DELAY); sim3pulse(0.0, pwC2, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decpwrf(rf1); dec2phase(t8); delay(zeta); /* point d */ decrgpulse(pwC1, zero, 0.0, 0.0); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ zgradpulse(gzlvl3, gt3); if (TROSY[A]=='y') { xmtroff(); obsprgoff(); } delay(2.0e-4); dec2rgpulse(pwN, t8, 0.0, 0.0); /* point e */ decpwrf(rf2); decphase(zero); dec2phase(t9); delay(timeTN - WFG3_START_DELAY - tau2); /* WFG3_START_DELAY */ sim3pulse(0.0, pwC2, 2.0*pwN, zero, zero, t9, 0.0, 0.0); dec2phase(t10); decpwrf(rf7); if (TROSY[A]=='y') { if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { txphase(t4); delay(timeTN - pwC7 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC7", pwC7, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else { txphase(t4); delay(timeTN -pwC7 -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC7", pwC7, zero, 0.0, 0.0); delay(tau2); } } else { if (tau2 > kappa) { delay(timeTN - pwC7 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC7", pwC7, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else if (tau2 > (kappa - pwC7 - WFG_START_DELAY)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); /* WFG_START_DELAY */ decshaped_pulse("offC7", pwC7, zero, 0.0, 0.0); delay(kappa -pwC7 -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); delay(kappa - tau2 - pwC7 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC7", pwC7, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); delay(kappa-tau2-pwC7-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC7", pwC7, zero, 0.0, 0.0); delay(tau2); } } /* point f */ /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ delay(gstab); rcvron(); statusdelay(C,1.0e-4 - rof1); if (dm3[B]=='y') lk_sample(); setreceiver(t12); }
pulsesequence() { char f1180[MAXSTR], f2180[MAXSTR], mag_flg[MAXSTR]; /* y for magic angle, n for z-gradient only */ int icosel, t1_counter, t2_counter; double ni2, ratio, /* used to adjust t1 semi-constant time increment */ tau1, tau2, taua, /* ~ 1/4JCH = 1.5 ms - 1.7 ms] */ taub, /* ~ 3.3 ms */ bigTC, /* ~ 8 ms */ bigTCO, /* ~ 6 ms */ bigTN, /* ~ 12 ms */ tauc, /* ~ 5.4 ms */ taud, /* ~ 2.3 ms */ gstab, /* ~0.2 ms, gradient recovery time */ pwClvl, /* High power level for carbon on channel 2 */ pwC, /* C13 90 degree pulse length at pwClvl */ compH, /* Compression factor for H1 on channel 1 */ compC, /* Compression factor for C13 on channel 2 */ pwNlvl, /* Power level for Nitrogen on channel 3 */ pwN, /* N15 90 degree pulse lenght at pwNlvl */ maxpwCN, bw, ofs, ppm, /* bandwidth, offset, ppm - temporary Pbox parameters */ pwCa90, /*90 "offC13" pulse at Ca(56ppm) xmtr at CO(174ppm) */ pwCa180, /*180 "offC17" pulse at Ca(56ppm) xmtr at CO(174ppm) */ pwCO90, /* 90 "offC6" pulse at CO(174ppm) xmtr at CO(174ppm)*/ pwCO180, /* 180 "offC8" pulse at CO(174ppm) xmtr at CO(174ppm)*/ pwCab180, /* 180 "offC27" pulse at Cab(46ppm) xmtr at CO(174ppm)*/ tpwrHd, /* Power level for proton decoupling on channel 1 */ pwHd, /* H1 90 degree pulse lenth at tpwrHd. */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ phi_CO, /* phase correction for Bloch-Siegert effect on CO */ phi_Ca, /* phase correction for Bloch-Siegert effect on Ca */ gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, /* N15 selection gradient level in DAC units */ gzlvl7, gzlvl0, /* H1 gradient level in DAC units */ gzcal, /* gradient calibration (gcal) */ dfCa180, dfCab180, dfC90, dfCa90, dfCO180; /* LOAD VARIABLES */ getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg", mag_flg); gzcal = getval("gzcal"); ni2 = getval("ni2"); taua = getval("taua"); taub = getval("taub"); tauc = getval("tauc"); bigTC = getval("bigTC"); bigTCO = getval("bigTCO"); bigTN = getval("bigTN"); taud = getval("taud"); gstab = getval("gstab"); pwClvl = getval("pwClvl"); pwC = getval("pwC"); compH = getval("compH"); compC = getval("compC"); pwNlvl = getval("pwNlvl"); pwN = getval("pwN"); phi_CO = getval("phi_CO"); phi_Ca = getval("phi_Ca"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt0 = getval("gt0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl0 = getval("gzlvl0"); setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { pwCa90 = getval("pwCa90"); pwCa180 = getval("pwCa180"); pwCab180 = getval("pwCab180"); pwCO90 = getval("pwCO90"); pwCO180 = getval("pwCO180"); dfCa180 = (compC*4095.0*pwC*2.0*1.69)/pwCa180; /*power for "offC17" pulse*/ dfCab180 = (compC*4095.0*pwC*2.0*1.69)/pwCab180; /*power for "offC27" pulse*/ dfC90 = (compC*4095.0*pwC*1.69)/pwCO90; /*power for "offC6" pulse */ dfCa90 = (compC*4095.0*pwC)/pwCa90; /*power for "offC13" pulse*/ dfCO180 = (compC*4095.0*pwC*2.0*1.65)/pwCO180; /*power for "offC8" pulse */ dfCa90 = (int) (dfCa90 + 0.5); dfCa180 = (int) (dfCa180 + 0.5); dfC90 = (int) (dfC90 + 0.5); dfCO180 = (int) (dfCO180 + 0.5); dfCab180 = (int) (dfCab180 +0.5); /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrHd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrHd = (int) (tpwrHd + 0.5); } else { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 118.0*ppm; ofs = -118.0*ppm; offC6 = pbox_make("offC6", "sinc90n", bw, 0.0, compC*pwC, pwClvl); offC8 = pbox_make("offC8", "sinc180n", bw, 0.0, compC*pwC, pwClvl); offC17 = pbox_make("offC17", "sinc180n", bw, ofs, compC*pwC, pwClvl); bw = 128.0*ppm; offC13 = pbox_make("offC13", "square90n", bw, ofs, compC*pwC, pwClvl); ofs = -128.0*ppm; offC27 = pbox_make("offC27", "sinc180n", bw, ofs, compC*pwC, pwClvl); bw = 2.8*7500.0; wz16 = pbox_Dcal("WALTZ16", 2.8*waltzB1, 0.0, compH*pw, tpwr); ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } dfC90 = offC6.pwrf; pwCO90 = offC6.pw; dfCO180 = offC8.pwrf; pwCO180 = offC8.pw; dfCa90 = offC13.pwrf; pwCa90 = offC13.pw; dfCa180 = offC17.pwrf; pwCa180 = offC17.pw; dfCab180 = offC27.pwrf; pwCab180 = offC27.pw; tpwrHd = wz16.pwr; pwHd = 1.0/wz16.dmf; } maxpwCN = 2.0*pwN; if (pwCab180 > pwN) maxpwCN = pwCab180; /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t2,2,phi2); settable(t3,8,phi3); settable(t4,16,phi4); settable(t5,1,phi5); settable(t16,8,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if(ni > 64) { printf("ni is out of range. Should be: 14 to 64 ! \n"); psg_abort(1); } /* if(ni/sw1 > 2.0*(bigTCO)) { printf("ni is too big, should be < %f\n", sw1*2.0*(bigTCO)); psg_abort(1); } */ if(ni2/sw2 > 2.0*(bigTN - pwCO180)) { printf("ni2 is too big, should be < %f\n",2.0*sw2*(bigTN-pwCO180)); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' )) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } if( dpwr > 50 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase1 == 1) { tsadd(t1, 1, 4); } if (phase2 == 2) { tsadd(t5,2,4); icosel = 1; } else icosel = -1; /* Set up f1180 tau1 = t1 */ tau1 = d2; if ((f1180[A] == 'y') && (ni > 1)) { tau1 += (1.0/(2.0*sw1)); } if(tau1 < 0.2e-6) tau1 = 0.0; tau1 = tau1/4.0; ratio = 2.0*bigTCO*sw1/((double) ni); ratio = (double)((int)(ratio*100.0))/100.0; if (ratio > 1.0) ratio = 1.0; if((dps_flag) && (ni > 1)) printf("ratio = %f => %f\n",2.0*bigTCO*sw1/((double) ni), ratio); /* Set up f2180 tau2 = t2 */ tau2 = d3; if ((f2180[A] == 'y') && (ni2 > 1)) { tau2 += (1.0/(2.0*sw2)); } if(tau2 < 0.2e-6) tau2 = 0.0; tau2 = tau2/4.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(t16,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int)((d3-d3_init)*sw2 + 0.5); if((t2_counter % 2)) { tsadd(t2,2,4); tsadd(t16,2,4); } decstepsize(1.0); initval(phi_CO, v1); initval(phi_Ca, v2); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); delay(d1-1.0e-3); obsoffset(tof); decoffset(dof); obspower(tpwr); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); txphase(zero); decphase(zero); dec2phase(zero); rcvroff(); if(gt6 > 0.2e-6) { delay(10.0e-6); decrgpulse(pwC, zero, 1.0e-6, 1.0e-6); delay(0.2e-6); zgradpulse(gzlvl6, gt6); } decpwrf(dfCa180); delay(1.0e-3); rgpulse(pw,zero,1.0e-6,1.0e-6); delay(2.0e-6); zgradpulse(gzlvl0,gt0); delay(taua - gt0 - 2.0e-6 - WFG_START_DELAY); simshaped_pulse("","offC17",2.0*pw,pwCa180,zero,zero,1.0e-6,1.0e-6); /* c13 offset on CO, slp 180 on Ca */ delay(taua - gt0 - 500.0e-6 - WFG_STOP_DELAY); zgradpulse(gzlvl0,gt0); txphase(one); delay(500.0e-6); rgpulse(pw, one, 1.0e-6, 1.0e-6); decphase(zero); delay(2.0e-6); zgradpulse(gzlvl3,gt3); obspower(tpwrHd); decpwrf(dfCa90); delay(200.0e-6); /* c13 offset on CO, slp 90 on Ca */ decshaped_pulse("offC13", pwCa90, zero, 0.0, 0.0); delay(taub -PRG_START_DELAY); obsprgon("waltz16", pwHd, 180.0); xmtron(); decpwrf(dfC90); decphase(t1); delay(bigTC -taub -SAPS_DELAY -PWRF_DELAY); /* c13 offset on CO, on-res 90 on CO */ decshaped_pulse("offC6", pwCO90, t1, 0.0, 0.0); /* CO EVOLUTION BEGINS */ decpwrf(dfCO180); decphase(zero); delay(bigTCO/2.0 +maxpwCN/2.0 +WFG_STOP_DELAY -2.0*pwCO90/PI -ratio*tau1); /* c13 offset on CO, on-res 180 on CO */ decshaped_pulse("offC8", pwCO180, zero, 0.0, 0.0); decpwrf(dfCab180); delay(bigTCO/2.0 +(2.0 -ratio)*tau1 -PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* c13 offset on CO, slp 180 at Cab */ sim3shaped_pulse("","offC27","",0.0,pwCab180,2.0*pwN,zero,zero,zero,0.0,0.0); obsprgon("waltz16", pwHd, 180.0); xmtron(); decpwrf(dfCO180); delay(bigTCO/2.0 +(2.0 -ratio)*tau1 -PRG_START_DELAY); /* c13 offset on CO, on-res 180 on CO */ decshaped_pulse("offC8", pwCO180, zero, 0.0, 0.0); decpwrf(dfC90); dcplrphase(v1); delay(bigTCO/2.0 +maxpwCN/2.0 +WFG_STOP_DELAY -2.0*pwCO90/PI -ratio*tau1 -SAPS_DELAY); /* CO EVOLUTION ENDS */ decshaped_pulse("offC6", pwCO90, zero, 0.0, 0.0); /* c13 offset on CO, on-res 90 on CO */ decpwrf(dfCa90); decphase(t3); dcplrphase(v2); delay(bigTC -2.0*SAPS_DELAY -PWRF_DELAY); /* c13 offset on CO, slp 90 at Ca */ decshaped_pulse("offC13", pwCa90, t3, 0.0, 0.0); xmtroff(); decpwrf(dfCO180); decphase(zero); dcplrphase(zero); dec2phase(t2); delay(2.0e-5); zgradpulse(gzlvl4,gt4); delay(2.0e-6); obsprgon("waltz16", pwHd, 180.0); xmtron(); txphase(zero); delay(150.0e-6); dec2rgpulse(pwN, t2, 0.0, 0.0); /* N15 EVOLUTION BEGINS HERE */ delay(bigTN/2.0 -tau2); decshaped_pulse("offC8", pwCO180, zero, 0.0, 0.0); /* c13 offset on CO, on-res 180 on CO */ decpwrf(dfCa180); dec2phase(t4); delay(bigTN/2.0 -tau2); dec2rgpulse(2.0*pwN, t4, 0.0, 0.0); decshaped_pulse("offC17", pwCa180, zero, 0.0, 0.0); /* c13 offset on CO, slp 180 at Ca */ decpwrf(dfCO180); delay(bigTN/2.0 +tau2 -pwCa180 -WFG_START_DELAY -WFG_STOP_DELAY); decshaped_pulse("offC8", pwCO180, zero, 0.0, 0.0); /* c13 offset on CO, on-res 180 on CO */ delay(bigTN/2.0 +tau2 -tauc -PRG_STOP_DELAY); dec2phase(t5); xmtroff(); obsprgoff(); obspower(tpwr); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); delay(tauc -gt1 -2.0*GRADIENT_DELAY); /* N15 EVOLUTION ENDS HERE */ sim3pulse(pw,0.0, pwN, zero,zero, t5, 0.0, 0.0); dec2phase(zero); delay(2.0e-6); zgradpulse(0.8*gzlvl5, gt5); delay(taud - gt5 - 2.0e-6); sim3pulse(2.0*pw,0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(taud - gt5 - 500.0e-6); zgradpulse(0.8*gzlvl5, gt5); txphase(one); decphase(one); delay(500.0e-6); sim3pulse(pw,0.0, pwN, one,zero, one, 0.0, 0.0); delay(2.0e-6); txphase(zero); decphase(zero); zgradpulse(gzlvl5, gt5); delay(taud - gt5 - 2.0e-6); sim3pulse(2.0*pw,0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(taud - gt5 - 2.0*POWER_DELAY - 500.0e-6); zgradpulse(gzlvl5, gt5); decpower(dpwr); dec2power(dpwr2); delay(500.0e-6); rgpulse(pw, zero, 0.0, 0.0); delay(gstab +gt2 +2.0*GRADIENT_DELAY); rgpulse(2.0*pw, zero, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt2); else zgradpulse(icosel*gzlvl2, gt2); delay(0.5*gstab); rcvron(); statusdelay(C, 0.5*gstab); setreceiver(t16); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* Flag to use magic-angle gradients */ H2O_flg[MAXSTR], stCdec[MAXSTR], /* calls STUD+ waveforms from shapelib */ STUD[MAXSTR]; /* apply automatically calculated STUD decoupling */ int t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ delta1, delta2, TC = getval("TC"), /* 3.5 ms */ ni = getval("ni"), ni2 = getval("ni2"), stdmf = getval("dmf80"), /* dmf for 80 ppm of STUD decoupling */ rf80 = getval("rf80"), /* rf in Hz for 80ppm STUD+ */ taua = getval("taua"), /* time delays for CH coupling evolution */ taub = getval("taub"), tauc = getval("tauc"), /* string parameter stCdec calls stud decoupling waveform from your shapelib. */ studlvl, /* coarse power for STUD+ decoupling */ bw, ofs, ppm, /* temporary Pbox parameters */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ /* the following pulse length for the SLP pulse is automatically calculated */ /* by the macro "hcch_cosy". The SLP pulse shape,"offC10" is called */ /* directly from your shapelib. */ pwC10, /* 180 degree selective sinc pulse on CO(174ppm) */ rf7, /* fine power for the pwC10 ("offC10") pulse */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwmax, pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), gt2 = getval("gt2"), gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), gt8 = getval("gt8"), gt9 = getval("gt9"), gzcal = getval("gzcal"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl7 = getval("gzlvl7"), gzlvl8 = getval("gzlvl8"), gzlvl9 = getval("gzlvl9"); getstr("f1180", f1180); getstr("f2180", f2180); getstr("H2O_flg", H2O_flg); getstr("STUD", STUD); /* 80 ppm STUD+ decoupling */ strcpy(stCdec, "stCdec80"); studlvl = pwClvl + 20.0 * log10(compC * pwC * 4.0 * rf80); studlvl = (int) (studlvl + 0.5); /* INITIALIZE VARIABLES */ if (dpwrf < 4095) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* "offC10": 180 degree one-lobe sinc pulse on CO, null at Ca 139ppm away */ pwC10 = getval("pwC10"); rf7 = (compC * 4095.0 * pwC * 2.0 * 1.65) / pwC10; /* needs 1.65 times more */ rf7 = (int) (rf7 + 0.5); /* power than a square pulse */ if (pwC > (24.0e-6 * 600.0 / sfrq)) { printf("Increase pwClvl so that pwC < 24*600/sfrq"); psg_abort(1); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if (FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 118.0 * ppm; ofs = 139.0 * ppm; offC10 = pbox_make("offC10", "sinc180n", bw, ofs, compC * pwC, pwClvl); if (dm3[B] == 'y') H2ofs = 3.2; ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } rf7 = offC10.pwrf; pwC10 = offC10.pw; } if ((dm3[A] == 'y' || dm3[C] == 'y')) { printf("incorrect dec1 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1); } getstr("f1180", f1180); getstr("f2180", f2180); getstr("mag_flg", mag_flg); getstr("H2O_flg", H2O_flg); pwmax = 2.0 * pwN; if (pwC10 > pwmax) pwmax = pwC10; /* check validity of parameter range */ 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 (dpwr > 50) { printf("don't fry the probe, dpwr too large! "); psg_abort(1); } if (dpwr2 > 50) { printf("don't fry the probe, dpwr2 too large! "); psg_abort(1); } /* LOAD VARIABLES */ settable(t1, 2, phi1); settable(t2, 4, phi2); settable(t3, 16, phi3); settable(t4, 2, phi4); settable(t11, 8, rec); /* INITIALIZE VARIABLES */ /* Phase incrementation for hypercomplex data */ if (phase1 == 2) /* Hypercomplex in t1 */ { tsadd(t1, 1, 4); } if (phase2 == 2) { tsadd(t2, 1, 4); } /* calculate modification to phases based on current t1 values to achieve 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(t11, 2, 4); } /* calculate modification to phases based on current t2 values to achieve States-TPPI acquisition */ if (ix == 1) d3_init = d3; t2_counter = (int) ((d3 - d3_init) * sw2 + 0.5); if (t2_counter % 2) { tsadd(t2, 2, 4); tsadd(t11, 2, 4); } /* set up so that get (90, -180) phase corrects in F1 if f1180 flag is y */ tau1 = d2; if (f1180[A] == 'y') { tau1 += (1.0 / (2.0 * sw1)); } if (tau1 < 1.0e-6) tau1 = 0.0; tau1 = tau1 / 2.0; /* set up so that get (90, -180) phase corrects in F2 if f2180 flag is y */ tau2 = d3; if (f2180[A] == 'y') { tau2 += (1.0 / (2.0 * sw2)); } if (tau2 < 1.0e-6) tau2 = 0.0; tau2 = tau2 / 2.0; if (ni > 1) delta1 = (double) (t1_counter * (taua - gt2 - 0.2e-3)) / ((double) (ni - 1)); else delta1 = 0.0; if (ni2 > 1) delta2 = (double) (t2_counter * (TC - 0.6e-3)) / ((double) (ni2 - 1)); else delta2 = 0.0; initval(7.0, v1); obsstepsize(45.0); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); delay(10.0e-6); obspower(tpwr); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); decphase(zero); dec2phase(zero); xmtrphase(v1); txphase(t1); if (dm3[B] == 'y') lk_sample(); delay(d1); if (dm3[B] == 'y') { lk_hold(); lk_sampling_off(); } /*freezes z0 correction, stops lock pulsing */ rcvroff(); if (gt1 > 0.2e-6) { decrgpulse(pwC, zero, rof1, rof1); delay(2.0e-6); zgradpulse(gzlvl1, gt1); delay(1.0e-3); } if (dm3[B] == 'y') /* begins optional 2H decoupling */ { dec3rgpulse(1 / dmf3, one, 10.0e-6, 2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } status(B); rgpulse(pw, t1, 1.0e-4, 2.0e-6); xmtrphase(zero); zgradpulse(gzlvl2, gt2); delay(taua - gt2 - 2.0 * pwC - 2.0e-6 - SAPS_DELAY); txphase(zero); delay(tau1); decrgpulse(2.0 * pwC, zero, 0.0, 0.0); delay(tau1 - delta1); rgpulse(2.0 * pw, zero, 0.0, 2.0e-6); zgradpulse(gzlvl2, gt2); txphase(one); delay(taua - delta1 - gt2 - 2.0e-6); rgpulse(pw, one, 0.0, 2.0e-6); if (mag_flg[A] == 'y') { magradpulse(gzcal * gzlvl3, gt3); } else { zgradpulse(gzlvl3, gt3); } decphase(t2); txphase(zero); delay(200.0e-6); decrgpulse(pwC, t2, 2.0e-6, 0.0); decphase(zero); decpwrf(rf7); delay(tau2); sim3shaped_pulse("", "offC10", "", 0.0, pwC10, 2.0 * pwN, zero, zero, zero, 0.0, 0.0); delay(taub - pwmax - WFG_START_DELAY - WFG_STOP_DELAY - POWER_DELAY); rgpulse(2.0 * pw, zero, 0.0, 0.0); decphase(t3); decpwrf(4095.0); delay(TC - taub + tau2 - delta2 - 2.0 * pw - POWER_DELAY); decrgpulse(2.0 * pwC, t3, 0.0, 0.0); decphase(t4); delay(TC - delta2 - POWER_DELAY); decrgpulse(pwC, t4, 0.0, 2.0e-6); zgradpulse(gzlvl4, gt4); txphase(zero); decphase(zero); delay(tauc - gt4); decrgpulse(2.0 * pwC, zero, 0.0, 2.0e-6); if (H2O_flg[A] == 'y') { delay(tauc - gt4 - 500.0e-6 - POWER_DELAY); zgradpulse(gzlvl4, gt4); decphase(one); obspwrf(1000.0); delay(500.0e-6); decrgpulse(pwC, one, 0.0, 1.0e-6); rgpulse(900 * pw, one, rof1, 0.0); txphase(zero); rgpulse(500 * pw, zero, 2.0e-6, 2.0e-6); obspwrf(4095.0); if (mag_flg[A] == 'y') { magradpulse(gzcal * gzlvl5, gt5); } else { zgradpulse(gzlvl5, gt5); } decphase(one); delay(200.0e-6); simpulse(pw, pwC, zero, one, 0.0, 2.0e-6); zgradpulse(gzlvl7, gt7); decphase(zero); delay(taub - gt7); simpulse(2.0 * pw, 2.0 * pwC, zero, zero, 0.0, 2.0e-6); zgradpulse(gzlvl7, gt7); delay(taub - gt7); } else { delay(tauc - taub - 2.0 * pw - POWER_DELAY); rgpulse(2.0 * pw, zero, 0.0, 2.0e-6); zgradpulse(gzlvl4, gt4); delay(taub - gt4 - 2.0e-6); } decrgpulse(pwC, zero, 0.0, 2.0e-6); if (mag_flg[A] == 'y') { magradpulse(gzcal * gzlvl8, gt8); } else { zgradpulse(gzlvl8, gt8); } txphase(zero); delay(200.0e-6); if (dm3[B] == 'y') /* turns off 2H decoupling */ { setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1 / dmf3, three, 2.0e-6, 2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } rgpulse(pw, zero, 0.0, 2.0e-6); if (mag_flg[A] == 'y') { magradpulse(gzcal * gzlvl9, gt9); } else { zgradpulse(gzlvl9, gt9); } delay(taua - gt9); simpulse(2.0 * pw, 2.0 * pwC, zero, zero, 0.0, 2.0e-6); if (mag_flg[A] == 'y') { magradpulse(gzcal * gzlvl9, gt9); } else { zgradpulse(gzlvl9, gt9); } if (STUD[A] == 'y') decpower(studlvl); else decpower(dpwr); dec2power(dpwr2); delay(taua - gt9 - rof1 - 0.5 * pw - 2.0 * POWER_DELAY); rgpulse(pw, zero, rof1, rof2); rcvron(); if (dm3[B] == 'y') lk_sample(); setreceiver(t11); if ((STUD[A] == 'y') && (dm[C] == 'y')) { decunblank(); decon(); decprgon(stCdec,1/stdmf, 1.0); startacq(alfa); acquire(np, 1.0/sw); decprgoff(); decoff(); decblank(); if (dm2[C] == 'y') { setstatus(DEC2ch, TRUE, dmm2[C], FALSE, dmf2); } } else status(C); setreceiver(t11); }
pulsesequence() { /* DECLARE VARIABLES */ char f1180[MAXSTR],f2180[MAXSTR],f3180[MAXSTR], mag_flg[MAXSTR], flipback[MAXSTR]; int ni2, ni3, phase, phase2, phase3, icosel,t1_counter, t2_counter, t3_counter; double tofhn, /* adjust carrier to the center of amide protons */ tauxh, /* 1 / 4J(NH) */ pwN, /* PW90 for N-nuc */ pwNlvl, /* power level for N hard pulses */ jnh, /* coupling for NH */ gzcal = getval("gzcal"), compH = getval("compH"), tau1, tau2, tau3, sw1, sw2, sw3, flippw, /* pw for selective pulse at flippwr */ flippwr, fliphase, mix, gzlvl0, gt0, gzlvl1, gt1, gzlvl2, gt7, gzlvl3, gt3, gzlvl4, gt4, gzlvl5, gt5, gzlvl6, gt6, gzlvl7, gstab; /* LOAD VARIABLES */ tofhn = getval("tofhn"); sw1 = getval("sw1"); sw2 = getval("sw2"); sw3 = getval("sw3"); ni = getval("ni"); ni2 = getval("ni2"); ni3 = getval("ni3"); phase = (int)(getval("phase") + 0.5); phase2 = (int)(getval("phase2") + 0.5); phase3 = (int)(getval("phase3") + 0.5); jnh = getval("jnh"); pwN = getval("pwN"); pwNlvl = getval("pwNlvl"); gstab = getval("gstab"); flippw = getval("flippw"); fliphase = getval("fliphase"); mix = getval("mix"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt7 = getval("gt7"); 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"); gzlvl7 = getval("gzlvl7"); getstr("mag_flg", mag_flg); getstr("f1180",f1180); getstr("f2180", f2180); getstr("f3180", f3180); getstr("flipback",flipback); /* check validity of parameter range */ if( dpwr > 50 ) { printf("don't fry the probe, dpwr too large! "); psg_abort(1); } if ( dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nnnn' or 'nnny' "); psg_abort(1);} if( dpwr2 > 50 ) { printf("don't fry the probe, dpwr2 too large! "); psg_abort(1); } if(gt0 > 15.0e-3 || gt1 > 15.0e-3 || gt7 > 15.0e-3 || gt3 > 15.0e-3 || gt4 > 15.0e-3 || gt5 > 15.0e-3) { printf("gti must be less than 15 ms \n"); psg_abort(1); } /* LOAD VARIABLES */ settable(t1, 2, phi1); settable(t2, 4, phi2); settable(t3, 1, phi3); settable(t4, 8, phi4); settable(t5, 1, phi5); settable(t6, 8, rec); /* INITIALIZE VARIABLES */ tauxh = ((jnh != 0.0) ? 1/(4*(jnh)) : 2.35e-3); /* Phase incrementation for hypercomplex data */ if (phase == 2) { tsadd(t1, 1, 4); } if (phase2 == 2) { tsadd(t2, 1, 4); } if ( phase3 == 1 ) { tsadd(t5, 2, 4); icosel = 1; } else icosel = -1; /* calculate modification to phases based on current t1 values to achieve 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(t6,2,4); } if(ix == 1) d3_init = d3; t2_counter = (int)((d3-d3_init)*sw2 + 0.5); if(t2_counter %2) { tsadd(t2,2,4); tsadd(t6,2,4); } if(ix == 1) d4_init = d4; t3_counter = (int)((d4-d4_init)*sw3 + 0.5); if(t3_counter %2) { tsadd(t3,2,4); tsadd(t6,2,4); } /* set up so that get (90, -180) phase corrects in F1 if f1180 flag is y */ tau1 = d2; if(f1180[A] == 'y') { tau1 += (1.0/(2.0*sw1)); } if (tau1 < 0.2e-6) tau1 = 0.0; tau1 = tau1/2.0; tau2 = d3 - 2.0*pw - 4.0*pwN/PI; if(f2180[A] == 'y') { tau2 += (1.0/(2.0*sw2)); } if (tau2 < 0.2e-6) tau2 = 0.0; tau2 = tau2/2.0; tau3 = d4; if(f3180[A] == 'y') { tau3 += (1.0/(2.0*sw3)); } tau3 = tau3/2.0; flippwr = tpwr - 20.0*log10(flippw/(compH*pw*1.69)); flippwr = (int)(flippwr + 0.4); if (fliphase < 0.2e-6) fliphase = fliphase + 360.0; initval(fliphase, v10); initval(7.0, v9); obsstepsize(45.0); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(dpwr); dec2power(pwNlvl); obsoffset(tofhn); xmtrphase(v9); delay(d1); status(B); /* for 13C decoupling during t2, use dm='nynn' or 'nyyn' */ dec2rgpulse(pwN,zero,0.0,2.0e-6); zgradpulse(gzlvl0,gt0); rgpulse(pw,t1,1.0e-6,2.0e-6); zgradpulse(gzlvl6,gt6); delay(1.9*tauxh - gt1 - 2.0e-6); dec2rgpulse(pwN, t2, 0.0, 0.0); delay(tau2); rgpulse(2.0*pw, t1, 0.0, 0.0); dec2phase(zero); delay(tau2); dec2rgpulse(pwN, zero, 0.0, 0.0); xmtrphase(zero); delay(1.9*tauxh - gt6 - 600.0e-6 - SAPS_DELAY); txphase(zero); zgradpulse(gzlvl6,gt6); txphase(zero); delay(0.6e-3); if (tau1 > pwN) { delay(tau1 - pwN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(tau1 - pwN); } else { delay(2.0*tau1); } rgpulse(pw, zero, 0.0, 1.0e-6); status(A); /* no decoupling during mix period */ delay(mix - pwN - 1.5*gt7 - 2.0e-3); zgradpulse(gzlvl7,gt7); delay(1.0e-3); dec2rgpulse(pwN, zero, 0.0, 2.0e-6); zgradpulse(gzlvl7,gt7/2.0); delay(1.0e-3 - 2.0e-6); rgpulse(pw,zero,1.0e-6,2.0e-6); zgradpulse(gzlvl3,gt3); delay(tauxh - gt3 - 2.0e-6); /* delay=1/4J(NH) */ sim3pulse(2.0*pw,(double)0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); delay(tauxh - gt3 - 500.0e-6); /* delay=1/4J(NH) */ zgradpulse(gzlvl3,gt3); delay(500.0e-6); rgpulse(pw, one,0.0,2.0e-6); obsoffset(tof); if (flipback[A]=='y') { xmtrphase(v10); obspower(flippwr); shaped_pulse("H2Osinc",flippw,two,2.0e-6,2.0e-6); obspower(tpwr); xmtrphase(zero); } zgradpulse(gzlvl4,gt4); dec2phase(t3); txphase(zero); status(C); /* for 13C decoupling during t3 set dm='nnyn' or 'nyyn' */ delay(250.0e-6); dec2rgpulse(pwN,t3,0.0,0.0); dec2phase(t4); delay(tau3); rgpulse(2.0*pw, zero,0.0,0.0); delay(tau3); status(A); /* no decoupling */ if (mag_flg[A] == 'y') { delay(4.0*GRADIENT_DELAY); } delay(gstab + gt6 + 2.0*GRADIENT_DELAY - 2.0*pw - PRG_STOP_DELAY); dec2rgpulse(2.0*pwN,t4,0.0,0.0); dec2phase(t5); if (mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1,gt1); } delay(gstab); sim3pulse(pw,0.0e-6,pwN,zero,zero,t5,0.0,0.0); txphase(zero); dec2phase(zero); if (gt5 > 0.2e-6) { zgradpulse(gzlvl5, 1.3*gt5); } delay(tauxh - 1.3*gt5); sim3pulse(2.0*pw,(double)0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); dec2phase(one); delay(tauxh - 1.3*gt5 - 500.0e-6); if (gt5 > 0.2e-6) { zgradpulse(gzlvl5, 1.3*gt5); } delay(500.0e-6); sim3pulse(pw,(double)0.0,pwN,one,zero,one,0.0,0.0); dec2phase(zero); txphase(zero); if (gt5 > 0.2e-6) { zgradpulse(gzlvl5,gt5); } delay(tauxh - gt5); sim3pulse(2.0*pw,(double)0.0,2*pwN,zero,zero,zero,0.0,0.0); dec2power(dpwr2); delay(tauxh - 3.0*POWER_DELAY - gt5 - 500.0e-6); if (gt5 > 0.2e-6) { zgradpulse(gzlvl5,gt5); } delay(500.0e-6); rgpulse(pw,zero,0.0,0.0); if(mag_flg[A] == 'y') { delay(4.0*GRADIENT_DELAY); } delay(gstab + gt1/10.0 + 2.0*GRADIENT_DELAY); rgpulse(2.0*pw,zero,0.0,0.0); if(mag_flg[A] == 'y') { magradpulse(icosel*icosel*gzcal*gzlvl2, gt1/10.0); } else { zgradpulse(icosel*gzlvl2,gt1/10.0); } delay(gstab); status(D); setreceiver(t6); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ SCT[MAXSTR], /* Semi-constant time flag for N-15 evolution */ CT_c[MAXSTR], /* Constant time flag for C-13 evolution */ TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ PRexp, /* projection-reconstruction flag */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ tauC = getval("tauC"), /* delay for CO to Ca evolution */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ timeTC = getval("timeTC"), /* constant time for 13C evolution */ t2a=0.0, t2b=0.0, halfT2=0.0, CTdelay=0.0, kappa = 5.4e-3, lambda = 2.4e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* 90 degree pulse at Ca (56ppm), first off-resonance null at CO (174ppm) */ pwC1, /* 90 degree pulse length on C13 at rf1 */ rf1, /* fine power for 4.7 kHz rf for 600MHz magnet */ /* 180 degree pulse at Ca (56ppm), first off-resonance null at CO(174ppm) */ pwC2, /* 180 degree pulse length at rf2 */ rf2, /* fine power for 10.5 kHz rf for 600MHz magnet */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "proteincal". SLP pulse shapes, "offC6" etc are called */ /* directly from your shapelib. */ pwC3 = getval("pwC3"), /*180 degree pulse at Ca(56ppm) null at CO(174ppm) */ pwC6 = getval("pwC6"), /* 90 degree selective sinc pulse on CO(174ppm) */ pwC8 = getval("pwC8"), /* 180 degree selective sinc pulse on CO(174ppm) */ pwC9 = getval("pwC9"), /* 180 degree selective sinc pulse on CO(174ppm) */ phshift9, /* phase shift induced on Ca by pwC9 ("offC9") pulse */ pwZ, /* the largest of pwC9 and 2.0*pwN */ pwZ1, /* the larger of pwC8 and 2.0*pwN for 1D experiments */ rf3, /* fine power for the pwC3 ("offC3") pulse */ rf6, /* fine power for the pwC6 ("offC6") pulse */ rf8, /* fine power for the pwC8 ("offC8") pulse */ rf9, /* fine power for the pwC9 ("offC9") pulse */ dofCO, /* channel 2 offset for most CO pulses */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf = getval("tpwrsf"), /* fine power adjustment for flipback */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ csa, sna, pra = M_PI*getval("pra")/180.0, pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /* rf for WALTZ decoupling */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), gt9 = getval("gt9"), gt10 = getval("gt10"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"), gzlvl7 = getval("gzlvl7"), gzlvl8 = getval("gzlvl8"), gzlvl9 = getval("gzlvl9"), gzlvl10 = getval("gzlvl10"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("SCT",SCT); getstr("CT_c",CT_c); getstr("TROSY",TROSY); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); if (TROSY[A]=='y') {settable(t8,1,phy); settable(t9,1,phx); settable(t10,1,phy); settable(t11,1,phx); settable(t12,4,recT);} else {settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* offset during CO pulses, except for t1 evolution period */ dofCO = dof + 118.0*dfrq; /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 90 degree pulse on Ca, null at CO 118ppm away */ pwC1 = sqrt(15.0)/(4.0*118.0*dfrq); rf1 = 4095.0*(compC*pwC)/pwC1; rf1 = (int) (rf1 + 0.5); /* 180 degree pulse on Ca, null at CO 118ppm away */ pwC2 = sqrt(3.0)/(2.0*118.0*dfrq); rf2 = (compC*4095.0*pwC*2.0)/pwC2; rf2 = (int) (rf2 + 0.5); if( rf2 > 4095.0 ) { printf("increase pwClvl so that C13 90 < 24us*(600/sfrq)"); psg_abort(1);} /* 180 degree pulse on Ca, null at CO 118ppm away */ rf3 = (compC*4095.0*pwC*2.0)/pwC3; rf3 = (int) (rf3 + 0.5); /* 90 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf6 = (compC*4095.0*pwC*1.69)/pwC6; /* needs 1.69 times more */ rf6 = (int) (rf6 + 0.5); /* power than a square pulse */ /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf8 = (compC*4095.0*pwC*2.0*1.65)/pwC8; /* needs 1.65 times more */ rf8 = (int) (rf8 + 0.5); /* power than a square pulse */ /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf9 = (compC*4095.0*pwC*2.0*1.65)/pwC8; /* needs 1.65 times more */ rf9 = (int) (rf9 + 0.5); /* power than a square pulse */ /* the pwC9 pulse at the middle of t1 */ if ((ni2 > 0.0) && (ni == 1.0)) ni = 0.0; if (pwC8 > 2.0*pwN) pwZ = pwC8; else pwZ = 2.0*pwN; if ((pwC9==0.0) && (pwC8>2.0*pwN)) pwZ1=pwC8-2.0*pwN; else pwZ1=0.0; if ( ni > 1 ) pwC9 = pwC8; if ( pwC9 > 0 ) phshift9 = 140.0; else phshift9 = 0.0; /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; /* 7.5 kHz rf */ tpwrd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrd = (int) (tpwrd + 0.5); /* set up Projection-Reconstruction experiment */ tau1 = d2; tau2 = d3; PRexp=0; csa = 1.0; sna = 0.0; if((pra > 0.0) && (pra < 90.0)) /* PR experiments */ { PRexp = 1; csa = cos(pra); sna = sin(pra); tau1 = d2*csa; tau2 = d2*sna; } /* CHECK VALIDITY OF PARAMETER RANGES */ if(SCT[A] == 'n') { if (PRexp) { if( 0.5*ni*sna/sw1 > timeTN - WFG3_START_DELAY) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw1/sna))); psg_abort(1);} } else { if ( 0.5*ni2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" ni2 is too big. Make ni2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} } } if(CT_c[A] == 'y') { if ( 0.5*ni*csa/sw1 > timeTC) { printf(" ni is too big. Make ni less than %d or less.\n", ((int)(timeTC*2.0*sw1/csa - 4e-6 - SAPS_DELAY))); psg_abort(1);} } if ( tauC < (gt7+1.0e-4+0.5*10.933*pwC)) gt7=(tauC-1.0e-4-0.5*10.933*pwC); if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dm3[A] == 'y' || dm3[C] == 'y' ) { printf("incorrect dec3 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1);} if ( dpwr2 > 50 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 20.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( pwN > 100.0e-6 ) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A]=='y' && dm2[C] == 'y') { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (TROSY[A]=='y') { if (phase2 == 2) icosel = +1; else {tsadd(t4,2,4); tsadd(t10,2,4); icosel = -1;} } else { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } /* 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(t3,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(t8,2,4); tsadd(t12,2,4); } /* Set up CONSTANT/SEMI-CONSTANT time evolution in N15 */ halfT2 = 0.0; CTdelay = timeTN + pwC8 + WFG_START_DELAY - SAPS_DELAY; if(ni>1) { if(f1180[A] == 'y') /* Set up f1180 */ tau1 += 0.5*csa/sw1; /* if not PRexp then csa = 1.0 */ if(PRexp) { halfT2 = 0.5*(ni-1)/sw1; /* ni2 is not defined */ if(f1180[A] == 'y') { tau2 += 0.5*sna/sw1; halfT2 += 0.25*sna/sw1; } t2b = (double) t1_counter*((halfT2 - CTdelay)/((double)(ni-1))); } } if (ni2>1) { halfT2 = 0.5*(ni2-1)/sw2; if(f2180[A] == 'y') /* Set up f2180 */ { tau2 += 0.5/sw2; halfT2 += 0.25/sw2; } t2b = (double) t2_counter*((halfT2 - CTdelay)/((double)(ni2-1))); } tau1 = tau1/2.0; tau2 = tau2/2.0; if(tau1 < 0.2e-6) tau1 = 0.0; if(tau2 < 0.2e-6) tau2 = 0.0; if(t2b < 0.0) t2b = 0.0; t2a = CTdelay - tau2 + t2b; if(t2a < 0.2e-6) t2a = 0.0; /* uncomment these lines to check t2a and t2b printf("%d: t2a = %.12f", t2_counter,t2a); printf(" ; t2b = %.12f\n", t2b); */ /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); decoffset(dofCO); txphase(zero); delay(1.0e-5); if (TROSY[A] == 'n') dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(-gzlvl0, 0.5e-3); delay(1.0e-4); if (TROSY[A] == 'n') dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(-0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw, zero, 0.0, 0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); if (tpwrsf < 4095.0) {obspwrf(tpwrsf); obspower(tpwrs+6.0);} /* increases tpwrs by 6dB, now need */ else obspower(tpwrs); /* tpwrsf to be ~ 2048 for equivalence */ if (TROSY[A]=='y') {txphase(two); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); obspwrf(4095.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); delay(0.5*kappa - 2.0*pw); rgpulse(2.0*pw, two, 0.0, 0.0); obspower(tpwrd); /* POWER_DELAY */ decphase(zero); dec2phase(zero); decpwrf(rf8); delay(timeTN -0.5*kappa - POWER_DELAY - WFG3_START_DELAY); } else {txphase(zero); if (tpwrsf < 4095.0) {obspwrf(tpwrsf); obspower(tpwrs+6.0);} /* increases tpwrs by 6dB, now need */ else obspower(tpwrs); /* tpwrsf to be ~ 2048 for equivalence */ shaped_pulse("H2Osinc",pwHs,zero,5.0e-4,0.0); obspower(tpwrd); obspwrf(4095.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); txphase(one); delay(kappa - pwHd - 2.0e-6 - PRG_START_DELAY); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); decphase(zero); dec2phase(zero); decpwrf(rf8); delay(timeTN - kappa - WFG3_START_DELAY); } /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(zero); decpwrf(rf6); delay(timeTN); dec2rgpulse(pwN, zero, 0.0, 0.0); if (TROSY[A]=='n') {xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0);} zgradpulse(-gzlvl3, gt3); delay(2.0e-4); decshaped_pulse("offC6", pwC6, zero, 0.0, 0.0); zgradpulse(-gzlvl7, gt7); decpwrf(rf0); decphase(zero); delay(tauC - gt7 - 0.5*10.933*pwC); decrgpulse(pwC*158.0/90.0, zero, 0.0, 0.0); decrgpulse(pwC*171.2/90.0, two, 0.0, 0.0); decrgpulse(pwC*342.8/90.0, zero, 0.0, 0.0); /* Shaka 6 composite */ decrgpulse(pwC*145.5/90.0, two, 0.0, 0.0); decrgpulse(pwC*81.2/90.0, zero, 0.0, 0.0); decrgpulse(pwC*85.3/90.0, two, 0.0, 0.0); zgradpulse(-gzlvl7, gt7); decpwrf(rf6); decphase(one); txphase(one); delay(tauC - gt7 - 0.5*10.933*pwC - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC6", pwC6, one, 0.0, 0.0); decoffset(dof); zgradpulse(-gzlvl9, gt9); decpwrf(rf1); decphase(t3); delay(2.0e-4); if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); decrgpulse(pwC1, t3, 0.0, 0.0); decphase(zero); /* xxxxxxxxxxxxxxxxxxxxxx 13Ca EVOLUTION xxxxxxxxxxxxxxxxxx */ if (ni==1.0) /* special 1D check of pwC9 phase enabled when ni=1 */ { decpwrf(rf9); delay(10.0e-6 + SAPS_DELAY + 0.5*pwZ1); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC9", "", 0.0, pwC9, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); initval(phshift9, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ delay(10.0e-6 + WFG3_START_DELAY + 0.5*pwZ1); } else if(CT_c[A] == 'y') /* xxxxxxx 13Ca Constant Time EVOLUTION xxxxxxxx */ { decpwrf(rf9); if(tau1 - 2.0*pwC1/PI - WFG_START_DELAY -POWER_DELAY > 0.0) { delay(tau1 -2.0*pwC1/PI -POWER_DELAY -WFG_START_DELAY); sim3shaped_pulse("","offC9","",0.0,pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); } else sim3shaped_pulse("","offC9","",0.0,pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(timeTC- 2.0e-6 -WFG_STOP_DELAY-POWER_DELAY); decpwrf(rf2); decrgpulse(pwC2, zero, 2.0e-6, 2.0e-6); /* 13Ca 180 degree pulse */ delay(timeTC-tau1- 4.0e-6 -SAPS_DELAY); phshift9 = 230.0; /* = 320-90 - correction for -90 degree phase shift in F1 */ initval(phshift9, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ } else /* xxxxxxx 13Ca Conventional EVOLUTION xxxxxxxxx */ { if ((ni>1.0) && (tau1>0.0)) /* total 13C evolution equals d2 exactly */ { /* 2.0*pwC1/PI compensates for evolution at 64% rate during pwC1 */ decpwrf(rf9); if(tau1 - 2.0*pwC1/PI - WFG3_START_DELAY - 0.5*pwZ > 0.0) { delay(tau1 - 2.0*pwC1/PI - WFG3_START_DELAY - 0.5*pwZ); sim3shaped_pulse("", "offC9", "", 0.0, pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); initval(phshift9, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ delay(tau1 - 2.0*pwC1/PI - SAPS_DELAY - 0.5*pwZ - 2.0e-6); } else { initval(180.0, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ delay(2.0*tau1 - 4.0*pwC1/PI - SAPS_DELAY - 2.0e-6); } } else /* 13Ca evolution refocused for 1st increment */ { decpwrf(rf2); delay(10.0e-6); decrgpulse(pwC2, zero, 2.0e-6, 0.0); delay(10.0e-6); } } decphase(t5); decpwrf(rf1); decrgpulse(pwC1, t5, 2.0e-6, 0.0); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0); decoffset(dofCO); decpwrf(rf6); decphase(one); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } zgradpulse(gzlvl10, gt10); delay(2.0e-4); decshaped_pulse("offC6", pwC6, one, 0.0, 0.0); zgradpulse(gzlvl8, gt7); decpwrf(rf0); decphase(zero); delay(tauC - gt7 - 0.5*10.933*pwC); decrgpulse(pwC*158.0/90.0, zero, 0.0, 0.0); decrgpulse(pwC*171.2/90.0, two, 0.0, 0.0); decrgpulse(pwC*342.8/90.0, zero, 0.0, 0.0); /* Shaka 6 composite */ decrgpulse(pwC*145.5/90.0, two, 0.0, 0.0); decrgpulse(pwC*81.2/90.0, zero, 0.0, 0.0); decrgpulse(pwC*85.3/90.0, two, 0.0, 0.0); zgradpulse(gzlvl8, gt7); decpwrf(rf6); decphase(zero); delay(tauC - gt7 - 0.5*10.933*pwC - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC6", pwC6, zero, 0.0, 0.0); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ zgradpulse(gzlvl4, gt4); txphase(one); decphase(zero); decpwrf(rf8); dcplrphase(zero); dec2phase(t8); delay(2.0e-4); if (TROSY[A]=='n') {rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron();} dec2rgpulse(pwN, t8, 0.0, 0.0); /* N15 EVOLUTION BEGINS HERE */ dec2phase(t9); if(SCT[A] == 'y') { delay(t2a); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); delay(t2b); decshaped_pulse("offC8", pwC8, zero, 0.0, 0.0); /* WFG_START_DELAY */ } else { delay(timeTN - WFG3_START_DELAY - tau2); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, t9, 0.0, 0.0); } dec2phase(t10); decpwrf(rf3); if (TROSY[A]=='y') { if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.5e-4 + pwHs) { txphase(three); delay(timeTN - pwC3 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); if (tpwrsf < 4095.0) {obspwrf(tpwrsf); obspower(tpwrs+6.0);} /* increases tpwrs by 6dB, now need */ else obspower(tpwrs); /* tpwrsf to be ~ 2048 for equivalence */ shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); obspower(tpwr); obspwrf(4095.0); txphase(t4); delay(0.5e-4 - POWER_DELAY); } else if (tau2 > pwHs + 0.5e-4) { txphase(three); delay(timeTN-pwC3-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3, zero, 0.0, 0.0); delay(tau2 - pwHs - 0.5e-4); if (tpwrsf < 4095.0) {obspwrf(tpwrsf); obspower(tpwrs+6.0);} /* increases tpwrs by 6dB, now need */ else obspower(tpwrs); /* tpwrsf to be ~ 2048 for equivalence */ shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); obspower(tpwr); obspwrf(4095.0); txphase(t4); delay(0.5e-4 - POWER_DELAY); } else { txphase(three); delay(timeTN - pwC3 - WFG_START_DELAY - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ if (tpwrsf < 4095.0) {obspwrf(tpwrsf); obspower(tpwrs+6.0);} /* increases tpwrs by 6dB, now need */ else obspower(tpwrs); /* tpwrsf to be ~ 2048 for equivalence */ shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); obspower(tpwr); obspwrf(4095.0); txphase(t4); delay(0.5e-4 - POWER_DELAY); decshaped_pulse("offC3", pwC3, zero, 0.0, 0.0); delay(tau2); } } else { if (tau2 > kappa) { delay(timeTN - pwC3 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > (kappa - pwC3 - WFG_START_DELAY)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3, zero, 0.0, 0.0); delay(kappa -pwC3 -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - tau2 - pwC3 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa-tau2-pwC3-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3, zero, 0.0, 0.0); delay(tau2); } } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0,rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ delay(gstab); rcvron(); statusdelay(C,1.0e-4 - rof1); if (dm3[B]=='y') lk_sample(); setreceiver(t12); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char abfilter[MAXSTR], /* flag for selection of inner or outer pair of doublets */ NH2[MAXSTR], /* flag for selection of NH2 */ f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ C13refoc[MAXSTR]; /* C13 sech/tanh pulse in middle of t1*/ int icosel, /* used to get n and p type */ t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ lambda = 0.91/(4.0*getval("JNH")), /* 1/4J H1 evolution delay */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ rfst, /* fine power for the stCall pulse */ compH = getval("compH"), /* adjustment for H1 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ calH = getval("calH"), /* multiplier on a pw pulse for H1 calibration */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf_u = getval("tpwrsf_u"),/* fine power correction for flipback(up)*/ tpwrsf_d = getval("tpwrsf_d"),/* fine power correction for flipback(down)*/ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ calN = getval("calN"), /* multiplier on a pwN pulse for calibration */ sw1 = getval("sw1"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* dac to G/cm conversion */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gstab = getval("gstab"), /* field recovery */ gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt5 = getval("gt5"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl5 = getval("gzlvl5"); getstr("NH2",NH2); getstr("f1180",f1180); getstr("mag_flg",mag_flg); getstr("C13refoc",C13refoc); getstr("abfilter",abfilter); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); settable(t1,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t12,4,rec); /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses (and initialize rfst) */ rf0 = 4095.0; rfst=0.0; /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ if (C13refoc[A]=='y') {rfst = (compC*4095.0*pwC*4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)); rfst = (int) (rfst + 0.5); if ( 1.0/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); }} /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ if (tpwrsf_d<4095.0) tpwrs=tpwrs+6; /* nominal tpwrsf_d ~ 2048 */ /* tpwrsf_d,tpwrsf_u can be used to correct for radiation damping */ /* reset calH and calN for 2D if inadvertently left at 2.0 */ if (ni>1.0) {calH=1.0; calN=1.0;} /* CHECK VALIDITY OF PARAMETER RANGES */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' )) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((NH2[A] != 'y') && (NH2[A] != 'n')) { text_error("NH2 should be 'y' or 'n'!"); psg_abort(1); } if((abfilter[A] != 'a') && (abfilter[A] != 'b')) { text_error("abfilter should be 'a' or 'b'!"); psg_abort(1); } if( dpwr2 > 46 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 1) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { 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(t3,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); decpwrf(rf0); dec2power(pwNlvl); txphase(zero); decphase(zero); dec2phase(zero); delay(d1); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ rcvroff(); dec2rgpulse(pwN, zero, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); decpwrf(rfst); txphase(t1); delay(5.0e-4); if(dm3[B] == 'y') /*optional 2H decoupling on */ {lk_hold(); dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3);} rgpulse(calH*pw,t1,0.0,0.0); /* 1H pulse excitation */ txphase(zero); dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(two); obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc_d", pwHs, two, 5.0e-5, 0.0); obspower(tpwr); obspwrf(4095.0); zgradpulse(gzlvl3, gt3); dec2phase(t3); delay(gstab); dec2rgpulse(calN*pwN, t3, 0.0, 0.0); txphase(zero); decphase(zero); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ txphase(zero); dec2phase(t9); if ( (C13refoc[A]=='y') && (tau1 > 0.5e-3 + WFG2_START_DELAY) ) {delay(tau1 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ simshaped_pulse("", "stC200", 2.0*pw, 1.0e-3, zero, zero, 0.0, 0.0); decphase(zero); delay(tau1 - 0.5e-3); zgradpulse(-1*gzlvl1, 0.5*gt1); delay(gstab - 2.0*GRADIENT_DELAY);} else {delay(tau1); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(tau1); zgradpulse(-1*gzlvl1, 0.5*gt1); delay(gstab - 2.0*GRADIENT_DELAY); } dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); zgradpulse(gzlvl1, 0.5*gt1); /* 2.0*GRADIENT_DELAY */ txphase(t4); dec2phase(t10); delay(gstab - 2.0*GRADIENT_DELAY); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc_u", pwHs, two, 5.0e-5, 0.0); obspower(tpwr); obspwrf(4095.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5 - pwHs - 5.0e-5 -2.0*POWER_DELAY); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); delay(lambda - 1.3*pwN - gt5); if(abfilter[A] == 'a') { if (NH2[A] == 'n') { dec2rgpulse(pwN,one,0.0,0.0); } else { dec2rgpulse(pwN,zero,0.0,0.0); } } else { if (NH2[A] == 'n') { dec2rgpulse(pwN,three,0.0,0.0); } else { dec2rgpulse(pwN,two,0.0,0.0); } } delay(gt1/10.0 -pwN +gstab + 2.0*GRADIENT_DELAY + POWER_DELAY ); rgpulse(2.0*pw, zero, 0.0, 0.0); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(gzcal*icosel*gzlvl2, 0.1*gt1); else zgradpulse(icosel*gzlvl2, 0.1*gt1); /* 2.0*GRADIENT_DELAY */ delay(gstab); if (dm3[B] == 'y') {delay(1/dmf3); lk_sample();} setreceiver(t12); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ void makeHHdec(), makeCdec(); /* utility functions */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ C13refoc[MAXSTR], /* C13 sech/tanh pulse in middle of t1*/ NH2only[MAXSTR], /* spectrum of only NH2 groups */ T1[MAXSTR], /* insert T1 relaxation delay */ T1rho[MAXSTR], /* insert T1rho relaxation delay */ T2[MAXSTR], /* insert T2 relaxation delay */ TROSY[MAXSTR], /* do TROSY on N15 and H1 */ Hdecflg[MAXSTR], /* HH-h**o decoupling flag */ Cdecflg[MAXSTR]; /* low power C-13 decoupling flag */ int icosel, /* used to get n and p type */ ihh=1, /* used in HH decouling to improve water suppression */ t1_counter, /* used for states tppi in t1 */ rTnum, /* number of relaxation times, relaxT */ rTcounter; /* to obtain maximum relaxT, ie relaxTmax */ double tau1, /* t1 delay */ lambda = 0.91/(4.0*getval("JNH")), /* 1/4J H1 evolution delay */ tNH = 1.0/(4.0*getval("JNH")), /* 1/4J N15 evolution delay */ relaxT = getval("relaxT"), /* total relaxation time */ rTarray[1000], /* to obtain maximum relaxT, ie relaxTmax */ maxrelaxT = getval("maxrelaxT"), /* maximum relaxT in all exps */ ncyc, /* number of pulsed cycles in relaxT */ pwr_dly, /* power delay */ /* the sech/tanh pulse is automatically calculated by the macro "proteincal", */ /* and is called directly from your shapelib. */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ rfst, /* fine power for the stCall pulse */ compH = getval("compH"), /* adjustment for H1 amplifier compression */ compN = getval("compN"), /* adjustment for N15 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ calH = getval("calH"), /* multiplier on a pw pulse for H1 calibration */ tpwrsf = getval("tpwrsf"), /* fine power adustment for soft pulse */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ pwHH = 0.0, /* pwHH = pwHs for HH h**o-decoupling */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ calN = getval("calN"), /* multiplier on a pwN pulse for calibration */ slNlvl, /* power for N15 spin lock */ slNrf = 1500.0, /* RF field in Hz for N15 spin lock at 600 MHz */ sw1 = getval("sw1"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* dac to G/cm conversion */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), BPpwrlimits, /* =0 for no limit, =1 for limit */ gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"); P_getreal(GLOBAL,"BPpwrlimits",&BPpwrlimits,1); getstr("f1180",f1180); getstr("mag_flg",mag_flg); getstr("C13refoc",C13refoc); getstr("NH2only",NH2only); getstr("T1",T1); getstr("T1rho",T1rho); getstr("T2",T2); getstr("TROSY",TROSY); getstr("Hdecflg", Hdecflg); getstr("Cdecflg", Cdecflg); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); if (TROSY[A]=='y') {settable(t1,1,ph_x); settable(t9,1,phx); settable(t10,1,phy); settable(t11,1,phx); settable(t12,2,recT);} else {settable(t1,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses (and initialize rfst) */ rf0 = 4095.0; rfst=0.0; /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ if (C13refoc[A]=='y') {rfst = (compC*4095.0*pwC*4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)); rfst = (int) (rfst + 0.5); if ( 1.0/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); }} /* selective H20 one-lobe sinc pulse */ if(pwHs > 1e-6) tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ else /* power than a square pulse */ tpwrs = 0.0; tpwrs = (int) (tpwrs); if (tpwrsf<4095.0) tpwrs = tpwrs + 6.0; if (tpwrsf < 4095.0) { tpwrs = tpwrs + 6.0; pwr_dly = POWER_DELAY + PWRF_DELAY; } else pwr_dly = POWER_DELAY; /* power level for N15 spinlock (90 degree pulse length calculated first) */ slNlvl = 1/(4.0*slNrf*sfrq/600.0) ; slNlvl = pwNlvl - 20.0*log10(slNlvl/(pwN*compN)); slNlvl = (int) (slNlvl + 0.5); /* use 1/8J times for relaxation measurements of NH2 groups */ if ( (NH2only[A]=='y') && ((T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y')) ) { tNH = tNH/2.0; } /* reset calH and calN for 2D if inadvertently left at 2.0 */ if (ni>1.0) {calH=1.0; calN=1.0;} /* make shapes and set up parameters for HH h**o-decoupling */ if(Cdecflg[0] == 'y') makeCdec(); if(Hdecflg[0] == 'y') makeHHdec(); if(Hdecflg[0] != 'n') { pwHH = pwHs; pwHs = 0.0; } /* CHECK VALIDITY OF PARAMETER RANGES */ if ((TROSY[A]=='y') && (gt1 < -2.0e-4 + pwHs + 1.0e-4 + 2.0*POWER_DELAY)) { text_error( " gt1 is too small. Make gt1 equal to %f or more.\n", (-2.0e-4 + pwHs + 1.0e-4 + 2.0*POWER_DELAY) ); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } /* RELAXATION TIMES AND FLAGS */ /* evaluate maximum relaxT, relaxTmax chosen by the user */ rTnum = getarray("relaxT", rTarray); relaxTmax = rTarray[0]; for (rTcounter=1; rTcounter<rTnum; rTcounter++) if (relaxTmax < rTarray[rTcounter]) relaxTmax = rTarray[rTcounter]; /* compare relaxTmax with maxrelaxT */ if (maxrelaxT > relaxTmax) relaxTmax = maxrelaxT; if ( ((T1rho[A]=='y') || (T2[A]=='y')) && (relaxTmax > d1) ) { text_error("Maximum relaxation time, relaxT, is greater than d1 ! "); psg_abort(1);} if ( ((T1[A]=='y') && (T1rho[A]=='y')) || ((T1[A]=='y') && (T2[A]=='y')) || ((T1rho[A]=='y') && (T2[A]=='y')) ) { text_error("Choose only one relaxation measurement ! "); psg_abort(1); } if ( ((T1[A]=='y') || (T1rho[A]=='y')) && ((relaxT*100.0 - (int)(relaxT*100.0+1.0e-4)) > 1.0e-6) ) { text_error("Relaxation time, relaxT, must be zero or multiple of 10msec"); psg_abort(1);} if ( (T2[A]=='y') && (((relaxT+0.01)*50.0 - (int)((relaxT+0.01)*50.0+1.0e-4)) > 1.0e-6) ) { text_error("Relaxation time, relaxT, must be odd multiple of 10msec"); psg_abort(1);} if ( ((T1rho[A]=='y') || (T2[A]=='y')) && (relaxTmax > 0.25) && (ix==1) ) { printf("WARNING, sample heating will result for relaxT>0.25sec"); } if ( ((T1rho[A]=='y') || (T2[A]=='y')) && (relaxTmax > 0.5) ) { text_error("relaxT greater than 0.5 seconds will heat sample"); psg_abort(1);} if ( ((NH2only[A]=='y') || (T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y')) && (TROSY[A]=='y') ) { text_error("TROSY not implemented with NH2 spectrum, or relaxation exps."); psg_abort(1);} if ((TROSY[A]=='y') && (dm2[C] == 'y')) { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (TROSY[A]=='y') { if (phase1 == 2) icosel = -1; else { tsadd(t4,2,4); tsadd(t10,2,4); icosel = +1; } } else { if (phase1 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } if(Hdecflg[0] != 'n') ihh = icosel; /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { 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(t3,2,4); tsadd(t12,2,4); } /* Correct inverted signals for NH2 only spectra */ if ((NH2only[A]=='y') && (T1[A]=='n') && (T1rho[A]=='n') && (T2[A]=='n')) { tsadd(t3,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); decpwrf(rf0); dec2power(pwNlvl); txphase(zero); decphase(zero); dec2phase(zero); if(Hdecflg[0] != 'n') { delay(5.0e-5); rgpulse(pw,zero,rof1,0.0); rgpulse(pw,one,0.0,rof1); zgradpulse(1.5*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,rof1,0.0); rgpulse(pw,one,0.0,rof1); zgradpulse(-gzlvl0, 0.5e-3); } delay(d1); /* xxxxxxxxxxxxxxxxx CONSTANT SAMPLE HEATING FROM N15 RF xxxxxxxxxxxxxxxxx */ if (T1rho[A]=='y') {dec2power(slNlvl); dec2rgpulse(relaxTmax-relaxT, zero, 0.0, 0.0); dec2power(pwNlvl);} if (T2[A]=='y') {ncyc = 8.0*100.0*(relaxTmax - relaxT); if (BPpwrlimits > 0.5) { dec2power(pwNlvl-3.0); /* reduce for probe protection */ pwN=pwN*compN*1.4; } if (ncyc > 0) {initval(ncyc,v1); loop(v1,v2); delay(0.625e-3 - pwN); dec2rgpulse(2*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN); endloop(v2);} if (BPpwrlimits > 0.5) { dec2power(pwNlvl); /* restore normal value */ pwN=getval("pwN"); } } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ rcvroff(); if (TROSY[A]=='n') dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 magnetization*/ zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); if (TROSY[A]=='n') dec2rgpulse(pwN, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); decpwrf(rfst); txphase(t1); delay(5.0e-4); if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { lk_hold(); dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(calH*pw,t1,0.0,0.0); /* 1H pulse excitation */ txphase(zero); dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0 - pwHH); if(Hdecflg[0] != 'n') { obspower(tpwrs); if (tpwrsf<4095.0) obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHH, two, 5.0e-5, 0.0); obspower(tpwr); if (tpwrsf<4095.0) obspwrf(4095.0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); obspower(tpwrs); if (tpwrsf<4095.0) obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHH, two, 5.0e-5, 0.0); obspower(tpwr); if (tpwrsf<4095.0) obspwrf(4095.0); } else sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0 - pwHH); rgpulse(pw, one, 0.0, 0.0); txphase(two); obspower(tpwrs); if (tpwrsf<4095.0) obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHs, two, 5.0e-5, 0.0); obspower(tpwr); if (tpwrsf<4095.0) obspwrf(4095.0); if (TROSY[A]=='y') zgradpulse(ihh*gzlvl3, gt3); else zgradpulse(-ihh*gzlvl3, gt3); dec2phase(t3); delay(2.0e-4); dec2rgpulse(calN*pwN, t3, 0.0, 0.0); txphase(zero); decphase(zero); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 RELAXATION xxxxxxxxxxxxxxxxxxxx */ if ( (T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y') ) { dec2phase(one); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ delay(tNH - gt4 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, one, 0.0, 0.0); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ delay(tNH - gt4 - 2.0*GRADIENT_DELAY); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (T1[A]=='y') { dec2rgpulse(pwN, one, 0.0, 0.0); dec2phase(three); zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ delay(2.5e-3 - gt0 - 2.0*GRADIENT_DELAY - pw); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(2.5e-3 - pw); ncyc = (100.0*relaxT); initval(ncyc,v4); if (ncyc > 0) {loop(v4,v5); delay(2.5e-3 - pw); rgpulse(2.0*pw, two, 0.0, 0.0); delay(2.5e-3 - pw); delay(2.5e-3 - pw); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(2.5e-3 - pw); endloop(v5);} dec2rgpulse(pwN, three, 0.0, 0.0); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ /* Theory suggests 8.0 is better than 2PI as RF */ /* field multiplier and experiment confirms this.*/ if (T1rho[A]=='y') /* Shift evolution of 2.0*pwN/PI for one pulse */ { /* at end left unrefocused as for normal sequence*/ delay(1.0/(8.0*slNrf) - pwN); decrgpulse(pwN, zero, 0.0, 0.0); dec2power(slNlvl); /* minimum 5ms spinlock to dephase */ dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); /* spins not locked */ sim3pulse(2.0*pw, 0.0, 2.0*pw, zero, zero, zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); ncyc = 100.0*relaxT; initval(ncyc,v4); if (ncyc > 0) {loop(v4,v5); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); sim3pulse(2.0*pw, 0.0, 2.0*pw, two, zero, zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); sim3pulse(2.0*pw, 0.0, 2.0*pw, zero, zero, zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); endloop(v5);} dec2power(pwNlvl); decrgpulse(pwN, zero, 0.0, 0.0); delay(1.0/(8.0*slNrf) + 2.0*pwN/PI - pwN); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (T2[A]=='y') { dec2phase(zero); initval(0.0,v3); initval(180.0,v4); if (BPpwrlimits > 0.5) { dec2power(pwNlvl-3.0); /* reduce for probe protection */ pwN=pwN*compN*1.4; } ncyc = 100.0*relaxT; initval(ncyc,v5); loop(v5,v6); initval(3.0,v7); loop(v7,v8); delay(0.625e-3 - pwN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN); endloop(v8); delay(0.625e-3 - pwN - SAPS_DELAY); add(v4,v3,v3); obsstepsize(1.0); xmtrphase(v3); /* SAPS_DELAY */ dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN - pw); rgpulse(2*pw, zero, 0.0, 0.0); delay(0.625e-3 - pwN - pw ); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); xmtrphase(zero); /* SAPS_DELAY */ delay(0.625e-3 - pwN - SAPS_DELAY); initval(3.0,v9); loop(v9,v10); delay(0.625e-3 - pwN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN); endloop(v10); endloop(v6); if (BPpwrlimits > 0.5) { dec2power(pwNlvl); /* restore normal value */ pwN=getval("pwN"); } } /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ txphase(zero); dec2phase(t9); if ( (NH2only[A]=='y') || (T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y') ) { delay(tau1); /* optional sech/tanh pulse in middle of t1 */ if (C13refoc[A]=='y') /* WFG_START_DELAY */ {decshaped_pulse("stC200", 1.0e-3, zero, 0.0, 0.0); delay(tNH - 1.0e-3 - WFG_START_DELAY - 2.0*pw);} else {delay(tNH - 2.0*pw);} rgpulse(2.0*pw, zero, 0.0, 0.0); if (tNH < gt1 + 1.99e-4) delay(gt1 + 1.99e-4 - tNH); delay(tau1); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ txphase(t4); dec2phase(t10); if (tNH > gt1 + 1.99e-4) delay(tNH - gt1 - 2.0*GRADIENT_DELAY); else delay(1.99e-4 - 2.0*GRADIENT_DELAY); } else if (TROSY[A]=='y') { if ( (C13refoc[A]=='y') && (tau1 > 0.5e-3 + WFG2_START_DELAY) ) {delay(tau1 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ decshaped_pulse("stC200", 1.0e-3, zero, 0.0, 0.0); delay(tau1 - 0.5e-3);} else delay(2.0*tau1); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ delay(2.0e-4 - 2.0*GRADIENT_DELAY); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); txphase(three); delay(gt1 + 2.0e-4 - pwHs - 1.0e-4 - 2.0*pwr_dly); obspower(tpwrs); if (tpwrsf<4095.0) obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHs, three, 5.0e-5, 0.0); obspower(tpwr); if (tpwrsf<4095.0) obspwrf(4095.0); txphase(t4); delay(5.0e-5); } else { /* fully-coupled spectrum */ if (dm2[C]=='n') {rgpulse(2.0*pw, zero, 0.0, 0.0); pw=0.0;} if ( (C13refoc[A]=='y') && (tau1 > 0.5e-3 + WFG2_START_DELAY) ) {delay(tau1 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ simshaped_pulse("", "stC200", 2.0*pw, 1.0e-3, zero, zero, 0.0, 0.0); delay(tau1 - 0.5e-3); delay(gt1 + 2.0e-4);} else {delay(tau1); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(gt1 + 2.0e-4 - 2.0*pw); delay(tau1);} pw=getval("pw"); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ txphase(t4); dec2phase(t10); delay(2.0e-4 - 2.0*GRADIENT_DELAY); } if (T1rho[A]=='y') delay(POWER_DELAY); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(1.5*gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.65*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } rgpulse(2.0*pw, zero, 0.0, 0.0); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, 0.1*gt1); else zgradpulse(icosel*gzlvl2, 0.1*gt1); /* 2.0*GRADIENT_DELAY */ if(Cdecflg[0] == 'y') { delay(gstab-2.0*POWER_DELAY-PRG_START_DELAY+rof2); rcvron(); statusdelay(C,1.0e-4); if (dm3[B] == 'y') { delay(1/dmf3); lk_sample(); } setreceiver(t12); pbox_decon(&Cdseq); if(Hdecflg[0] == 'y') homodec(&HHdseq); } else { delay(gstab+rof2); rcvron(); statusdelay(C,1.0e-4); if (dm3[B] == 'y') { delay(1/dmf3); lk_sample(); } setreceiver(t12); if(Hdecflg[0] == 'y') homodec(&HHdseq); } }
void pulsesequence() { /* DECLARE VARIABLES */ char aliph[MAXSTR], /* aliphatic CHn groups only */ arom[MAXSTR], /* aromatic CHn groups only */ N15refoc[MAXSTR], /* flag for refocusing 15N during indirect H1 evolution */ f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /* magic angle gradient */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ stCshape[MAXSTR], /* C13 inversion pulse shape name */ STUD[MAXSTR], /* Flag to select adiabatic decoupling */ stCdec[MAXSTR], /* contains name of adiabatic decoupling shape */ auto_dof[MAXSTR]; /* automatically adjust dof for aromatic, aliphatic, all carbon */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double JCH1 = getval("JCH1"), /* smallest coupling that you wish to purge */ JCH2 = getval("JCH2"), /* largest coupling that you wish to purge */ taud, /* 1/(2JCH1) */ taue, /* 1/(2JCH2) */ /* N15 purging */ tauNH = 1/(4.0*getval("JNH")), /* HN coupling constant */ gt4 = getval("gt4"), gt14 = getval("gt14"), gt7 = getval("gt7"), gt17 = getval("gt17"), gt8 = getval("gt8"), gt9 = getval("gt9"), gzlvl4 = getval("gzlvl4"), gzlvl14 = getval("gzlvl14"), gzlvl7 = getval("gzlvl7"), gzlvl17 = getval("gzlvl17"), gzlvl8 = getval("gzlvl8"), gzlvl9 = getval("gzlvl9"), bw, pws, ofs, ppm, nst, /* bandwidth, pulsewidth, offset, ppm, # steps */ ni2 = getval("ni2"), dofa = 0.0, /* actual 13C offset (depends on aliph and arom)*/ rf200 = getval("rf200"), /* rf in Hz for 200ppm STUD+ */ dmf200 = getval("dmf200"), /* dmf for 200ppm STUD+ */ rf30 = getval("rf30"), /* rf in Hz for 30ppm STUD+ */ dmf30 = getval("dmf30"), /* dmf for 30ppm STUD+ */ stdmf = 1.0, /* dmf for STUD decoupling initialized */ studlvl = 0.0, /* coarse power for STUD+ decoupling initialized */ rffil = 0.0, /* fine power level for 200ppm adiabatic pulse */ rfst = 0.0, /* fine power level for adiabatic pulse initialized */ rf0, /* full fine power */ /*compH = getval("compH"), adjustment for H1 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ compN = getval("compN"), /* adjustment for N15 amplifier compression */ tau1, /* t1 delay */ tau2, /* t2 delay */ JCH = getval("JCH"), /* CH coupling constant */ Cfil = getval("Cfil"), /* CH coupling constant */ pwC = getval("pwC"), /* PW90 for 13C nucleus @ pwClvl */ pwClvl = getval("pwClvl"), /* high power for 13C hard pulses on dec1 */ pwC180 = getval("pwC180"), /* PW180 for 13C nucleus in INEPT transfers */ pwN = getval("pwN"), /* PW90 for 15N nucleus @ pwNlvl */ pwNlvl = getval("pwNlvl"), /* high power for 15N hard pulses on dec2 */ pwClw=getval("pwClw"), pwNlw=getval("pwNlw"), pwZlw=0.0, /* largest of pwNlw and 2*pwClw */ mix = getval("mix"), /* noesy mix time */ sw1 = getval("sw1"), /* spectral width in t1 (H) */ sw2 = getval("sw2"), /* spectral width in t2 (C) */ gstab = getval("gstab"), /* gradient recovery delay (300 us recom.) */ gsign = 1.0, gzcal = getval("gzcal"), /* dac to G/cm conversion factor */ gt0 = getval("gt0"), gt1 = getval("gt1"), gt2 = getval("gt2"), gt3 = getval("gt3"), gt5 = getval("gt5"), gt6 = getval("gt6"), gzlvl0 = getval("gzlvl0"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); /* LOAD VARIABLES */ getstr("aliph",aliph); getstr("arom",arom); getstr("N15refoc",N15refoc); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("f2180",f2180); getstr("STUD",STUD); getstr("auto_dof",auto_dof); /* LOAD PHASE TABLE */ settable(t1,8,phi1); settable(t2,4,phi2); settable(t3,2,phi3); settable(t5,1,phi5); settable(t6,16,phi6); settable(t7,32,phi7); if (Cfil == 1) settable(t4,8,rec1); else settable(t4,32,rec2); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( (arom[A]=='n' && aliph[A]=='n') || (arom[A]=='y' && aliph[A]=='y') ) { printf("You need to select one and only one of arom or aliph options "); psg_abort(1); } if((dm[A] == 'y' || dm[C] == 'y' )) { printf("incorrect 13C decoupler flags! dm='nnnn' or 'nnny' only "); psg_abort(1); } if((dm2[A] == 'y' || dm2[C] == 'y' )) { printf("incorrect 15N decoupler flags! No decoupling in relax or mix periods "); psg_abort(1); } if( dpwr > 49 ) { 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( 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( gt0 > 15e-3 || gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 ) { printf("gti values < 15e-3\n"); psg_abort(1); } /* if( gzlvl3*gzlvl4 > 0.0 )*/ if (phase1 == 2) tsadd(t3,1,4); if (phase2 == 1) {tsadd(t5,2,4); icosel = +1;} else icosel = -1; /* Set up f1180 tau1 = t1 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) tau1 += 1.0/(2.0*sw1); if(tau1 < 0.2e-6) tau1 = 4.0e-7; tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) tau2 += ( 1.0 / (2.0*sw2) ); 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(t3,2,4); tsadd(t4,2,4);} if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if (t2_counter % 2) {tsadd(t2,2,4); tsadd(t4,2,4);} /* calculate 3db lower power hard pulses for simultaneous CN decoupling during indirect H1 evoluion pwNlw and pwClw should be calculated by the macro that calls the experiment. */ if (N15refoc[A] == 'y') { if (pwNlw==0.0) pwNlw = compN*pwN*exp(3.0*2.303/20.0); if (pwClw==0.0) pwClw = compC*pwC*exp(3.0*2.303/20.0); if (pwNlw > 2.0*pwClw) pwZlw=pwNlw; else pwZlw=2.0*pwClw; /* Uncomment to check pwClw and pwNlw if (d2==0.0 && d3==0.0) printf(" pwClw = %.2f ; pwNlw = %.2f\n", pwClw*1e6,pwNlw*1e6); */ } /* make sure that gt3 and gt1 are of opposite sign to help dephasing H2O */ if (gzlvl3*icosel*gzlvl1 > 0.0) gsign=-1.0; else gsign=1.0; /* if coupling constants are input by user use them to calculate delays */ if (Cfil == 1) { taud = 1.0/(2.0*JCH1); taue = 1.0/(2.0*JCH2); } else { taud = 1.0/(4.0*JCH1); taue = 1.0/(4.0*JCH2); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { if (arom[A]=='y') /* AROMATIC spectrum */ { /* 30ppm sech/tanh inversion */ rfst = (compC*4095.0*pwC*4000.0*sqrt((4.5*sfrq/600.0+3.85)/0.41)); rfst = (int) (rfst + 0.5); } if (aliph[A]=='y') /* ALIPHATIC spectrum */ { /* 200ppm sech/tanh inversion pulse */ if (pwC180>3.0*pwC) { rfst = (compC*4095.0*pwC*4000.0*sqrt((12.07*sfrq/600+3.85)/0.35)); rfst = (int) (rfst + 0.5); } else rfst=4095.0; if( pwC > (20.0e-6*600.0/sfrq) ) { printf("Increase pwClvl so that pwC < 20*600/sfrq"); psg_abort(1); } } if (Cfil > 1) /* 200ppm pulse for C13 filtering */ { /* 200ppm sech/tanh inversion pulse */ if (pwC180>3.0*pwC) { rffil = (compC*4095.0*pwC*4000.0*sqrt((12.07*sfrq/600+3.85)/0.35)); rffil = (int) (rffil + 0.5); } else rfst=4095.0; if( pwC > (20.0e-6*600.0/sfrq) ) { printf("Increase pwClvl so that pwC < 20*600/sfrq"); psg_abort(1); } } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 118.0*ppm; ofs = 139.0*ppm; if (arom[A]=='y') /* AROMATIC spectrum */ { bw = 30.0*ppm; pws = 0.001; ofs = 0.0; nst = 500.0; stC30 = pbox_makeA("stC30", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); } if ((aliph[A]=='y') || (Cfil > 1)) { bw = 200.0*ppm; pws = 0.001; ofs = 0.0; nst = 1000.0; stC200 = pbox_makeA("stC200", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); } ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } if (arom[A]=='y') rfst = stC30.pwrf; if (aliph[A]=='y') { if (pwC180>3.0*pwC) rfst = stC200.pwrf; else rfst = 4095.0; } if (Cfil > 1) { if (pwC180>3.0*pwC) rffil = stC200.pwrf; else rffil = 4095.0; } } if (arom[A]=='y') { dofa=dof+(125-43)*dfrq; strcpy(stCshape, "stC30"); /* 30 ppm STUD+ decoupling */ strcpy(stCdec, "stCdec30"); stdmf = dmf30; studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf30); studlvl = (int) (studlvl + 0.5); } if (aliph[A]=='y') { dofa=dof; strcpy(stCshape, "stC200"); /* 200 ppm STUD+ decoupling */ strcpy(stCdec, "stCdec200"); stdmf = dmf200; studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf200); studlvl = (int) (studlvl + 0.5); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); if (auto_dof[A]=='y') decoffset(dofa); obspower(tpwr); /* Set transmitter power for hard 1H pulses */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 power for decoupling during tau1 */ dec2pwrf(rf0); initval(135.0,v1); obsstepsize(1.0); delay(d1); /* destroy N15 and C13 magnetization */ if (N15refoc[A] == 'y') dec2rgpulse(pwN, zero, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(gstab); if (N15refoc[A] == 'y') dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); decphase(zero); dec2phase(zero); rcvroff(); delay(gstab); status(B); if (Cfil == 1) { xmtrphase(v1); rgpulse(pw, t1, rof1 , 0.0); txphase(zero); xmtrphase(zero); /* CN FILTER BEGINS */ zgradpulse(gzlvl8, gt8); txphase(zero); xmtrphase(zero); delay(taud -gt8 -2.0*GRADIENT_DELAY -2.0*SAPS_DELAY); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl8, gt8); delay(taue -gt8 -2.0*GRADIENT_DELAY); decrgpulse(pwC, zero, 0.0, 0.0); delay(taud -taue -pwC); /* CN FILTER ENDS */ } else if (Cfil == 2) { txphase(t6); rgpulse(pw, t6, rof1, 0.0); /* 90 deg 1H pulse */ /* BEGIN 1st FILTER */ txphase(zero); zgradpulse(gzlvl8,gt8); decpwrf(rffil); delay(taud -gt8 -2.0*GRADIENT_DELAY -WFG2_START_DELAY -0.5e-3 +70.0e-6); simshaped_pulse("", "stC200", 2.0*pw, pwC180, zero, zero, 0.0, 0.0); zgradpulse(gzlvl8,gt8); decpwrf(rf0); delay(taud -gt8 -2.0*GRADIENT_DELAY -0.5e-3 +70.0e-6); simpulse(pw, pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl4,gt4); txphase(t7); delay(gstab); rgpulse(pw, t7, 0.0, 0.0); /* BEGIN 2nd FILTER */ zgradpulse(gzlvl9,gt9); decpwrf(rffil); delay(taue -gt9 -2.0*GRADIENT_DELAY -WFG2_START_DELAY -0.5e-3 +70.0e-6); simshaped_pulse("", "stC200", 2.0*pw, pwC180, zero, zero, 0.0, 0.0); zgradpulse(gzlvl9,gt9); decpwrf(rf0); delay(taue -gt9 -2.0*GRADIENT_DELAY -0.5e-3 +70.0e-6); simpulse(pw, pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl7,gt7); txphase(t1); xmtrphase(v1); delay(gstab); rgpulse(pw, t1, 0.0, 0.0); txphase(zero); xmtrphase(zero); } else if (Cfil == 3) { txphase(t6); rgpulse(pw, t6, rof1, 0.0); /* 90 deg 1H pulse */ /* BEGIN 1st FILTER */ txphase(zero); zgradpulse(gzlvl8,gt8); delay(tauNH -gt8 -2.0*GRADIENT_DELAY); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decpwrf(rffil); delay(tauNH -taud -0.5e-3 -WFG_START_DELAY -PWRF_DELAY); decshaped_pulse("stC200", pwC180, zero, 0.0, 0.0); zgradpulse(gzlvl8,gt8); decpwrf(rf0); delay(taud -gt8 -2.0*GRADIENT_DELAY -0.5e-3 -PWRF_DELAY); sim3pulse(pw, pwC, pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl14,gt14); txphase(t7); delay(gstab); rgpulse(pw, t7, 0.0, 0.0); /* BEGIN 2nd FILTER */ zgradpulse(gzlvl9,gt9); delay(tauNH -gt9 -2.0*GRADIENT_DELAY); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decpwrf(rffil); delay(tauNH -taue -0.5e-3 -WFG_START_DELAY -PWRF_DELAY); decshaped_pulse("stC200", pwC180, zero, 0.0, 0.0); zgradpulse(gzlvl9,gt9); decpwrf(rf0); delay(taue -gt9 -2.0*GRADIENT_DELAY -0.5e-3 -PWRF_DELAY); sim3pulse(pw, pwC, pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl17,gt17); txphase(t1); xmtrphase(v1); delay(gstab); rgpulse(pw, t1, 0.0, 0.0); txphase(zero); xmtrphase(zero); } /* H1 INDIRECT EVOLUTION BEGINS */ if (ni > 0) txphase(t3); { if ( (N15refoc[A]=='y') && ((tau1 -pwN -2.0*pw/PI -rof1 -SAPS_DELAY) > 0.0) ) { delay(tau1 -pwN -2.0*pw/PI -SAPS_DELAY); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(tau1 -pwN -2.0*pw/PI -rof1); } else if (tau1 > 2.0*pw/PI +rof1 +SAPS_DELAY) delay(2.0*tau1 -4.0*pw/PI -2.0*rof1 -SAPS_DELAY); } /* H1 INDIRECT EVOLUTION ENDS */ rgpulse(pw, t3, rof1, rof1); /* 2nd 1H 90 pulse */ status(C); delay(mix -pwC -gt0 -PWRF_DELAY -gstab -2.0*GRADIENT_DELAY); decrgpulse(pwC,zero,0.0,0.0); zgradpulse(gzlvl0, gt0); decpwrf(rfst); /* fine power for inversion pulse */ delay(gstab); /* FIRST HSQC INEPT TRANSFER */ rgpulse(pw,zero,0.0,0.0); zgradpulse(gzlvl4, gt4); delay(1/(4.0*JCH) -gt4 -2.0*GRADIENT_DELAY -WFG2_START_DELAY -pwC180*0.45); simshaped_pulse("",stCshape,2*pw,pwC180,zero,zero,0.0,0.0); zgradpulse(gzlvl4, gt4); decpwrf(rf0); txphase(one); delay(1/(4.0*JCH) -gt4 -2.0*GRADIENT_DELAY -pwC180*0.45 -PWRF_DELAY -SAPS_DELAY); rgpulse(pw,one,0.0,0.0); zgradpulse(gsign*gzlvl3, gt3); txphase(zero); delay(gstab); /* C13 EVOLUTION */ decrgpulse(pwC,t2,0.0,0.0); delay(tau2); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau2); decphase(zero); delay(gt1 +2.0*GRADIENT_DELAY +gstab -2.0*pw -SAPS_DELAY); decrgpulse(2*pwC,zero,0.0,0.0); if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); decphase(t5); delay(gstab); decrgpulse(pwC,t5,0.0,0.0); delay(pw); rgpulse(pw,zero,0.0,0.0); zgradpulse(gzlvl5, gt5); decphase(zero); delay(1/(8.0*JCH) -gt5 -SAPS_DELAY -2.0*GRADIENT_DELAY); /* d3 = 1/8*Jch */ decrgpulse(2.0*pwC,zero,0.0,2.0e-6); rgpulse(2.0*pw,zero,0.0,0.0); zgradpulse(gzlvl5, gt5); decphase(one); txphase(one); delay(1/(8.0*JCH) -gt5 -2.0*SAPS_DELAY -2.0*GRADIENT_DELAY); /* d3 = 1/8*Jch */ delay(pwC); decrgpulse(pwC,one,0.0,2.0e-6); rgpulse(pw,one,0.0,0.0); zgradpulse(gzlvl6, gt6); decpwrf(rfst); /* fine power for inversion pulse */ decphase(zero); txphase(zero); delay(1/(4.0*JCH) -gt6 -pwC180*0.45 -PWRF_DELAY -WFG2_START_DELAY -2.0*SAPS_DELAY -2.0*GRADIENT_DELAY); /* d2 = 1/4*Jch */ simshaped_pulse("",stCshape,2*pw,pwC180,zero,zero,0.0,0.0); zgradpulse(gzlvl6, gt6); decpwrf(rf0); delay(1/(4.0*JCH) -gt6 -pwC180*0.45 -PWRF_DELAY -2.0*GRADIENT_DELAY); /* d2 = 1/4*Jch */ rgpulse(pw,zero,0.0,0.0); delay(gt2 +gstab +2.0*GRADIENT_DELAY +POWER_DELAY); rgpulse(2*pw,zero,0.0,0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl2, gt2); else zgradpulse(gzlvl2, gt2); delay(gstab); setreceiver(t4); rcvron(); if ((STUD[A]=='y') && (dm[D] == 'y')) { decpower(studlvl); decprgon(stCdec, 1.0/stdmf, 1.0); decon(); } else { decpower(dpwr); status(D); } }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /*magic angle gradient*/ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ codecseq[MAXSTR]; /* sequence for 13C' decoupling */ int icosel1, /* used to get n and p type */ icosel2, t1_counter, /* used for states tppi in t1 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ del = getval("del"), /* time delays for CH coupling evolution */ del1 = getval("del1"), del2 = getval("del2"), del3 = getval("del3"), del4 = getval("del4"), TC = getval("TC"), satpwr = getval("satpwr"), waltzB1 = getval("waltzB1"), spinlock = getval("spinlock"), pwco,copwr, cores,codmf, kappa, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* p_d is used to calculate the isotropic mixing on the Cab region */ p_d, /* 50 degree pulse for DIPSI-2 at rfd */ rfd, /* fine power for 7 kHz rf for 500MHz magnet */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /*rf for WALTZ decoupling */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* G/cm to DAC coversion factor*/ gstab = getval("gstab"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), /* other gradients */ gt5 = getval("gt5"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("f2180",f2180); getstr("codecseq",codecseq); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,1,phi2); settable(t3,1,phi3); settable(t4,1,phi4); settable(t11,2,rec); /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* dipsi-3 decoupling on CbCa */ p_d = (5.0)/(9.0*4.0*spinlock); /* DIPSI-3*/ rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = (int) (ncyc + 0.5); /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(pw)); tpwrd = (int) (tpwrd + 0.5); /* activate auto-calibration flags */ setautocal(); if (autocal[0] == 'n') { codmf= getval("codmf"); pwco = 1.0/codmf; /* pw for 13C' decoupling field */ copwr = getval("copwr"); /* power level for 13C' decoupling */ cores = getval("cores"); /* power level for 13C' decoupling */ } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { strcpy(codecseq,"Pdec_154p"); if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw=20.0*ppm; ofs=154*ppm; Pdec_154p = pbox_Dsh("Pdec_154p", "WURST2", bw, ofs, compC*pwC, pwClvl); bw=30*ppm; ofs=0.0*ppm; nst = 1000; pws = 0.001; me180 = pbox_makeA("me180", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); } copwr = Pdec_154p.pwr; pwco = 1.0/Pdec_154p.dmf; cores = Pdec_154p.dres; pwme180 = me180.pw; me180pwr= me180.pwr; me180pwrf = me180.pwrf; } /* CHECK VALIDITY OF PARAMETER RANGES */ if( gt1 > 0.5*del - 1.0e-4) { printf(" gt1 is too big. Make gt1 less than %f.\n", (0.5*del - 1.0e-4)); psg_abort(1); } if( dm[A] == 'y' ) { printf("incorrect dec1 decoupler flag! Should be 'nny' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm3[A] == 'y' || dm3[C] == 'y')) { printf("incorrect dec3 decoupler flags! Should be 'nnn' or 'nyn' "); psg_abort(1); } if( dpwr > 52 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ icosel1 = 1; icosel2 = 1; if (phase1 == 2) { tsadd(t2,2,4); icosel1 = -1;} if (phase2 == 2) { tsadd(t4,2,4); icosel2 = -1; tsadd(t2,2,4);} /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } 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(t11,2,4); } if(ni > 1) kappa = (double)(t1_counter*(del2)) / ( (double) (ni-1) ); else kappa = 0.0; /* BEGIN PULSE SEQUENCE */ status(A); decoffset(dof-140*dfrq); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); if (satmode[A] == 'y') { obspower(satpwr); txphase(zero); rgpulse(d1,zero,20.0e-6,20.0e-6); obspower(tpwr); /* Set power for hard pulses */ } else { obspower(tpwr); /* Set power for hard pulses */ delay(d1); } decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl1, 0.5e-3); delay(gstab); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl1, 0.5e-3); delay(1.1*gstab); if(dm3[B] == 'y') /*optional 2H decoupling on */ { dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pw, zero, 0.0, 0.0); /* 1H pulse excitation */ zgradpulse(gzlvl3, gt3); decphase(zero); delay(0.5*del - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); txphase(one); decphase(t1); delay(0.5*del - gt3); rgpulse(pw,one,0.0,0.0); zgradpulse(1.8*gzlvl3, gt3); txphase(zero); delay(150e-6); decrgpulse(pwC, t1, 0.0, 0.0); /* decoupling on for carbonyl carbon */ decpwrf(4095.0); decpower(copwr); decprgon(codecseq,pwco,cores); decon(); /* decoupling on for carbonyl carbon */ delay(tau1); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); zgradpulse(icosel1*gzlvl4, gt1); delay(0.5*del2 - 2.0*pwN - gt1 - 2.0*pw); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau1 - (kappa*tau1)); /* co-decoupling off */ decoff(); decprgoff(); /* co-decoupling off */ decpower(pwClvl); decrgpulse(2.0*pwC, zero, 0.0, 0.0); /* decoupling on for carbonyl carbon */ decpwrf(4095.0); decpower(copwr); decprgon(codecseq,pwco,cores); decon(); /* decoupling on for carbonyl carbon */ delay(0.5*del2 - kappa*tau1); /* co-decoupling off */ decoff(); decprgoff(); /* co-decoupling off */ decpower(pwClvl); decphase(t2); decrgpulse(pwC, t2, 0.0, 0.0); decpwrf(rfd); delay(2.0e-6); initval(ncyc, v2); starthardloop(v2); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(5.0*p_d,one,0.0,0.0); decrgpulse(5.5*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.6*p_d,three,0.0,0.0); decrgpulse(7.2*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.4*p_d,one,0.0,0.0); decrgpulse(6.8*p_d,three,0.0,0.0); decrgpulse(7.0*p_d,one,0.0,0.0); decrgpulse(5.2*p_d,three,0.0,0.0); decrgpulse(5.4*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.5*p_d,one,0.0,0.0); decrgpulse(7.3*p_d,three,0.0,0.0); decrgpulse(5.1*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(5.0*p_d,three,0.0,0.0); decrgpulse(5.5*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.6*p_d,one,0.0,0.0); decrgpulse(7.2*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.4*p_d,three,0.0,0.0); decrgpulse(6.8*p_d,one,0.0,0.0); decrgpulse(7.0*p_d,three,0.0,0.0); decrgpulse(5.2*p_d,one,0.0,0.0); decrgpulse(5.4*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.5*p_d,three,0.0,0.0); decrgpulse(7.3*p_d,one,0.0,0.0); decrgpulse(5.1*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(5.0*p_d,three,0.0,0.0); decrgpulse(5.5*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.6*p_d,one,0.0,0.0); decrgpulse(7.2*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.4*p_d,three,0.0,0.0); decrgpulse(6.8*p_d,one,0.0,0.0); decrgpulse(7.0*p_d,three,0.0,0.0); decrgpulse(5.2*p_d,one,0.0,0.0); decrgpulse(5.4*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.5*p_d,three,0.0,0.0); decrgpulse(7.3*p_d,one,0.0,0.0); decrgpulse(5.1*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(5.0*p_d,one,0.0,0.0); decrgpulse(5.5*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.6*p_d,three,0.0,0.0); decrgpulse(7.2*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.4*p_d,one,0.0,0.0); decrgpulse(6.8*p_d,three,0.0,0.0); decrgpulse(7.0*p_d,one,0.0,0.0); decrgpulse(5.2*p_d,three,0.0,0.0); decrgpulse(5.4*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.5*p_d,one,0.0,0.0); decrgpulse(7.3*p_d,three,0.0,0.0); decrgpulse(5.1*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); endhardloop(); txphase(one); decpwrf(rf0); decphase(t3); obspower(tpwrd); decrgpulse(pwC,t3,0.0,0.0); decoffset(dof - 155*dfrq); rgpulse(pwHd,one,0.0,2.0e-6); txphase(zero); obsunblank(); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); delay(TC - OFFSET_DELAY - POWER_DELAY - PRG_START_DELAY - tau2); decrgpulse(2.0*pwC, zero, 0.0, 0.0); delay(TC + tau2 - POWER_DELAY - PRG_STOP_DELAY - 2*gt1 - gstab - 2.0*pw); xmtroff(); obsprgoff(); obsblank(); rgpulse(pwHd,three,2.0e-6,0.0); obspower(tpwr); if (mag_flg[A] =='y') magradpulse(gzcal*icosel2*gzlvl2, gt1); else zgradpulse(icosel2*gzlvl2, gt1); delay(gstab/2.0); rgpulse(2.0*pw,zero,0.0,0.0); if (mag_flg[A] =='y') magradpulse(gzcal*icosel2*gzlvl2, gt1); else zgradpulse(icosel2*gzlvl2, gt1); delay(gstab/2.0); decphase(zero); simpulse(0.0,pwC, two, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); delay(0.5*del1 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); decphase(t4); delay(0.5*del1 - gt5); simpulse(pw, pwC, one, t4, 0.0, 0.0); zgradpulse(gzlvl6, gt5); txphase(zero); decphase(zero); delay(0.5*del4 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(0.5*del4 - gt5); simpulse(pw,pwC,zero,zero,0.0,0.0); zgradpulse(2.3*gzlvl6, gt1); if (autocal[A] == 'y') { decpower(me180pwr); decpwrf(me180pwrf); delay(0.5*del3 - gt1 - 0.0005 -2.0*POWER_DELAY- WFG2_START_DELAY); simshaped_pulse("","me180",2.0*pw,0.001, zero, zero, 0.0, 0.0); decpwrf(rf0); decphase(zero); } else { delay(0.5*del3 - 0.5*pwC - gt1); simpulse(2.0*pw,2.0*pwC, zero, zero, 0.0, 0.0); } decpower(dpwr); if (mag_flg[A] == 'y') magradpulse(gzcal*((2.3*gzlvl6)+gzlvl1), gt1); else zgradpulse(((2.3*gzlvl6)+gzlvl1), gt1); if (autocal[A] == 'y') { if(dm3[B] == 'y') delay(0.5*del3 - 0.0005 -gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - 2.0*POWER_DELAY); else delay(0.5*del3 - 0.0005 -gt1 - 2.0*GRADIENT_DELAY - 2.0*POWER_DELAY); } else { if(dm3[B] == 'y') delay(0.5*del3 - gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - POWER_DELAY); else delay(0.5*del3 - gt1 - 2.0*GRADIENT_DELAY - POWER_DELAY); } if(dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } if (dm3[B]=='y') lk_sample(); status(C); setreceiver(t11); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int icosel, /* used to get n and p type */ t1_counter=getval("t1_counter"), /* used for states tppi in t1 */ t2_counter=getval("t2_counter"), /* used for states tppi in t2 */ nli = getval("nli"), nli2 = getval("nli2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ kappa = 5.4e-3, lambda = 2.4e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "proteincal". SLP pulse shapes, "offC3" etc are called */ /* directly from your shapelib. */ pwC3 = getval("pwC3"), /*180 degree pulse at Ca(56ppm) null at CO(174ppm) */ pwC3a = getval("pwC3a"), /* pwC3a=pwC3, but not set to zero when pwC3=0 */ phshift3, /* phase shift induced on CO by pwC3 ("offC3") pulse */ pwZ, /* the largest of pwC3 and 2.0*pwN */ pwZ1, /* the largest of pwC3a and 2.0*pwN for 1D experiments */ pwC6 = getval("pwC6"), /* 90 degree selective sinc pulse on CO(174ppm) */ pwC8 = getval("pwC8"), /* 180 degree selective sinc pulse on CO(174ppm) */ rf3, /* fine power for the pwC3 ("offC3") pulse */ rf6, /* fine power for the pwC6 ("offC6") pulse */ rf8, /* fine power for the pwC8 ("offC8") pulse */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf = getval("tpwrsf"), /* fine power for pwHs pulse */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /* rf for WALTZ decoupling */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("TROSY",TROSY); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); if (TROSY[A]=='y') {settable(t8,1,phy); settable(t9,1,phx); settable(t10,1,phy); settable(t11,1,phx); settable(t12,4,recT);} else {settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 180 degree pulse on Ca, null at CO 118ppm away */ rf3 = (compC*4095.0*pwC*2.0)/pwC3a; rf3 = (int) (rf3 + 0.5); /* the pwC3 pulse at the middle of t1 */ if ((nli2 > 0.0) && (nli == 1.0)) nli = 0.0; if (pwC3a > 2.0*pwN) pwZ = pwC3a; else pwZ = 2.0*pwN; if ((pwC3==0.0) && (pwC3a>2.0*pwN)) pwZ1=pwC3a-2.0*pwN; else pwZ1=0.0; if ( nli > 1 ) pwC3 = pwC3a; if ( pwC3 > 0 ) phshift3 = 48.0; else phshift3 = 0.0; /* 90 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf6 = (compC*4095.0*pwC*1.69)/pwC6; /* needs 1.69 times more */ rf6 = (int) (rf6 + 0.5); /* power than a square pulse */ /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf8 = (compC*4095.0*pwC*2.0*1.65)/pwC8; /* needs 1.65 times more */ rf8 = (int) (rf8 + 0.5); /* power than a square pulse */ /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrd = (int) (tpwrd + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*nli2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" nli2 is too big. Make nli2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dpwr2 > 46 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 50.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( (pwN > 100.0e-6) && (nli>1 || nli2>1)) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A]=='y' && dm2[C] == 'y' ) { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (TROSY[A]=='y') { if (phase2 == 2) icosel = +1; else {tsadd(t4,2,4); tsadd(t10,2,4); icosel = -1;} } else { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } /* Set up f1180 */ if( ix == 1) d2_init = d2; tau1 = d2_init + (t1_counter) / sw1; if((f1180[A] == 'y') && (nli > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ if( ix == 1) d3_init = d3; tau2 = d3_init + (t2_counter) / sw2; if((f2180[A] == 'y') && (nli2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if(t1_counter % 2) { tsadd(t3,2,4); tsadd(t12,2,4); } if(t2_counter % 2) { tsadd(t8,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); if (TROSY[A] == 'n') dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); if (TROSY[A] == 'n') dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); if (tpwrsf < 4095.0) {obspwrf(tpwrsf); tpwrs=tpwrs+6.0;} obspower(tpwrs); if (TROSY[A]=='y') {txphase(two); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); obspwrf(4095.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); delay(0.5*kappa - 2.0*pw); rgpulse(2.0*pw, two, 0.0, 0.0); decphase(zero); dec2phase(zero); decpwrf(rf8); delay(timeTN - 0.5*kappa - WFG3_START_DELAY); } else {txphase(zero); shaped_pulse("H2Osinc", pwHs, zero, 5.0e-4, 0.0); obspower(tpwrd); obspwrf(4095.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); txphase(one); delay(kappa - pwHd - 2.0e-6 - PRG_START_DELAY); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); decphase(zero); dec2phase(zero); decpwrf(rf8); delay(timeTN - kappa - WFG3_START_DELAY); } /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(t3); decpwrf(rf6); delay(timeTN); dec2rgpulse(pwN, zero, 0.0, 0.0); if (TROSY[A]=='n') {xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0);} zgradpulse(gzlvl3, gt3); delay(2.0e-4); decshaped_pulse("offC6", pwC6, t3, 0.0, 0.0); decphase(zero); /* xxxxxxxxxxxxxxxxxxxxxx 13CO EVOLUTION xxxxxxxxxxxxxxxxxx */ if ((nli>1.0) && (tau1>0.0)) /* total 13C evolution equals d2 exactly */ { /* 13C evolution during pwC6 is at 60% rate */ decpwrf(rf3); if(tau1 - 0.6*pwC6 - WFG3_START_DELAY - 0.5*pwZ > 0.0) { delay(tau1 - 0.6*pwC6 - WFG3_START_DELAY - 0.5*pwZ); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC3", "", 0.0, pwC3a, 2.0*pwN, zero, zero, zero, 0.0, 0.0); initval(phshift3, v3); decstepsize(1.0); dcplrphase(v3); /* SAPS_DELAY */ delay(tau1 - 0.6*pwC6 - SAPS_DELAY - 0.5*pwZ- WFG_START_DELAY - 2.0e-6); } else { initval(180.0, v3); decstepsize(1.0); dcplrphase(v3); /* SAPS_DELAY */ delay(2.0*tau1 - 2.0*0.6*pwC6 - SAPS_DELAY - WFG_START_DELAY - 2.0e-6); } } else if ((nli==1.0) && (pwC3==1.0e-6)) /* 13CO evolution for dof calib. */ { decpwrf(rf8); delay((1.0/(dfrq*80.0)) + 2.0e-6); /* WFG_START_DELAY */ decshaped_pulse("offC8", pwC8, zero, 0.0, 0.0); } else if (nli==1.0) /* special 1D check of pwC3 phase enabled when nli=1 */ { decpwrf(rf3); delay(10.0e-6 + SAPS_DELAY + 0.5*pwZ1 + WFG_START_DELAY); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC3", "", 0.0, pwC3, 2.0*pwN, zero, zero, zero, 2.0e-6 , 0.0); initval(phshift3, v3); decstepsize(1.0); dcplrphase(v3); /* SAPS_DELAY */ delay(10.0e-6 + WFG3_START_DELAY + 0.5*pwZ1); } else /* 13CO evolution refocused for 1st increment, or when nli=0 */ { decpwrf(rf8); delay(12.0e-6); /* WFG_START_DELAY */ decshaped_pulse("offC8", pwC8, zero, 0.0, 0.0); delay(10.0e-6); } decphase(t5); decpwrf(rf6); delay(2.0e-6); /* WFG_START_DELAY */ decshaped_pulse("offC6", pwC6, t5, 0.0, 0.0); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ dec2phase(t8); zgradpulse(gzlvl4, gt4); txphase(one); dcplrphase(zero); delay(2.0e-4); if (TROSY[A]=='n') {rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron();} dec2rgpulse(pwN, t8, 0.0, 0.0); decphase(zero); dec2phase(t9); decpwrf(rf8); delay(timeTN - WFG3_START_DELAY - tau2); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, t9, 0.0, 0.0); dec2phase(t10); decpwrf(rf3); if (TROSY[A]=='y') { if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.5e-4 + pwHs) { txphase(three); delay(timeTN - pwC3a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); if (tpwrsf<4095.0) {obspwrf(tpwrsf); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY - PWRF_DELAY);} else delay(1.0e-4 - POWER_DELAY); shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); if (tpwrsf<4095.0) {obspwrf(4095.0); /* POWER_DELAY */ delay(0.50e-4 - POWER_DELAY - PWRF_DELAY);} else delay(0.50e-4 - POWER_DELAY); } else if (tau2 > pwHs + 0.5e-4) { txphase(three); delay(timeTN-pwC3a-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); if (tpwrsf<4095.0) {obspwrf(tpwrsf); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY - PWRF_DELAY);} else delay(1.0e-4 - POWER_DELAY); decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - pwHs - 0.5e-4); shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); if (tpwrsf<4095.0) {obspwrf(4095.0); /* POWER_DELAY */ delay(0.50e-4 - POWER_DELAY - PWRF_DELAY);} else delay(0.50e-4 - POWER_DELAY); } else { txphase(three); delay(timeTN - pwC3a - WFG_START_DELAY - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); if (tpwrsf<4095.0) {obspwrf(tpwrsf); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY - PWRF_DELAY);} else delay(1.0e-4 - POWER_DELAY); shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2); obspower(tpwr); if (tpwrsf<4095.0) {obspwrf(4095.0); /* POWER_DELAY */ delay(0.50e-4 - POWER_DELAY - PWRF_DELAY);} else delay(0.50e-4 - POWER_DELAY); } } else { if (tau2 > kappa) { delay(timeTN - pwC3a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > (kappa - pwC3a - WFG_START_DELAY)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(kappa -pwC3a -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - tau2 - pwC3a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa-tau2-pwC3a-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2); } } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0,0.0); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl2, gt1/10.0); else zgradpulse(gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ delay(gstab); rcvron(); statusdelay(C,1.0e-4 ); setreceiver(t12); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR]; /* magic-angle coherence transfer gradients */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ kappa = 5.4e-3, lambda = 2.4e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "biocal". SLP pulse shapes, "offC3" etc are called */ /* directly from your shapelib. */ pwC3 = getval("pwC3"), /*180 degree pulse at Ca(56ppm) null at CO(174ppm) */ pwC3a, /* pwC3a=pwC3, but not set to zero when pwC3=0 */ phshift3, /* phase shift induced on CO by pwC3 ("offC3") pulse */ pwZ, /* the largest of pwC3 and 2.0*pwN */ pwC6, /* 90 degree selective sinc pulse on CO(174ppm) */ pwC8, /* 180 degree selective sinc pulse on CO(174ppm) */ rf3, /* fine power for the pwC3 ("offC3") pulse */ rf6, /* fine power for the pwC6 ("offC6") pulse */ rf8, /* fine power for the pwC8 ("offC8") pulse */ bw, ofs, ppm, /* bandwidth, offset, ppm - temporary Pbox parameters */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf = getval("tpwrsf"), /* fine power for pwHs pulse */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /* rf for WALTZ decoupling */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); {settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; setautocal(); /* activate auto-calibration */ if (autocal[0] == 'n') { /* offC3 - 180 degree pulse on Ca, null at CO 118ppm away */ pwC3a = getval("pwC3a"); rf3 = (compC*4095.0*pwC*2.0)/pwC3a; rf3 = (int) (rf3 + 0.5); /* 90 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ pwC6 = getval("pwC6"); rf6 = (compC*4095.0*pwC*1.69)/pwC6; /* needs 1.69 times more */ rf6 = (int) (rf6 + 0.5); /* power than a square pulse */ /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ pwC8 = getval("pwC8"); rf8 = (compC*4095.0*pwC*2.0*1.65)/pwC8; /* needs 1.65 times more */ rf8 = (int) (rf8 + 0.5); /* power than a square pulse */ /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; /* 7.5 kHz rf */ tpwrd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrd = (int) (tpwrd + 0.5); } else /* if autocal = 'y'(yes), 'q'(quiet), 'r'(read) or 's'(semi) */ { if(FIRST_FID) /* make shapes */ { ppm = getval("dfrq"); bw = 118.0*ppm; ofs = -bw; offC3 = pbox_make("offC3", "square180n", bw, ofs, compC*pwC, pwClvl); offC6 = pbox_make("offC6", "sinc90n", bw, 0.0, compC*pwC, pwClvl); offC8 = pbox_make("offC8", "sinc180n", bw, 0.0, compC*pwC, pwClvl); H2Osinc = pbox_Rsh("H2Osinc", "sinc90", pwHs, 0.0, compH*pw, tpwr); bw = 2.8*7500.0; wz16 = pbox_Dcal("WALTZ16", 2.8*waltzB1, 0.0, compH*pw, tpwr); ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } pwC3a = offC3.pw; rf3 = offC3.pwrf; /* set up parameters */ pwC6 = offC6.pw; rf6 = offC6.pwrf; pwC8 = offC8.pw; rf8 = offC8.pwrf; pwHs = H2Osinc.pw; tpwrs = H2Osinc.pwr-1.0; /* 1dB correction applied */ tpwrd = wz16.pwr; pwHd = 1.0/wz16.dmf; } if (tpwrsf < 4095.0) tpwrs = tpwrs + 6.0; /* the pwC3 pulse at the middle of t1 */ if (pwC3a > 2.0*pwN) pwZ = pwC3a; else pwZ = 2.0*pwN; phshift3=0.0; if(pwC3 > 0) phshift3 = 48.0; /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni2*1/(sw2) > timeTN - pwC3a - WFG3_START_DELAY) { printf(" ni2 is too big. Make ni2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dpwr2 > 50 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 50.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( (pwN > 100.0e-6) && (ni>1 || ni2>1)) { printf(" pwN too long! recheck value "); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } /* Set up f1180 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } 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(t3,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(t8,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); if (tpwrsf < 4095.0) obspwrf(tpwrsf); obspower(tpwrs); txphase(two); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 0.0); obspower(tpwrd); if (tpwrsf < 4095.0) obspwrf(4095.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); txphase(one); delay(kappa - pwHd - 2.0e-6 - PRG_START_DELAY); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); decphase(zero); dec2phase(zero); decpwrf(rf8); delay(timeTN - kappa - WFG3_START_DELAY); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(t3); decpwrf(rf6); delay(timeTN); dec2rgpulse(pwN, zero, 0.0, 0.0); xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); /* xxxxxxxxxxxxxxxxxxxxxx 13CO EVOLUTION xxxxxxxxxxxxxxxxxx */ decshaped_pulse("offC6", pwC6, t3, 1.0e-6, 0.0); decphase(zero); if((tau1 - 2.0*pwC6/3.14 - WFG3_START_DELAY - 0.5*pwZ - POWER_DELAY) > SAPS_DELAY) { decpwrf(rf3); delay(tau1 - 2.0*pwC6/3.14 - WFG3_START_DELAY - 0.5*pwZ - POWER_DELAY); sim3shaped_pulse("", "offC3", "", 0.0, pwC3a, 2.0*pwN, zero, zero, zero,0.0,0.0); initval(phshift3, v3); decstepsize(1.0); dcplrphase(v3); /* SAPS_DELAY */ decpwrf(rf6); decphase(t5); delay(tau1 - 2.0*pwC6/3.14 - SAPS_DELAY - 0.5*pwZ- WFG3_START_DELAY - POWER_DELAY); } else { decpwrf(rf8); decshaped_pulse("offC8", pwC8, zero, 2.0e-6, 0.0); decpwrf(rf6); decphase(t5); delay(2.0e-6); } decshaped_pulse("offC6", pwC6, t5, 0.5e-6, 1.0e-6); xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0); /* xxxxxxxxxxxxxxxxxx N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ dec2phase(t8); zgradpulse(gzlvl4, gt4); dcplrphase(zero); obspower(tpwr); delay(2.0e-4); dec2rgpulse(pwN, t8, 0.0, 0.0); decpwrf(rf3); decphase(zero); delay((timeTN - tau2 - pwC3a)/2.0); decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); dec2phase(t9); decpwrf(rf8); delay((timeTN - tau2 - pwC3a)/2.0); /* WFG3_START_DELAY */ /* sim3shaped_pulse("", "offC8", "", 2.0*pw, pwC8, 2.0*pwN, zero, zero, t9, 0.0, 0.0); */ sim3shaped_pulse("", "offC8", "",0.0,pwC8,2.0*pwN,zero,zero,t9,0.0,0.0); dec2phase(t10); decpwrf(rf3); delay((timeTN + tau2 - pwC3a)/2.0); decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay((timeTN + tau2 - pwC3a)/2.0 - 2.75e-3 - 2.0*pw); rgpulse(2.0*pw,zero, 0.0, 0.0); if (mag_flg[A]=='y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1, gt1); delay(4.0*GRADIENT_DELAY); } txphase(t4); delay(2.75e-3 - gt1 - 6.0*GRADIENT_DELAY); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(lambda - 0.65*pwN - gt5); rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0,0.0); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ rcvron(); statusdelay(C,1.0e-4); setreceiver(t12); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ wudec[MAXSTR], /* automatic low power C-13 WURST decoupling */ C13refoc[MAXSTR], /* adiabatic C13 pulse in middle of t1*/ NH2only[MAXSTR]; /* spectrum of only NH2 groups */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ PRexp, /* projection-reconstruction flag */ ni2 = getval("ni2"); double csa, sna, tau1, tau2, /* t1 and t2 delays */ bw, ofs, ppm, nst, /* bandwidth, offset, ppm, # of steps */ mix = getval("mix"), /* NOESY mix time */ tNH = 1.0/(4.0*getval("JNH")), /* 1/4J N15 evolution delay */ pra = M_PI*getval("pra")/180.0, /* projection angle */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), /* adjust for C13 amplifier compression */ pwC180 = 0.001, /* duration of C13 180 degree adiabatic pulse */ compH = getval("compH"), /* adjust for H1 amplifier compression */ tpwrsf = getval("tpwrsf"), /* fine power adjustment for flipback pulse */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrs = 0.0, /* power for the pwHs ("H2Osinc") pulse */ xdel = 2.0*GRADIENT_DELAY + POWER_DELAY, /* xtra delay */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gzcal=getval("gzcal"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl6 = getval("gzlvl6"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"); getstr("f1180",f1180); getstr("mag_flg",mag_flg); getstr("f2180",f2180); getstr("C13refoc",C13refoc); getstr("NH2only",NH2only); getstr("wudec",wudec); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t3,4,phi3); settable(t9,16,phi9); settable(t10,1,phi10); settable(t11,8,rec); /* MAKE PBOX SHAPES */ if((FIRST_FID) && ((C13refoc[A]=='y') || (wudec[A]=='y'))) /* call Pbox */ { ppm = getval("dfrq"); ofs = 0.0; nst = 1000; /* nst - number of steps */ bw = pwC*compC; if(bw > 0.0) { bw = 0.1/bw; /* maximum bandwidth */ bw = pwC180*bw*bw; } else bw = 200.0*ppm; if(C13refoc[A]=='y') adC180 = pbox_makeA("adC180", "wurst2i", bw, pwC180, ofs, compC*pwC, pwClvl, nst); if(wudec[A]=='y') wuCdec_lr = pbox_Adec("wurstC_lr", "CAWURST", bw, 0.01, ofs, compC*pwC, pwClvl); } if(pwHs > 1.0e-5) /* selective H20 one-lobe sinc pulse */ { if(FIRST_FID) H2Osinc = pbox_Rsh("H2Osinc", "sinc90", pwHs, 0.0, compH*pw, tpwr); tpwrs = H2Osinc.pwr; pwHs = H2Osinc.pw; } /* CHECK VALIDITY OF PARAMETER RANGES */ if ((mix - gt4 - gt5) < 0.0 ) { text_error("mix is too small. Make mix equal to %f or more.\n",(gt4 + gt5)); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 20.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t1,1,4); if (phase2 == 1) { tsadd(t10,2,4); icosel = 1; } else icosel = -1; /* set up Projection-Reconstruction experiment */ PRexp = 0; if((pra > 0.0) && (pra < 90.0)) PRexp = 1; csa = cos(pra); sna = sin(pra); if(PRexp) { tau1 = d2*csa; tau2 = d2*sna; } else { tau1 = d2; tau2 = d3; } if((f1180[A] == 'y') && (ni > 1.0)) /* Set up f1180, tau1 = t1 */ tau1 += 1.0/(2.0*sw1); tau1 = tau1/2.0; if((PRexp == 0) && (f2180[A] == 'y') && (ni2 > 1.0)) /* Set up f2180 tau2 = t2 */ tau2 += 1.0/(2.0*sw2); tau2 = tau2/2.0; if(tau1 < 0.2e-6) tau1 = 0.0; if(tau2 < 0.2e-6) tau2 = 0.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(t11,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } /* Correct inverted signals for NH2 only spectra */ if(NH2only[A]=='y') { tsadd(t3,2,4); } if(wudec[A]=='y') xdel = xdel + POWER_DELAY + PWRF_DELAY + PRG_START_DELAY; /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(4095.0); txphase(zero); dec2phase(zero); delay(d1); dec2rgpulse(pwN, zero, 0.0, 0.0); /* destroy N15 and C13 magnetization */ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); txphase(t1); decphase(zero); dec2phase(zero); delay(5.0e-4); rcvroff(); rgpulse(pw, t1, 50.0e-6, 0.0); /* 1H pulse excitation */ txphase(zero); if (tau1 > (2.0*GRADIENT_DELAY + pwN + 0.64*pw + 5.0*SAPS_DELAY)) { if (tau1>0.002) { zgradpulse(gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw) - SAPS_DELAY); } else { delay(tau1-pwN-0.64*pw); } if (C13refoc[A]=='y') sim3pulse(0.0, 2.0*pwC, 2.0*pwN, zero, zero, zero, 0.0, 0.0); else dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); if (tau1>0.002) { zgradpulse(-1.0*gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw) - SAPS_DELAY); } else { delay(tau1-pwN-0.64*pw); } } else if (tau1 > (0.64*pw + 0.5*SAPS_DELAY)) delay(2.0*tau1 - 2.0*0.64*pw - SAPS_DELAY ); rgpulse(pw, zero, 0.0, 0.0); delay(mix - gt4 - gt5 -gstab -200.0e-6); dec2rgpulse(pwN, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); delay(gstab); rgpulse(pw, zero, 200.0e-6,0.0); /* HSQC begins */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(tNH - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(tNH - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(two); if (tpwrsf<4095.0) { obspower(tpwrs+6.0); obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); obspwrf(4095.0); } else { obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); } zgradpulse(gzlvl3, gt3); dec2phase(t3); decpwrf(adC180.pwrf); delay(2.0e-4); dec2rgpulse(pwN, t3, 0.0, 0.0); decphase(zero); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ txphase(zero); dec2phase(t9); if (NH2only[A]=='y') { delay(tau2); /* optional sech/tanh pulse in middle of t2 */ if (C13refoc[A]=='y') /* WFG_START_DELAY */ { decshaped_pulse("adC180", pwC180, zero, 0.0, 0.0); delay(tNH - 1.0e-3 - WFG_START_DELAY - 2.0*pw); } else { delay(tNH - 2.0*pw);} rgpulse(2.0*pw, zero, 0.0, 0.0); if (tNH < gt1 + 1.99e-4) delay(gt1 + 1.99e-4 - tNH); delay(tau2); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); dec2phase(t10); if (tNH > gt1 + 1.99e-4) delay(tNH - gt1 - 2.0*GRADIENT_DELAY); else delay(1.99e-4 - 2.0*GRADIENT_DELAY); } else { if ( (C13refoc[A]=='y') && (tau2 > 0.5e-3 + WFG2_START_DELAY) ) { delay(tau2 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ simshaped_pulse("", "adC180", 2.0*pw, pwC180, zero, zero, 0.0, 0.0); delay(tau2 - 0.5e-3); delay(gt1 + 2.0e-4);} else { delay(tau2); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(gt1 + 2.0e-4 - 2.0*pw); delay(tau2); } dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); dec2phase(t10); delay(2.0e-4 - 2.0*GRADIENT_DELAY); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ sim3pulse(pw, 0.0, pwN, zero, zero, t10, 0.0, 0.0); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(tNH - 1.5*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(one); delay(tNH - 1.5*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, one, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(1.5*gzlvl5, gt5); delay(tNH - 1.5*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(1.5*gzlvl5, gt5); delay(tNH - pwN - 0.5*pw - gt5); rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4+ gstab - 0.5*pw + xdel); rgpulse(2.0*pw, zero, 0.0, rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); delay(gstab + rof2); setreceiver(t11); rcvron(); statusdelay(C,1.0e-4-rof1); if(wudec[A]=='y') { decpwrf(4095.0); decpower(wuCdec_lr.pwr+3.0); decprgon("wurstC_lr", 1.0/wuCdec_lr.dmf, wuCdec_lr.dres); decon(); } }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ TROSY[MAXSTR], /* do TROSY on N15 and H1 */ h1dec[MAXSTR], /* Flag to waltz-decouple of H1 for t1*/ CT_c[MAXSTR]; /* Flag to constant time evolution for C13*/ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ timeTC = getval("timeTC"), /* constant time for 13C evolution */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ kappa = 5.4e-3, lambda = 2.4e-3, taud = 1.7e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* 90 degree pulse at Ca (56ppm), first off-resonance null at CO (174ppm) */ pwC1, /* 90 degree pulse length on C13 at rf1 */ rf1, /* fine power for 4.7 kHz rf for 600MHz magnet */ /* 180 degree pulse at Ca (56ppm), first off-resonance null at CO(174ppm) */ pwC2, /* 180 degree pulse length at rf2 */ rf2, /* fine power for 10.5 kHz rf for 600MHz magnet */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "BPcal". SLP pulse shapes, "offC9" etc are called */ /* directly from your shapelib. */ pwC9 = getval("pwC9"), /*180 degree pulse at CO(174ppm) null at Ca(56ppm) */ pwC9a = getval("pwC9a"), /* pwC9a=pwC9, but not set to zero when pwC9=0 */ phshift9, /* phase shift induced on Ca by pwC9 ("offC9") pulse */ pwZ, /* the largest of pwC9 and 2.0*pwN */ pwZ1, /* the larger of pwC9a and 2.0*pwN for 1D experiments */ rf9, /* fine power for the pwC9 ("offC9") pulse */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /* rf for WALTZ decoupling */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"), gzlvl7 = getval("gzlvl7"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("TROSY",TROSY); getstr("h1dec",h1dec); getstr("CT_c",CT_c); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); if (TROSY[A]=='y') {settable(t8,1,phy); settable(t9,1,phx); settable(t10,1,phy); settable(t11,1,phx); settable(t12,4,recT);} else {settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 90 degree pulse on Ca, null at CO 118ppm away */ pwC1 = sqrt(15.0)/(4.0*118.0*dfrq); rf1 = (compC*4095.0*pwC)/pwC1; rf1 = (int) (rf1 + 0.5); /* 180 degree pulse on Ca, null at CO 118ppm away */ pwC2 = sqrt(3.0)/(2.0*118.0*dfrq); rf2 = (4095.0*compC*pwC*2.0)/pwC2; rf2 = (int) (rf2 + 0.5); if( rf2 > 4095.0 ) {printf("increase pwClvl so that C13 90 < 24us*(600/sfrq)"); psg_abort(1);} /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf9 = (compC*4095.0*pwC*2.0*1.65)/pwC9a; /* needs 1.65 times more */ rf9 = (int) (rf9 + 0.5); /* power than a square pulse */ /* the pwC9 pulse at the middle of t1 */ if ((ni2 > 0.0) && (ni == 1.0)) ni = 0.0; if (pwC9a > 2.0*pwN) pwZ = pwC9a; else pwZ = 2.0*pwN; if ((pwC9==0.0) && (pwC9a>2.0*pwN)) pwZ1=pwC9a-2.0*pwN; else pwZ1=0.0; if (ni > 1) pwC9 = pwC9a; if ( pwC9 > 0 ) phshift9 = 320.0; else phshift9 = 0.0; /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrd = (int) (tpwrd + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni*1/(sw1) > timeTC) { printf(" ni is too big. Make ni less than %d . Check by using dps and make sure no ? appears for d2=t1max (ni/sw1).\n", ((int)((timeTC)*2.0*sw1-7))); psg_abort(1); } if ( 0.5*ni2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" ni2 is too big. Make ni2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dm3[A] == 'y' || dm3[C] == 'y' ) { printf("incorrect dec3 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1);} if ( dpwr2 > 46 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 20.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( pwN > 100.0e-6 ) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A]=='y' && dm2[C] == 'y') { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (TROSY[A]=='y') { if (phase2 == 2) icosel = +1; else {tsadd(t4,2,4); tsadd(t10,2,4); icosel = -1;} } else { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } 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(t3,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(t8,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); if (TROSY[A]=='y') { txphase(two); obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,5.0e-4,0.0); obspower(tpwr); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); delay(0.5*kappa - 2.0*pw); rgpulse(2.0*pw, two, 0.0, 0.0); dec2phase(zero); decpwrf(rf2); delay(timeTN - 0.5*kappa); } else { txphase(zero); obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,5.0e-4,0.0); obspower(tpwrd); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); txphase(one); delay(kappa - pwHd - 2.0e-6 - PRG_START_DELAY); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); decphase(zero); dec2phase(zero); decpwrf(rf2); delay(timeTN - kappa); } sim3pulse(0.0, pwC2, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(t3); decpwrf(rf1); delay(timeTN); dec2rgpulse(pwN, zero, 0.0, 0.0); if (TROSY[A]=='n') { xmtroff(); obsprgoff(); if (h1dec[0]=='y') rgpulse(pwHd,three,2.0e-6,0.0); else rgpulse(pwHd,one,2.0e-6,0.0); } zgradpulse(gzlvl3, gt3); txphase(one); delay(2.0e-4); if(h1dec[0]=='y') { obspower(tpwrd); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); } if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } decrgpulse(pwC1,t3,0.0,0.0); decphase(zero); /* xxxxxxxxxxxxxxxxxxxxxx 13Ca EVOLUTION xxxxxxxxxxxxxxxxxx */ if (CT_c[0]=='n') { if ((ni>1.0) && (tau1>0.0)) /* total 13C evolution equals d2 exactly */ { /* 2.0*pwC1/PI compensates for evolution at 64% rate duting pwC1 */ decpwrf(rf9); if(tau1 - 2.0*pwC1/PI - WFG3_START_DELAY - 0.5*pwZ > 0.0) { delay(tau1 - 2.0*pwC1/PI - WFG3_START_DELAY - 0.5*pwZ); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC9", "", 0.0, pwC9a, 2.0*pwN, zero, zero, zero, 0.0, 0.0); initval(phshift9, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ delay(tau1 - 2.0*pwC1/PI - SAPS_DELAY - 0.5*pwZ - 2.0e-6); } else { initval(180.0, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ delay(2.0*tau1 - 4.0*pwC1/PI - SAPS_DELAY - 2.0e-6); } } else if (ni==1.0) /* special 1D check of pwC9 phase enabled when ni=1 */ { decpwrf(rf9); delay(10.0e-6 + SAPS_DELAY + 0.5*pwZ1); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC9", "", 0.0, pwC9, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); initval(phshift9, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ delay(10.0e-6 + WFG3_START_DELAY + 0.5*pwZ1); } else /* 13Ca evolution refocused for 1st increment */ { decpwrf(rf2); decrgpulse(pwC2, zero, 2.0e-6, 0.0); } } else { /* %%%%%%%%%%STARTING 13Ca Constant Time EVOLUTION %%%%%%%%%%%%%%%%%%*/ decpwrf(rf9); if(tau1 - 2.0*pwC1/PI - WFG_START_DELAY -POWER_DELAY> 0.0) { delay(tau1 -2.0*pwC1/PI -POWER_DELAY -WFG_START_DELAY); sim3shaped_pulse("","offC9","",0.0,pwC9a, 2.0*pwN, zero, zero, zero, 0.0, 0.0); } else { sim3shaped_pulse("","offC9","",0.0,pwC9a, 2.0*pwN, zero, zero, zero, 0.0, 0.0); } if (h1dec[0]=='n'){ delay(taud-POWER_DELAY); obspower(tpwr); rgpulse(2.0*pw,zero,0.0,0.0); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { delay(timeTC -pwZ -2.0*WFG_STOP_DELAY -taud -2.0*pw -1/dmf3 -2.0e-6 -202.0e-6 -gt7); setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); } else{ /* Should be forbidden?? */ delay(timeTC -pwZ -WFG_STOP_DELAY -taud -2.0*pw -202.0e-6 -gt7); } } else { /* hdec=y */ if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { delay(timeTC -pwZ -2.0*WFG_STOP_DELAY -PRG_STOP_DELAY -pwHd -1/dmf3 -4.0e-6-202.0e-6-gt7); xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,2.0e-6); setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); } else{ delay(timeTC -pwZ -WFG_STOP_DELAY -PRG_STOP_DELAY -4.0e-6 -202.0e-6 -gt7); xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,2.0e-6); } } delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(200.0e-6-POWER_DELAY); decpwrf(rf2); decrgpulse(pwC2, zero, 0.0, 0.0); /* 13Ca 180 degree pulse */ delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(200.0e-6); if (h1dec[0]=='n') { if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); delay(timeTC-tau1-202.0e-6-gt7-2.0*WFG_START_DELAY-1/dmf3- 2.0*POWER_DELAY-pwC9a-2.0e-6-WFG_STOP_DELAY-SAPS_DELAY); } else{ /* Should be forbidden??? */ delay(timeTC -tau1 - 202.0e-6 - gt7-2.0*POWER_DELAY-pwC9a- WFG_START_DELAY-WFG_STOP_DELAY-2.0e-6-SAPS_DELAY); } } else { if (dm3[B]=='y') { rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); delay(timeTC-tau1-202.0e-6-gt7-2.0*WFG_START_DELAY-4.0e-6-1/dmf3-pwHd- PRG_START_DELAY-2.0*POWER_DELAY-pwC9a-2.0e-6-SAPS_DELAY); } else { delay(2.0e-6); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); delay(timeTC-tau1-202.0e-6-gt7-4.0e-6-pwHd-PRG_START_DELAY- 2.0*POWER_DELAY-pwC9a-WFG_START_DELAY-WFG_STOP_DELAY-SAPS_DELAY); } } decpwrf(rf9); decshaped_pulse("offC9",pwC9a,zero,0.0,0.0); initval(phshift9, v9); decstepsize(1.0); dcplrphase(v9); /* SAPS_DELAY */ } /* %%%%%%%%%%%%%%%%%%ENDING 13Ca Constant Time EVOLUTION %%%%%%%%%%%%%%%%%%*/ decphase(t5); decpwrf(rf1); decrgpulse(pwC1, t5, 2.0e-6, 0.0); dec2phase(t8); dcplrphase(zero); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } if (h1dec[0]=='y') { xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0); txphase(one); } delay(2.0e-6); zgradpulse(gzlvl4, gt4); delay(2.0e-4); if (TROSY[A]=='n') { rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); } /* %%%%%%%%%%%%%%%%%%STARTING N15 Constant Time Evolution %%%%%%%%%%%%%%%%%%*/ dec2rgpulse(pwN, t8, 0.0, 0.0); decphase(zero); dec2phase(t9); decpwrf(rf2); delay(timeTN - tau2); sim3pulse(0.0, pwC2, 2.0*pwN, zero, zero, t9, 0.0, 0.0); dec2phase(t10); decpwrf(rf9); if (TROSY[A]=='y') { if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.5e-4 + pwHs) { txphase(three); delay(timeTN - pwC9a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC9", pwC9a, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); /* POWER_DELAY */ delay(0.5e-4 - POWER_DELAY); } else if (tau2 > pwHs + 0.5e-4) { txphase(three); delay(timeTN-pwC9a-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC9", pwC9a, zero, 0.0, 0.0); delay(tau2 - pwHs - 0.5e-4); shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); /* POWER_DELAY */ delay(0.5e-4 - POWER_DELAY); } else { txphase(three); delay(timeTN - pwC9a - WFG_START_DELAY - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); /* POWER_DELAY */ delay(0.5e-4 - POWER_DELAY); decshaped_pulse("offC9", pwC9a, zero, 0.0, 0.0); delay(tau2); } } else { if (tau2 > kappa) { delay(timeTN - pwC9a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC9", pwC9a, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > (kappa - pwC9a - WFG_START_DELAY)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); /* WFG_START_DELAY */ decshaped_pulse("offC9", pwC9a, zero, 0.0, 0.0); delay(kappa -pwC9a -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - tau2 - pwC9a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC9", pwC9a, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa-tau2-pwC9a-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC9", pwC9a, zero, 0.0, 0.0); delay(tau2); } } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ delay(gstab); rcvron(); statusdelay(C,1.0e-4 - rof1); if (dm3[B]=='y') lk_sample(); setreceiver(t12); }
void pulsesequence() { /* DECLARE VARIABLES */ char aliph[MAXSTR], /* aliphatic CHn groups only */ arom[MAXSTR], /* aromatic CHn groups only */ wudec[MAXSTR], /* automatic WURST decoupling */ CNrefoc[MAXSTR], /* flag for refocusing 15N during indirect H1 evolution */ SBSUPR[MAXSTR], /* flag for side-band suppression (use 8 step phase cycle) */ f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /* magic angle gradient */ f2180[MAXSTR]; /* Flag to start t2 @ halfdwell */ int icosel, /* used to get n and p type */ PRexp, /* projection-reconstruction flag */ t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double csa, sna, tau1, tau2, /* t1 and t2 delays */ bw, ofs, ppm, pwd, nst, rfst = 0.0, /* fine power level for adiabatic pulse initialized */ slpwr = getval("slpwr"), /* spinlock power level */ slofs = getval("slofs"), /* spinlock offset (in Hz) from carrier frequency */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ compN = getval("compN"), /* adjustment for N15 amplifier compression */ pra = M_PI*getval("pra")/180.0, jch = getval("jch"), /* CH coupling constant */ ni2 = getval("ni2"), pwC = getval("pwC"), /* PW90 for 13C nucleus @ pwClvl */ pwClvl = getval("pwClvl"), /* high power for 13C hard pulses on dec1 */ pwC180 = getval("pwC180"), /* PW180 for 13C nucleus in INEPT transfers */ pwN = getval("pwN"), /* PW90 for 15N nucleus @ pwNlvl */ pwNlvl = getval("pwNlvl"), /* high power for 15N hard pulses on dec2 */ pwClw=getval("pwClw"), pwNlw=getval("pwNlw"), pwZlw=0.0, /* largest of pwNlw and 2*pwClw */ mix = getval("mix"), /* tocsy mix time */ sw1 = getval("sw1"), /* spectral width in t1 (H) */ sw2 = getval("sw2"), /* spectral width in t2 (C) */ gstab = getval("gstab"), /* gradient recovery delay (300 us recom.) */ gsign = 1.0, gzcal = getval("gzcal"), /* dac to G/cm conversion factor */ 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"); /* LOAD VARIABLES */ getstr("aliph",aliph); getstr("arom",arom); getstr("wudec",wudec); getstr("CNrefoc",CNrefoc); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("f2180",f2180); getstr("SBSUPR",SBSUPR); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,8,phi3); settable(t4,4,rec); settable(t5,1,phi5); /* CHECK VALIDITY OF PARAMETER RANGES */ if((dm[A] == 'y' || dm[C] == 'y' )) { printf("incorrect 13C decoupler flags! dm='nnnn' or 'nnny' only "); psg_abort(1); } if((dm2[A] == 'y' || dm2[C] == 'y' )) { printf("incorrect 15N decoupler flags! No decoupling in relax or mix periods "); psg_abort(1); } if( dpwr > 49 ) { 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( 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( slpwr > 49.0 ) { printf("dont fry the probe, spinlock strength too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( gt0 > 15e-3 || gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 ) { printf("gti values < 15e-3\n"); psg_abort(1); } if( gzlvl3*gzlvl4 > 0.0 ) if (phase1 == 2) tsadd(t1,1,4); if (phase2 == 1) {tsadd(t5,2,4); icosel = +1;} else icosel = -1; /* set up Projection-Reconstruction experiment */ PRexp = 0; if((pra > 0.0) && (pra < 90.0)) PRexp = 1; csa = cos(pra); sna = sin(pra); if(PRexp) { tau1 = d2*csa; tau2 = d2*sna; } else { tau1 = d2; tau2 = d3; } if((f1180[A] == 'y') && (ni > 1.0)) /* Set up f1180 tau1 = t1 */ tau1 += 1.0/(2.0*sw1); tau1 = tau1/2.0; if((PRexp == 0) && (f2180[A] == 'y') && (ni2 > 1.0)) /* Set up f2180 tau2 = t2 */ tau2 += 1.0/(2.0*sw2); tau2 = tau2/2.0; if(tau1 < 0.2e-7) tau1 = 2.0e-7; /* 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(t4,2,4); } if(PRexp==0) { if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t4,2,4); } } /* calculate 3db lower power hard pulses for simultaneous CN decoupling during indirect H1 evoluion pwNlw and pwClw should be calculated by the macro that calls the experiment. */ if (CNrefoc[A] == 'y') { if (pwNlw==0.0) pwNlw = compN*pwN*exp(3.0*2.303/20.0); if (pwClw==0.0) pwClw = compC*pwC*exp(3.0*2.303/20.0); if (pwNlw > 2.0*pwClw) pwZlw=pwNlw; else pwZlw=2.0*pwClw; } /* make sure gt3 and gt1 have always opposite sign to help dephasing H2O */ if (gzlvl3*gzlvl1 > 0.0) gsign=-1.0; else gsign=1.0; ppm = getval("dfrq"); ofs = 0.0; nst = 1000; /* number of steps */ if(arom[A]=='y') /* AROMATIC spectrum only */ bw = 40.0*ppm; else if(aliph[A]=='y') /* ALIPHATIC spectrum only */ bw = 80.0*ppm; else { bw = 0.1/(pwC*compC); /* maximum bandwidth */ bw = pwC180*bw*bw; } if(FIRST_FID) { adC180 = pbox_makeA("adC180", "wurst2i", bw, pwC180, ofs, compC*pwC, pwClvl, nst); wuHmix = pbox_Adec("adsl", "amwurst", 0.0, mix, slofs, 0.0, 0.0); pwd = 0.0013; if(wudec[A]=='y') wuCdec = pbox_Adec("wurstC", "WURST40", bw, pwd, ofs, compC*pwC, pwClvl); } rfst = adC180.pwrf; wuHmix.pwr = slpwr; wuHmix.pwrf = 4095.0; /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); presat(); obspower(tpwr); /* Set transmitter power for hard 1H pulses */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 power for decoupling during tau1 */ decpwrf(4095.0); dec2pwrf(4095.0); /* destroy N15 and C13 magnetization */ if (CNrefoc[A] == 'y') dec2rgpulse(pwN, zero, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(gstab); if (CNrefoc[A] == 'y') dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); decphase(zero); dec2phase(zero); rcvroff(); delay(gstab); status(B); rgpulse(pw, t1, rof1 ,rof1); /* 90 deg 1H pulse */ txphase(zero); if (ni > 0) { if ((CNrefoc[A]=='y') && (tau1 > pwZlw +2.0*pw/PI +3.0*SAPS_DELAY +2.0*POWER_DELAY +2.0*rof1)) { decpower(pwClvl-3.0); dec2power(pwNlvl-3.0); delay(tau1 -pwNlw -2.0*pw/PI -3.0*SAPS_DELAY -2.0*POWER_DELAY -2.0*rof1); if (pwNlw > 2.0*pwClw) { dec2rgpulse(pwNlw -2.0*pwClw,zero,rof1,0.0); sim3pulse(0.0,pwClw,pwClw,zero,zero,zero,0.0,0.0); decphase(one); sim3pulse(0.0,2*pwClw,2*pwClw,zero,one,zero,0.0,0.0); decphase(zero); sim3pulse(0.0,pwClw,pwClw,zero,zero,zero,0.0,0.0); dec2rgpulse(pwNlw -2.0*pwClw,zero,0.0,rof1); } else { decrgpulse(2.0*pwClw-pwNlw,zero,rof1,0.0); sim3pulse(0.0,pwNlw-pwClw,pwNlw-pwClw,zero,zero,zero,0.0,0.0); decphase(one); sim3pulse(0.0,2.0*pwClw,2.0*pwClw,zero,one,zero,0.0,0.0); decphase(zero); sim3pulse(0.0,pwNlw-pwClw,pwNlw-pwClw,zero,zero,zero,0.0,0.0); decrgpulse(2.0*pwClw-pwNlw,zero,0.0,rof1); } decpower(pwClvl); dec2power(pwNlvl); delay(tau1 -pwZlw -2.0*pw/PI -SAPS_DELAY -2.0*POWER_DELAY -2.0*rof1); } else if (tau1 > 2.0*pwC +2.0*pw/PI +3.0*SAPS_DELAY +2.0*rof1) { delay(tau1 -2.0*pwC -2.0*pw/PI -3.0*SAPS_DELAY -2.0*rof1); decrgpulse(pwC, zero, rof1, 0.0); decphase(one); decrgpulse(2.0*pwC, one, 0.0, 0.0); decphase(zero); decrgpulse(pwC, zero, 0.0, rof1); delay(tau1 -2.0*pwC -2.0*pw/PI -SAPS_DELAY -2.0*rof1); } else if (tau1 > 2.0*pw/PI +2.0*SAPS_DELAY +rof1) delay(2.0*tau1 -4.0*pw/PI -2.0*SAPS_DELAY -2.0*rof1); } rgpulse(pw, zero, rof1, rof1); /* 2nd 1H 90 pulse */ status(C); zgradpulse(gzlvl0,gt0); delay(gstab); obspower(slpwr); xmtron(); obsprgon(wuHmix.name, 1.0/wuHmix.dmf, wuHmix.dres); delay(mix); obsprgoff(); xmtroff(); decrgpulse(pwC,zero,2.0e-6,2.0e-6); zgradpulse(-gzlvl0,gt0); obspower(tpwr); decpwrf(rfst); /* fine power for inversion pulse */ delay(gstab); /* FIRST HSQC INEPT TRANSFER */ rgpulse(pw,zero,0.0,0.0); zgradpulse(gzlvl4, gt4); delay(1/(4.0*jch) -gt4 -2.0*GRADIENT_DELAY -WFG2_START_DELAY -pwC180*0.45); simshaped_pulse("","adC180",2*pw,pwC180,zero,zero,0.0,0.0); decphase(zero); zgradpulse(gzlvl4, gt4); decpwrf(4095.0); txphase(one); delay(1/(4.0*jch) -gt4 -2.0*GRADIENT_DELAY -pwC180*0.45 -PWRF_DELAY -SAPS_DELAY); rgpulse(pw,one,0.0,0.0); zgradpulse(gsign*gzlvl3, gt3); txphase(zero); delay(gstab); /* C13 EVOLUTION */ decrgpulse(pwC,t2,0.0,0.0); delay(tau2); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau2); decphase(zero); delay(gt1 +2.0*GRADIENT_DELAY +gstab -2.0*pw -SAPS_DELAY); decrgpulse(2*pwC,zero,0.0,0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); decphase(t5); delay(gstab); decrgpulse(pwC,t5,0.0,0.0); delay(pw); rgpulse(pw,zero,0.0,0.0); zgradpulse(gzlvl5, gt5); decphase(zero); delay(1/(8.0*jch) -gt5 -SAPS_DELAY -2.0*GRADIENT_DELAY); /* d3 = 1/8*Jch */ decrgpulse(2.0*pwC,zero,0.0,2.0e-6); rgpulse(2.0*pw,zero,0.0,0.0); zgradpulse(gzlvl5, gt5); decphase(one); txphase(one); delay(1/(8.0*jch) -gt5 -2.0*SAPS_DELAY -2.0*GRADIENT_DELAY); /* d3 = 1/8*Jch */ delay(pwC); decrgpulse(pwC,one,0.0,2.0e-6); rgpulse(pw,one,0.0,0.0); zgradpulse(gzlvl6, gt6); decpwrf(rfst); /* fine power for inversion pulse */ decphase(zero); txphase(zero); delay(1/(4.0*jch) -gt6 -pwC180*0.45 -PWRF_DELAY -WFG2_START_DELAY -2.0*SAPS_DELAY -2.0*GRADIENT_DELAY); /* d2 = 1/4*Jch */ simshaped_pulse("","adC180",2*pw,pwC180,zero,zero,0.0,0.0); decphase(zero); zgradpulse(gzlvl6, gt6); decpwrf(4095.0); delay(1/(4.0*jch) -gt6 -pwC180*0.45 -PWRF_DELAY -2.0*GRADIENT_DELAY); /* d2 = 1/4*Jch */ rgpulse(pw,zero,0.0,0.0); if (SBSUPR[A]=='y') delay(gt2 +gstab +2.0*GRADIENT_DELAY +2.0*pwC +SAPS_DELAY +rof2 +POWER_DELAY); else delay(gt2 +gstab +2.0*GRADIENT_DELAY +POWER_DELAY); rgpulse(2*pw,zero,0.0,0.0); if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt2); else zgradpulse(icosel*gzlvl2, gt2); delay(gstab); if (SBSUPR[A]=='y') { decrgpulse(pwC,zero,0.0,0.0); decphase(t3); decrgpulse(pwC,t3,0.0,rof2); } setreceiver(t4); rcvron(); if ((wudec[A]=='y') && (dm[D] == 'y')) { decpower(wuCdec.pwr+3.0); decprgon("wurstC", 1.0/wuCdec.dmf, wuCdec.dres); decon(); } else { decpower(dpwr); status(D); } }
pulsesequence() { char f1180[MAXSTR], f2180[MAXSTR], f3180[MAXSTR], mag_flg[MAXSTR]; int phase, icosel, t1_counter, t2_counter, t3_counter; double pwClvl, pwC, rf0 = 4095, rfst, compC = getval("compC"), tpwrs, pwHs = getval("pwHs"), compH = getval("compH"), pwNlvl, pwN, tau1, tau2, tau3, tauch, /* 3.4 ms */ taunh, /* 2.4 ms */ mix, tofh, dofcaco, /* ~120 ppm */ gt0, gzlvl0, gt1,gzlvl1, gzlvl2, gzcal = getval("gzcal"), gstab = getval("gstab"), gt3,gzlvl3, gt4,gzlvl4, gt5,gzlvl5, gt6,gzlvl6, gt7,gzlvl7, gt8, gzlvl8, gt9, gzlvl9; /* LOAD VARIABLES */ getstr("f1180",f1180); getstr("f2180",f2180); getstr("f3180",f3180); getstr("mag_flg", mag_flg); pwClvl = getval("pwClvl"); pwC = getval("pwC"); pwNlvl = getval("pwNlvl"); pwN = getval("pwN"); mix = getval("mix"); tauch = getval("tauch"); taunh = getval("taunh"); sw1 = getval("sw1"); sw2 = getval("sw2"); sw3 = getval("sw3"); phase = (int) (getval("phase") + 0.5); phase2 = (int) (getval("phase2") + 0.5); phase3 = (int) (getval("phase3") + 0.5); gt0 = getval("gt0"); gt1 = getval("gt1"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); 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"); gzlvl9 = getval("gzlvl9"); setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { tofh = getval("tofh"); dofcaco = getval("dofcaco"); /* ~120 ppm */ /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ rfst = (compC*4095.0*pwC*4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)); rfst = (int) (rfst + 0.5); if (1.0/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); ofs = 0.0; pws = 0.001; /* 1 ms long pulse */ bw = 200.0*ppm; nst = 1000; /* nst - number of steps */ stC200 = pbox_makeA("stC200", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); ofs = getval("tof") - 1.75*getval("sfrq"); pws = getval("dof") + 85.0*ppm; } rfst = stC200.pwrf; tofh = ofs; dofcaco = pws; } /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); tpwrs = (int)(tpwrs+0.5); /* check validity of parameter range */ if((dm[A] == 'y' || dm[C] == 'y')) { printf("incorrect Dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect Dec2 decoupler flags! "); psg_abort(1); } if ((dpwr > 50) || (dpwr2 > 50)) { printf("don't fry the probe, dpwr too high! "); psg_abort(1); } /* Load phase cycling variables */ settable(t1, 4, phi1); settable(t2, 2, phi2); settable(t3, 1, phi3); settable(t4, 8, phi4); settable(t5, 1, phi5); settable(t11, 8, rec_1); /* Phase incrementation for hypercomplex data */ if ( phase == 2 ) { tsadd(t1,1,4); } if ( phase2 == 2 ) { tsadd(t2,1,4); } if ( phase3 == 1 ) { tsadd(t5,2,4); icosel = 1; } else icosel = -1; /* calculate modification to phases based on current t2 values to achieve 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(t11,2,4); } if(ix == 1) d3_init = d3; t2_counter = (int)((d3-d3_init)*sw2 + 0.5); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t11,2,4); } if(ix == 1) d4_init = d4; t3_counter = (int)((d4-d4_init)*sw3 + 0.5); if(t3_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } /* set up so that get (90, -180) phase corrects in F1 if f1180 flag is 'y' */ tau1 = d2; if(f1180[A] == 'y') { tau1 += (1.0/(2.0*sw1)); } if (tau1 < 0.2e-6) tau1 = 0.0; tau1 = tau1/2.0; /* set up so that get (90, -180) phase corrects in F2 if f2180 flag is 'y' */ tau2 = d3 - (4.0*pwC/PI + 2.0*pw + 2.0e-6); if (dm[B] == 'y') { tau2 = tau2 - (2.0*POWER_DELAY + PRG_START_DELAY + PRG_STOP_DELAY); } if(f2180[A] == 'y') { tau2 += (1.0/(2.0*sw2)); } if (tau2 < 0.2e-6) tau2 = 0.0; tau2 = tau2/2.0; /* set up so that get (90, -180) phase corrects in F3 if f3180 flag is 'y' */ tau3 = d4; if(f3180[A] == 'y') { tau3 += (1.0/(2.0*sw3)); } if (tau3 < 0.2e-6) tau3 = 0.0; tau3 = tau3/2.0; initval(315.0, v7); obsstepsize(1.0); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); delay(10.0e-6); obspower(tpwr); decpower(pwClvl); decpwrf(rf0); dec2power(pwNlvl); obsoffset(tofh); decoffset(dof); dec2offset(dof2); txphase(t1); xmtrphase(v7); delay(d1); if (gt0 > 0.2e-6) { decrgpulse(pwC,zero,2.0e-6,0.0); dec2rgpulse(pwN,zero,2.0e-6,0.0); zgradpulse(gzlvl0,gt0); delay(1.0e-3); } decphase(t2); rgpulse(pw,t1,2.0e-6,0.0); xmtrphase(zero); zgradpulse(gzlvl3,gt3); delay(tauch - gt3); decrgpulse(pwC,t2,2.0e-6,0.0); status(B); decpower(dpwr); delay(tau2); rgpulse(2.0*pw,t1,0.0,0.0); decphase(zero); if (tau2 > 2.0*pwN) { dec2rgpulse(2.0*pwN,zero,0.0,0.0); delay(tau2 - 2.0*pwN); } else delay(tau2); status(A); decpower(pwClvl); decrgpulse(pwC,zero, 2.0e-6,2.0e-6); txphase(zero); delay(tauch + tau1 + SAPS_DELAY - gt3 - 4.0*pwC - 500.0e-6); zgradpulse(gzlvl3,gt3); delay(500.0e-6); decrgpulse(pwC,zero,0.0, 0.0); decphase(one); decrgpulse(2.0*pwC, one, 0.2e-6, 0.0); decphase(zero); decrgpulse(pwC, zero, 0.2e-6, 0.0); delay(tau1); rgpulse(pw,zero,0.0,0.0); delay(mix - gt4 - gt5 - pwN - 2.0e-3); obsoffset(tof); zgradpulse(gzlvl4,gt4); delay(1.0e-3); sim3pulse((double)0.0,pwC,pwN,zero,zero,zero,0.0,2.0e-6); zgradpulse(gzlvl5,gt5); delay(1.0e-3); rgpulse(pw,zero,0.0,2.0e-6); zgradpulse(gzlvl6,gt6); delay(taunh - gt6 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0,2*pwN,zero,zero,zero,0.0,0.0); delay(taunh - gt6 - 500.0e-6); zgradpulse(gzlvl6,gt6); txphase(one); delay(500.0e-6); rgpulse(pw,one,0.0,0.0); txphase(two); obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 2.0e-6); obspower(tpwr); zgradpulse(gzlvl7,gt7); dec2phase(t3); decoffset(dofcaco); decpwrf(rfst); delay(200.0e-6); dec2rgpulse(pwN,t3,0.0,0.0); dec2phase(t4); delay(tau3); rgpulse(2.0*pw, zero, 0.0, 0.0); decshaped_pulse("stC200", 1.0e-3, zero, 0.0, 0.0); delay(tau3); delay(gt1 + 202.0e-6 - 1.0e-3 - 2.0*pw); dec2rgpulse(2.0*pwN, t4, 0.0, 2.0e-6); dec2phase(t5); if(mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1, gt1); delay(4.0*GRADIENT_DELAY); } delay(200.0e-6 + WFG_START_DELAY + WFG_STOP_DELAY - 6.0*GRADIENT_DELAY); sim3pulse(pw, 0.0, pwN, zero, zero, t5, 0.0, 2.0e-6); dec2phase(zero); zgradpulse(gzlvl8, gt8); delay(taunh - gt8); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(taunh - gt8 - 400.0e-6); zgradpulse(gzlvl8, gt8); txphase(one); dec2phase(one); delay(400.0e-6); sim3pulse(pw, 0.0, pwN, one, zero, one, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl9, gt9); delay(taunh - gt9); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl9, gt9); delay(taunh - gt9); rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + gstab - 0.5*pw + 6.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, 0.0); if(mag_flg[A] == 'y') { magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); } else { zgradpulse(icosel*gzlvl2, gt1/10.0); delay(4.0*GRADIENT_DELAY); } dec2power(dpwr2); delay(gstab); status(C); setreceiver(t11); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni = getval("ni"), ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ t1a, /* time increments for first dimension */ t1b, t1c, tauCH = getval("tauCH"), /* 1/4J delay for CH */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ timeAB = getval("timeAB"), /* set timeAB=1.9e-3 to get only Ha */ /* set timeAB=3.3e-3 to maximize Hb */ /* set timeAB=2.8e-3 for both Ha/Hb */ zeta = 3.0e-3, eta = 4.6e-3, theta = 14.0e-3, kappa = 5.4e-3, lambda = 2.4e-3, sheila, /* to transfer J evolution time hyperbolically into tau1 */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* 90 degree pulse at Cab(46ppm), first off-resonance null at CO (174ppm) */ pwC1, /* 90 degree pulse length on C13 at rf1 */ rf1, /* fine power for 5.1 kHz rf for 600MHz magnet */ /* 180 degree pulse at Cab(46ppm), first off-resonance null at CO(174ppm) */ pwC2, /* 180 degree pulse length at rf2 */ rf2, /* fine power for 11.4 kHz rf for 600MHz magnet */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "proteincal". SLP pulse shapes, "offC4" etc are called */ /* directly from your shapelib. */ pwC4 = getval("pwC4"), /*180 degree pulse at Ca(56ppm) null at CO(174ppm) */ pwC5 = getval("pwC5"), /* 90 degree selective sinc pulse on CO(174ppm) */ pwC7 = getval("pwC7"), /* 180 degree selective sinc pulse on CO(174ppm) */ rf4, /* fine power for the pwC4 ("offC4") pulse */ rf5, /* fine power for the pwC5 ("offC5") pulse */ rf7, /* fine power for the pwC7 ("offC7") pulse */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ phi7cal = getval("phi7cal"), /* phase in degrees of the last C13 90 pulse */ pwH, /* H1 90 degree pulse length at tpwr1 */ tpwr1, /* 7.3 kHz rf for DIPSI-2 */ DIPSI2time, /* total length of DIPSI-2 decoupling */ ncyc_dec, waltzB1=getval("waltzB1"), /* RF strength for 1H decoupling */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("TROSY",TROSY); /* LOAD PHASE TABLE */ settable(t3,1,phx); settable(t4,1,phx); settable(t5,2,phi5); settable(t6,2,phi6); if (TROSY[A]=='y') {settable(t8,1,phy); settable(t9,1,phx); settable(t10,1,phy); settable(t11,1,phx); settable(t12,2,recT);} else {settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } if( pwC > 24.0e-6*600.0/sfrq ) { printf("increase pwClvl so that pwC < 24*600/sfrq"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 90 degree pulse on Cab, null at CO 128ppm away */ pwC1 = sqrt(15.0)/(4.0*128.0*dfrq); rf1 = (compC*4095.0*pwC)/pwC1; rf1 = (int) (rf1 + 0.5); /* 180 degree pulse on Cab, null at CO 128ppm away */ pwC2 = sqrt(3.0)/(2.0*128.0*dfrq); rf2 = (4095.0*compC*pwC*2.0)/pwC2; rf2 = (int) (rf2 + 0.5); /* 180 degree pulse on Ca, null at CO 118ppm away */ rf4 = (compC*4095.0*pwC*2.0)/pwC4; rf4 = (int) (rf4 + 0.5); /* 90 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf5 = (compC*4095.0*pwC*1.69)/pwC5; /* needs 1.69 times more */ rf5 = (int) (rf5 + 0.5); /* power than a square pulse */ /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf7 = (compC*4095.0*pwC*2.0*1.65)/pwC7; /* needs 1.65 times more */ rf7 = (int) (rf7 + 0.5); /* power than a square pulse */ /* power level and pulse times for DIPSI 1H decoupling */ DIPSI2time = 2.0*3.0e-3 + 2.0*14.0e-3 + 2.0*timeTN - 5.4e-3 + 0.5*pwC1 + 2.0*pwC5 + 5.0*pwN + 2.0*gt3 + 1.0e-4 + 4.0*GRADIENT_DELAY + 2.0*POWER_DELAY + 8.0*PRG_START_DELAY; pwH = 1.0/(4.0*waltzB1); ncyc_dec = (DIPSI2time*90.0)/(pwH*2590.0*4.0); ncyc_dec = (int) (ncyc_dec+0.5); pwH = (DIPSI2time*90.0)/(ncyc_dec*2590.0*4.0); /*fine correction of pwH */ tpwr1 = 4095.0*(compH*pw/pwH); tpwr1 = (int) (2.0*tpwr1 + 0.5); /* x2 because obs atten will be reduced by 6dB */ if (ix == 1) { fprintf(stdout, "\nNo of DIPSI-2 cycles = %4.1f\n",ncyc_dec); fprintf(stdout, "\nfine power for DIPSI-2 pulse =%6.1f\n",tpwr1); } /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" ni2 is too big. Make ni2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dm3[A] == 'y' || dm3[C] == 'y' ) { printf("incorrect dec3 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1);} if ( dpwr2 > 50 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 20.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( pwN > 100.0e-6 ) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A]=='y' && dm2[C] == 'y' ) { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (TROSY[A]=='y') { if (phase2 == 2) icosel = +1; else {tsadd(t4,2,4); tsadd(t10,2,4); icosel = -1;} } else { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Hyperbolic sheila seems superior to original zeta approach */ /* subtract unavoidable delays from tauCH */ tauCH = tauCH - gt0 - 2.0*GRADIENT_DELAY - 5.0e-5; if ((ni-1)/(2.0*sw1) > 2.0*tauCH) { if (tau1 > 2.0*tauCH) sheila = tauCH; else if (tau1 > 0) sheila = 1.0/(1.0/tau1+1.0/tauCH-1.0/(2.0*tauCH)); else sheila = 0.0; } else { if (tau1 > 0) sheila = 1.0/(1.0/tau1 + 1.0/tauCH - 2.0*sw1/((double)(ni-1))); else sheila = 0.0; } t1a = tau1 + tauCH; t1b = tau1 - sheila; t1c = tauCH - sheila; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } 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(t3,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(t8,2,4); tsadd(t12,2,4); } /* For ni<2 (calibration) set timeAB=1.5ms to get avoid signal cancellation between Ha and Hb */ if (ni < 2.0) timeAB=1.5e-3; /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) lk_sample(); /*freezes z0 correction, stops lock pulsing*/ if ((ni/sw1-d2)>0) delay(ni/sw1-d2); /*decreases as t1 increases for const.heating*/ if ((ni2/sw2-d3)>0) delay(ni2/sw2-d3); /*decreases as t2 increases for const.heating*/ if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(one); delay(1.0e-5); if (TROSY[A] == 'n') dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); if (TROSY[A] == 'n') dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { gzlvl0=0.0; gzlvl3=0.0; gzlvl4=0.0; /* no gradients during 2H decoupling */ dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pw, one, 0.0, 0.0); /* 1H pulse excitation */ /* point a */ txphase(zero); decphase(zero); zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ delay(5.0e-5); if((t1a -2.0*pwC) > 0.0) delay(t1a - 2.0*pwC); decrgpulse(2.0*pwC, zero, 0.0, 0.0); delay(t1b); rgpulse(2.0*pw, zero, 0.0, 0.0); zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ txphase(t3); delay(5.0e-5); delay(t1c); /* point b */ rgpulse(pw, t3, 0.0, 0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); decrgpulse(pwC, zero, 0.0, 0.0); /* point c */ zgradpulse(gzlvl4, gt4); decpwrf(rf2); delay(timeAB - gt4); simpulse(2*pw, pwC2, zero, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); delay(timeAB - gt4); /* point d */ /* ghc_co_nh STOPS HERE */ /* gcbca_co_nh STARTS HERE */ decpwrf(rf1); /* point b */ decrgpulse(pwC1, zero, 2.0e-6, 0.0); obspwrf(tpwr1); obspower(tpwr-6); /* POWER_DELAY */ obsprgon("dipsi2", pwH, 5.0); /* PRG_START_DELAY */ xmtron(); /* point c */ decpwrf(rf0); decphase(t5); delay(zeta - 2.0*POWER_DELAY - PRG_START_DELAY - 0.5*10.933*pwC); decrgpulse(pwC*158.0/90.0, t5, 0.0, 0.0); decrgpulse(pwC*171.2/90.0, t6, 0.0, 0.0); decrgpulse(pwC*342.8/90.0, t5, 0.0, 0.0); /* Shaka composite */ decrgpulse(pwC*145.5/90.0, t6, 0.0, 0.0); decrgpulse(pwC*81.2/90.0, t5, 0.0, 0.0); decrgpulse(pwC*85.3/90.0, t6, 0.0, 0.0); decpwrf(rf1); decphase(zero); delay(zeta - 0.5*10.933*pwC - 0.5*pwC1); /* point d */ decrgpulse(pwC1, zero, 0.0, 0.0); decphase(t5); decpwrf(rf5); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } zgradpulse(gzlvl3, gt3); delay(2.0e-4); decshaped_pulse("offC5", pwC5, t5, 0.0, 0.0); /* point e */ decpwrf(rf4); decphase(zero); delay(eta); decshaped_pulse("offC4", pwC4, zero, 0.0, 0.0); decpwrf(rf7); dec2phase(zero); delay(theta - eta - pwC4 - WFG3_START_DELAY); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC7", "", 0.0, pwC7, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decpwrf(rf5); decpwrf(rf5); initval(phi7cal, v7); decstepsize(1.0); dcplrphase(v7); /* SAPS_DELAY */ dec2phase(t8); delay(theta - SAPS_DELAY); /* point f */ decshaped_pulse("offC5", pwC5, zero, 0.0, 0.0); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ zgradpulse(gzlvl3, gt3); if (TROSY[A]=='y') { xmtroff(); obsprgoff(); } delay(2.0e-4); dcplrphase(zero); dec2rgpulse(pwN, t8, 0.0, 0.0); decpwrf(rf7); decphase(zero); dec2phase(t9); delay(timeTN - WFG3_START_DELAY - tau2); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC7", "", 0.0, pwC7, 2.0*pwN, zero, zero, t9, 0.0, 0.0); dec2phase(t10); decpwrf(rf4); if (TROSY[A]=='y') { if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { txphase(t4); delay(timeTN - pwC4 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC4", pwC4, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else { txphase(t4); delay(timeTN -pwC4 -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC4", pwC4, zero, 0.0, 0.0); delay(tau2); } } else { if (tau2 > kappa) { delay(timeTN - pwC4 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC4", pwC4, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else if (tau2 > (kappa - pwC4 - WFG_START_DELAY)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); /* WFG_START_DELAY */ decshaped_pulse("offC4", pwC4, zero, 0.0, 0.0); delay(kappa -pwC4 -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); delay(kappa - tau2 - pwC4 - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC4", pwC4, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ txphase(t4); delay(kappa-tau2-pwC4-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspwrf(4095.0); obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - 2.0*POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC4", pwC4, zero, 0.0, 0.0); delay(tau2); } } /* point g */ /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ delay(gstab); rcvron(); statusdelay(C,1.0e-4 - rof1); if (dm3[B]=='y') lk_sample(); setreceiver(t12); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ TROSY[MAXSTR]; /* To check for TROSY flag */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double p_d, rfd, ncyc, COmix = getval("COmix"), p_trim, rftrim, tau1, /* t1 delay */ tau2, /* t2 delay */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ kappa = 5.4e-3, lambda = 2.4e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "proteincal". SLP pulse shapes, "offC3" etc are called */ /* directly from your shapelib. */ pwC3 = getval("pwC3"), /*180 degree pulse at Ca(56ppm) null at CO(174ppm) */ pwC3a = getval("pwC3a"), /* pwC3a=pwC3, but not set to zero when pwC3=0 */ phshift3, /* phase shift induced on CO by pwC3 ("offC3") pulse */ pwZ, /* the largest of pwC3 and 2.0*pwN */ pwZ1, /* the largest of pwC3a and 2.0*pwN for 1D experiments */ pwC6 = getval("pwC6"), /* 90 degree selective sinc pulse on CO(174ppm) */ pwC8 = getval("pwC8"), /* 180 degree selective sinc pulse on CO(174ppm) */ rf3, /* fine power for the pwC3 ("offC3") pulse */ rf6, /* fine power for the pwC6 ("offC6") pulse */ rf8, /* fine power for the pwC8 ("offC8") pulse */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf = getval("tpwrsf"), /* fine power adjustment for flipback */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /* rf for WALTZ decoupling */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("TROSY",TROSY); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec); /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 180 degree pulse on Ca, null at CO 118ppm away */ rf3 = (compC*4095.0*pwC*2.0)/pwC3a; rf3 = (int) (rf3 + 0.5); /* the pwC3 pulse at the middle of t1 */ if ((ni2 > 0.0) && (ni == 1.0)) ni = 0.0; if (pwC3a > 2.0*pwN) pwZ = pwC3a; else pwZ = 2.0*pwN; if ((pwC3==0.0) && (pwC3a>2.0*pwN)) pwZ1=pwC3a-2.0*pwN; else pwZ1=0.0; if ( ni > 1 ) pwC3 = pwC3a; if ( pwC3 > 0 ) phshift3 = 48.0; else phshift3 = 0.0; /* 90 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf6 = (compC*4095.0*pwC*1.69)/pwC6; /* needs 1.69 times more */ rf6 = (int) (rf6 + 0.5); /* power than a square pulse */ /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf8 = (compC*4095.0*pwC*2.0*1.65)/pwC8; /* needs 1.65 times more */ rf8 = (int) (rf8 + 0.5); /* power than a square pulse */ /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrd = (int) (tpwrd + 0.5); /* dipsi-3 decoupling on COCO */ p_trim = 1/(4*5000*(sfrq/600.0)); /* 5 kHz trim pulse at 600MHz as per Bax */ p_d = (5.0)/(9.0*4.0*2800.0*(sfrq/600.0)); /* 2.8 kHz DIPSI-3 at 600MHz as per Bax*/ rftrim = (compC*4095.0*pwC)/p_trim; rftrim = (int)(rftrim+0.5); rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = ((COmix - 0.002)/51.8/4/p_d); ncyc = (int) (ncyc + 0.5); initval(ncyc,v9); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" ni2 is too big. Make ni2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dpwr2 > 50 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 50.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( (pwN > 100.0e-6) && (ni>1 || ni2>1)) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A] == 'y') { printf(" TROSY option is not implemented"); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } 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(t3,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(t8,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(zero); if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, zero, 5.0e-4, 0.0); obspower(tpwrd); obspwrf(4095.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); txphase(one); delay(kappa - pwHd - 2.0e-6 - PRG_START_DELAY); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); decphase(zero); dec2phase(zero); decpwrf(rf8); delay(timeTN - kappa - WFG3_START_DELAY); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(t3); decpwrf(rf6); delay(timeTN); dec2rgpulse(pwN, zero, 0.0, 0.0); xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); /***************************************************************/ /* The sequence is different from here with respect to ghn_co **/ /***************************************************************/ rgpulse(pwHd,one,2.0e-6,0.0); /* H1 decoupler is turned on */ txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); decshaped_pulse("offC6", pwC6, t3, 0.0, 0.0); decphase(zero); /* Refocus CO, evolve CO, spinlock CO and defocus CO */ delay(timeTN - tau1/2 - 0.6*pwC6 - WFG3_START_DELAY); decpwrf(rf8); sim3shaped_pulse("", "offC8","",0.0,pwC8, 2.0*pwN, zero,zero,zero,0.0,0.0); decpwrf(rf3); delay(timeTN - WFG3_STOP_DELAY - WFG_START_DELAY - pwC3a/2); decshaped_pulse("offC3",pwC3a,zero,0.0,0.0); if (tau1 > 0) delay(tau1/2 - WFG_STOP_DELAY - pwC3a/2 - 2.0e-6); else delay(tau1/2); /*******DO SPINLOCK ********/ decpwrf(rftrim); decrgpulse(0.002,zero,2.0e-6,0.0); decpwrf(rfd); starthardloop(v9); decrgpulse(6.4*p_d,zero,0.0,0.0); decrgpulse(8.2*p_d,two,0.0,0.0); decrgpulse(5.8*p_d,zero,0.0,0.0); decrgpulse(5.7*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.5*p_d,zero,0.0,0.0); decrgpulse(5.3*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.4*p_d,two,0.0,0.0); decrgpulse(8.2*p_d,zero,0.0,0.0); decrgpulse(5.8*p_d,two,0.0,0.0); decrgpulse(5.7*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.5*p_d,two,0.0,0.0); decrgpulse(5.3*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.4*p_d,two,0.0,0.0); decrgpulse(8.2*p_d,zero,0.0,0.0); decrgpulse(5.8*p_d,two,0.0,0.0); decrgpulse(5.7*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.5*p_d,two,0.0,0.0); decrgpulse(5.3*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.4*p_d,zero,0.0,0.0); decrgpulse(8.2*p_d,two,0.0,0.0); decrgpulse(5.8*p_d,zero,0.0,0.0); decrgpulse(5.7*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.5*p_d,zero,0.0,0.0); decrgpulse(5.3*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); endhardloop(); decpwrf(4095.0); /* End of spinlock */ delay(timeTN - WFG3_START_DELAY); decpwrf(rf8); sim3shaped_pulse("","offC8","",0.0,pwC8,2*pwN,zero,zero,zero,0.0,0.0); decpwrf(rf6); delay(timeTN - WFG3_STOP_DELAY); /***************************************************************/ /* The sequence is same as ghn_co from this point ********/ /***************************************************************/ decshaped_pulse("offC6", pwC6, t5, 0.0, 0.0); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ dec2phase(t8); zgradpulse(gzlvl4, gt4); txphase(one); dcplrphase(zero); delay(2.0e-4); dec2rgpulse(pwN, t8, 0.0, 0.0); decphase(zero); dec2phase(t9); decpwrf(rf8); delay(timeTN - WFG3_START_DELAY - tau2); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, t9, 0.0, 0.0); dec2phase(t10); decpwrf(rf3); if (tau2 > kappa) { delay(timeTN - pwC3a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > (kappa - pwC3a - WFG_START_DELAY)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(kappa -pwC3a -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - tau2 - pwC3a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa-tau2-pwC3a-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); delay(lambda - 0.65*pwN - gt5); rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0,0.0); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ delay(gstab); rcvron(); statusdelay(C,1.0e-4); setreceiver(t12); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ bottom[MAXSTR], right[MAXSTR], C13refoc[MAXSTR]; /* C13 sech/tanh pulse in middle of t1*/ int t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ lambda = 0.91/(4.0*getval("JNH")), /* 1/4J H1 evolution delay */ timeT = getval("timeT"), /* HN->N transfer time: T=15-20ms */ /* the sech/tanh pulse is automatically calculated by the macro "rna_cal", */ /* and is called directly from your shapelib. */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rfC, /* maximum fine power when using pwC pulses */ rfst, /* fine power for the stCall pulse */ compH = getval("compH"), /* adjustment for H1 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), grecov = getval("grecov"), /* Gradient recovery delay, typically 150-200us */ gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* dac to G/cm conversion */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt5 = getval("gt5"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl5 = getval("gzlvl5"); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("C13refoc",C13refoc); getstr("bottom",bottom); getstr("right",right); /* LOAD PHASE TABLE */ settable(t3,4,phi3); /*settable(t4,1,ph_y);*/ settable(t1,1,phx); settable(t5,8,phi5); settable(t6,16,phi6); if (bottom[A]=='y') { settable(t4,1,ph_y); settable(t7,1,phy); } else { settable(t4,1,phy); settable(t7,1,ph_y); } if (right[A]=='y') settable(t10,1,ph_x); else settable(t10,1,phx); settable(t9,1,phx); settable(t11,1,phy); settable(t12,4,recT); /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses (and initialize rfst) */ rfC = 4095.0; rfst=0.0; /* 180 degree adiabatic C13 pulse covers 140ppm */ if (C13refoc[A]=='y') {rfst = (compC*4095.0*pwC*4000.0*sqrt((21.0*sfrq/600.0+7.0)/0.35)); rfst = (int) (rfst + 0.5); if ( 1.0/(4000.0*sqrt((21.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((21.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); }} /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ /* CHECK VALIDITY OF PARAMETER RANGES */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' )) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if( pw > 50.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) {tsadd(t3,1,4); tsadd(t5,1,4);} /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { 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(t3,2,4); tsadd(t5,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); decpwrf(rfC); dec2power(pwNlvl); txphase(zero); decphase(zero); dec2phase(zero); dec2offset(dof2-(10*dfrq2)); delay(d1); status(B); rcvroff(); decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl0, 0.5e-3); delay(grecov/2); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); decpwrf(rfst); txphase(t1); delay(5.0e-4); rgpulse(pw,t1,0.0,0.0); /* 1H pulse excitation */ txphase(zero); dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(two); obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, two, 5.0e-5, 0.0); obspower(tpwr); zgradpulse(gzlvl3, gt3); dec2phase(t3); delay(grecov); dec2rgpulse(pwN, t3, 0.0, 0.0); txphase(zero); decphase(zero); delay(timeT - 2.0*SAPS_DELAY); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); dec2phase(t5); delay(timeT - SAPS_DELAY); dec2rgpulse(pwN, t5, 0.0, 0.0); dec2phase(t6); if ( (C13refoc[A]=='y') && (tau1 > 0.5e-3 + WFG2_START_DELAY) ) {delay(tau1 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ decshaped_pulse("rna_stC140", 1.0e-3, zero, 0.0, 0.0); delay(tau1 - 0.5e-3);} else delay(2.0*tau1); dec2rgpulse(pwN, t6, 0.0, 0.0); dec2phase(t9); delay(timeT - lambda - SAPS_DELAY); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); delay(timeT - lambda - gt1 - 2.0*GRADIENT_DELAY - pwHs - 1.5e-4 - 2.0*POWER_DELAY - SAPS_DELAY); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); txphase(t7); obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, t7, 1.0e-4, 0.0); txphase(t4); obspower(tpwr); delay(5.0e-5); rgpulse(pw, t4, 0.0, 0.0); txphase(one); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 0.65*(pw + pwN) - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, one, zero, zero, 0.0, 0.0); txphase(two); dec2phase(t11); zgradpulse(gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, two, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - 1.6*pwN - gt5); dec2rgpulse(pwN, t10, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 - 0.65*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof2); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl2, 0.1*gt1); else zgradpulse(gzlvl2, 0.1*gt1); /* 2.0*GRADIENT_DELAY */ statusdelay(C,1.0e-4-rof2); setreceiver(t12); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /*magic angle gradient*/ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ stCdec[MAXSTR], /* calls STUD+ waveforms from shapelib */ STUD[MAXSTR]; /* apply automatically calculated STUD decoupling */ int icosel1, /* used to get n and p type */ icosel2, t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ del = getval("del"), /* time delays for CH coupling evolution */ BPdpwrspinlock, /* user-defined upper limit for spinlock(Hz) */ BPpwrlimits, /* =0 for no limit, =1 for limit */ del1 = getval("del1"), del2 = getval("del2"), /* STUD+ waveforms automatically calculated by macro "biocal" */ /* and string parameter stCdec calls them from your shapelib. */ stdmf, /* dmf for STUD decoupling */ studlvl, /* coarse power for STUD+ decoupling */ rf80 = getval("rf80"), /* rf in Hz for 80ppm STUD+ */ bw, ofs, ppm, /* temporary Pbox parameters */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* p_d is used to calculate the isotropic mixing on the Cab region */ spinlock = getval("spinlock"), /* DIPSI-3 spinlock field strength in Hz */ p_d, /* 50 degree pulse for DIPSI-2 at rfd */ rfd, /* fine power for 7 kHz rf for 500MHz magnet */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "ghcch_tocsy" . SLP pulse shapes, "offC10" etc are called */ /* directly from your shapelib. */ pwC10, /* 180 degree selective sinc pulse on CO(174ppm) */ pwZ, /* the largest of pwC10 and 2.0*pwN */ rf10, /* fine power for the pwC10 ("offC10") pulse */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* G/cm to DAC coversion factor*/ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), /* other gradients */ gt5 = getval("gt5"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("STUD",STUD); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("f2180",f2180); strcpy(stCdec, "stCdec80"); stdmf = getval("dmf80"); studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf80); studlvl = (int) (studlvl + 0.5); P_getreal(GLOBAL,"BPpwrlimits",&BPpwrlimits,1); P_getreal(GLOBAL,"BPdpwrspinlock",&BPdpwrspinlock,1); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t6,1,phi6); settable(t5,4,phi5); settable(t10,1,phi10); settable(t11,4,rec); /* INITIALIZE VARIABLES */ if (BPpwrlimits > 0.5) { if (spinlock > BPdpwrspinlock) { spinlock = BPdpwrspinlock; printf("spinlock too large, reset to user-defined limit (BPdpwrspinlock)"); psg_abort(1); } } if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* "offC10": 180 degree one-lobe sinc pulse on CO, null at Ca 139ppm away */ pwC10 = getval("pwC10"); rf10 = (compC*4095.0*pwC*2.0*1.65)/pwC10; /* needs 1.65 times more */ rf10 = (int) (rf10 + 0.5); /* power than a square pulse */ if( pwC > (24.0e-6*600.0/sfrq) ) { printf("Increase pwClvl so that pwC < 24*600/sfrq"); psg_abort(1); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 118.0*ppm; ofs = 139.0*ppm; offC10 = pbox_make("offC10", "sinc180n", bw, ofs, compC*pwC, pwClvl); if(dm3[B] == 'y') H2ofs = 3.2; ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } rf10 = offC10.pwrf; pwC10 = offC10.pw; } /* dipsi-3 decoupling on CbCa */ p_d = (5.0)/(9.0*4.0*spinlock); /* DIPSI-3 Field Strength */ rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = (int) (ncyc + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if( gt1 > 0.5*del - 1.0e-4) { printf(" gt1 is too big. Make gt1 less than %f.\n", (0.5*del - 1.0e-4)); psg_abort(1); } if( dm[A] == 'y' ) { printf("incorrect dec1 decoupler flag! Should be 'nny' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm3[A] == 'y' || dm3[C] == 'y')) { printf("incorrect dec3 decoupler flags! Should be 'nnn' or 'nyn' "); psg_abort(1); } if( dpwr > 52 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ icosel1 = -1; icosel2 = -1; if (phase1 == 2) { tsadd(t6,2,4); icosel1 = -1*icosel1; } if (phase2 == 2) { tsadd(t10,2,4); icosel2 = -1*icosel2; tsadd(t6,2,4); } /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } 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(t3,2,4); tsadd(t11,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t5,2,4); tsadd(t11,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); if ( dm3[B] == 'y' ) lk_sample(); if ((ni/sw1-d2)>0) delay(ni/sw1-d2); /*decreases as t1 increases for const.heating*/ if ((ni2/sw2-d3)>0) delay(ni2/sw2-d3); /*decreases as t2 increases for const.heating*/ delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(t3); delay(1.0e-5); decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl1, 0.5e-3); delay(1.0e-4); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl1, 0.5e-3); delay(5.0e-4); if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pw, t3, 0.0, 0.0); /* 1H pulse excitation */ decphase(zero); delay(0.5*del + tau1 - 2.0*pwC); decrgpulse(2.0*pwC, zero, 0.0, 0.0); txphase(zero); delay(tau1); rgpulse(2.0*pw, zero, 0.0, 0.0); if (mag_flg[A] == 'y') { magradpulse(icosel1*gzcal*gzlvl1,0.1*gt1); } else { zgradpulse(icosel1*gzlvl1, 0.1*gt1); } decphase(t5); delay(0.5*del - 0.1*gt1); simpulse(pw, pwC, zero, t5, 0.0, 0.0); zgradpulse(gzlvl3, gt3); decphase(zero); delay(0.5*del2 - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); txphase(t6); decphase(one); delay(0.5*del2 - gt3); simpulse(pw, pwC, t6, one, 0.0, 0.0); zgradpulse(gzlvl4, gt3); txphase(zero); decphase(zero); delay(0.5*del1 - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt3); delay(0.5*del1 - gt3); decrgpulse(pwC, zero, 0.0, 0.0); decpwrf(rfd); delay(2.0e-6); initval(ncyc, v2); starthardloop(v2); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(5.0*p_d,zero,0.0,0.0); decrgpulse(5.5*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.6*p_d,two,0.0,0.0); decrgpulse(7.2*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.8*p_d,two,0.0,0.0); decrgpulse(7.0*p_d,zero,0.0,0.0); decrgpulse(5.2*p_d,two,0.0,0.0); decrgpulse(5.4*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.5*p_d,zero,0.0,0.0); decrgpulse(7.3*p_d,two,0.0,0.0); decrgpulse(5.1*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(5.0*p_d,two,0.0,0.0); decrgpulse(5.5*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.6*p_d,zero,0.0,0.0); decrgpulse(7.2*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.8*p_d,zero,0.0,0.0); decrgpulse(7.0*p_d,two,0.0,0.0); decrgpulse(5.2*p_d,zero,0.0,0.0); decrgpulse(5.4*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.5*p_d,two,0.0,0.0); decrgpulse(7.3*p_d,zero,0.0,0.0); decrgpulse(5.1*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(5.0*p_d,two,0.0,0.0); decrgpulse(5.5*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.6*p_d,zero,0.0,0.0); decrgpulse(7.2*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.8*p_d,zero,0.0,0.0); decrgpulse(7.0*p_d,two,0.0,0.0); decrgpulse(5.2*p_d,zero,0.0,0.0); decrgpulse(5.4*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.5*p_d,two,0.0,0.0); decrgpulse(7.3*p_d,zero,0.0,0.0); decrgpulse(5.1*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(5.0*p_d,zero,0.0,0.0); decrgpulse(5.5*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.6*p_d,two,0.0,0.0); decrgpulse(7.2*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.8*p_d,two,0.0,0.0); decrgpulse(7.0*p_d,zero,0.0,0.0); decrgpulse(5.2*p_d,two,0.0,0.0); decrgpulse(5.4*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.5*p_d,zero,0.0,0.0); decrgpulse(7.3*p_d,two,0.0,0.0); decrgpulse(5.1*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); endhardloop(); dec2phase(zero); decphase(zero); txphase(zero); decpwrf(rf10); delay(tau2); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC10", "", 2.0*pw, pwC10, 2.0*pwN, zero, zero, zero, 0.0, 0.0); if(pwC10>2.0*pwN) pwZ=0.0; else pwZ=2.0*pwN - pwC10; delay(tau2); decpwrf(rf0); if (mag_flg[A] == 'y') { magradpulse(-icosel2*gzcal*gzlvl2, 1.8*gt1); } else { zgradpulse(-icosel2*gzlvl2, 1.8*gt1); } delay(2.02e-4); decrgpulse(2.0*pwC, zero, 0.0, 0.0); decpwrf(rf10); if (mag_flg[A] == 'y') { magradpulse(icosel2*gzcal*gzlvl2, 1.8*gt1); } else { zgradpulse(icosel2*gzlvl2, 1.8*gt1); } delay(2.0e-4 + WFG3_START_DELAY + pwZ); decshaped_pulse("offC10", pwC10, zero, 0.0, 0.0); decpwrf(rf0); decrgpulse(pwC, zero, 2.0e-6, 0.0); zgradpulse(gzlvl5, gt5); delay(0.5*del1 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); decphase(t10); delay(0.5*del1 - gt5); simpulse(pw, pwC, one, t10, 0.0, 0.0); zgradpulse(gzlvl6, gt5); txphase(zero); decphase(zero); delay(0.5*del2 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(0.5*del2 - gt5); simpulse(pw, pwC, zero, zero, 0.0, 0.0); delay(0.5*del - 0.5*pwC); simpulse(2.0*pw,2.0*pwC, zero, zero, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); rcvron(); if ((STUD[A]=='n') && (dm[C] == 'y')) decpower(dpwr); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { delay(0.5*del-40.0e-6 -gt1 -1/dmf3); setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ lk_sample(); if (mag_flg[A] == 'y') statusdelay(C,40.0e-6 - 2.0*VAGRADIENT_DELAY - POWER_DELAY); else statusdelay(C,40.0e-6 - 2.0*GRADIENT_DELAY - POWER_DELAY); } else { delay(0.5*del-40.0e-6 -gt1); if (mag_flg[A] == 'y') statusdelay(C,40.0e-6 - 2.0*VAGRADIENT_DELAY - POWER_DELAY); else statusdelay(C,40.0e-6 - 2.0*GRADIENT_DELAY - POWER_DELAY); } if ((STUD[A]=='y') && (dm[C] == 'y')) {decpower(studlvl); decunblank(); decon(); decprgon(stCdec,1/stdmf, 1.0); startacq(alfa); acquire(np, 1.0/sw); decprgoff(); decoff(); decblank(); } setreceiver(t11); }
pulsesequence() { char f1180[MAXSTR], f2180[MAXSTR], mag_flg[MAXSTR], /* y for magic angle, n for z-gradient only */ ref_flg[MAXSTR]; /* yes for recording reference spectrum */ int icosel, phase, ni2, t1_counter, t2_counter; double gzcal = getval("gzcal"), tau1, tau2, taua, /* ~ 1/4JNH = 2.3-2.7 ms] */ taub, /* ~ 2.75 ms */ bigT, /* ~ 12 ms */ bigTCO, /* ~ 25 ms */ bigTN, /* ~ 12 ms */ pwClvl, /* High power level for carbon on channel 2 */ pwC, /* C13 90 degree pulse length at pwClvl */ compC, /* Compression factor for C13 on channel 2 */ pwCa180, /* 180 degree pulse length for Ca */ pwCab180, pwCO180, pwNlvl, /* Power level for Nitrogen on channel 3 */ pwN, /* N15 90 degree pulse lenght at pwNlvl */ maxcan, /* The larger of 2.0*pwN and pwCa180 */ dpwrfC = 4095.0, dfCa180, dfCab180, dfCO180, fac180 = 1.69, gt1, gt3, gt2, gt0, gt5, gt6, gt7, gt8, gt9, gt10, gstab, gzlvl1, gzlvl2, gzlvl3, gzlvl0, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9, gzlvl10; /* LOAD VARIABLES */ getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg", mag_flg); getstr("ref_flg", ref_flg); taua = getval("taua"); taub = getval("taub"); bigT = getval("bigT"); bigTCO = getval("bigTCO"); bigTN = getval("bigTN"); pwClvl = getval("pwClvl"); pwC = getval("pwC"); compC = getval("compC"); pwNlvl = getval("pwNlvl"); pwN = getval("pwN"); pwCa180 = getval("pwCa180"); pwCab180 = getval("pwCab180"); pwCO180 = getval("pwCO180"); maxcan = 2.0*pwN; if (pwCa180 > maxcan) maxcan = pwCa180; dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt0 = getval("gt0"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); gstab = getval("gstab"); gt10 = getval("gt10"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl5 = getval("gzlvl5"); gzlvl0 = getval("gzlvl0"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl8 = getval("gzlvl8"); gzlvl9 = getval("gzlvl9"); gzlvl10 = getval("gzlvl10"); dfCa180 = (compC*4095.0*pwC*2.0*fac180)/pwCa180; dfCab180 = (compC*4095.0*pwC*2.0*fac180)/pwCab180; dfCO180 = (compC*4095.0*pwC*2.0*fac180)/pwCO180; /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t2,2,phi2); settable(t3,16,phi3); settable(t4,16,phi4); settable(t5, 1, phi5); settable(t10,16,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if((ref_flg[A] == 'y') && (dps_flag)) { printf("ref_flg=y: for 2D HN-CO or 3D HNCO reference spectrum without CO-HB coupling.\n"); } if(ni2/sw2 > 2.0*(bigTN)) { printf(" ni2 is too big, should < %f\n", 2.0*sw2*(bigTN)); } if((ni/sw1 > 2.0*(bigTCO - gt6 - maxcan))&&(ref_flg[A] == 'y')) { printf("ni is too big, should < %f\n", 2.0*sw1*(bigTCO-gt6-maxcan)); } if(( dpwr > 50 ) || (dpwr2 > 50)) { printf("don't fry the probe, either dpwr or dpwr2 is too large! "); psg_abort(1); } if((gt1 > 5.0e-3) ||(gt2>5e-3)||(gt3>5e-3)|| (gt0 > 5.0e-3)) { printf("The length of gradients are too long\n"); psg_abort(1); } if((taub - 2.0*pw - gt8 - 1.0e-3 - 6.0*GRADIENT_DELAY)<0.0) { printf("Shorten gt8 so that preceding delay is not negative\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y')) { printf("incorrect dec1 decoupler flags! should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' )) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { if(ref_flg[A] == 'y') tsadd(t1,3,4); else tsadd(t1, 1, 4); } if (phase2 == 2) { tsadd(t5,2,4); icosel = 1; } else icosel = -1; /* Set up f1180 half_dwell time (1/sw1)/2.0 */ if (ref_flg[A] == 'y') tau1 = d2; else tau1 = d2 - (4.0*pw/PI); if(f1180[A] == 'y') { tau1 += (1.0/(2.0*sw1)); } if(tau1 < 0.2e-6) tau1 = 0.0; tau1 = tau1/4.0; /* Set up f2180 half dwell time (1/sw2)/2.0 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += (1.0/(2.0*sw2)); } if(tau2 < 0.2e-6) tau2 = 0.0; 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(t10,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t10,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); decoffset(dof); obspower(tpwr); decpower(pwClvl); decpwrf(dpwrfC); dec2power(pwNlvl); txphase(zero); dec2phase(zero); delay(d1); dec2rgpulse(pwN, zero, 0.2e-6, 0.0); zgradpulse(gzlvl3, gt3); delay(0.001); rcvroff(); status(B); rgpulse(pw, zero, 1.0e-5, 1.0e-6); delay(2.0e-6); zgradpulse(0.8*gzlvl0,gt0); delay(taua - gt0 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0,2.0*pwN,zero,zero,zero, 1.0e-6, 1.0e-6); delay(taua - gt0 - 500.0e-6); zgradpulse(0.8*gzlvl0,gt0); txphase(one); delay(500.0e-6); rgpulse(pw, one, 1.0e-6, 1.0e-6); delay(2.0e-6); zgradpulse(1.3*gzlvl3, gt3); decpwrf(dfCO180); txphase(zero); delay(200.0e-6); dec2rgpulse(pwN, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl0, gt0); delay(taub - gt0 - 2.0*pw - 2.0e-6); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(bigT - taub - WFG3_START_DELAY); sim3shaped_pulse("","offC8","",(double)0.0,pwCO180,2.0*pwN,zero,zero,zero,0.0,0.0); delay(bigT - gt0 - WFG3_STOP_DELAY - 1.0e-3); zgradpulse(gzlvl0, gt0); delay(1.0e-3); dec2rgpulse(pwN, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl9, gt9); decpwrf(dpwrfC); decphase(t3); delay(200.0e-6); if(ref_flg[A] != 'y') { decrgpulse(pwC, t3, 0.0, 0.0); delay(2.0e-6); if(gt6 > 0.2e-6) zgradpulse(gzlvl6, gt6); decpwrf(dfCO180); txphase(t1); delay(bigTCO - gt6 - 2.0e-6); rgpulse(pw, t1, 0.0, 0.0); if(tau1 >(pwCab180/2.0 + WFG_START_DELAY +WFG_STOP_DELAY+ POWER_DELAY + pwCO180/2.0)) { decpwrf(dfCab180); delay(tau1 - pwCab180/2.0 - WFG_START_DELAY - POWER_DELAY); decshaped_pulse("offC27", pwCab180, zero, 0.0, 0.0); decpwrf(dfCO180); delay(tau1-pwCO180/2.0-pwCab180/2.0-WFG_STOP_DELAY-WFG_START_DELAY-POWER_DELAY); decshaped_pulse("offC8", pwCO180, zero, 0.0, 0.0); decpwrf(dfCab180); delay(tau1-pwCO180/2.0-pwCab180/2.0-WFG_STOP_DELAY-WFG_START_DELAY-POWER_DELAY); decshaped_pulse("offC27", pwCab180, zero, 0.0, 0.0); txphase(zero); delay(tau1 - pwCab180/2.0 - WFG_STOP_DELAY); } else { delay(2.0*tau1); decshaped_pulse("offC8", pwCO180, zero, 0.0, 0.0); txphase(zero); delay(2.0*tau1); } rgpulse(pw, zero, 0.0, 0.0); delay(bigTCO - gt6 - POWER_DELAY - 1.0e-3); if (gt6 > 0.2e-6) zgradpulse(gzlvl6, gt6); decpwrf(dpwrfC); delay(1.0e-3); decrgpulse(pwC, zero, 0.0, 0.0); } else { decrgpulse(pwC, t3, 0.0, 0.0); decpwrf(dfCa180); sim3shaped_pulse("","offC17","",0.0e-6,pwCa180,0.0e-6,zero,zero,zero,2.0e-6,0.0); delay(2.0e-6); if(gt6 > 0.2e-6) zgradpulse(gzlvl6, gt6); decpwrf(dfCO180); delay(bigTCO - 2.0*tau1 - maxcan - gt6 - 2.0*POWER_DELAY - 4.0e-6); decshaped_pulse("offC8", pwCO180, zero, 0.0, 0.0); delay(bigTCO - gt6 - maxcan - 2.0*POWER_DELAY - 1.0e-3); if (gt6 > 0.2e-6) zgradpulse(gzlvl6, gt6); decpwrf(dfCa180); delay(1.0e-3); sim3shaped_pulse("","offC17","",2.0*pw,pwCa180,2.0*pwN,zero,zero,zero,0.0,0.0); decpwrf(dpwrfC); delay(2.0*tau1); decrgpulse(pwC, t1, 2.0e-6, 0.0); } delay(2.0e-6); zgradpulse(gzlvl7, gt7); decpwrf(dfCO180); dec2phase(t2); delay(200.0e-6); dec2rgpulse(pwN, t2, 0.0, 0.0); delay(bigTN - tau2); dec2phase(t4); sim3shaped_pulse("","offC8","",(double)0.0,pwCO180,2.0*pwN,zero,zero,t4,0.0,0.0); decpwrf(dfCa180); delay(bigTN - taub - WFG_STOP_DELAY - POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(taub - 2.0*pw - gt1 - 1.0e-3 - 6.0*GRADIENT_DELAY); if (mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1, gt1); delay(4.0*GRADIENT_DELAY); } dec2phase(t5); delay(1.0e-3); decshaped_pulse("offC17", pwCa180, zero, 0.0, 0.0); delay(tau2); sim3pulse(pw,(double)0.0, pwN, zero,zero, t5, 0.0, 0.0); dec2phase(zero); delay(2.0e-6); zgradpulse(0.8*gzlvl5, gt5); delay(taua - gt5 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(taua - gt5 - 500.0e-6); zgradpulse(0.8*gzlvl5, gt5); txphase(one); decphase(one); delay(500.0e-6); sim3pulse(pw,(double)0.0, pwN, one,zero, one, 0.0, 0.0); delay(2.0e-6); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(taua - gt5 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(taua - gt5 - 2.0*POWER_DELAY - 500.0e-6); zgradpulse(gzlvl5, gt5); decpower(dpwr); dec2power(dpwr2); delay(500.0e-6); rgpulse(pw, zero, 0.0, 0.0); delay(1.0e-4 +gstab + gt1/10.0 - 0.5*pw + 6.0*GRADIENT_DELAY); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(2.0e-6); if(mag_flg[A] == 'y') { magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); } else { zgradpulse(icosel*gzlvl2, gt1/10.0); delay(4.0*GRADIENT_DELAY); } delay(1.0e-4 - 2.0e-6); statusdelay(C,1.0e-4); setreceiver(t10); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /*magic-angle coherence transfer gradients */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ C13refoc[MAXSTR], /* C13 sech/tanh pulse in middle of t1*/ NH2only[MAXSTR]; /* spectrum of only NH2 groups */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ PRexp, /* projection-reconstruction flag */ ni2 = getval("ni2"); double tau1, /* t1 delay */ mix = getval("mix"), /* NOESY mix time */ tau2, /* t2 delay */ lambda = 0.94/(4.0*getval("JNH")), /* 1/4J H1 evolution delay */ tNH = 1.0/(4.0*getval("JNH")), /* 1/4J N15 evolution delay */ csa, sna, pra = M_PI*getval("pra")/180.0, /* temporary Pbox parameters */ bw, pws, ofs, ppm, nst, /* bandwidth, pulsewidth, offset, ppm, # steps */ /* the sech/tanh pulse is automatically calculated by the macro "biocal", */ /* and is called directly from your shapelib. */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ rfst, /* fine power for the stCall pulse */ compH = getval("compH"), /* adjustment for H1 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ dof100, /* C13 frequency at 100ppm for both aliphatic & aromatic*/ tpwrsf = getval("tpwrsf"), /* fine power adjustment for flipback pulse*/ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gzcal=getval("gzcal"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl6 = getval("gzlvl6"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"); getstr("f1180",f1180); getstr("mag_flg",mag_flg); getstr("f2180",f2180); getstr("C13refoc",C13refoc); getstr("NH2only",NH2only); csa = cos(pra); sna = sin(pra); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t3,4,phi3); settable(t9,16,phi9); settable(t10,1,phi10); settable(t11,8,rec); /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses (and initialize rfst) */ rf0 = 4095.0; rfst=0.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ if (C13refoc[A]=='y') { rfst = (compC*4095.0*pwC*4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)); rfst = (int) (rfst + 0.5); if ( 1.0/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); } } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { if (C13refoc[A]=='y') { ppm = getval("dfrq"); ofs = 0.0; pws = 0.001; /* 1 ms long pulse */ bw = 200.0*ppm; nst = 1000; /* nst - number of steps */ stC200 = pbox_makeA("stC200", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); } ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } if (C13refoc[A]=='y') rfst = stC200.pwrf; } /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ dof100 = dof + 65.0*dfrq; /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/((compH*pw)*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* CHECK VALIDITY OF PARAMETER RANGES */ if ( (mix - gt4 - gt5) < 0.0 ) { text_error("mix is too small. Make mix equal to %f or more.\n",(gt4 + gt5)); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 20.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t1,1,4); if (phase2 == 1) { tsadd(t10,2,4); icosel = 1; } else icosel = -1; /* Set up f1180 */ PRexp = 0; if((pra > 0.0) && (pra < 90.0)) PRexp = 1; if(PRexp) /* set up Projection-Reconstruction experiment */ tau1 = d2*csa; else tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ if(PRexp) tau2 = d2*sna; else { tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } } 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(t11,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } /* Correct inverted signals for NH2 only spectra */ if (NH2only[A]=='y') { tsadd(t3,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decoffset(dof); decpwrf(rf0); txphase(zero); dec2phase(zero); delay(d1); dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); txphase(t1); decphase(zero); dec2phase(zero); initval(135.0,v1); obsstepsize(1.0); xmtrphase(v1); delay(5.0e-4); rcvroff(); rgpulse(pw, t1, 50.0e-6, 0.0); /* 1H pulse excitation */ xmtrphase(zero); /* SAPS_DELAY */ txphase(zero); if (tau1 > (2.0*GRADIENT_DELAY + pwN + 0.64*pw + 5.0*SAPS_DELAY)) { if (tau1>0.002) { zgradpulse(gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw) - SAPS_DELAY); } else { delay(tau1-pwN-0.64*pw); } if (C13refoc[A]=='y') sim3pulse(0.0, 2.0*pwC, 2.0*pwN, zero, zero, zero, 0.0, 0.0); else dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); if (tau1>0.002) { zgradpulse(-1.0*gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw) - SAPS_DELAY); } else { delay(tau1-pwN-0.64*pw); } } else if (tau1 > (0.64*pw + 0.5*SAPS_DELAY)) delay(2.0*tau1 - 2.0*0.64*pw - SAPS_DELAY ); rgpulse(pw, zero, 0.0, 0.0); delay(mix - gt4 - gt5 -gstab -200.0e-6); dec2rgpulse(pwN, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); delay(gstab); rgpulse(pw, zero, 200.0e-6,0.0); /* HSQC begins */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(two); if (tpwrsf<4095.0) { obspower(tpwrs+6.0); obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); obspwrf(4095.0); } else { obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); } zgradpulse(gzlvl3, gt3); dec2phase(t3); decpwrf(rfst); decoffset(dof100); delay(2.0e-4); dec2rgpulse(pwN, t3, 0.0, 0.0); decphase(zero); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ txphase(zero); dec2phase(t9); if (NH2only[A]=='y') { delay(tau2); /* optional sech/tanh pulse in middle of t2 */ if (C13refoc[A]=='y') /* WFG_START_DELAY */ { decshaped_pulse("stC200", 1.0e-3, zero, 0.0, 0.0); delay(tNH - 1.0e-3 - WFG_START_DELAY - 2.0*pw); } else { delay(tNH - 2.0*pw); } rgpulse(2.0*pw, zero, 0.0, 0.0); if (tNH < gt1 + 1.99e-4) delay(gt1 + 1.99e-4 - tNH); delay(tau2); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1, gt1); } dec2phase(t10); if (tNH > gt1 + 1.99e-4) delay(tNH - gt1 - 2.0*GRADIENT_DELAY); else delay(1.99e-4 - 2.0*GRADIENT_DELAY); } else { if ( (C13refoc[A]=='y') && (tau2 > 0.5e-3 + WFG2_START_DELAY) ) { delay(tau2 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ simshaped_pulse("", "stC200", 2.0*pw, 1.0e-3, zero, zero, 0.0, 0.0); delay(tau2 - 0.5e-3); delay(gt1 + 2.0e-4); } else { delay(tau2); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(gt1 + 2.0e-4 - 2.0*pw); delay(tau2); } dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1, gt1); } dec2phase(t10); delay(2.0e-4 - 2.0*GRADIENT_DELAY); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ sim3pulse(pw, 0.0, pwN, zero, zero, t10, 0.0, 0.0); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 1.5*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(one); delay(lambda - 1.5*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, one, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - 1.5*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - pwN - 0.5*pw - gt5); rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4+ gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') { magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); } else { zgradpulse(icosel*gzlvl2, gt1/10.0); } delay(gstab); rcvron(); statusdelay(C,1.0e-4-rof1); setreceiver(t11); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ TROSY[MAXSTR], /* do TROSY on N15 and H1 */ CT_c[MAXSTR], h1dec[MAXSTR]; int icosel, /* used to get n and p type */ t1_counter=getval("t1_counter"), /* used for states tppi in t1 */ t2_counter=getval("t2_counter"), /* used for states tppi in t2 */ nli = getval("nli"), nli2 = getval("nli2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ tauCC = 7.0e-3, /* delay for Ca to Cb cosy */ tauC = 13.3e-3, /* constantTime for 13Cb evolution */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ kappa = 5.4e-3, lambda = 2.4e-3, zeta = 3.0e-3, taud = 1.7e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* 90 degree pulse at Cab (46ppm), first off-resonance null at CO (174ppm) */ pwC1, /* 90 degree pulse length on C13 at rf1 */ rf1, /* fine power for 5.1 kHz rf for 600MHz magnet */ /* 180 degree pulse at Ca (46ppm), first off-resonance null at CO(174ppm) */ pwC2, /* 180 degree pulse length at rf2 */ rf2, /* fine power for 11.4 kHz rf for 600MHz magnet */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "proteincal". SLP pulse shapes, "offC7" etc are called */ /* directly from your shapelib. */ pwC7 = getval("pwC7"), /*180 degree pulse at CO(174ppm) null at Ca(56ppm) */ pwC7a = getval("pwC7a"), /* pwC7a=pwC7, but not set to zero when pwC7=0 */ phshift7, /* phase shift induced on Cab by pwC7 ("offC7") pulse */ pwZ, /* the largest of pwC7 and 2.0*pwN */ pwZ1, /* the larger of pwC7a and 2.0*pwN for 1D experiments */ rf7, /* fine power for the pwC7 ("offC7") pulse */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "proteincal". SLP pulse shapes, "offC5" etc are called */ /* directly from your shapelib. */ pwC5 = getval("pwC5"), /*180 degree pulse at CO(174ppm) null at Ca(56ppm) */ rf5, /* fine power for the pwC7 ("offC7") pulse */ /* g3 inversion pulse in the t1 period (centred at 150ppm) */ pwCgCO_lvl = getval("pwCgCO_lvl"), pwCgCO = getval("pwCgCO"), compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /* rf for WALTZ decoupling */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gstab = getval("gstab"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), gt8 = getval("gt8"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"), gzlvl7 = getval("gzlvl7"), gzlvl8 = getval("gzlvl8"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("TROSY",TROSY); getstr("CT_c",CT_c); getstr("h1dec",h1dec); /* LOAD PHASE TABLE */ settable(t2,1,phy); settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); if (TROSY[A]=='y') {settable(t8,1,phy); settable(t9,1,phx); settable(t10,1,phy); settable(t11,1,phx); settable(t12,4,recT);} else {settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec);} /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 90 degree pulse on Cab, null at CO 128ppm away */ pwC1 = sqrt(15.0)/(4.0*128.0*dfrq); rf1 = (compC*4095.0*pwC)/pwC1; rf1 = (int) (rf1 + 0.5); /* 180 degree pulse on Cab, null at CO 128ppm away */ pwC2 = sqrt(3.0)/(2.0*128.0*dfrq); rf2 = (4095.0*compC*pwC*2.0)/pwC2; rf2 = (int) (rf2 + 0.5); if( rf2 > 4095 ) { printf("Recalibrate so that C13 90 <22us*600/sfrq"); psg_abort(1);} /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf7 = (compC*4095.0*pwC*2.0*1.65)/pwC7a; /* needs 1.65 times more */ rf7 = (int) (rf7 + 0.5); /* power than a square pulse */ /* 90 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf5 = (compC*4095.0*pwC*1.69)/pwC5; /* needs 1.69 times more */ rf5 = (int) (rf5 + 0.5); /* power than a square pulse */ /* the pwC7 pulse at the middle of t1 */ if ((nli2 > 0.0) && (nli == 1.0)) nli = 0.0; if (pwC7a > 2.0*pwN) pwZ = pwC7a; else pwZ = 2.0*pwN; if ((pwC7==0.0) && (pwC7a>2.0*pwN)) pwZ1=pwC7a-2.0*pwN; else pwZ1=0.0; if ( nli > 1 ) pwC7 = pwC7a; if ( pwC7 > 0 ) phshift7 = 320.0; else phshift7 = 0.0; /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrd = (int) (tpwrd + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*nli2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" nli2 is too big. Make nli2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dm3[A] == 'y' || dm3[C] == 'y' ) { printf("incorrect dec3 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1);} if ( dpwr2 > 46 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 20.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( pwN > 100.0e-6 ) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A]=='y' && dm2[C] == 'y') { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) { tsadd(t3,1,4); tsadd(t2,1,4);} if (TROSY[A]=='y') { if (phase2 == 2) icosel = +1; else {tsadd(t4,2,4); tsadd(t10,2,4); icosel = -1;} } else { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } /* Set up f1180 */ if( ix == 1) d2_init = d2; tau1 = d2_init + (t1_counter) / sw1; if((f1180[A] == 'y') && (nli > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ if( ix == 1) d3_init = d3; tau2 = d3_init + (t2_counter) / sw2; if((f2180[A] == 'y') && (nli2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if(t1_counter % 2) { tsadd(t3,2,4); tsadd(t12,2,4); } if(t2_counter % 2) { tsadd(t8,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if (dm3[B] == 'y') lk_hold(); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); decphase(zero); dcplrphase(zero); delay(1.0e-5); dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); obspower(tpwrs); if (TROSY[A]=='y') { txphase(two); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); delay(0.5*kappa - 2.0*pw); rgpulse(2.0*pw, two, 0.0, 0.0); obspower(tpwrd); /* POWER_DELAY */ decphase(zero); dec2phase(zero); decpwrf(rf7); delay(timeTN - 0.5*kappa - POWER_DELAY -WFG_START_DELAY); } else { txphase(zero); shaped_pulse("H2Osinc", pwHs, zero, 5.0e-4, 0.0); obspower(tpwrd); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); txphase(one); delay(kappa - pwHd - 2.0e-6 - PRG_START_DELAY); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); decphase(zero); dec2phase(zero); decpwrf(rf7); delay(timeTN - kappa -WFG_START_DELAY); } sim3shaped_pulse("","offC7","",0.0, pwC7, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(t3); decpwrf(rf5); delay(timeTN -WFG_STOP_DELAY -pwHd); dec2rgpulse(pwN, zero, 0.0, 0.0); if (TROSY[A]=='n') { xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0); } delay(2.0e-6); zgradpulse(gzlvl3, gt3); delay(2.0e-4); decpwrf(rf5); decshaped_pulse("offC5", pwC5, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(-gzlvl7, gt7); decpwrf(rf0); decphase(zero); delay(zeta - gt7 - 0.5*10.933*pwC-2.0e-6); decrgpulse(pwC*158.0/90.0, zero, 0.0, 0.0); decrgpulse(pwC*171.2/90.0, two, 0.0, 0.0); decrgpulse(pwC*342.8/90.0, zero, 0.0, 0.0); /* Shaka 6 composite */ decrgpulse(pwC*145.5/90.0, two, 0.0, 0.0); decrgpulse(pwC*81.2/90.0, zero, 0.0, 0.0); decrgpulse(pwC*85.3/90.0, two, 0.0, 0.0); delay(2.0e-6); zgradpulse(-gzlvl7, gt7); decpwrf(rf5); decphase(one); txphase(one); delay(zeta - gt7 - 0.5*10.933*pwC - WFG_START_DELAY-2.0e-6); /* WFG_START_DELAY */ decshaped_pulse("offC5", pwC5, one, 0.0, 0.0); delay(2.0e-6); zgradpulse(1.33*gzlvl3,gt3); delay(200.0e-6); if(dm3[B] == 'y'){ /*optional 2H decoupling on */ dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } decpwrf(rf1); decphase(t2); txphase(one); if (h1dec[A]=='y') { rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); } decrgpulse(pwC1, t3, 0.0, 0.0); decphase(zero); decpwrf(rf2); delay(tauCC -gt5 -202.0e-6 -POWER_DELAY- pwHd -PRG_STOP_DELAY -1/dmf3 -2.0e-6 - WFG_STOP_DELAY); if(dm3[B] == 'y') { /*optional 2H decoupling off */ dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } else delay(1/dmf3 +WFG_STOP_DELAY); if(h1dec[A]=='y') { xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); } else delay(pwHd +2.0e-6 +PRG_STOP_DELAY); delay(2.0e-6); zgradpulse(-gzlvl5, gt5); delay(200.0e-6); decrgpulse(pwC2,zero,0.0,0.0); delay(2.0e-6); zgradpulse(-gzlvl5, gt5); delay(200.0e-6); decpwrf(rf1); if(h1dec[A]=='y'){ rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); } else delay(pwHd+2.0e-6+PRG_START_DELAY); if(dm3[B] == 'y'){ /*optional 2H decoupling on */ dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } else delay(1/dmf3+WFG_START_DELAY); delay(tauCC -gt5 -202.0e-6 -POWER_DELAY -1/dmf3 -WFG_START_DELAY -POWER_DELAY -pwHd -2.0e-6 -PRG_START_DELAY -pwHd-2.0e-6-PRG_STOP_DELAY); if((h1dec[A]=='y') && (h1dec[B]=='n')) { xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,one,2.0e-6,0.0); decrgpulse(pwC1,t2,0.0,0.0); } else { delay(pwHd+2.0e-6+PRG_STOP_DELAY-POWER_DELAY); if ((h1dec[A]=='y')&&(h1dec[B]=='y')) { delay(POWER_DELAY); decrgpulse(pwC1,t2,0.0,0.0); } if ((h1dec[A]=='n')&&(h1dec[B]=='n')) { obspower(tpwr); simpulse(2.0*pw,pwC1,two,t2,0.0,0.0); /* Assuming 2.0*pw < pwC1 */ } } /* It could be h1dec='ny' ??? */ /* xxxxxxxxxxxxxxxxxxxxxx 13Cb EVOLUTION xxxxxxxxxxxxxxxxxx */ if (CT_c[0]=='n') { if ((nli>1.0) && (tau1>0.0)) { /* total 13C evolution equals d2 exactly */ /* 2.0*pwC1/PI compensates for evolution at 64% rate during pwC1 */ decpwrf(rf7); if(tau1 - 2.0*pwC1/PI - WFG3_START_DELAY - 0.5*pwZ > 0.0) { delay(tau1 - 2.0*pwC1/PI - WFG3_START_DELAY - 0.5*pwZ); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC7", "", 0.0, pwC7a, 2.0*pwN, zero, zero, zero, 0.0, 0.0); initval(phshift7, v7); decstepsize(1.0); dcplrphase(v7); /* SAPS_DELAY */ delay(tau1 - 2.0*pwC1/PI - SAPS_DELAY - 0.5*pwZ - 2.0e-6); } else { initval(180.0, v7); decstepsize(1.0); dcplrphase(v7); /* SAPS_DELAY */ delay(2.0*tau1 - 4.0*pwC1/PI - SAPS_DELAY - 2.0e-6); } } else if (nli==1.0) { /* special 1D check of pwC7 phase enabled when nli=1 */ decpwrf(rf7); delay(10.0e-6 + SAPS_DELAY + 0.5*pwZ1 + WFG_START_DELAY); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC7", "", 0.0, pwC7, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); initval(phshift7, v7); decstepsize(1.0); dcplrphase(v7); /* SAPS_DELAY */ delay(10.0e-6 + WFG3_START_DELAY + 0.5*pwZ1); } else{ /* 13Ca evolution refocused for 1st increment */ decpwrf(rf2); decrgpulse(pwC2, zero, 2.0e-6, 0.0); } } /* H1 dec. and H2 dec. status are not changed through nonCT evolution*/ else { /* 13C CONSTANT TIME EVOLUTION */ decpwrf(rf0); decpower(pwCgCO_lvl); if(h1dec[B]=='y') { if(tau1 - 2.0*pwC1/PI -WFG_START_DELAY -2*POWER_DELAY> 0.0) delay(tau1 - 2.0*pwC1/PI -WFG_START_DELAY - 2*POWER_DELAY); decshaped_pulse("CgCO1",pwCgCO,zero,0.0,0.0); delay(tauC -gt8 -202.0e-6 -pwHd -2.0e-6 -PRG_STOP_DELAY -pwCgCO -pwC2 -WFG_STOP_DELAY-1/dmf3); if(dm3[B] == 'y') { /*optional 2H decoupling off */ dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } else delay(1/dmf3+WFG_STOP_DELAY); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); } if ((h1dec[B]=='n')&&(dm3[B]=='n')) { obspower(tpwr); if(tau1 - 2.0*pwC1/PI -WFG_START_DELAY -3*POWER_DELAY> 0.0) { delay(tau1 - 2.0*pwC1/PI -WFG3_START_DELAY - 3*POWER_DELAY); simshaped_pulse("","CgCO1",2.0*pw,pwCgCO,two,zero,0.0,0.0); } else simshaped_pulse("","CgCO1",2.0*pw,pwCgCO,two,zero,0.0,0.0); obspower(tpwrd); delay(tauC -gt8 -202.0e-6 -pwCgCO -pwC2 -POWER_DELAY); } if ((h1dec[B]=='n')&&(dm3[B]=='y')) { obspower(tpwr); if(tau1 - 2.0*pwC1/PI - WFG_START_DELAY -3*POWER_DELAY> 0.0) { delay(tau1 - 2.0*pwC1/PI - WFG3_START_DELAY - 3*POWER_DELAY); decshaped_pulse("CgCO1",pwCgCO,zero,0.0,0.0); } else decshaped_pulse("CgCO1",pwCgCO,zero,0.0,0.0); delay(taud-0.5*pwC2-WFG_START_DELAY-WFG_STOP_DELAY-pwCgCO); rgpulse(2.0*pw,two,0.0,0.0); obspower(tpwrd); delay(tauC -taud -gt8 -202e-6 -2.0*pw -POWER_DELAY -1/dmf3 -pwCgCO -pwC2 -WFG_STOP_DELAY); dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(200.0e-6-2*POWER_DELAY); decpower(pwClvl);decpwrf(rf2); decrgpulse(pwC2,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(200.0e-6-2*POWER_DELAY); decpower(pwCgCO_lvl);decpwrf(rf0); if(h1dec[A]=='y'){ rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); } else delay(pwHd+ 2.0e-6 +PRG_START_DELAY); if(dm3[B] == 'y'){ /*optional 2H decoupling on */ dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } else delay(1/dmf3+WFG_START_DELAY); delay(tauC -tau1 -202.0e-6 -gt8 -pwCgCO -WFG_START_DELAY -WFG_STOP_DELAY -POWER_DELAY -1/dmf3 -WFG_START_DELAY -pwHd -2.0e-6 -PRG_START_DELAY); decshaped_pulse("CgCO2",pwCgCO,zero,0.0,0.0); } /* END of C13 CONSTANT TIME EVOLUTION */ decphase(one); decpower(pwClvl); decpwrf(rf1); decrgpulse(pwC1, one, 2.0e-6, 0.0); delay(tauCC - gt5 -202.0e-6 -2.0e-6 -pwHd -PRG_STOP_DELAY -1/dmf3 -WFG_STOP_DELAY); if(dm3[B] == 'y') { /*optional 2H decoupling off */ dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } else delay(1/dmf3+WFG_STOP_DELAY); if(h1dec[B]=='y') { xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); } else delay(2.0e-6+pwHd+PRG_STOP_DELAY); delay(2.0e-6); zgradpulse(gzlvl5*1.33, gt5); delay(200.0e-6-2.0*POWER_DELAY); decpwrf(rf2); decphase(zero); decrgpulse(pwC2, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl5*1.33,gt5); delay(200.0e-6-2.0*POWER_DELAY); decpwrf(rf1); decphase(t5); if(h1dec[A]=='y'){ rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); } else delay(pwHd+ 2.0e-6 +PRG_START_DELAY); if(dm3[B] == 'y'){ /*optional 2H decoupling on */ dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } else delay(1/dmf3+WFG_START_DELAY); delay(tauCC - gt5 -202.0e-6 -1/dmf3 -WFG_START_DELAY -2.0e-6 -pwHd -PRG_START_DELAY); /*decrgpulse(pwC1, t5, 0.0, 0.0); */ decrgpulse(pwC1, zero, 0.0, 0.0); decpwrf(rf5); decshaped_pulse("offC5", pwC5, one, 0.0, 0.0); delay(zeta - gt7 -202.0e-6 - pwHd -2.0e-6 -PRG_STOP_DELAY -1/dmf3 -WFG_STOP_DELAY -0.5*10.933*pwC-2.0e-6); if(dm3[B] == 'y') { /*optional 2H decoupling off */ dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } else delay(1/dmf3+WFG_STOP_DELAY); if(h1dec[A]=='y') { xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); } else delay(2.0e-6+pwHd+PRG_STOP_DELAY); delay(2.0e-6); zgradpulse(-gzlvl7, gt7); decpwrf(rf0); decphase(zero); delay(200.0e-6-2.0*POWER_DELAY); decrgpulse(pwC*158.0/90.0, zero, 0.0, 0.0); decrgpulse(pwC*171.2/90.0, two, 0.0, 0.0); decrgpulse(pwC*342.8/90.0, zero, 0.0, 0.0); /* Shaka 6 composite */ decrgpulse(pwC*145.5/90.0, two, 0.0, 0.0); decrgpulse(pwC*81.2/90.0, zero, 0.0, 0.0); decrgpulse(pwC*85.3/90.0, two, 0.0, 0.0); delay(2.0e-6); zgradpulse(-gzlvl7, gt7); delay(200.0e-6); decpwrf(rf5); decphase(one); txphase(one); if(h1dec[A]=='y'){ rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); } else delay(pwHd+ 2.0e-6 +PRG_START_DELAY); if(dm3[B] == 'y'){ /*optional 2H decoupling on */ dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } else delay(1/dmf3+WFG_START_DELAY); delay(zeta - gt7 - 0.5*10.933*pwC - WFG_START_DELAY-2.0e-6 -1/dmf3 -WFG_START_DELAY -pwHd -2.0e-6 -PRG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC5", pwC5, t5, 0.0, 0.0); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ dec2phase(t8); txphase(one); dcplrphase(zero); obspower(tpwrd); if(dm3[B] == 'y') { /*optional 2H decoupling off */ dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } if(h1dec[A]=='y') { xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); } zgradpulse(gzlvl4, gt4); delay(2.0e-4); if (TROSY[A]=='n') { rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); } dec2rgpulse(pwN, t8, 0.0, 0.0); decphase(zero); dec2phase(t9); decpwrf(rf7); delay(timeTN - tau2); sim3shaped_pulse("","offC7","",0.0, pwC7, 2.0*pwN, zero, zero, t9, 0.0, 0.0); dec2phase(t10); decpwrf(rf5); if (TROSY[A]=='y') { if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.5e-4 + pwHs) { txphase(three); delay(timeTN - pwC2) ; /* WFG_START_DELAY */ decrgpulse(pwC2, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); /* POWER_DELAY */ delay(0.5e-4 - POWER_DELAY); } else if (tau2 > pwHs + 0.5e-4) { txphase(three); delay(timeTN-pwC2-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decrgpulse(pwC2, zero, 0.0, 0.0); delay(tau2 - pwHs - 0.5e-4); shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); /* POWER_DELAY */ delay(0.5e-4 - POWER_DELAY); } else { txphase(three); delay(timeTN - pwC2 - gt1 - 2.0*GRADIENT_DELAY - 1.5e-4 - pwHs); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwrs); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ shaped_pulse("H2Osinc", pwHs, three, 0.0, 0.0); txphase(t4); obspower(tpwr); /* POWER_DELAY */ delay(0.5e-4 - POWER_DELAY); decrgpulse(pwC2, zero, 0.0, 0.0); delay(tau2); } } else { if (tau2 > kappa) { delay(timeTN - pwC2); /* WFG_START_DELAY */ decrgpulse(pwC2, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > (kappa - pwC2)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); /* WFG_START_DELAY */ decrgpulse(pwC2, zero, 0.0, 0.0); delay(kappa -pwC2 -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - tau2 - pwC2 ); /* WFG_START_DELAY */ decrgpulse(pwC2, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa-tau2-pwC2-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(icosel*gzcal*gzlvl1, gt1); else zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decrgpulse(pwC2, zero, 0.0, 0.0); delay(tau2); } } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl2, gt1/10.0); else zgradpulse(gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ statusdelay(C,gstab- rof1); if (dm3[B]=='y') lk_sample(); setreceiver(t12); }