pulsesequence() { char lkflg[MAXSTR]; getstr("lkflg",lkflg); status(A); dec3blank(); if (lkflg[A]=='y') lk_sample(); hsdelay(d1); status(B); pulse(p1, zero); hsdelay(d2); status(C); pulse(pw,oph); if (lkflg[A]=='y') lk_hold(); dec3unblank(); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES; parameters used in the last half of the */ /* sequence are declared and initialized as 0.0 in bionmr.h, and */ /* reinitialized below */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni = getval("ni"), ni2 = getval("ni2"); double d2_init=0.0, /* used for states tppi in t1 */ d3_init=0.0, /* used for states tppi in t2 */ tau1, /* t1 delay */ BPdpwrspinlock, /* user-defined upper limit for spinlock(Hz) */ BPpwrlimits, /* =0 for no limit, =1 for limit */ t1a, /* time increments for first dimension */ t1b, t1c, tauCH = getval("tauCH"), /* 1/4J delay for CH */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ epsilon = 1.05e-3, /* other delays */ zeta = 3.0e-3, eta = 4.6e-3, theta = 14.0e-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 */ widthHd, pwS1, /* length of square 90 on Cab */ pwS2, /* length of square 180 on Ca */ phi7cal = getval("phi7cal"), /* phase in degrees of the last C13 90 pulse */ spinlock = getval("spinlock"), /* DIPSI-3 spinlock field */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 decoupling on Cab */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), waltzB1 = getval("waltzB1"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("TROSY",TROSY); widthHd=2.069*(waltzB1/sfrq); /* produces same field as std. sequence */ /* 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 */ P_getreal(GLOBAL,"BPpwrlimits",&BPpwrlimits,1); P_getreal(GLOBAL,"BPdpwrspinlock",&BPdpwrspinlock,1); if (BPpwrlimits > 0.5) { if (spinlock > BPdpwrspinlock) { printf("spinlock too large, reset to user-defined limit (BPdpwrspinlock)"); psg_abort(1); } } kappa = 5.4e-3; lambda = 2.4e-3; if( pwC > 24.0*600.0/sfrq ) { printf("increase pwClvl so that pwC < 24*600/sfrq"); psg_abort(1); } /* get calculated pulse lengths of shaped C13 pulses */ pwS1 = c13pulsepw("cab", "co", "square", 90.0); pwS2 = c13pulsepw("ca", "co", "square", 180.0); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( gt4 > epsilon - 0.6*pwC) { printf(" gt4 is too big. Make gt4 equal to %f or less.\n", (epsilon - 0.6*pwC)); 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 > 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; } /* C13 TIME INCREMENTATION and set up f1180 */ /* 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); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); set_c13offset("cab"); obsoffset(tof); obspower(tpwr); obspwrf(4095.0); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); txphase(three); 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, three, 0.0, 0.0); /* 1H pulse excitation */ /* point a */ txphase(zero); decphase(zero); zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ delay(5.0e-5); 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); delay(epsilon - gt4 - 0.6*pwC); /* WFG2_START_DELAY */ sim_c13pulse("", "cab", "co", "square", 2.0*pw, 180.0, zero, zero, 2.0e-6, 2.0e-6); delay(WFG2_START_DELAY); zgradpulse(gzlvl4, gt4); delay(epsilon - gt4); /* point d */ decrgpulse(0.5e-3, zero, 0.0, 0.0); c13decouple("cab", "DIPSI3", 2.0*spinlock/dfrq, ncyc); /* PRG_STOP_DELAY */ /* point e */ h1decon("DIPSI2", widthHd, 0.0);/*POWER_DELAY+PWRF_DELAY+PRG_START_DELAY */ decphase(t5); delay(zeta - PRG_STOP_DELAY - PRG_START_DELAY - POWER_DELAY - PWRF_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); decphase(zero); delay(zeta - 0.5*10.933*pwC - 0.6*pwS1 - WFG_START_DELAY - 2.0e-6); /* WFG_START_DELAY */ c13pulse("cab", "co", "square", 90.0, zero, 2.0e-6, 0.0); /* point f */ decphase(t5); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { gzlvl0=getval("gzlvl0"); gzlvl3=getval("gzlvl3"); gzlvl4=getval("gzlvl4"); 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); c13pulse("co", "ca", "sinc", 90.0, t5, 2.0e-6, 0.0); /* point g */ decphase(zero); delay(eta - 2.0*POWER_DELAY - 2.0*PWRF_DELAY); /* 2*POWER_DELAY+2*PWRF_DELAY */ c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); /* pwS2 */ dec2phase(zero); delay(theta - eta - pwS2 - WFG3_START_DELAY); /* WFG3_START_DELAY */ sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); initval(phi7cal, v7); decstepsize(1.0); dcplrphase(v7); /* SAPS_DELAY */ dec2phase(t8); delay(theta - SAPS_DELAY); /* point h */ nh_evol_se_train("co", "ca"); /* common part of sequence in bionmr.h */ if (dm3[B]=='y') lk_sample(); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES; parameters used in the last half of the */ /* sequence are declared and initialized as 0.0 in bionmr.h, and */ /* reinitialized below */ char f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ fil_flg1[MAXSTR], had_flg[MAXSTR], shname1[MAXSTR], shname2[MAXSTR], ala_flg[MAXSTR], ser_flg[MAXSTR], SE_flg[MAXSTR], /* SE_flg */ TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double d3_init=0.0, /* used for states tppi in t2 */ stCwidth = 80.0, shpw1,shpw2, /* t1 delay */ tauCH = getval("tauCH"), /* 1/4J delay for CH */ tauC1 = getval("tauC1"), tauC2 = getval("tauC2"), tauC3 = getval("tauC3"), had2,had3, timeTN = getval("timeTN"), /* constant time for 15N evolution */ eta = 4.6e-3, theta = 14.0e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ pwS1, pwS2, pwS3, pwS4, pwS5,pwS6,pwS7, phi7cal = getval("phi7cal"), /* phase in degrees of the last C13 90 pulse */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw2 = getval("sw2"), gt3 = getval("gt3"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl5 = getval("gzlvl5"), flip_angle=120.0,had1=0.0, epsilon = getval("epsilon"); fil_flg1[0]='n'; ser_flg[0]='n'; /*initialize*/ getstr("f2180",f2180); getstr("had_flg",had_flg); getstr("shname1",shname1); getstr("shname2",shname2); getstr("TROSY",TROSY); getstr("SE_flg",SE_flg); /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t3,4,phi3); settable(t4,1,phx); settable(t5,2,phi5); settable(t6,2,phi6); settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,8,phi12); settable(t13,8,rec2); /* INITIALIZE VARIABLES */ shpw1 = pw*8.0; shpw2 = pwC*8.0; kappa = 5.4e-3; lambda = 2.4e-3; had2=0.5/135.0; had3=0.5/135.0; ala_flg[0]='n'; if (had_flg[0] == '1') { fil_flg1[0]='n';ser_flg[0]='n';flip_angle=120.0;had1=0.0;} if (had_flg[0] == '2') { fil_flg1[0]='y';ser_flg[0]='n';flip_angle=120.0;had1=0.0;} if (had_flg[0] == '3') { fil_flg1[0]='n';ser_flg[0]='y';flip_angle=120.0;had1=0.0;} if (had_flg[0] == '4') { fil_flg1[0]='y';ser_flg[0]='y';flip_angle=120.0;had1=0.0;} if (had_flg[0] == '5') { fil_flg1[0]='n';ser_flg[0]='n';flip_angle=60.0;had1=0.5/140.0;} if (had_flg[0] == '6') { fil_flg1[0]='y';ser_flg[0]='n';flip_angle=60.0;had1=0.5/140.0;} if (had_flg[0] == '7') { fil_flg1[0]='n';ser_flg[0]='y';flip_angle=60.0;had1=0.5/140.0;} if (had_flg[0] == '8') { fil_flg1[0]='y';ser_flg[0]='y';flip_angle=60.0;had1=0.5/140.0;} if( pwC > 20.0*600.0/sfrq ) { printf("increase pwClvl so that pwC < 20*600/sfrq"); psg_abort(1); } /* get calculated pulse lengths of shaped C13 pulses */ pwS1 = c13pulsepw("cab", "co", "square", 90.0); pwS2 = c13pulsepw("ca", "co", "square", 180.0); pwS3 = c13pulsepw("co", "ca", "sinc", 180.0); pwS4 = c_shapedpw("isnob5",80.0,0.0,zero, 2.0e-6, 2.0e-6); pwS6 = c_shapedpw("reburp",80.0,0.0,zero, 2.0e-6, 2.0e-6); /* attention, y a aussi des 180 CaCb après les filtres*/ pwS7 = c_shapedpw(shname2,80.0,150.0,zero, 2.0e-6, 2.0e-6); pwS5 = c_shapedpw("isnob5",30.0,0.0,zero, 2.0e-6, 2.0e-6); /* 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 > 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 (TROSY[A]=='y') { if (phase2 == 2) icosel = +1; else {tsadd(t4,2,4); tsadd(t10,2,4); icosel = -1;} } else { if (SE_flg[0]=='y') { if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; } else { if (phase2 == 2) {tsadd(t8,1,4); } } } /* Set up f2180 */ tau2 = d3; /* run 2D exp for NH correlation, but must use tau2 instead of tau1 because bionmr.h is written for nh_evol* to do tau2 evolution*/ if((f2180[A] == 'y') && (ni2 > 1.0)) /* use f2180 to control tau2 */ { 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) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw1 + 0.5 ); if(t2_counter % 2) { tsadd(t8,2,4); tsadd(t12,2,4); tsadd(t13,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if (dm3[B]=='y') lk_hold(); rcvroff(); set_c13offset("cab"); obsoffset(tof); obspower(tpwr); obspwrf(4095.0); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); 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(gstab); 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(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, 2.0e-6, 0.0); zgradpulse(gzlvl5, gt5); delay(tauCH - gt5 - WFG2_START_DELAY - 0.5e-3 + 68.0e-6 ); sim_c13adiab_inv_pulse("", "aliph", stCwidth, "sech1", 2.0*pw, 1.0e-3, zero, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl5, gt5); delay(tauCH - gt5 - 0.5e-3 + 68.0e-6); rgpulse(pw, one, 0.0, 0.0); if (ser_flg[0] == 'n' ) delay(pwS5); if (ser_flg[0] == 'y' ) c_shapedpulse("isnob5",30.0,24.0,zero, 2.0e-6, 2.0e-6); /*********************************** transfer CB->CA + DEPT CBH **************/ zgradpulse(gzlvl3, gt3*1.2); delay(gstab); decrgpulse(pwC, t3, 0.0, 0.0); rgpulse(pw, three, 0.0, 0.0); if (flip_angle > 90.0) delay(pw*(flip_angle/90.0-1)); if (fil_flg1[0] == 'y') { /* JCOCA & JCOCB is turned on*/ zgradpulse(gzlvl3, gt3); delay(had2*0.5-pwS4*0.5-pwS7-gt3); c_simshapedpulse(shname2,80.0,150.0,0.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); c_simshapedpulse("isnob5",80.0,0.0,pw*2.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, gt3); delay(had2*0.5-pwS4*0.5-gt3); rgpulse(pw*flip_angle/90.0, t1, 0.0, 0.0); if (flip_angle < 90.0) delay(pw*(1-flip_angle/90.0)); zgradpulse(gzlvl3, 1.1*gt3); delay(had3*0.5-shpw1*0.5-1.1*gt3); shaped_pulse(shname1,shpw1,two,0.0,0.0); delay((tauC3-(had2+pw*120/90*2))*0.5-pwS4*0.5-had3*0.5-shpw1*0.5-pwS7); c_simshapedpulse(shname2,80.0,150.0,0.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); c_shapedpulse("isnob5",80.0,0.0,two, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, 1.1*gt3); delay((tauC3-(had2+pw*120/90*2))*0.5-pwS4*0.5-1.1*gt3); } if (fil_flg1[0] == 'n') { /* JCOCA & JCOCB is turned off*/ zgradpulse(gzlvl3, gt3); delay(epsilon/4.0-pwS7*0.5-gt3); c_simshapedpulse(shname2,80.0,150.0,0.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); delay(had2*0.5-pwS4*0.5-epsilon/4.0-pwS7*0.5); c_simshapedpulse("isnob5",80.0,0.0,pw*2.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, gt3); delay(had2*0.5-pwS4*0.5-gt3); rgpulse(pw*flip_angle/90.0, t1, 0.0, 0.0); if (flip_angle < 90.0) delay(pw*(1-flip_angle/90.0)); if (had3*0.5-shpw1*0.5-epsilon/4.0-pwS7*0.5>0.0) { zgradpulse(gzlvl3, 1.1*gt3); delay(epsilon/4.0-pwS7*0.5-1.1*gt3); c_simshapedpulse(shname2,80.0,150.0,0.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); delay(had3*0.5-shpw1*0.5-epsilon/4.0-pwS7*0.5); shaped_pulse(shname1,shpw1,two,0.0,0.0); delay((tauC3-(had2+pw*120/90*2))*0.5-pwS4*0.5-had3*0.5-shpw1*0.5); } else { zgradpulse(gzlvl3, 1.1*gt3); delay(had3*0.5-shpw1*0.5-1.1*gt3); shaped_pulse(shname1,shpw1,two,0.0,0.0); delay(epsilon/4.0-pwS7*0.5-had3*0.5-shpw1*0.5); c_simshapedpulse(shname2,80.0,150.0,0.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); delay((tauC3-(had2+pw*120/90*2))*0.5-pwS4*0.5-epsilon/4.0-pwS7*0.5); } c_shapedpulse("isnob5",80.0,0.0,two, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, 1.1*gt3); delay((tauC3-(had2+pw*120/90*2))*0.5-pwS4*0.5-1.1*gt3); } if (fil_flg1[0] == 'c') { /* JCOCA & JCOCB is turned off*/ zgradpulse(gzlvl3, gt3); delay(had2*0.5-pwS4*0.5-gt3); c_simshapedpulse("isnob5",80.0,0.0,pw*2.0,0.0,zero,zero,zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, gt3); delay(had2*0.5-pwS4*0.5-gt3); rgpulse(pw*flip_angle/90.0, t1, 0.0, 0.0); if (flip_angle < 90.0) delay(pw*(1-flip_angle/90.0)); zgradpulse(gzlvl3, 1.1*gt3); delay(had3*0.5-shpw1*0.5-1.1*gt3); shaped_pulse(shname1,shpw1,two,0.0,0.0); delay((tauC3-(had2+pw*120.0/90.0*2.0))*0.5-pwS4*0.5-had3*0.5-shpw1*0.5); c_shapedpulse("isnob5",80.0,0.0,two, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, 1.1*gt3); delay((tauC3-(had2+pw*120.0/90.0*2.0))*0.5-pwS4*0.5-1.1*gt3); } /*********************************** 2nd transfer CB->CA +DEPT CAH ***********/ decrgpulse(pwC, zero, 0.0, 0.0); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); delay(tauC1-pwS3-pwS4*0.5); c_shapedpulse("reburp",80.0,0.0,zero, 2.0e-6, 2.0e-6); delay(tauC1-tauC2-pwS3-pwS4*0.5); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); delay(tauC2-pw*8.0-had1); shaped_pulse(shname1,shpw1,two,0.0,0.0); delay(had1); c13pulse("cab", "co", "square", 90.0, zero, 0.0, 0.0); /******************************************************************************/ if(dm3[B] == 'y') /*optional 2H decoupling off */ {dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank();} zgradpulse(gzlvl3, gt3); delay(2.0e-4); h1decon("DIPSI2", 27.0, 0.0);/*POWER_DELAY+PWRF_DELAY+PRG_START_DELAY */ c13pulse("co", "ca", "sinc", 90.0, t5, 2.0e-6, 0.0); /* point e */ decphase(zero); delay(eta - 2.0*POWER_DELAY - 2.0*PWRF_DELAY); /* 2*POWER_DELAY+2*PWRF_DELAY */ c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); /* pwS2 */ dec2phase(zero); delay(theta - eta - pwS2 - WFG3_START_DELAY); /* WFG3_START_DELAY */ sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); initval(phi7cal, v7); decstepsize(1.0); dcplrphase(v7); /* SAPS_DELAY */ dec2phase(t8); delay(theta - SAPS_DELAY); if (SE_flg[0]=='y') /* point f */ { nh_evol_se_train("co", "ca"); /* common part of sequence in bionmr.h */ if (dm3[B]=='y') lk_sample(); } else { nh_evol_train("co", "ca"); /* common part of sequence in bionmr.h */ if (dm3[B]=='y') lk_sample(); } }
pulsesequence() { /* DECLARE VARIABLES */ char autocal[MAXSTR], /* auto-calibration flag */ fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ f3180[MAXSTR], /* Flag to start t3 @ halfdwell */ fco180[MAXSTR], /* Flag for checking sequence */ fca180[MAXSTR], /* Flag for checking sequence */ spca180[MAXSTR], /* string for the waveform Ca 180 */ spco180[MAXSTR], /* string for the waveform Co 180 */ spchirp[MAXSTR], /* string for the waveform reburp 180 */ ddseq[MAXSTR], /* 2H decoupling seqfile */ shp_sl[MAXSTR], /* string for seduce shape */ sel_flg[MAXSTR]; int phase, phase2, phase3, ni2, ni3, icosel, t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ t3_counter; /* used for states tppi in t3 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ tau3, /* t2 delay */ taua, /* ~ 1/4JNH = 2.25 ms */ taub, /* ~ 1/4JNH = 2.25 ms */ zeta, /* time for C'-N to refocuss set to 0.5*24.0 ms */ bigTN, /* nitrogen T period */ pwc90, /* PW90 for c nucleus @ d_c90 */ pwc180on, /* PW180 at @ d_c180 */ pwchirp, /* PW180 for ca nucleus @ d_creb */ pwc180off, /* PW180 at d_c180 + pad */ tsatpwr, /* low level 1H trans.power for presat */ d_c90, /* power level for 13C pulses(pwc90 = sqrt(15)/4delta) delta is the separation between Ca and Co */ d_c180, /* power level for 180 13C pulses (pwc180on=sqrt(3)/2delta */ d_chirp, sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ sw3, /* sweep width in f3 */ pw_sl, /* pw90 for H selective pulse on water ~ 2ms */ phase_sl, /* phase for pw_sl */ tpwrsl, /* power level for square pw_sl */ pwDlvl, /* Power for D decoupling */ pwD, /* pw90 at pwDlvl */ pwC, pwClvl, /* C-13 calibration */ compC, pwN, /* PW90 for 15N pulse */ pwNlvl, /* high dec2 pwr for 15N hard pulses */ gstab, /* delay to compensate for gradient gt5 */ gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gt9, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9; /* LOAD VARIABLES */ getstr("autocal",autocal); getstr("fsat",fsat); getstr("fco180",fco180); getstr("fca180",fca180); getstr("f1180",f1180); getstr("f2180",f2180); getstr("f3180",f3180); getstr("fscuba",fscuba); getstr("ddseq",ddseq); getstr("shp_sl",shp_sl); getstr("sel_flg",sel_flg); taua = getval("taua"); taub = getval("taub"); zeta = getval("zeta"); bigTN = getval("bigTN"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dpwr = getval("dpwr"); pwN = getval("pwN"); pwNlvl = getval("pwNlvl"); pwD = getval("pwD"); pwDlvl = getval("pwDlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); phase3 = (int) ( getval("phase3") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); sw3 = getval("sw3"); ni2 = getval("ni2"); ni3 = getval("ni3"); pw_sl = getval("pw_sl"); phase_sl = getval("phase_sl"); tpwrsl = getval("tpwrsl"); gstab = getval("gstab"); gt1 = getval("gt1"); if (getval("gt2") > 0) gt2=getval("gt2"); else gt2=gt1*0.1; gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); 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"); if(autocal[0]=='n') { getstr("spca180",spca180); getstr("spco180",spco180); getstr("spchirp",spchirp); pwc90 = getval("pwc90"); pwc180on = getval("pwc180on"); pwc180off = getval("pwc180off"); d_c90 = getval("d_c90"); d_c180 = getval("d_c180"); pwchirp = getval("pwchirp"); d_chirp = getval("d_chirp"); } else { strcpy(spca180,"Phard180ca"); strcpy(spco180,"Phard180co"); strcpy(spchirp,"Pchirp180"); if (FIRST_FID) { pwC = getval("pwC"); compC = getval("compC"); pwClvl = getval("pwClvl"); co90 = pbox("cal", CO90, CO180ps, dfrq, pwC*compC, pwClvl); co180 = pbox("cal", CO180, CO180ps, dfrq, pwC*compC, pwClvl); ca180 = pbox(spca180, CA180, CA180ps, dfrq, pwC*compC, pwClvl); co180a = pbox(spco180, CO180a, CA180ps, dfrq, pwC*compC, pwClvl); chirp = pbox(spchirp, CHIRP, CHIRPps, dfrq, pwC*compC, pwClvl); } pwc90 = co90.pw; d_c90 = co90.pwr; pwc180on = co180.pw; d_c180 = co180.pwr; pwc180off = ca180.pw; pwchirp = chirp.pw; d_chirp = chirp.pwr; } /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,2,phi2); settable(t3,4,phi3); settable(t4,1,phi4); settable(t5,4,phi5); settable(t6,4,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( bigTN - (ni3-1)*0.5/sw3 - WFG3_START_DELAY < 0.2e-6 ) { text_error(" ni3 is too big\n"); text_error(" please set ni3 smaller or equal to %d\n", (int) ((bigTN -WFG3_START_DELAY)*sw3*2.0) +1 ); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' || dm[D] == 'y' )) { text_error("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nnnn' "); psg_abort(1); } if( tsatpwr > 6 ) { text_error("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 46 ) { text_error("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 46 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( dpwr3 > 50 ) { text_error("don't fry the probe, dpwr3 too large! "); psg_abort(1); } if( d_c90 > 62 ) { text_error("don't fry the probe, DHPWR too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwc90 > 200.0e-6 ) { text_error("dont fry the probe, pwc90 too high ! "); psg_abort(1); } if( pwc180off > 200.0e-6 ) { text_error("dont fry the probe, pwc180 too high ! "); psg_abort(1); } if( gt3 > 2.5e-3 ) { text_error("gt3 is too long\n"); psg_abort(1); } if( gt1 > 10.0e-3 || gt2 > 10.0e-3 || gt4 > 10.0e-3 || gt5 > 10.0e-3 || gt6 > 10.0e-3 || gt7 > 10.0e-3 || gt8 > 10.0e-3 || gt9 > 10.0e-3) { text_error("gt values are too long. Must be < 10.0e-3 or gt11=50us\n"); psg_abort(1); } if((fca180[A] == 'y') && (ni2 > 1)) { text_error("must set fca180='n' to allow Calfa evolution (ni2>1)\n"); psg_abort(1); } if((fco180[A] == 'y') && (ni > 1)) { text_error("must set fco180='n' to allow CO evolution (ni>1)\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) tsadd(t1,1,4); if (phase2 == 2) tsadd(t5,1,4); if (phase3 == 2) { tsadd(t4, 2, 4); icosel = 1; } else icosel = -1; /* Set up f1180 tau1 = t1 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1)) { if (pwc180off > 2.0*pwN) tau1 += (1.0/(2.0*sw1) - 4.0*pwc90/PI - pwc180off - WFG3_START_DELAY - WFG3_STOP_DELAY - 4.0e-6 - 2.0*POWER_DELAY - 4.0e-6); else tau1 += (1.0/(2.0*sw1) - 4.0*pwc90/PI - 2.0*pwN - WFG3_START_DELAY - WFG3_STOP_DELAY - 4.0e-6 - 2.0*POWER_DELAY - 4.0e-6); if(tau1 < 0.2e-6) { tau1 = 0.4e-6; text_error("tau1 could be negative"); } } else { if (pwc180off > 2.0*pwN) tau1 = tau1 - 4.0*pwc90/PI - pwc180off - WFG3_START_DELAY - WFG3_STOP_DELAY - 4.0e-6 - 2.0*POWER_DELAY - 4.0e-6; else tau1 = tau1 - 4.0*pwc90/PI - 2.0*pwN - WFG3_START_DELAY - WFG3_STOP_DELAY - 4.0e-6 - 2.0*POWER_DELAY - 4.0e-6; if(tau1 < 0.2e-6) tau1 = 0.4e-6; } tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1)) { if (pwc180off > 2.0*pwN) tau2 += ( 1.0 / (2.0*sw2) - 4.0*pwc90/PI - 4.0e-6 - 2.0*POWER_DELAY - WFG3_START_DELAY - pwc180off - WFG3_STOP_DELAY - 4.0e-6); else tau2 += ( 1.0 / (2.0*sw2) - 4.0*pwc90/PI - 4.0e-6 - 2.0*POWER_DELAY - WFG3_START_DELAY - 2.0*pwN - WFG3_STOP_DELAY - 4.0e-6); if(tau2 < 0.2e-6) { tau2 = 0.4e-6; text_error("tau2 could be negative"); } } else { if (pwc180off > 2.0*pwN) tau2 = tau2 - 4.0*pwc90/PI - 4.0e-6 - 2.0*POWER_DELAY - WFG3_START_DELAY - pwc180off - WFG3_STOP_DELAY - 4.0e-6; else tau2 = tau2 - 4.0*pwc90/PI - 4.0e-6 - 2.0*POWER_DELAY - WFG3_START_DELAY - 2.0*pwN - WFG3_STOP_DELAY - 4.0e-6; if(tau2 < 0.2e-6) tau2 = 0.4e-6; } tau2 = tau2/2.0; /* Set up f3180 tau3 = t3 */ tau3 = d4; if ((f3180[A] == 'y') && (ni3 > 1)) { tau3 += ( 1.0 / (2.0*sw3) ); if(tau3 < 0.2e-6) tau3 = 0.4e-6; } tau3 = tau3/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(t6,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(t6,2,4); } if( ix == 1) d4_init = d4 ; t3_counter = (int) ( (d4-d4_init)*sw3 + 0.5 ); if(t3_counter % 2) { tsadd(t2,2,4); tsadd(t6,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obsoffset(tof); decoffset(dof); /* set Dec1 carrier at Co */ obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(d_chirp); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 power for 15N hard pulses */ /* Presaturation Period */ if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presaturation */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if (fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); lk_hold(); delay(20.0e-6); initval(1.0,v2); obsstepsize(phase_sl); xmtrphase(v2); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shp_sl,pw_sl,one,4.0e-6,0.0); xmtrphase(zero); obspower(tpwr); txphase(zero); delay(4.0e-6); /* shaped pulse */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(0.2e-6); zgradpulse(gzlvl5,gt5); delay(2.0e-6); delay(taua - gt5 - 2.2e-6); /* taua <= 1/4JNH */ sim3pulse(2*pw,0.0e-6,2*pwN,zero,zero,zero,0.0,0.0); txphase(three); dec2phase(zero); decphase(zero); delay(0.2e-6); zgradpulse(gzlvl5,gt5); delay(200.0e-6); delay(taua - gt5 - 200.2e-6 - 2.0e-6); if (sel_flg[A] == 'n') { rgpulse(pw,three,2.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl3,gt3); delay(200.0e-6); dec2rgpulse(pwN,zero,0.0,0.0); delay( zeta ); dec2rgpulse(2.0*pwN,zero,0.0,0.0); decshaped_pulse(spchirp,pwchirp,zero,0.0,0.0); delay(zeta -WFG_START_DELAY -pwchirp -WFG_STOP_DELAY -2.0e-6); dec2rgpulse(pwN,zero,2.0e-6,0.0); } else { rgpulse(pw,one,2.0e-6,0.0); initval(1.0,v3); dec2stepsize(45.0); dcplr2phase(v3); delay(0.2e-6); zgradpulse(gzlvl3,gt3); delay(200.0e-6); dec2rgpulse(pwN,zero,0.0,0.0); dcplr2phase(zero); delay(1.34e-3 - SAPS_DELAY - 2.0*pw); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,0.0); delay( zeta - 1.34e-3 - 2.0*pw); dec2rgpulse(2.0*pwN,zero,0.0,0.0); decshaped_pulse(spchirp,pwchirp,zero,0.0,0.0); delay(zeta -WFG_START_DELAY -pwchirp -WFG_STOP_DELAY -2.0e-6); dec2rgpulse(pwN,zero,2.0e-6,0.0); } dec2phase(zero); decphase(t1); decpower(d_c90); delay(0.2e-6); zgradpulse(gzlvl8,gt8); delay(200.0e-6); decrgpulse(pwc90,t1,2.0e-6,0.0); /* t1 period for Co evolution begins */ if (fco180[A]=='n') { decpower(d_c180); delay(tau1); sim3shaped_pulse("",spca180,"",0.0,pwc180off,2.0*pwN,zero,zero,zero,4.0e-6,0.0); decpower(d_c90); delay(tau1); } else /* for checking sequence */ { decpower(d_c180); decrgpulse(pwc180on,zero,4.0e-6,0.0); decpower(d_c90); } /* t1 period for Co evolution ends */ decrgpulse(pwc90,zero,4.0e-6,0.0); decoffset(dof-(174-56)*dfrq); /* change Dec1 carrier to Ca (55 ppm) */ delay(0.2e-6); zgradpulse(gzlvl4,gt4); delay(150.0e-6); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ decrgpulse(pwc90,t5,2.0e-6,0.0); /* t2 period for Ca evolution begins */ if (fca180[A]=='n') { decphase(zero); dec2phase(zero); decpower(d_c180); delay(tau2); sim3shaped_pulse("",spco180,"",0.0,pwc180off,2.0*pwN,zero,zero,zero,4.0e-6,0.0); decpower(d_c90); delay(tau2); } else /* for checking sequence */ { decpower(d_c180); decrgpulse(pwc180on,zero,4.0e-6,0.0); decpower(d_c90); } /* t2 period for Ca evolution ends */ decrgpulse(pwc90,zero,4.0e-6,0.0); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3phase(three); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ decoffset(dof); /* set carrier back to Co */ decpower(d_chirp); delay(0.2e-6); zgradpulse(gzlvl9,gt9); delay(150.0e-6); /* t3 period begins */ dec2rgpulse(pwN,t2,2.0e-6,0.0); dec2phase(t3); delay(bigTN - tau3); dec2rgpulse(2.0*pwN,t3,0.0,0.0); decshaped_pulse(spchirp,pwchirp,zero,0.0,0.0); txphase(zero); dec2phase(t4); delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(500.0e-6); delay(bigTN - WFG_START_DELAY - pwchirp - WFG_STOP_DELAY -gt1 -500.2e-6 -2.0*GRADIENT_DELAY); delay(tau3); sim3pulse(pw,0.0e-6,pwN,zero,zero,t4,0.0,0.0); /* t3 period ends */ decpower(d_c90); decrgpulse(pwc90,zero,4.0e-6,0.0); decoffset(dof-(174-56)*dfrq); decrgpulse(pwc90,zero,20.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(2.0e-6); dec2phase(zero); delay(taub - POWER_DELAY - 4.0e-6 - pwc90 - 20.0e-6 - pwc90 - gt6 - 2.2e-6); sim3pulse(2*pw,0.0e-6,2*pwN,zero,zero,zero,0.0,0.0); decoffset(dof); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(200.0e-6); txphase(one); dec2phase(one); delay(taub - gt6 - 200.2e-6); sim3pulse(pw,0.0e-6,pwN,one,zero,one,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(taub - gt7 - 2.2e-6); sim3pulse(2*pw,0.0e-6,2*pwN,zero,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(200.0e-6); delay(taub - gt7 - 200.2e-6); sim3pulse(pw,0.0e-6,pwN,zero,zero,zero,0.0,0.0); delay(gt2 +gstab -0.5*(pwN -pw) -2.0*pw/PI); rgpulse(2*pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(icosel*gzlvl2,gt2); decpower(dpwr); dec2power(dpwr2); delay(gstab -2.0e-6 -2.0*GRADIENT_DELAY -2.0*POWER_DELAY); lk_sample(); /* BEGIN ACQUISITION */ status(C); 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 f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ rna_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 */ del1 = getval("del1"), del2 = getval("del2"), /* STUD+ waveforms automatically calculated by macro "rnacal" */ /* and string parameter rna_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+ */ 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 */ dofa, /* dof shifted to 80 ppm for ribose */ /* p_d is used to calculate the isotropic mixing on the Cab region */ p_d, /* 50 degree pulse for DIPSI-3 at rfd */ rfd, /* fine power for 35 ppm */ 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 */ sw1 = getval("sw1"), sw2 = getval("sw2"), grecov = getval("grecov"), /* Gradient recovery delay, typically 150-200us */ gt1 = getval("gt1"), /* coherence pathway gradients */ 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("f1180",f1180); getstr("f2180",f2180); /* 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( dpwrf < 4095 ) { text_error("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rfC = 4095.0; /* Center dof in RIBOSE region on 80 ppm. */ dofa = dof - 30.0*dfrq; /* dipsi-3 decoupling C-ribose */ p_d = (5.0)/(9.0*4.0*7000.0*(sfrq/800.0)); /* DIPSI-3 covers 35 ppm */ rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = (int) (ncyc + 0.5); /* 80 ppm STUD+ decoupling */ strcpy(rna_stCdec, "wurst80"); stdmf = getval("dmf80"); studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf80); studlvl = (int) (studlvl + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if( gt1 > 0.5*del - 0.5*grecov ) { text_error(" gt1 is too big. Make gt1 less than %f.\n", (0.5*del - 0.5*grecov)); psg_abort(1);} if((dm3[A] == 'y' || dm3[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' or 'nny' "); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y')) { text_error("incorrect dec1 decoupler flags! Should be 'nny' "); psg_abort(1); } if( (((dm[C] == 'y') && (dm2[C] == 'y')) && (STUD[A] == 'y')) ) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' if STUD='y'"); psg_abort(1); } if( dpwr > 50 ) { text_error("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( (pw > 20.0e-6) && (tpwr > 56) ) { text_error("don't fry the probe, pw too high ! "); psg_abort(1); } if( (pwC > 40.0e-6) && (pwClvl > 56) ) { text_error("don't fry the probe, pwN too high ! "); psg_abort(1); } if( (pwN > 100.0e-6) && (pwNlvl > 56) ) { text_error("don't fry the probe, pwN too high ! "); psg_abort(1); } if ((dm3[B] == 'y' && dpwr3 > 44 )) { text_error ("Deuterium decoupling power too high ! "); psg_abort(1); } if ((ncyc > 1 ) && (ix == 1)) { text_error("mixing time is %f ms.\n",(ncyc*97.8*4*p_d)); } /* 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(); delay(d1); if (dm3[B]=='y') lk_hold(); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rfC); obsoffset(tof); decoffset(dofa); dec2offset(dof2); txphase(t3); delay(1.0e-5); decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl1, 0.5e-3); delay(grecov/2); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl1, 0.5e-3); delay(5.0e-4); 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, 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); 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(rfC); delay(tau2); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tau2); decpwrf(rfC); zgradpulse(-icosel2*gzlvl2, 1.8*gt1); delay(grecov+2.0e-6); decrgpulse(2.0*pwC, zero, 0.0, 0.0); decpwrf(rfC); zgradpulse(icosel2*gzlvl2, 1.8*gt1); delay(grecov + pwN); decrgpulse(pwC, zero, 0.0, 0.0); decpwrf(rfC); 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 (STUD[A]=='y') decpower(studlvl); else { decpower(dpwr); dec2power(dpwr2); } zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ if(dm3[B] == 'y') delay(0.5*del - gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - POWER_DELAY); else delay(0.5*del - gt1 - 2.0*GRADIENT_DELAY - POWER_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(); } decpower(dpwr); /* POWER_DELAY */ if (dm3[B]=='y') lk_sample(); if ((STUD[A]=='y') && (dm[C] == 'y')) {decpower(studlvl); 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() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ H2Opurge[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 */ BPdpwrspinlock, /* user-defined upper limit for spinlock(Hz) */ BPpwrlimits, /* =0 for no limit, =1 for limit */ tau2, /* t2 delay */ 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 */ 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-3 at rfd */ rfd, /* fine power for 9.0 kHz rf at 600MHz */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 */ spinlock = getval("spinlock"), /* DIPSI-3 Field Strength in Hz */ /* the following pulse length for the SLP pulse is automatically calculated */ /* by the macro "hcch_tocsy". The SLP pulse shape,"offC10" is called */ /* directly from your shapelib. */ pwC10 = getval("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 */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), 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("H2Opurge", H2Opurge); 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); P_getreal(GLOBAL,"BPpwrlimits",&BPpwrlimits,1); P_getreal(GLOBAL,"BPdpwrspinlock",&BPdpwrspinlock,1); /* LOAD PHASE TABLE */ settable(t3, 2, phi3); settable(t5, 4, phi5); settable(t9, 8, phi9); settable(t11, 8, 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); } if ((pwC > (25.0e-6 * 600.0 / sfrq)) && (ncyc > 0.0)) { printf("Increase pwClvl so that pwC < 25*600/sfrq"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 180 degree one-lobe sinc pulse on CO, null at Ca 139ppm away */ 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 (spinlock < 1000.0) { printf("Spinlock seems too low. Please check spinlock value ! "); psg_abort(1); } /* dipsi-3 spinlock 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); /*************************For Ultra-High Field Probes***************************/ if (sfrq>590.0) { if (ncyc>2) { if (pwC>15) { if (rfd > 2000) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>14) { if (rfd > 1800) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>13) { if (rfd > 1600) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>12) { if (rfd > 1400) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>11) { if (rfd > 1200) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (rfd > 1000) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } } } } } } else { if (ncyc == 2) { if (pwC>15) { if (rfd > 2200) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>14) { if (rfd > 2000) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>13) { if (rfd > 1800) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>12) { if (rfd > 1600) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>11) { if (rfd > 1400) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (rfd > 1200) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } } } } } } else { if (ncyc == 1) { if (pwC>15) { if (rfd > 2400) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>14) { if (rfd > 2200) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>13) { if (rfd > 2000) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>12) { if (rfd > 1800) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (pwC>11) { if (rfd > 1600) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } else { if (rfd > 1400) { printf("spinlock too large. Lower value for probe protection"); psg_abort(1); } } } } } } } } } } /*********************End: For Ultra-High Field Probes***************************/ /* CHECK VALIDITY OF PARAMETER RANGES */ if ((dm[A] == 'y' || dm[B] == 'y')) { printf("incorrect dec1 decoupler flags! Should be 'nny' or 'nnn' "); 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 ((dm3[A] == 'y' || dm3[C] == 'y')) { printf("incorrect dec1 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1); } if (dpwr > 52) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if (pw > 80.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 */ if (phase1 == 2) tsadd(t3, 1, 4); if (phase2 == 2) tsadd(t5, 1, 4); /* C13 TIME INCREMENTATION and set up f1180 */ /* 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(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(gzlvl0, 0.5e-3); delay(1.0e-4); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7 * gzlvl0, 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 */ zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ decphase(zero); delay(taua + tau1 - gt0 - 2.0 * GRADIENT_DELAY - 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); zgradpulse(gzlvl0, gt0); txphase(one); decphase(t5); delay(taua - gt0); rgpulse(pw, one, 0.0, 0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); decrgpulse(pwC, t5, 0.0, 0.0); delay(tau2); dec2rgpulse(2.0 * pwN, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ decphase(zero); decpwrf(rf7); delay(taub - 2.0 * pwN - gt4 - 2.0 * GRADIENT_DELAY); decshaped_pulse("offC10", pwC10, zero, 0.0, 0.0); txphase(zero); decpwrf(rf0); delay(taub - 2.0 * pw); rgpulse(2.0 * pw, zero, 0.0, 0.0); delay(tau2); decrgpulse(2.0 * pwC, zero, 0.0, 0.0); decpwrf(rf7); delay(taub); decshaped_pulse("offC10", pwC10, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ delay(taub - gt4 - 2.0 * GRADIENT_DELAY); decpwrf(rfd); decrgpulse(1.0e-3, zero, 0.0, 0.0); if (ncyc>0) { 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(); } decrgpulse(9.0 * p_d / 5.0, t9, 2.0e-6, 0.0); if (H2Opurge[A] == 'y') { obspwrf(1000); rgpulse(900 * pw, zero, 0.0, 0.0); rgpulse(500 * pw, one, 0.0, 0.0); obspwrf(4095.0); } zgradpulse(gzlvl7, gt7); decpwrf(rf0); delay(50.0e-6); rgpulse(pw, zero, 0.0, 0.0); zgradpulse(gzlvl7, gt7 / 1.6); decrgpulse(pwC, three, 100.0e-6, 0.0); zgradpulse(gzlvl5, gt5); decphase(zero); delay(tauc - gt5); simpulse(2.0 * pw, 2.0 * pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); delay(tauc - gt5); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); 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 */ } delay(2.0e-4); rgpulse(pw, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(taua - gt5 + rof1); simpulse(2.0 * pw, 2.0 * pwC, zero, zero, 0.0, rof1); zgradpulse(gzlvl6, gt5); if (STUD[A] == 'y') decpower(studlvl); else decpower(dpwr); dec2power(dpwr2); delay(taua - gt5 - 2.0 * POWER_DELAY); rgpulse(pw, zero, 0.0, rof2); rcvron(); if (dm3[B] == 'y') lk_sample(); setreceiver(t11); if ((STUD[A] == 'y') && (dm[C] == 'y')) { decprgon(stCdec, 1.0 / stdmf, 1.0); decon(); if (dm2[C] == 'y') { setstatus(DEC2ch, TRUE, dmm2[C], FALSE, dmf2); } } else status(C); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES; parameters used in the last half of the */ /* sequence are declared and initialized as 0.0 in bionmr.h, and */ /* reinitialized below */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ stCshape[MAXSTR], TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni = getval("ni"), ni2 = getval("ni2"); double d2_init=0.0, /* used for states tppi in t1 */ d3_init=0.0, /* used for states tppi in t2 */ tau1, /* t1 delay */ tauCH = getval("tauCH"), /* 1/4J delay for CH */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ timeNCA = getval("timeNCA"), timeC = getval("timeC"), /* other delays */ tauCC = getval("tauCC"), zeta = getval("zeta"), pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), rf0, rfst, widthHd, pwS1, /* length of square 90 on Cab */ pwS2, /* length of square 180 on Ca */ phi7cal = getval("phi7cal"), /* phase in degrees of the last C13 90 pulse */ phshift = getval("phshift"), /* phase shift induced on CO by 180 on CA in middle of t1 */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), waltzB1 = getval("waltzB1"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("TROSY",TROSY); widthHd=2.069*(waltzB1/sfrq); /* produces same field as std. sequence */ /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t4,1,phx); 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,16,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,8,rec);} /* INITIALIZE VARIABLES */ kappa = 5.4e-3; lambda = 2.4e-3; /* maximum fine power for pwC pulses (and initialize rfst) */ rf0 = 4095.0; rfst=0.0; if( pwC > 20.0*600.0/sfrq ) { printf("increase pwClvl so that pwC < 20*600/sfrq"); psg_abort(1); } /* 30 ppm sech/tanh inversion for Ca-Carbons */ rfst = (compC*4095.0*pwC*4000.0*sqrt((4.5*sfrq/600.0+3.85)/0.41)); rfst = (int) (rfst + 0.5); strcpy(stCshape, "stC30"); /* get calculated pulse lengths of shaped C13 pulses */ pwS1 = c13pulsepw("co", "ca", "sinc", 90.0); pwS2 = c13pulsepw("ca", "co", "square", 180.0); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( gt4 > zeta - 0.6*pwC) { printf(" gt4 is too big. Make gt4 equal to %f or less.\n", (zeta - 0.6*pwC)); psg_abort(1);} if ( 0.5*ni*1/(sw1) > 2.0*timeC + tauCC - OFFSET_DELAY - SAPS_DELAY) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((2.0*timeC - OFFSET_DELAY)*2.0*sw1))); 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(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; } /* C13 TIME INCREMENTATION and set up f1180 */ /* 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(t2,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(); rcvroff(); set_c13offset("ca"); obsoffset(tof); obspower(tpwr); obspwrf(4095.0); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); txphase(three); 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); 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 */ txphase(zero); decphase(zero); zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ decpwrf(rfst); delay(tauCH - gt0 - WFG2_START_DELAY - 0.5e-3 + 70.0e-6); simshaped_pulse("",stCshape, 2.0*pw, 1.0e-3, zero, zero, 0.0, 0.0); delay(tauCH - gt0 - 0.5e-3 + 70.0e-6 - 150.0e-6); decpwrf(rf0); zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ delay(150.0e-6); rgpulse(pw, one, 0.0, 0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); decrgpulse(pwC, t1, 0.0, 0.0); set_c13offset("co"); delay(zeta - 0.6*pwC - OFFSET_DELAY - POWER_DELAY - PWRF_DELAY - PRG_START_DELAY); h1decon("DIPSI2", widthHd, 0.0); /*POWER_DELAY+PWRF_DELAY+PRG_START_DELAY */ delay(2.0*timeC - zeta); c13pulse("co", "ca", "sinc", 90.0, t2, 0.0, 0.0); /* pwS1 */ delay(timeNCA - tau1); c13pulse("ca", "co", "sinc", 180.0, zero, 2.0e-6, 2.0e-6); sim3_c13pulse("", "co", "ca", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); /* pwS2 */ delay(timeNCA + tau1 + (60.0e-6)); initval(phshift, v3); decstepsize(1.0); dcplrphase(v3); c13pulse("co", "ca", "sinc", 90.0, one, 0.0, 0.0); /* pwS1 */ delay(2.0*timeC + tauCC - OFFSET_DELAY - SAPS_DELAY - tau1); c13pulse("ca", "co", "sinc", 180.0, zero, 0.0, 0.0); delay(tauCC); sim3_c13pulse("", "co", "ca", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 0.0, 60.0e-6); delay(tau1); set_c13offset("ca"); initval(phi7cal, v7); decstepsize(1.0); dcplrphase(v7); /* SAPS_DELAY */ dec2phase(t8); nh_evol_se_train("ca", "co"); /* common part of sequence in bionmr.h */ if (dm3[B] == 'y') lk_sample(); }
pulsesequence() { /* DECLARE VARIABLES */ char satmode[MAXSTR], fscuba[MAXSTR], cbdecseq[MAXSTR], chirp_shp[MAXSTR], /* name of variable containing name of Pbox shape */ fco180[MAXSTR], /* Flag for checking sequence */ fca180[MAXSTR], /* Flag for checking sequence */ sel_flg[MAXSTR]; int icosel, ni = getval("ni"), t1_counter; /* used for states tppi in t1 */ double d2_init=0.0, /* used for states tppi in t1 */ tau1, /* t1 delay */ tau2, /* t2 delay */ tau3, /* t2 delay */ taua, /* ~ 1/4JNH = 2.25 ms */ taub, /* ~ 1/4JNH = 2.25 ms */ zeta, /* time for C'-N to refocuss set to 0.5*24.0 ms */ bigTN, /* nitrogen T period */ BigT1, /* delay to compensate for gradient gt5 */ satpwr, /* low level 1H trans.power for presat */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ cophase, /* phase correction for CO evolution */ caphase, /* phase correction for Ca evolution */ cbpwr, /* power level for selective CB decoupling */ cbdmf, /* pulse width for selective CB decoupling */ cbres, /* decoupling resolution of CB decoupling */ pwS1, /* length of 90 on Ca */ pwS2, /* length of 90 on CO */ pwS3, /* length of 180 on Ca */ pwS4, /* length of 180 on CO */ pwS5, /* CHIRP inversion pulse on CO and CA */ pwrS5=0.0, /* power of CHIRP pulse */ gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gt9, gstab, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9, compH = getval("compH"), /* adjustment for amplifier compression */ pwHs = getval ("pwHs"), /* H1 90 degree pulse at tpwrs */ tpwrs, /* power for pwHs ("H2osinc") pulse */ waltzB1 = getval("waltzB1"), pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), /* ampl. compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ swCa = getval("swCa"), swCO = getval("swCO"), swN = getval("swN"), swTilt, /* This is the sweep width of the tilt vector */ cos_N, cos_CO, cos_Ca, angle_N, angle_CO, angle_Ca; angle_N=0.0; /* LOAD VARIABLES */ getstr("satmode",satmode); getstr("fco180",fco180); getstr("fca180",fca180); getstr("fscuba",fscuba); getstr("sel_flg",sel_flg); taua = getval("taua"); taub = getval("taub"); zeta = getval("zeta"); bigTN = getval("bigTN"); BigT1 = getval("BigT1"); tpwr = getval("tpwr"); satpwr = getval("tsatpwr"); dpwr = getval("dpwr"); sw1 = getval("sw1"); sw2 = getval("sw2"); cophase = getval("cophase"); caphase = getval("caphase"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); gstab = getval("gstab"); 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"); /* Load variable */ cbpwr = getval("cbpwr"); cbdmf = getval("cbdmf"); cbres = getval("cbres"); tau1 = 0; tau2 = 0; tau3 = 0; cos_N = 0; cos_CO = 0; cos_Ca = 0; getstr("cbdecseq", cbdecseq); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,2,phi2); settable(t3,1,phi3); settable(t4,8,phi4); settable(t5,4,phi5); settable(t6,8,rec); /* get calculated pulse lengths of shaped C13 pulses */ pwS1 = c13pulsepw("ca", "co", "square", 90.0); pwS2 = c13pulsepw("co", "ca", "sinc", 90.0); pwS3 = c13pulsepw("ca","co","square",180.0); pwS4 = c13pulsepw("co","ca","sinc",180.0); /*this section creates the chirp pulse inverting both co and ca*/ /*Pcoca180 is the name of the shapelib file created */ /*chirp180 is a file produced by Pbox psg containing parameter values from shape*/ strcpy(chirp_shp,"Pcoca180"); if (FIRST_FID) /* make shape once */ chirp180 = pbox(chirp_shp, CHIRP180, CHIRP180ps, dfrq, compC*pwC, pwClvl); pwrS5 = chirp180.pwr; /* get pulse power from file */ pwS5 = chirp180.pw; /* get pulse width from file */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ widthHd = 2.681*waltzB1/sfrq; /* bandwidth of H1 WALTZ16 decoupling */ pwHd = h1dec90pw("WALTZ16", widthHd, 0.0); /* H1 90 length for WALTZ16 */ /* CHECK VALIDITY OF PARAMETER RANGES */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' )) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if( satpwr > 6 ) { printf("SATPWR too large !!! "); psg_abort(1); } if( dpwr > 46 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 46 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pwClvl > 62 ) { printf("don't fry the probe, pwClvl 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( gt3 > 2.5e-3 ) { printf("gt3 is too long\n"); psg_abort(1); } if( gt1 > 10.0e-3 || gt2 > 10.0e-3 || gt4 > 10.0e-3 || gt5 > 10.0e-3 || gt6 > 10.0e-3 || gt7 > 10.0e-3 || gt8 > 10.0e-3 || gt9 > 10.0e-3) { printf("gt values are too long. Must be < 10.0e-3 or gt11=50us\n"); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Set up angles and phases */ angle_CO=getval("angle_CO"); cos_CO=cos(PI*angle_CO/180.0); angle_Ca=getval("angle_Ca"); cos_Ca=cos(PI*angle_Ca/180.0); if ( (angle_CO < 0) || (angle_CO > 90) ) { printf ("angle_CO must be between 0 and 90 degree.\n"); psg_abort(1); } if ( (angle_Ca < 0) || (angle_Ca > 90) ) { printf ("angle_Ca must be between 0 and 90 degree.\n"); psg_abort(1); } if ( 1.0 < (cos_CO*cos_CO + cos_Ca*cos_Ca) ) { printf ("Impossible angles.\n"); psg_abort(1); } else { cos_N=sqrt(1.0- (cos_CO*cos_CO + cos_Ca*cos_Ca)); angle_N = 180.0*acos(cos_N)/PI; } swTilt=swCO*cos_CO + swCa*cos_Ca + swN*cos_N; if (ix ==1) { printf("\n\nn\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf ("Maximum Sweep Width: \t\t %f Hz\n", swTilt); printf ("Anlge_CO:\t%6.2f\n", angle_CO); printf ("Anlge_Ca:\t%6.2f\n", angle_Ca); printf ("Anlge_N :\t%6.2f\n", angle_N ); } /* Set up hyper complex */ /* sw1 is used as symbolic index */ if ( sw1 < 1000 ) { printf ("Please set sw1 to some value larger than 1000.\n"); psg_abort(1); } if (ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if (t1_counter % 2) { tsadd(t2,2,4); tsadd(t6,2,4); } if (phase1 == 1) { ;} /* CC */ else if (phase1 == 2) { tsadd(t1,1,4);} /* SC */ else if (phase1 == 3) { tsadd(t5,1,4); } /* CS */ else if (phase1 == 4) { tsadd(t1,1,4); tsadd(t5,1,4); } /* SS */ else { printf ("phase1 can only be 1,2,3,4. \n"); psg_abort(1); } if (phase2 == 2) { tsadd(t4,2,4); icosel = +1; } /* N */ else icosel = -1; tau1 = 1.0*t1_counter*cos_CO/swTilt; tau2 = 1.0*t1_counter*cos_Ca/swTilt; tau3 = 1.0*t1_counter*cos_N/swTilt; tau1 = tau1/2.0; tau2 = tau2/2.0; tau3 = tau3/2.0; /* CHECK VALIDITY OF PARAMETER RANGES */ if (bigTN - 0.5*ni*(cos_N/swTilt) < 0.2e-6) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((bigTN )*2.0*swTilt/cos_N))); psg_abort(1);} /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); set_c13offset("co"); /* set Dec1 carrier at Co */ obspower(satpwr); /* Set transmitter power for 1H presaturation */ obspwrf(4095.0); decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ decpwrf(4095.0); dec2power(pwNlvl); /* Set Dec2 power for 15N hard pulses */ dec2pwrf(4095.0); /* Presaturation Period */ if (satmode[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presaturation */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(one); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); lk_hold(); delay(20.0e-6); shiftedpulse("sinc", pwHs, 90.0, 0.0, one, 2.0e-6, 2.0e-6); txphase(zero); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(0.2e-6); zgradpulse(gzlvl1, gt1); delay(2.0e-6); delay(taua - gt1 - 2.2e-6); /* taua <= 1/4JNH */ sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(three); dec2phase(zero); decphase(zero); delay(0.2e-6); zgradpulse(gzlvl1, gt1); delay(gstab); delay(taua - gt1 - gstab - 2.0e-6); if(sel_flg[A] == 'n') { rgpulse(pw,three,2.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl2, gt2); delay(gstab); dec2rgpulse(pwN,zero,0.0,0.0); decpower(pwrS5); delay( zeta -POWER_DELAY); dec2rgpulse(2.0*pwN,zero,0.0,0.0); decshapedpulse(chirp_shp, pwS5, zero, 0.0, 0.0); decpower(pwClvl); delay(zeta - pwS5 - POWER_DELAY - 2.0e-6); dec2rgpulse(pwN,zero,2.0e-6,0.0); } else { rgpulse(pw,one,2.0e-6,0.0); initval(1.0,v3); dec2stepsize(45.0); dcplr2phase(v3); delay(0.2e-6); zgradpulse(gzlvl2, gt2); delay(gstab); dec2rgpulse(pwN,zero,0.0,0.0); dcplr2phase(zero); delay(1.34e-3 - SAPS_DELAY - 2.0*pw); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,0.0); decpower(pwrS5); delay( zeta - 1.34e-3 - 2.0*pw -POWER_DELAY); dec2rgpulse(2.0*pwN,zero,0.0,0.0); decshapedpulse(chirp_shp, pwS5, zero, 0.0, 0.0); decpower(pwClvl); delay(zeta - pwS5 - POWER_DELAY - 2.0e-6); dec2rgpulse(pwN,zero,2.0e-6,0.0); } dec2phase(zero); decphase(t1); delay(0.2e-6); zgradpulse(gzlvl3, gt3); delay(gstab); /* t1 period for CO evolution */ c13pulse("co", "ca", "sinc", 90.0, t1, 0.0, 0.0); if (!strcmp(fco180, "y")) { delay(10.0e-6); sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); decstepsize(1.0); initval(cophase,v4); dcplrphase(v4); delay(10.0e-6); } else { if (tau1-2.0*pwS2/PI-pwN-WFG3_START_DELAY-POWER_DELAY-2.0e-6 > 0.0) { delay(tau1-2.0*pwS2/PI-pwN-WFG3_START_DELAY-POWER_DELAY-2.0e-6); sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); decstepsize(1.0); initval(cophase,v4); dcplrphase(v4); delay(tau1-2.0*pwS2/PI-pwN-SAPS_DELAY-WFG3_STOP_DELAY-POWER_DELAY-2.0e-6); } else { c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); } } c13pulse("co", "ca", "sinc", 90.0, zero, 4.0e-6, 0.0); dcplrphase(zero); set_c13offset("ca"); /* change Dec1 carrier to Ca (55 ppm) */ delay(0.2e-6); zgradpulse(gzlvl4, gt4); delay(gstab); /* t2 period for Ca evolution*/ /* Turn on D decoupling using the third decoupler */ dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ c13pulse("ca", "co", "square", 90.0, t5, 0.0, 0.0); if (!strcmp(fca180, "y")) { delay(10.0e-6); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); decstepsize(1.0); initval(caphase,v5); dcplrphase(v5); delay(10.0e-6); } else { if (tau2-pwN-2.0*pwS1/PI-WFG3_START_DELAY-2*POWER_DELAY- -WFG_STOP_DELAY-WFG_START_DELAY-2.0e-6 > 0.0) { decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(tau2-pwN-2.0*pwS1/PI-WFG3_START_DELAY-2*POWER_DELAY- WFG_STOP_DELAY-WFG_START_DELAY-2.0e-6); decoff(); decprgoff(); decphase(zero); dec2phase(zero); decpower(pwClvl); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(tau2-pwN-2.0*pwS1/PI-SAPS_DELAY-WFG3_STOP_DELAY-2*POWER_DELAY- WFG_STOP_DELAY-WFG_START_DELAY-2.0e-6); decoff(); decprgoff(); decstepsize(1.0); initval(caphase,v5); dcplrphase(v5); decpower(pwClvl); } else { c13pulse("ca", "co", "square", 180.0, zero, 0.0, 0.0); } } c13pulse("ca", "co", "square", 90.0, zero, 4.0e-6, 0.0); dcplrphase(zero); /* Turn off D decoupling */ dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); /* Turn off D decoupling */ set_c13offset("co"); /* set carrier back to Co */ delay(0.2e-6); zgradpulse(gzlvl9, gt9); delay(gstab); /* t3 period */ dec2rgpulse(pwN,t2,2.0e-6,0.0); dec2phase(t3); decpower(pwrS5); delay(bigTN - tau3 -POWER_DELAY); dec2rgpulse(2.0*pwN,t3,0.0,0.0); decshapedpulse(chirp_shp, pwS5, zero, 0.0, 0.0); decpower(pwClvl); txphase(zero); dec2phase(t4); delay(0.2e-6); zgradpulse(icosel*gzlvl5, gt5); delay(gstab); delay(bigTN - WFG_START_DELAY - pwS5 - WFG_STOP_DELAY - gt5 - gstab - 2.0*GRADIENT_DELAY); delay(tau3); sim3pulse(pw,0.0,pwN,zero,zero,t4,0.0,0.0); c13pulse("co", "ca", "sinc", 90.0, zero, 4.0e-6, 0.0); set_c13offset("ca"); c13pulse("ca", "co", "square", 90.0, zero, 20.0e-6, 0.0); delay(0.2e-6); zgradpulse(gzlvl6, gt6); delay(2.0e-6); dec2phase(zero); delay(taub - POWER_DELAY - 4.0e-6 - pwS1 - 20.0e-6 - pwS2 - gt6 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); set_c13offset("co"); delay(0.2e-6); zgradpulse(gzlvl6, gt6); delay(gstab); txphase(one); dec2phase(one); delay(taub - gt6 - gstab); sim3pulse(pw,0.0,pwN,one,zero,one,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7, gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(taub - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7, gt7); delay(gstab); delay(taub - gt7 - gstab); sim3pulse(pw,0.0,pwN,zero,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(-gzlvl8, gt8/2.0); delay(gstab); delay(BigT1 - gt8/2.0 - gstab - 0.5*(pwN - pw) - 2.0*pw/PI); rgpulse(2*pw,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl8, gt8/2.0); delay(gstab); dec2power(dpwr2); decpower(dpwr); delay(BigT1 - gt8/2.0 - gstab - 2.0*POWER_DELAY); lk_sample(); status(C); setreceiver(t6); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES; parameters used in the last half of the */ /* sequence are declared and initialized as 0.0 in bionmr.h, and */ /* reinitialized below */ char sel_flg[MAXSTR], autocal[MAXSTR], glyshp[MAXSTR]; int t1_counter, /* used for states tppi in t1 */ ni = getval("ni"); double d2_init=0.0, /* used for states tppi in t1 */ tau1, tau2, tau3, glypwr,glypwrf, /* Power levels for Cgly selective 90 */ pwgly, /* Pulse width for Cgly selective 90 */ bw,ppm, /* Used for autocal Cgly selective 90*/ tauCC = getval("tauCC"), /* delay for Ca to Cb cosy */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ waltzB1 = getval("waltzB1"), pwC = getval("pwC"), /* C13 pulse at pwClvl */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ compC = getval("compC"), /* correction for amplifier compression*/ pwCa180, pwCO180, pwCab90, pwCab180, pwS1, /* length of square 90 on Cab */ phshift = getval("phshift"), /* phase shift on Cab by 180 on CO in t1 */ pwS2, /* length of 180 on CO */ pwS3, pwS = getval("pwS"), /*used to change 180 on CO in t1 for 1D calibration */ pwZ, /* the largest of pwS2 and 2.0*pwN */ pwZ1, /* the largest of pwS2 and 2.0*pwN for 1D experiments */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), swCb = getval("swCb"), swCa = getval("swCa"), swN = getval("swN"), swTilt, /* This is the sweep width of the tilt vector */ cos_N, cos_Ca, cos_Cb, angle_N, angle_Ca, angle_Cb, /* angle_N is calculated automatically */ gstab = getval("gstab"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), gzlvl3 = getval("gzlvl3"), gt4 = getval("gt4"), gzlvl4 = getval("gzlvl4"), gt5 = getval("gt5"), gzlvl5 = getval("gzlvl5"), gt6 = getval("gt6"), gzlvl6 = getval("gzlvl6"), gt7 = getval("gt7"), gzlvl7 = getval("gzlvl7"), gt8 = getval("gt8"), gzlvl8 = getval("gzlvl8"); angle_N=0.0; /* Load variables */ glypwrf = getval("glypwrf"); glypwr = getval("glypwr"); pwgly = getval("pwgly"); tau1 = 0; tau2 = 0; tau3 = 0; cos_N = 0; cos_Ca = 0; cos_Cb = 0; getstr("autocal", autocal); getstr("glyshp", glyshp); getstr("sel_flg",sel_flg); /* LOAD PHASE TABLE */ settable(t2,1,phy); settable(t3,2,phi3); settable(t5,4,phi5); settable(t6,8,phi6); settable(t8,1,phy); settable(t9,1,phx); settable(t10,1,phx); settable(t11,1,phx); settable(t12,8,recT); /* INITIALIZE VARIABLES */ lambda = 2.4e-3; pwCa180=c13pulsepw("ca", "co", "square", 180.0); pwCO180=c13pulsepw("co", "ca", "sinc", 180.0); pwCab90=c13pulsepw("cab","co","square",90.0); pwCab180=c13pulsepw("cab","co","square",180.0); pwHs = 1.7e-3*500.0/sfrq; /* length of H2O flipback, 1.7ms at 500 MHz*/ widthHd = 2.861*(waltzB1/sfrq); /* bw of H1 WALTZ16 decoupling */ pwHd = h1dec90pw("WALTZ16", widthHd, 0.0); /* H1 90 length for WALTZ16 */ /* get calculated pulse lengths of shaped C13 pulses */ pwS1 = c13pulsepw("cab", "co", "square", 90.0); pwS2 = c13pulsepw("co", "cab", "sinc", 180.0); pwS3 = c13pulsepw("cab", "co", "square", 180.0); /* the 180 pulse on CO at the middle of t1 */ if (pwS2 > 2.0*pwN) pwZ = pwS2; else pwZ = 2.0*pwN; if ((pwS==0.0) && (pwS2>2.0*pwN)) pwZ1=pwS2-2.0*pwN; else pwZ1=0.0; if ( ni > 1 ) pwS = 180.0; if ( pwS > 0 ) phshift = 140.0; else phshift = 0.0; /* CHECK VALIDITY OF PARAMETER RANGES */ 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' || dm3[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 '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);} /* PHASES AND INCREMENTED TIMES */ /* Set up angles and phases */ angle_Cb=getval("angle_Cb"); cos_Cb=cos(PI*angle_Cb/180.0); angle_Ca=getval("angle_Ca"); cos_Ca=cos(PI*angle_Ca/180.0); if ( (angle_Cb < 0) || (angle_Cb > 90) ) { printf ("angle_Cb must be between 0 and 90 degree.\n"); psg_abort(1); } if ( (angle_Ca < 0) || (angle_Ca > 90) ) { printf ("angle_Ca must be between 0 and 90 degree.\n"); psg_abort(1); } if ( 1.0 < (cos_Cb*cos_Cb + cos_Ca*cos_Ca) ) { printf ("Impossible angles.\n"); psg_abort(1); } else { cos_N=sqrt(1.0- (cos_Cb*cos_Cb + cos_Ca*cos_Ca)); angle_N = 180.0*acos(cos_N)/PI; } swTilt=swCb*cos_Cb + swCa*cos_Ca + swN*cos_N; if (ix ==1) { if ( 0.5*ni*(cos_N/swTilt) > timeTN - WFG3_START_DELAY) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*swTilt/cos_N))); psg_abort(1);} if ( (0.5*ni*cos_Ca/swTilt) > (tauCC - pwCO180 - pwCab180/2 - WFG2_START_DELAY - 2.0*PWRF_DELAY - 2.0*POWER_DELAY - WFG2_STOP_DELAY - 4.0e-6)) { printf (" ni is too big. Make ni equal to %d or less. \n", (int) ((tauCC - pwCO180 - pwCab180/2 - WFG2_START_DELAY - 2.0*PWRF_DELAY -2.0*POWER_DELAY - WFG2_STOP_DELAY -14.0e-6)/(0.5*cos_Ca/swTilt))); psg_abort(1); } printf("\n\nn\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf ("Maximum Sweep Width: \t\t %f Hz\n", swTilt); printf ("Angle_Cb:\t%6.2f\n", angle_Cb); printf ("Angle_Ca:\t%6.2f\n", angle_Ca); printf ("Angle_N :\t%6.2f\n", angle_N ); } /* Set up hyper complex */ /* sw1 is used as symbolic index */ if ( sw1 < 1000 ) { printf ("Please set sw1 to some value larger than 1000.\n"); psg_abort(1); } if (ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if (t1_counter % 2) { tsadd(t8,2,4); tsadd(t12,2,4); } if (phase1 == 1) { ;} /* CC */ else if (phase1 == 2) { tsadd(t3,3,4); tsadd(t2,3,4);} /* SC */ else if (phase1 == 3) { tsadd(t5,1,4); } /* CS */ else if (phase1 == 4) { tsadd(t3,3,4); tsadd(t2,3,4); tsadd(t5,1,4); } /* SS */ else { printf ("phase1 can only be 1,2,3,4. \n"); psg_abort(1); } if (phase2 == 2) { tsadd(t10,2,4); icosel = +1; } /* N */ else icosel = -1; tau1 = 1.0*t1_counter*cos_Cb/swTilt; tau2 = 1.0*t1_counter*cos_Ca/swTilt; tau3 = 1.0*t1_counter*cos_N/swTilt; tau1 = tau1/2.0; tau2 = tau2/2.0; tau3 = tau3/2.0; /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if (dm3[B] == 'y') lk_hold(); rcvroff(); obsoffset(tof); obspower(tpwr); obspwrf(4095.0); set_c13offset("cab"); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); txphase(one); delay(1.0e-5); shiftedpulse("sinc", pwHs, 90.0, 0.0, one, 2.0e-6, 0.0); txphase(zero); decphase(zero); dec2phase(zero); delay(2.0e-6); /* xxxxxxxxxxxxxxxxxxxxxx HN to N to Ca TRANSFER xxxxxxxxxxxxxxxxxx */ rgpulse(pw, zero, 0.0, 0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl3, gt3); /* G3 */ delay(lambda - gt3); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); if (sel_flg[A] == 'n') txphase(three); else txphase(one); zgradpulse(gzlvl3, gt3); /* G3 */ delay(lambda - gt3); if (sel_flg[A] == 'n') { rgpulse(pw, three, 0.0, 0.0); zgradpulse(gzlvl4, gt4); /* Crush gradient G4 */ delay(gstab); /* Begin of N to Ca transfer */ dec2rgpulse(pwN, zero, 0.0, 0.0); delay(timeTN - WFG3_START_DELAY); } else /* active suppresion */ { rgpulse(pw,one,2.0e-6,0.0); initval(1.0,v6); dec2stepsize(45.0); dcplr2phase(v6); zgradpulse(gzlvl4, gt4); /* Crush gradient G4 */ delay(gstab); /* Begin of N to Ca transfer */ dec2rgpulse(pwN,zero,0.0,0.0); dcplr2phase(zero); /* SAPS_DELAY */ delay(1.34e-3 - SAPS_DELAY - 2.0*pw); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,0.0); delay(timeTN -1.34e-3 - 2.0*pw - WFG3_START_DELAY); } sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); dec2phase(one); delay(timeTN); dec2rgpulse(pwN, one, 0.0, 0.0); /* xxxxxxxxxxxxxxxxxxxxxxxx END of N to CA TRANSFER xxxxxxxxxxxxxxxxxxxx */ setautocal(); set_c13offset("gly"); if (autocal[A] == 'n') { decpower(glypwr); decpwrf(4095.0); decphase(zero); decshaped_pulse(glyshp,pwgly,zero,2.0e-6,0.0); } else { if(FIRST_FID) { ppm = getval("dfrq"); bw=9*ppm; gly90 = pbox_make("gly90","eburp1",bw,0.0,compC*pwC,pwClvl); /* Gly selective 90 with null at 50ppm */ } pwgly=gly90.pw; glypwr=gly90.pwr; glypwrf=gly90.pwrf; decpwrf(glypwrf); decpower(glypwr); decshaped_pulse("gly90",pwgly,zero,2.0e-6,0.0); } zgradpulse(gzlvl5, gt5); /* Crush gradient G5 */ set_c13offset("cab"); decphase(t3); delay(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); } /* xxxxxxxxxxxxxxxxxxxxxx 13CA to 13CB TRANSFER xxxxxxxxxxxxxxxxxx */ c13pulse("cab", "co", "square", 90.0, t3, 2.0e-6, 0.0); decphase(zero); delay(tauCC); c13pulse("cab", "co", "square", 180.0, zero, 2.0e-6, 0.0); decphase(t2); delay(tauCC - POWER_DELAY - PWRF_DELAY - PRG_START_DELAY); /* xxxxxxxxxxxxxxxxxxxxxx 13CB EVOLUTION xxxxxxxxxxxxxxxxxx */ c13pulse("cab", "co", "square", 90.0, t2, 2.0e-6, 0.0); /* pwS1 */ decphase(zero); if ((ni>1.0) && (tau1>0.0)) { if (tau1 - 2.0*pwCab90/PI - WFG_START_DELAY - pwN - 2.0e-6 - PWRF_DELAY - POWER_DELAY > 0.0) { delay(tau1 - 2.0*pwCab90/PI - pwN - 2.0e-6 ); dec2rgpulse(2.0*pwN, zero, 2.0e-6, 0.0); delay(tau1 - 2.0*pwS1/PI - pwN - WFG_START_DELAY - 2.0e-6 - PWRF_DELAY - POWER_DELAY); } else { tsadd(t12,2,4); delay(2.0*tau1); delay(10.0e-6); /* WFG_START_DELAY */ sim3_c13pulse("", "cab", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); delay(10.0e-6); } } else { tsadd(t12,2,4); delay(10.0e-6); /* WFG_START_DELAY */ sim3_c13pulse("", "cab", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); delay(10.0e-6); } decphase(t6); c13pulse("cab", "co", "square", 90.0, t6, 2.0e-6, 0.0); /* pwS1 */ /* xxxxxxxxxxxx 13CB to 13CA BACK TRANSFER - CA EVOLUTION xxxxxxxxxxxxxx */ decphase(zero); delay(tau2); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); decphase(zero); delay(tauCC- 2*pwN - pwCab180/2 - WFG2_START_DELAY - 2.0*PWRF_DELAY - 2.0*POWER_DELAY - WFG2_STOP_DELAY - 4.0e-6 ); c13pulse("cab", "co", "square", 180.0, zero, 2.0e-6, 0.0); delay(tauCC - tau2 - pwCO180 - pwCab180/2 - WFG2_START_DELAY - 2.0*PWRF_DELAY -2.0*POWER_DELAY - WFG2_STOP_DELAY - 4.0e-6 ); c13pulse("co", "ca", "sinc", 180.0, zero, 2.0e-6, 0.0); decphase(t5); c13pulse("cab", "co", "square", 90.0, t5, 2.0e-6, 0.0); /* pwS1 */ /* xxxxxxxxxxx END of 13CB to 13CA BACK TRANSFER - CA EVOLUTION xxxxxxxxxxxx */ if (dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } dec2phase(t8); zgradpulse(gzlvl6, gt6); /* Crush gradient G6 */ delay(gstab); /* xxxxxxxxxxxxxxxx 13CA to 15N BACK TRANSFER - 15N EVOLUTION xxxxxxxxxxxxxx */ dec2rgpulse(pwN, t8, 2.0e-6, 2.0e-6); decphase(zero); dec2phase(t9); delay(timeTN - WFG3_START_DELAY - tau3); /* WFG3_START_DELAY */ sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, t9, 2.0e-6, 2.0e-6); dec2phase(t10); delay (timeTN - pwCO180 - WFG_START_DELAY - 2.0*POWER_DELAY - 2.0*PWRF_DELAY - 2.0e-6 - gt1 - 2.0*GRADIENT_DELAY - gstab); zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ delay(gstab - POWER_DELAY - PWRF_DELAY); c13pulse("co", "ca", "sinc", 180.0, zero, 2.0e-6, 0.0); /*pwCO180*/ delay(tau3); sim3pulse(pw, 0.0, pwN, zero, zero, t10, 0.0, 0.0); /* t4??*/ zgradpulse(gzlvl7, gt7); /* G7 */ txphase(zero); dec2phase(zero); delay (lambda - 1.3*pwN - gt7); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl7, gt7); /* G7 */ txphase(one); dec2phase(one); delay (lambda - 1.3*pwN - gt7); sim3pulse(pw, 0.0, pwN, one, zero, one, 0.0, 0.0); zgradpulse(gzlvl8, gt8); /* G8 */ txphase(zero); dec2phase(zero); delay (lambda - 1.3*pwN - gt8); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl8, gt8); /* G8 */ delay (lambda - 1.3*pwN - gt8); sim3pulse(pw, 0.0, pwN, zero, zero, zero, 0.0, 0.0); dec2power(dpwr2); decpower(dpwr); delay ( (gt1/10.0) + 1.0e-4 + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, 0.0); zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ statusdelay(C, 1.0e-4); setreceiver(t12); if (dm3[B] == 'y') lk_sample(); }
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); } }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ ribose[MAXSTR], /* ribose CHn groups only */ AH2H8[MAXSTR], /* Adenine H2-H8 correlation */ H2Opurge[MAXSTR], rna_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 */ 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 rna_stCdec calls stud decoupling waveform from your shapelib.*/ studlvl, /* coarse power for STUD+ decoupling */ 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 */ dofa, /* dof shifted to 80 ppm for ribose and 145 ppm for AH2H8 */ tofa, /* tof shifted to 7.5 ppm in t1 for AH2H8 */ /* p_d is used to calculate the isotropic mixing on the C-ribose region */ p_d, /* 50 degree pulse for DIPSI-3 at rfdC */ rfdC, /* fine power for 7.5 kHz or 4.0 kHz rf at 500MHz */ 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 */ sw1 = getval("sw1"), sw2 = getval("sw2"), grecov = getval("grecov"), /* Gradient recovery delay, typically 150-200us */ gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), 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("ribose",ribose); getstr("AH2H8",AH2H8); getstr("H2Opurge",H2Opurge); getstr("STUD",STUD); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t5,4,phi5); settable(t9,8,phi9); settable(t11,8,rec); /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses */ rfC = 4095.0; if (ribose[A] == 'y') { /* Center dof in RIBOSE region on 80ppm. */ tofa = tof; dofa = dof - 30.0*dfrq; /* dipsi-3 decoupling on C-ribose */ p_d = (5.0)/(9.0*4.0*7000.0*(sfrq/800)); /* 35ppm DIPSI-3 */ rfdC = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfdC = (int) (rfdC + 0.5); ncyc = (int) (ncyc + 0.5); } else { /* Center dof in adenine C2-C4-C6-C8-C5 region on 145 ppm. */ tofa = tof + 2.5*sfrq; dofa = dof + 35.0*dfrq; /* dipsi-3 decoupling on C-aromatic */ p_d = (5.0)/(9.0*4.0*8000.0*(sfrq/800)); /* 40ppm DIPSI-3 */ rfdC = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfdC = (int) (rfdC + 0.5); ncyc = (int) (ncyc + 0.5); } /* 80 ppm STUD+ decoupling */ strcpy(rna_stCdec, "wurst80"); studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf80); studlvl = (int) (studlvl + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if((ribose[A] == 'y' && AH2H8[A] == 'y' )) { text_error("Choose either ribose='y' or AH2H8='y' !! "); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nny' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nny' or 'nnn' "); psg_abort(1); } if( (((dm[C] == 'y') && (dm2[C] == 'y')) && (STUD[A] == 'y')) ) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' if STUD='y'"); psg_abort(1); } if((dm3[A] == 'y' || dm3[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1); } if( dpwr > 50 ) { text_error("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( (pw > 20.0e-6) && (tpwr > 56) ) { text_error("don't fry the probe, pw too high ! "); psg_abort(1); } if( (pwC > 40.0e-6) && (pwClvl > 56) ) { text_error("don't fry the probe, pwN too high ! "); psg_abort(1); } if( (pwN > 100.0e-6) && (pwNlvl > 56) ) { text_error("don't fry the probe, pwN too high ! "); psg_abort(1); } if ((dm3[B] == 'y' && dpwr3 > 44 )) { text_error ("Deuterium decoupling power too high ! "); psg_abort(1); } if ((ncyc > 1 ) && (ix == 1)) { text_error("mixing time is %f ms.\n",(ncyc*97.8*4*p_d)); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (phase2 == 2) tsadd(t5,1,4); /* C13 TIME INCREMENTATION and set up f1180 */ /* 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(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(); delay(d1); if (dm3[B] == 'y') lk_hold(); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rfC); obsoffset(tofa); decoffset(dofa); dec2offset(dof2); txphase(t3); delay(1.0e-5); 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); delay(5.0e-4); 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, t3, 0.0, 0.0); /* 1H pulse excitation */ zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ decphase(zero); delay(taua + tau1 - gt0 - 2.0*GRADIENT_DELAY - 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); zgradpulse(gzlvl0, gt0); txphase(one); decphase(t5); obsoffset(tof); delay(taua - gt0); rgpulse(pw, one, 0.0, 0.0); zgradpulse(gzlvl3, gt3); delay(grecov); decrgpulse(pwC, t5, 0.0, 0.0); delay(tau2); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ decphase(zero); delay(taub - 2.0*pwN - gt4 - 2.0*GRADIENT_DELAY); txphase(zero); decpwrf(rfC); delay(taub - 2.0*pw); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(tau2); decrgpulse(2.0*pwC, zero, 0.0, 0.0); delay(taub); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ decpwrf(rfdC); delay(taub - gt4 - 2.0*GRADIENT_DELAY); decrgpulse(1.0e-3, zero, 0.0, 0.0); 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(); decrgpulse(9.0*p_d/5.0, t9, 2.0e-6, 0.0); if( H2Opurge[A] == 'y' ) {obspwrf(1000.0); rgpulse(900*pw, zero, 0.0, 0.0); rgpulse(500*pw, one, 0.0, 0.0); obspwrf(4095.0); } zgradpulse(gzlvl7, gt7); decpwrf(rfC); delay(50.0e-6); rgpulse(pw,zero,0.0,0.0); zgradpulse(gzlvl7, gt7/1.6); decrgpulse(pwC, three, 100.0e-6, 0.0); zgradpulse(gzlvl5, gt5); decphase(zero); delay(tauc - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); delay(tauc - gt5); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); if(dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } delay(grecov); rgpulse(pw, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(taua - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); if (STUD[A]=='y') decpower(studlvl); else { decpower(dpwr); dec2power(dpwr2); } delay(taua - gt5); rgpulse(pw, zero, 0.0, rof2); rcvron(); if (dm3[B] == 'y') lk_sample(); setreceiver(t11); if ((STUD[A]=='y') && (dm[C] == 'y')) { decpower(studlvl); decunblank(); decon(); decprgon(rna_stCdec,1/stdmf, 1.0); startacq(alfa); acquire(np, 1.0/sw); decprgoff(); decoff(); decblank(); } else status(C); }
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 VARIABLES */ char fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ fulldwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ C_flg[MAXSTR], dtt_flg[MAXSTR]; int phase, phase2, ni, ni2, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JHC = 1.6 ms */ taub, /* 1/6JCH = 1.1 ms */ BigTC, /* Carbon constant time period = 1/4Jcc = 7.0 ms */ pwN, /* PW90 for 15N pulse @ pwNlvl */ pwC, /* PW90 for c nucleus @ pwClvl */ pwcrb180, /* PW180 for C 180 reburp @ rfrb */ pwClvl, /* power level for 13C pulses on dec1 */ compC, compH, /* compression factors for H1 and C13 amps */ rfrb, /* power level for 13C reburp pulse */ pwNlvl, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ bw, ofs, ppm, gt0, gt1, gt2, gt3, gt4, gt5, gt6, gstab, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, decstep1, decstep2, decstep3, tpwrs, pwHs, dof_me, rfrb_cg, rfrb_co, pwrb_co, pwrb_cg, tof_dtt, rfca90, pwca90, rfca180, pwca180, pwco90, dofCO; /* LOAD VARIABLES */ getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("C_flg",C_flg); getstr("dtt_flg",dtt_flg); taua = getval("taua"); taub = getval("taub"); BigTC = getval("BigTC"); pwC = getval("pwC"); pwcrb180 = getval("pwcrb180"); pwN = getval("pwN"); tpwr = getval("tpwr"); pwClvl = getval("pwClvl"); compC = getval("compC"); compH = getval("compH"); dpwr = getval("dpwr"); pwNlvl = getval("pwNlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); gstab = getval("gstab"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); decstep1 = getval("decstep1"); decstep2 = getval("decstep2"); decstep3 = getval("decstep3"); pwHs = getval("pwHs"); dof_me = getval("dof_me"); tof_dtt = getval("tof_dtt"); dofCO = getval("dofCO"); tpwrs = 0.0; setautocal(); /* activate auto-calibration */ if(FIRST_FID) /* make shapes */ { ppm = getval("dfrq"); bw = 80.0*ppm; rb180 = pbox_make("rb180P", "reburp", bw, 0.0, compC*pwC, pwClvl); bw = 8.125*ppm; ofs = -24.0*ppm; rb180_cg = pbox_make("rb180_cgP", "reburp", bw, ofs, compC*pwC, pwClvl); bw = 60*ppm; ofs = 136.0*ppm; rb180_co = pbox_make("rb180_coP", "reburp", bw, ofs, compC*pwC, pwClvl); bw = 118.0*ppm; ofs = -118.0*ppm; ca180 = pbox_make("ca180P", "square180n", bw, ofs, compC*pwC, pwClvl); bw = 118.0*ppm; ofs = 18.0*ppm; ca90 = pbox_make("ca90P", "square90n", bw, ofs, compC*pwC, pwClvl); } pwcrb180 = rb180.pw; rfrb = rb180.pwrf; /* set up parameters */ pwrb_cg = rb180_cg.pw; rfrb_cg = rb180_cg.pwrf; /* set up parameters */ pwrb_co = rb180_co.pw; rfrb_co = rb180_co.pwrf; /* set up parameters */ pwca90 = ca90.pw; rfca90 = ca90.pwrf; /* set up parameters */ pwca180 = ca180.pw; rfca180 = ca180.pwrf; /* set up parameters */ pwco90 = pwca90; tpwrs = tpwr - 20.0*log10(pwHs/((compH*pw)*1.69)); /* sinc=1.69xrect */ tpwrs = (int) (tpwrs); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,4,phi3); settable(t4,4,phi4); settable(t5,1,phi5); settable(t6,16,phi6); settable(t7,8,phi7); settable(t8,8,phi8); settable(t9,8,phi9); settable(t10,1,phi10); settable(t11,8,phi11); settable(t12,16,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( BigTC - 0.5*(ni2-1)*1/(sw2) - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 < 0.2e-6 ) { printf(" ni2 is too big\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if( satpwr > 9 ) { printf("SATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > -16 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( pwcrb180 > 500.0e-6 ) { printf("dont fry the probe, pwcrb180 too high ! "); psg_abort(1); } if(dpwr3 > 51) { printf("dpwr3 is too high; < 52\n"); psg_abort(1); } if(d1 < 1) { printf("d1 must be > 1\n"); psg_abort(1); } if( gt0 > 5.0e-3 || gt1 > 5.0e-3 || gt2 > 5.0e-3 || gt3 > 5.0e-3 || gt4 > 5.0e-3 || gt5 > 5.0e-3 || gt6 > 5.0e-3 ) { printf(" all values of gti must be < 5.0e-3\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t11,1,4); } if (phase2 == 2) tsadd(t10,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; tau1 = tau1 - 4.0/PI*pwco90 - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwca180 - WFG_STOP_DELAY - POWER_DELAY - 2.0*pwN; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.4e-6) tau1 = 4.0e-7; } tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.4e-6) tau2 = 4.0e-7; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t11,2,4); tsadd(t12,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t10,2,4); tsadd(t12,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(satpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 to high power */ /* Presaturation Period */ if (satmode[A] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat with transmitter */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2.0*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(t1); decphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); decoffset(dof_me); lk_hold(); lk_sampling_off(); rcvroff(); delay(20.0e-6); /* ensure that magnetization originates on 1H and not 13C */ if(dtt_flg[A] == 'y') { obsoffset(tof_dtt); obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,10.0e-6,0.0); obspower(tpwr); obsoffset(tof); } decrgpulse(pwC,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl0,gt0); delay(gstab); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); delay(taua - gt1 -gstab -2.0e-6 ); simpulse(2.0*pw,2.0*pwC,zero,zero,0.0,0.0); txphase(one); delay(taua - gt1 - gstab -2.0e-6); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); rgpulse(pw,one,0.0,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ decoffset(dof); /* jump 13C to 40 ppm */ delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(gstab); decrgpulse(pwC,t1,4.0e-6,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t2); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t2,0.0,0.0); decphase(zero); /* turn on 2H decoupling */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(1/dmf3,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3prgon(dseq3,1/dmf3,dres3); dec3on(); /* turn on 2H decoupling */ initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - 4.0e-6 - 1/dmf3 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t3); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t3,0.0,0.0); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t4); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t4,0.0,0.0); decpwrf(rfrb_co); decphase(zero); decshaped_pulse(rb180_co.name,pwrb_co,zero,4.0e-6,0.0); /* BS */ decpwrf(rfrb); delay(taub - (2.0/PI)*pwC - POWER_DELAY - 4.0e-6 - WFG_START_DELAY - pwrb_co - WFG_STOP_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep2); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_co); decshaped_pulse(rb180_co.name,pwrb_co,zero,4.0e-6,0.0); decphase(t5); decpwrf(rfca90); delay(taub - WFG_STOP_DELAY - 4.0e-6 - WFG_START_DELAY - pwcrb180 - WFG_STOP_DELAY - POWER_DELAY - WFG_START_DELAY - (2.0/PI)*pwca90); decshaped_pulse(ca90.name,pwca90,t5,0.0,0.0); decoffset(dofCO); /* 2H decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3rgpulse(1/dmf3,three,4.0e-6,0.0); /* 2H decoupling off */ delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); decrgpulse(pwco90,t11,4.0e-6,0.0); if(C_flg[A] == 'n') { decpwrf(rfca180); delay(tau1); decshaped_pulse(ca180.name,pwca180,zero,4.0e-6,0.0); decpwrf(rfca90); decphase(zero); dec2rgpulse(2.0*pwN,zero,0.0,0.0); delay(tau1); } else decrgpulse(2.0*pwco90,zero,4.0e-6,4.0e-6); decrgpulse(pwco90,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); /* turn on 2H decoupling */ dec3phase(one); dec3rgpulse(1/dmf3,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3prgon(dseq3,1/dmf3,dres3); dec3on(); /* turn on 2H decoupling */ decoffset(dof); decpwrf(rfca90); decshaped_pulse(ca90.name,pwca90,t6,4.0e-6,0.0); decpwrf(rfrb_co); decphase(zero); delay(taub - WFG_STOP_DELAY - (2.0/PI)*pwca90 - POWER_DELAY - WFG_START_DELAY - pwrb_co - WFG_STOP_DELAY - 2.0e-6 - WFG_START_DELAY); decshaped_pulse(rb180_co.name,pwrb_co,zero,0.0,0.0); decpwrf(rfrb); initval(1.0,v3); decstepsize(decstep3); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_co); delay(taub - WFG_STOP_DELAY - 4.0e-6 - WFG_START_DELAY - pwcrb180 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 - (2.0/PI)*pwC); decshaped_pulse(rb180_co.name,pwrb_co,zero,4.0e-6,0.0); /* BS */ decpwrf(4095.0); decrgpulse(pwC,t7,4.0e-6,0.0); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); delay(BigTC/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY - 0.5*pwrb_cg); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t8); delay(BigTC/2.0 - 0.5*pwrb_cg - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t8,0.0,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t9); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6 - 1/dmf3); /* 2H decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3rgpulse(1/dmf3,three,4.0e-6,0.0); lk_autotrig(); /* 2H decoupling off */ decrgpulse(pwC,t9,0.0,0.0); decphase(zero); delay(tau2); rgpulse(2.0*pw,zero,0.0,0.0); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - 2.0*pw - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t10); decpwrf(4095.0); delay(BigTC - tau2 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decrgpulse(pwC,t10,4.0e-6,0.0); decoffset(dof_me); delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); lk_sample(); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ rgpulse(pw,zero,4.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - gt4 - gstab -2.0e-6 - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - 2.0e-6); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ simpulse(2.0*pw,2.0*pwC,zero,zero,2.0e-6,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - gt4 - gstab -2.0e-6 - 2.0*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* BEGIN ACQUISITION */ lk_sample(); status(C); setreceiver(t12); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ int t1_counter, t2_counter; /* used for states tppi in t1 & t2*/ char IPAP[MAXSTR], Hstart[MAXSTR], f1180[MAXSTR],H2dec[MAXSTR], shCACB_90[MAXSTR],shCACB_90r[MAXSTR], shCACB_180[MAXSTR], shCB_180[MAXSTR], decCB[MAXSTR], shCACB_180off[MAXSTR], shCBIP[MAXSTR], shCO_90[MAXSTR], shCO_180[MAXSTR], shCO_180off[MAXSTR]; double tau1, /* t1 delay */ x, TCH = getval("TCH"), TC = getval("TC"), /* delay 1/(2JCACB) ~ 7.0ms in Ref. */ del = getval("del"), /* delay del = 1/(2JC'C) ~ 9.0ms in Ref. */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwClvlF=getval("pwClvlF"), /* maximum fine power when using pwC pulses */ pwHlvl = getval("pwHlvl"), pwH = getval("pwH"), pwCBIP = getval("pwCBIP"), /* 90 degree pulse at CO (174ppm) */ pwCO_90 = getval("pwCO_90"), /* 90 degree pulse length on C13 */ pwCO_90phase_roll = getval("pwCO_90phase_roll") , /* fraction of CACB pulse to compensate for phase roll */ pwrCO_90 = getval("pwrCO_90"), /*power */ pwrfCO_90 = getval("pwrfCO_90"), /* 180 degree pulse at CO (174ppm) */ pwCO_180 = getval("pwCO_180"), /* 180 degree pulse length on C13 */ pwrCO_180 = getval("pwrCO_180"), /*power */ pwrfCO_180 = getval("pwrfCO_180"), /* 90 degree pulse at CAB (57.7ppm) */ tofCACB = getval("tofCACB"), pwCACB_90 = getval("pwCACB_90"), pwCACB_90phase_roll = getval("pwCACB_90phase_roll") , /* fraction of CACB pulse to compensate for phase roll */ /* 90 degree pulse length on C13 */ pwrCACB_90 = getval("pwrCACB_90"), /*power */ pwrfCACB_90 = getval("pwrfCACB_90"), /* 180 degree pulse at CA (57.7ppm) */ pwCACB_180 = getval("pwCACB_180"), /* 180 degree pulse length on C13 */ pwrCACB_180 = getval("pwrCACB_180"), /*power */ pwrfCACB_180 = getval("pwrfCACB_180"), pwCB_180 = getval("pwCB_180"), /* 180 degree pulse length on C13 */ pwrCB_180 = getval("pwrCB_180"), sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gt2 = getval("gt2"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), gzlvl3 = getval("gzlvl3"), gstab = getval("gstab"); getstr("IPAP",IPAP); getstr("H2dec",H2dec); getstr("shCBIP",shCBIP); getstr("f1180",f1180); getstr("shCACB_90",shCACB_90); getstr("shCACB_90r",shCACB_90r); getstr("shCACB_180",shCACB_180); getstr("shCACB_180off",shCACB_180off); getstr("shCB_180",shCB_180); getstr("decCB",decCB); getstr("shCO_90",shCO_90); getstr("shCO_180",shCO_180); getstr("shCO_180off",shCO_180off); getstr("Hstart",Hstart); /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t2,4,phi2); settable(t3,4,phi3); settable(t4,4,phi4); settable(t5,4,phi5); settable(t12,4,rec); /* INITIALIZE VARIABLES */ if( (IPAP[A] != 'i') && (IPAP[A] != 'a')&& (IPAP[A] != 't')) { text_error("IPAP flag either i or a, exiting "); psg_abort(1); } if( (Hstart[A]=='y') && ((dmm[A]!='c' || dm[A]=='y')) ) { text_error("Incorrect combination of dm, dmm and Hstart. "); psg_abort(1);}; x=0.0; if(decCB[A]=='y'){x=1.0;} if(ni/sw1 > TC-2.0*pwCB_180*x) { text_error("too many increments in CAB t1 evolution %d\n",(int)( (TC-2.0*pwCB_180*x)*sw1 +0.5)); psg_abort(1);}; /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t1,1,4); tau1 = d2; if(f1180[A]=='y') {tau1+=0.5/sw1;} tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if(IPAP[A]=='a'){tsadd(t4,1,4);}; if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(10.0e-6); obspower(pwClvl); obspwrf(4095.0); dec2power(dpwr2); dec2pwrf(4095.0); obsoffset(tofCACB); delay(d1); /* option to start from H magnetization */ if(Hstart[A]=='y') { decpower(pwHlvl); decpwrf(4095.0); decrgpulse(pwH, zero, 0.0, 0.0); delay(TCH); simpulse(2.0*pwC,2.0*pwH, zero,zero, 0.0, 0.0); delay(TCH); decrgpulse(pwH, one, 0.0, 0.0); zgradpulse(gzlvl2,gt2); delay(gstab); rgpulse(pwC, two, 0.0, 0.0); delay(TCH); simpulse(2.0*pwC,2.0*pwH, zero,zero, 0.0, 0.0); delay(TCH); rgpulse(pwC, one, 0.0, 0.0); zgradpulse(gzlvl3,gt3); delay(gstab*2.0); decpower(dpwr); decpwrf(4095.0); } if (H2dec[A] == 'y') lk_hold(); status(B); /* CACO experiment */ /************optional deuterium decoupling**************************/ if(H2dec[A] == 'y'){ dec3unblank(); if(1.0/dmf3>900.0e-6) { dec3power(dpwr3+6.0); dec3rgpulse(0.5/dmf3, one, 1.0e-6, 0.0e-6); dec3power(dpwr3); } else dec3rgpulse(1.0/dmf3, one, 1.0e-6,0.0e-6); dec3phase(zero); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } /**************************************/ /* begin CA evolution and transfer to CO */ obspwrf(pwrfCACB_90); obspower(pwrCACB_90); shapedpulse(shCACB_90,pwCACB_90,t1,0.0,0.0); obspwrf(4095.0); obspower(pwClvl); delay(10.0e-6); shapedpulse(shCBIP,pwCBIP,zero,0.0,0.0); delay(10.0e-6); if(decCB[A]=='y') { delay( (TC/2.0-tau1 + 2.0*pwCACB_90phase_roll*pwCACB_90)*0.5 -pwCB_180*0.5); obspower(pwrCB_180); shapedpulse(shCB_180,pwCB_180,zero,0.0,0.0); delay( (TC/2.0-tau1 + 2.0*pwCACB_90phase_roll*pwCACB_90)*0.5 -pwCB_180*0.5); } else delay(TC/2.0-tau1 + 2.0*pwCACB_90phase_roll*pwCACB_90); obspower(pwClvl); shapedpulse(shCBIP,pwCBIP,zero,0.0,0.0); if(decCB[A]=='y') { delay((TC/2.0+tau1)*0.5 -pwCB_180*0.5); obspower(pwrCB_180); shapedpulse(shCB_180,pwCB_180,zero,0.0,0.0); delay((TC/2.0+tau1)*0.5 -pwCB_180*0.5); } else delay(TC/2.0+tau1); obspower(pwrCACB_90); shapedpulse(shCACB_90r,pwCACB_90,one,0.0,0.0); /*************************************************************/ if(H2dec[A] == 'y') { setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); if(1.0/dmf3>900.0e-6) { dec3power(dpwr3+6.0); dec3rgpulse(0.5/dmf3, three, 1.0e-6, 0.0e-6); dec3power(dpwr3); } else dec3rgpulse(1.0/dmf3, three, 1.0e-6, 0.0e-6); dec3blank(); } /*************************************************************/ /* CAzCOz */ delay(10e-6); obsoffset(tof); delay(10e-6); zgradpulse(gzlvl1,gt1); delay(gstab); status(C); /* CAzCOz -> CO or CACO */ obspwrf(pwrfCO_90); obspower(pwrCO_90); shapedpulse(shCO_90,pwCO_90,t4,0.0,0.0); /* ghost 180 on CA*/ if(IPAP[A]=='i') { obspwrf(pwClvlF); obspower(pwClvl); delay(10.0e-6); shapedpulse(shCBIP,pwCBIP,zero,0.0,0.0); delay(10.0e-6); delay(del/2.0 + pwCO_90phase_roll*pwCO_90); obspwrf(pwrfCACB_180); obspower(pwrCACB_180); delay(10.0e-6); shapedpulse(shCACB_180off,pwCACB_180,zero,0.0,0.0); obspwrf(pwClvlF); obspower(pwClvl); delay(10.0e-6); shapedpulse(shCBIP,pwCBIP,zero,0.0,0.0); obspwrf(pwrfCACB_180); obspower(pwrCACB_180); delay(10.0e-6); shapedpulse(shCACB_180off,pwCACB_180,zero,0.0,0.0); delay(10.0e-6); delay(del/2.0 ); } /***>>>>>>>>>>>**TEST*********/ if(IPAP[A]=='t') { obspwrf(pwrfCACB_180); obspower(pwrCACB_180); delay(10.0e-6); shapedpulse(shCACB_180off,pwCACB_180,zero,0.0,0.0); delay(10.0e-6); obspwrf(pwrfCO_180); obspower(pwrCO_180); delay(del/2.0); shapedpulse(shCO_180,pwCO_180,zero,0.0,0.0); obspwrf(pwrfCACB_180); obspower(pwrCACB_180); delay(10.0e-6); shapedpulse(shCACB_180off,pwCACB_180,zero,0.0,0.0); delay(10.0e-6); obspwrf(pwrfCO_90); obspower(pwrCO_90); delay(del/2.0); } /********<<<<<<<<<<<<<**TEST*********/ if(IPAP[A]=='a') { obspwrf(pwClvlF); obspower(pwClvl); delay(10.0e-6); shapedpulse(shCBIP,pwCBIP,zero,0.0,0.0); delay(10.0e-6); delay(del/4.0 + pwCO_90phase_roll*pwCO_90); obspwrf(pwrfCACB_180); obspower(pwrCACB_180); delay(10.0e-6); shapedpulse(shCACB_180off,pwCACB_180,zero,0.0,0.0); obspwrf(pwClvlF); obspower(pwClvl); delay(10.0e-6); delay(del/4.0 ); shapedpulse(shCBIP,pwCBIP,zero,0.0,0.0); delay(del/4.0); obspwrf(pwrfCACB_180); obspower(pwrCACB_180); delay(10.0e-6); shapedpulse(shCACB_180off,pwCACB_180,zero,0.0,0.0); delay(10.0e-6); delay(del/4.0 ); } if (H2dec[A]=='y') lk_sample(); status(D); setreceiver(t12); }
pulsesequence() { char sel_flg[MAXSTR], autocal[MAXSTR], glyshp[MAXSTR]; int icosel, t1_counter, ni = getval("ni"); double d2_init=0.0, tau1, tau2, tau3, glypwr,glypwrf, /* Power levels for Cgly selective 90 */ pwgly, /* Pulse width for Cgly selective 90 */ waltzB1 = getval("waltzB1"), /* 1H decoupling strength (in Hz) */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ tauCaCb = getval("tauCaCb"), tauNCa = getval("tauNCa"), tauNCo = getval("tauNCo"), tauCaCo = getval("tauCaCo"), compH = getval("compH"), /* adjustment for H1 amplifier compression */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ bw,ppm, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ compC = getval("compC"), /* amplifier compression for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ dpwr2 = getval("dpwr2"), /* power for N15 decoupling */ pwCa90, /* length of square 90 on Ca */ pwCa180, pwCab90, pwCab180, phshift, /* phase shift induced on Ca by 180 on CO in middle of t1 */ pwCO180, /* length of 180 on CO */ pwS = getval("pwS"), /* used to change 180 on CO in t1 for 1D calibrations */ pwZ, /* the largest of pwCO180 and 2.0*pwN */ pwZ1, /* the largest of pwCO180 and 2.0*pwN for 1D experiments */ sw1 = getval("sw1"), swCb = getval("swCb"), swCa = getval("swCa"), swN = getval("swN"), swTilt, /* This is the sweep width of the tilt vector */ cos_N, cos_Ca, cos_Cb, angle_N, angle_Ca, angle_Cb, /* angle_N is calculated automatically */ gstab = getval("gstab"), gt0 = getval("gt0"), gzlvl0 = getval("gzlvl0"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), gzlvl3 = getval("gzlvl3"), gt4 = getval("gt4"), gzlvl4 = getval("gzlvl4"), gt5 = getval("gt5"), gzlvl5 = getval("gzlvl5"), gt6 = getval("gt6"), gzlvl6 = getval("gzlvl6"), gt7 = getval("gt7"), gzlvl7 = getval("gzlvl7"), gt10= getval("gt10"), gzlvl10= getval("gzlvl10"), gt11= getval("gt11"), gzlvl11= getval("gzlvl11"), gt12= getval("gt12"), gzlvl12= getval("gzlvl12"); angle_N = 0; glypwr = getval("glypwr"); pwgly = getval("pwgly"); tau1 = 0; tau2 = 0; tau3 = 0; cos_N = 0; cos_Cb = 0; cos_Ca = 0; getstr("autocal", autocal); getstr("glyshp", glyshp); getstr("sel_flg",sel_flg); pwHs = getval("pwHs"); /* H1 90 degree pulse length at tpwrs */ /* LOAD PHASE TABLE */ settable(t2,1,phy); settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); settable(t8,1,phy); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec); /* INITIALIZE VARIABLES */ kappa = 5.4e-3; lambda = 2.4e-3; /* 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 */ pwHs = 1.7e-3*500.0/sfrq; widthHd = 2.861*(waltzB1/sfrq); /* bandwidth of H1 WALTZ16 decoupling in ppm */ pwHd = h1dec90pw("WALTZ16", widthHd, 0.0); /* H1 90 length for WALTZ16 */ /* get calculated pulse lengths of shaped C13 pulses */ pwCa90 = c13pulsepw("ca", "co", "square", 90.0); pwCa180 = c13pulsepw("ca", "co", "square", 180.0); pwCO180 = c13pulsepw("co", "cab", "sinc", 180.0); pwCab90 = c13pulsepw("cab","co", "square", 90.0); pwCab180= c13pulsepw("cab","co", "square", 180.0); /* the 180 pulse on CO at the middle of t1 */ if (pwCO180 > 2.0*pwN) pwZ = pwCO180; else pwZ = 2.0*pwN; if ((pwS==0.0) && (pwCO180>2.0*pwN)) pwZ1=pwCO180-2.0*pwN; else pwZ1=0.0; if ( ni > 1 ) pwS = 180.0; if ( pwS > 0 ) phshift = 320.0; else phshift = 0.0; /* CHECK VALIDITY OF PARAMETER RANGES */ 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);} /* PHASES AND INCREMENTED TIMES */ /* Set up angles and phases */ angle_Cb=getval("angle_Cb"); cos_Cb=cos(PI*angle_Cb/180.0); angle_Ca=getval("angle_Ca"); cos_Ca=cos(PI*angle_Ca/180.0); if ( (angle_Cb < 0) || (angle_Cb > 90) ) { printf ("angle_Cb must be between 0 and 90 degree.\n"); psg_abort(1); } if ( (angle_Ca < 0) || (angle_Ca > 90) ) { printf ("angle_Ca must be between 0 and 90 degree.\n"); psg_abort(1); } if ( 1.0 < (cos_Cb*cos_Cb + cos_Ca*cos_Ca) ) { printf ("Impossible angles.\n"); psg_abort(1); } else { cos_N=sqrt(1.0- (cos_Cb*cos_Cb + cos_Ca*cos_Ca)); angle_N = 180.0*acos(cos_N)/PI; } swTilt=swCb*cos_Cb + swCa*cos_Ca + swN*cos_N; if (ix ==1) { printf("\n\nn\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf ("Maximum Sweep Width: \t\t %f Hz\n", swTilt); printf ("Angle_Cb:\t%6.2f\n", angle_Cb); printf ("Angle_Ca:\t%6.2f\n", angle_Ca); printf ("Angle_N :\t%6.2f\n", angle_N ); } /* Set up hyper complex */ /* sw1 is used as symbolic index */ if ( sw1 < 1000 ) { printf ("Please set sw1 to some value larger than 1000.\n"); psg_abort(1); } if (ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if (t1_counter % 2) { tsadd(t8,2,4); tsadd(t12,2,4); } if (phase1 == 1) { ;} /* CC */ else if (phase1 == 2) { tsadd(t3,3,4); tsadd(t2,3,4);} /* SC */ else if (phase1 == 3) { tsadd(t5,1,4); } /* CS */ else if (phase1 == 4) { tsadd(t3,3,4); tsadd(t2,3,4); tsadd(t5,1,4);} /* SS */ else { printf ("phase1 can only be 1,2,3,4. \n"); psg_abort(1); } if (phase2 == 2) { tsadd(t10,2,4); icosel = +1; } /* N */ else icosel = -1; tau1 = 1.0*t1_counter*cos_Cb/swTilt; tau2 = 1.0*t1_counter*cos_Ca/swTilt; tau3 = 1.0*t1_counter*cos_N/swTilt; tau1 = tau1/2.0; tau2 = tau2/2.0; tau3 = tau3/2.0; /* CHECK VALIDITY OF PARAMETER RANGES */ if (0.5*ni*(cos_N/swTilt) > timeTN - WFG3_START_DELAY) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*swTilt/cos_N))); psg_abort(1);} /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) lk_hold(); rcvroff(); obsoffset(tof); obspower(tpwr); obspwrf(4095.0); set_c13offset("cab"); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); txphase(zero); delay(1.0e-5); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, gt0); delay(gstab); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, gt0); delay(gstab); txphase(one); delay(1.0e-5); shiftedpulse("sinc", pwHs, 90.0, 0.0, one, 2.0e-6, 0.0); txphase(zero); decphase(zero); dec2phase(zero); delay(2.0e-6); /* pulse sequence starts */ rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl3, gt3); delay(lambda - gt3); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); if (sel_flg[A] == 'n') txphase(three); else txphase(one); zgradpulse(gzlvl3, gt3); delay(lambda - gt3); if (sel_flg[A] == 'n') { rgpulse(pw, three, 0.0, 0.0); txphase(zero); zgradpulse(gzlvl4, gt4); /* Crush gradient G4 */ delay(gstab); /* Begin of N to Ca transfer */ dec2rgpulse(pwN, one, 0.0, 0.0); decphase(zero); dec2phase(zero); delay(tauNCo - pwCO180/2 - 2.0e-6 - WFG3_START_DELAY); } else /* active suppresion */ { rgpulse(pw,one,2.0e-6,0.0); initval(1.0,v6); dec2stepsize(45.0); dcplr2phase(v6); zgradpulse(gzlvl4, gt4); /* Crush gradient G4 */ delay(gstab); /* Begin of N to Ca transfer */ dec2rgpulse(pwN,one,0.0,0.0); dcplr2phase(zero); /* SAPS_DELAY */ delay(1.34e-3 - SAPS_DELAY - 2.0*pw); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,0.0); delay(tauNCo - pwCO180/2 - 1.34e-3 - 2.0*pw - WFG3_START_DELAY); } /* Begin transfer from HzNz to N(i)zC'(i-1)zCa(i)zCa(i-1)z */ c13pulse("co", "cab", "sinc", 180.0, zero, 2.0e-6, 0.0); delay(tauNCa - tauNCo - pwCO180/2 - WFG3_START_DELAY - WFG3_STOP_DELAY - 2.0e-6); /* WFG3_START_DELAY */ sim3_c13pulse("", "cab", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(tauNCa - 2.0e-6 - WFG3_STOP_DELAY); dec2rgpulse(pwN, zero, 0.0, 0.0); /* End transfer from HzNz to N(i)zC'(i-1)zCa(i)zCa(i-1)z */ zgradpulse(gzlvl5, gt5); delay(gstab); /* Begin removal of Ca(i-1) */ c13pulse("co", "cab", "sinc", 90.0, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl6, gt6); delay(tauCaCo - gt6 - pwCab180 - pwCO180/2 - 6.0e-6); c13pulse("cab","co", "square", 180.0, zero, 2.0e-6, 2.0e-6); c13pulse("co","cab", "sinc", 180.0, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl6, gt6); delay(tauCaCo - gt6 - pwCab180 - pwCO180/2 - 6.0e-6); c13pulse("cab","co", "square", 180.0, zero, 2.0e-6, 2.0e-6); c13pulse("co", "cab", "sinc", 90.0, one, 2.0e-6, 2.0e-6); /* End removal of Ca(i-1) */ /* xx Selective glycine pulse xx */ set_c13offset("gly"); setautocal(); if (autocal[A] == 'y') { if(FIRST_FID) { ppm = getval("dfrq"); bw=9*ppm; gly90 = pbox_make("gly90","eburp1",bw,0.0,compC*pwC,pwClvl); /* Gly selective 90 with null at 50ppm */ } pwgly=gly90.pw; glypwr=gly90.pwr; glypwrf=gly90.pwrf; decpwrf(glypwrf); decpower(glypwr); decshaped_pulse("gly90",pwgly,zero,2.0e-6,0.0); } else { decpwrf(4095.0); decpower(glypwr); decshaped_pulse(glyshp,pwgly,zero,2.0e-6,0.0); } /* xx End of glycine selecton xx */ zgradpulse(gzlvl7, gt7); set_c13offset("cab"); delay(gstab); decphase(t3); if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { dec3unblank(); dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } /* ========== Ca to Cb transfer =========== */ c13pulse("cab", "co", "square", 90.0, t3, 2.0e-6, 2.0e-6); decphase(zero); delay(tauCaCb - 4.0e-6); c13pulse("cab", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); decphase(t2); delay(tauCaCb - 4.0e-6 ); /* xxxxxxxxxxxxxxxxxxxxxx 13Cb EVOLUTION xxxxxxxxxxxxxxxxxx */ c13pulse("cab", "co", "square", 90.0, t2, 2.0e-6, 0.0); /* pwCa90 */ decphase(zero); if ((ni>1.0) && (tau1>0.0)) { if (tau1 - 2.0*pwCab90/PI - WFG_START_DELAY - pwN - 2.0e-6 - PWRF_DELAY - POWER_DELAY > 0.0) { delay(tau1 - 2.0*pwCab90/PI - pwN - 2.0e-6 ); dec2rgpulse(2.0*pwN, zero, 2.0e-6, 0.0); delay(tau1 - 2.0*pwCab90/PI - pwN - WFG_START_DELAY - 2.0e-6 - PWRF_DELAY - POWER_DELAY); } else { tsadd(t12,2,4); delay(2.0*tau1); delay(10.0e-6); /* WFG_START_DELAY */ sim3_c13pulse("", "cab", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); delay(10.0e-6); } } else { tsadd(t12,2,4); delay(10.0e-6); /* WFG_START_DELAY */ sim3_c13pulse("", "cab", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); delay(10.0e-6); } decphase(one); c13pulse("cab", "co", "square", 90.0, one, 2.0e-6, 0.0); /* pwCa90 */ /* xxxxxxxxxxx End of 13Cb EVOLUTION - Start 13Ca EVOLUTION xxxxxxxxxxxx */ decphase(zero); delay(tau2); sim3_c13pulse("", "co", "cab", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); decphase(zero); delay(tauCaCb - 2*pwN - pwCab180/2 - WFG2_START_DELAY - 2.0*PWRF_DELAY - 2.0*POWER_DELAY - WFG2_STOP_DELAY - 4.0e-6 ); c13pulse("cab", "co", "square", 180.0, zero, 2.0e-6, 0.0); delay(tauCaCb- tau2 - pwCO180 - pwCab180/2 - WFG2_START_DELAY - 2.0*PWRF_DELAY -2.0*POWER_DELAY - WFG2_STOP_DELAY - 4.0e-6); c13pulse("co", "cab", "sinc", 180.0, zero, 2.0e-6, 0.0); decphase(t5); c13pulse("cab", "co", "square", 90.0, t5, 2.0e-6, 0.0); /* xxxxxxxxxxxxxxxxxxx End of 13Ca EVOLUTION xxxxxxxxxxxxxxxxxx */ if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); } /* xxxxxxxxxxxxxxxxxxxx N15 EVOLUTION & SE TRAIN xxxxxxxxxxxxxxxxxxxxxxx */ dcplrphase(zero); dec2phase(t8); zgradpulse(gzlvl10, gt10); delay(gstab); dec2rgpulse(pwN, t8, 2.0e-6, 0.0); c13pulse("co", "cab", "sinc", 180.0, zero, 2.0e-6, 0.0); /*pwCO180*/ decphase(zero); dec2phase(t9); delay(timeTN - pwCO180 - WFG3_START_DELAY - tau3 - 4.0e-6); /* WFG3_START_DELAY */ sim3_c13pulse("", "cab", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, t9, 2.0e-6, 2.0e-6); c13pulse("co", "cab", "sinc", 180.0, zero, 2.0e-6, 0.0); /*pwCO180*/ dec2phase(t10); txphase(t4); delay(timeTN - pwCO180 + tau3 - 500.0e-6 - gt1 - 2.0*GRADIENT_DELAY- WFG_START_DELAY - WFG_STOP_DELAY ); delay(0.2e-6); zgradpulse(gzlvl1, gt1); delay(gstab); sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl11, gt11); delay(lambda - 1.3*pwN - gt11); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl11, gt11); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt11); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl12, gt12); delay(lambda - 1.3*pwN - gt12); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(zero); zgradpulse(gzlvl12, gt12); delay(lambda - 1.3*pwN - gt12); sim3pulse(pw, 0.0, pwN, zero, zero, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, 0.0); dec2power(dpwr2); /* POWER_DELAY */ zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ statusdelay(C, 1.0e-4 ); setreceiver(t12); if (dm3[B]=='y') lk_sample(); }
pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ codecseq[MAXSTR], ddseq[MAXSTR], shca180[MAXSTR], shca90[MAXSTR]; int phase, ni, t1_counter, /* used for states tppi in t1 */ tau2; double tau1, /* t1 delay */ taua, /* ~ 1/4JCH = 1.7 ms */ taub, /* ~ 1/2JCH for AX spin systems */ taud, /* ~ 1/4JCD 12.5 ms for AX spin system */ TC, /* carbon constant time period 1/2JCC */ pwc, /* 90 c pulse at dhpwr */ tsatpwr, /* low level 1H trans.power for presat */ dhpwr, /* power level for high power 13C pulses on dec1 */ sw1, /* sweep width in f1 */ time_T2, /* total relaxation time for T2 measurement */ pwcodec, /* pw90 for C' decoupling */ dressed, /* = 2 for seduce-1 decoupling */ dpwrsed, pwd, /* pulse width for D decoupling at dpwr3_D */ dresD, dpwr3_D, lk_wait, /* delay for lk receiver recovery */ pwd1, /* pulse width for D +/- pulses at dpwr3 */ d_ca180, pwca180, pwca90, /* ca selective pulse at 57.5 ppm */ d_ca90, /* power level for pwca90 */ dpwr3_sl, /* D power level for spin locking */ pwd_sl, /* pw for D at dpwr3_sl */ gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gstab=getval("gstab"), gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("fscuba",fscuba); getstr("codecseq",codecseq); getstr("ddseq",ddseq); getstr("shca180",shca180); getstr("shca90",shca90); taua = getval("taua"); taub = getval("taub"); taud = getval("taud"); TC = getval("TC"); pwc = getval("pwc"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dhpwr = getval("dhpwr"); dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); sw1 = getval("sw1"); ni = getval("ni"); pwcodec = getval("pwcodec"); dressed = getval("dressed"); dpwrsed = getval("dpwrsed"); pwd = getval("pwd"); dresD = getval("dresD"); dpwr3_D = getval("dpwr3_D"); lk_wait = getval("lk_wait"); pwd1 = getval("pwd1"); d_ca180 = getval("d_ca180"); pwca180 = getval("pwca180"); pwca90 = getval("pwca90"); d_ca90 = getval("d_ca90"); dpwr3_sl = getval("dpwr3_sl"); pwd_sl = getval("pwd_sl"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl8 = getval("gzlvl8"); /* LOAD PHASE TABLE */ settable(t1,16,phi1); settable(t2,2,phi2); settable(t3,16,phi3); settable(t4,4,phi4); settable(t6,4,phi6); settable(t7,8,phi7); settable(t5,16,rec_d); /* CHECK VALIDITY OF PARAMETER RANGES */ if( TC - 0.50*(ni-1)*1/(sw1) - WFG_STOP_DELAY - gt6 - 102e-6 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - 4.0e-6 - pwd1 - POWER_DELAY - PRG_START_DELAY - PRG_STOP_DELAY - 2.0e-6 - POWER_DELAY - 2.0e-6 < 0.2e-6 ) { printf(" ni is too big\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { printf("incorrect dec2 decoupler flags! "); psg_abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 49 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( dhpwr > 63 ) { printf("don't fry the probe, DHPWR too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if(gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 || gt7 > 15e-3 || gt8 > 15e-3) { printf("gradients on for too long. Must be < 15e-3 \n"); psg_abort(1); } if(dpwr3_D > 54) { printf("D decoupling power is too high\n"); psg_abort(1); } if(lk_wait > .015 ) { printf("lk_wait delay may be too long\n"); psg_abort(1); } /* change back to 48 */ if(dpwr3_sl > 53) { printf("dpwr3_sl is too large; must be less than 53\n"); psg_abort(1); } /* change back to 250 */ if(pwd_sl < 170.0e-6) { printf("pwd_sl is too large; Must be larger than 170 us\n"); psg_abort(1); } /* Calculation of IzCzDz relaxation delay */ tau2 = (int) (d3+0.1); time_T2 = z_array[tau2]; if(time_T2 > 0.030) { printf("time_T2 is too long; Must be less than 30 ms\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t7,1,4); } /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.4e-6) tau1 = 0.4e-6; } tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t7,2,4); tsadd(t5,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); decoffset(dof); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(dhpwr); /* Set Dec1 power for hard 13C pulses */ dec2power(dpwr2); /* Set Dec2 power for 15N decoupling */ /* Presaturation Period */ status(B); if (fsat[0] == 'y') { rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(zero); dec2phase(zero); decphase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); /* Prepare for signs of gradients 0 1 0 1 0 1 */ mod2(ct,v1); rcvroff(); lk_hold(); delay(20.0e-6); /* first ensure that magnetization does infact start on H and not C */ decrgpulse(pwc,zero,2.0e-6,2.0e-6); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); /* this is the real start */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6); /* taua <= 1/4JCH */ simpulse(2*pw,2*pwc,zero,zero,0.0,0.0); txphase(one); decphase(t1); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ decrgpulse(pwc,t1,2.0e-6,0.0); decphase(zero); delay(taub - 2.0*pw - 2.0e-6); rgpulse(pw,zero,0.0,0.0); rgpulse(pw,t2,2.0e-6,0.0); delay(TC - taub - gt4 - 102e-6 - PRG_STOP_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupling off */ ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl4,gt4); delay(gstab); endif(v1); initval(1.0,v3); decstepsize(353.0); dcplrphase(v3); decpower(d_ca180); decshaped_pulse(shca180,pwca180,zero,4.0e-6,0.0); dcplrphase(zero); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl4,gt4); delay(gstab); endif(v1); /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(TC - taud - WFG_STOP_DELAY - gt4 - 102e-6 - POWER_DELAY - 4.0e-6 - pwd1 - POWER_DELAY - PRG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); decphase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupling off */ delay(taud - PRG_STOP_DELAY -POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - WFG_START_DELAY - pwca90 - 4.0e-6 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decpower(d_ca90); decshaped_pulse(shca90,pwca90,t3,4.0e-6,0.0); decpower(dhpwr); decrgpulse(pwc,one,4.0e-6,0.0); /* T2 period */ dec3power(dpwr3); dec3rgpulse(pwd1,t4,2.0e-6,0.0); dec3phase(one); dec3power(dpwr3_sl); dec3rgpulse(time_T2,one,2.0e-6,2.0e-7); dec3phase(zero); dec3power(dpwr3); dec3rgpulse(pwd1,zero,2.0e-6,0.0); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl5,gt5); delay(gstab); endif(v1); decphase(zero); decrgpulse(pwc,t7,4.0e-6,0.0); /* C' decoupling on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* C' decoupling on */ if(taud + 3.0*POWER_DELAY + 2.0*PRG_START_DELAY + pwd1 + 4.0e-6 >= tau1) { delay(tau1); rgpulse(2.0*pw,zero,0.0,0.0); delay(taud + 3.0*POWER_DELAY + 2.0*PRG_START_DELAY + pwd1 + 4.0e-6 - tau1); /* 2D decoupling on */ dec3phase(t6); dec3power(dpwr3); dec3rgpulse(pwd1,t6,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(TC - taud + tau1 - POWER_DELAY - PRG_START_DELAY - 2.0*pw - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_START_DELAY - 3.0*POWER_DELAY - 2.0*PRG_START_DELAY - pwd1 - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - gt6 - 102e-6 - WFG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupler off */ /* C' decoupling off */ decoff(); decprgoff(); decpower(d_ca180); /* set power for reburp */ /* C' decoupling off */ } else { delay(taud); /* 2D decoupling on */ dec3phase(t6); dec3power(dpwr3); dec3rgpulse(pwd1,t6,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(tau1 - taud - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_START_DELAY); rgpulse(2.0*pw,zero,0.0,0.0); delay(TC - 2.0*pw - PRG_STOP_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_STOP_DELAY - gt6 - 102e-6 - WFG_START_DELAY); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupler off */ /* C' decoupling off */ decoff(); decprgoff(); decpower(d_ca180); /* set power for reburp */ /* C' decoupling off */ } initval(1.0,v4); decstepsize(353.0); dcplrphase(v4); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl6,gt6); delay(gstab); endif(v1); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dcplrphase(zero); ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl6,gt6); delay(gstab); endif(v1); /* C' decoupling on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* C' decoupling on */ /* 2D decoupling on */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); /* keep power down */ dec3prgon(ddseq,pwd,dresD); dec3on(); /* 2D decoupling on */ delay(TC - tau1 - WFG_STOP_DELAY - gt6 - 102e-6 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - pwd1 - 4.0e-6 - POWER_DELAY - PRG_START_DELAY - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); /* C' decoupling off */ decoff(); decprgoff(); decpower(dhpwr); /* C' decoupling off */ decrgpulse(pwc,one,4.0e-6,0.0); /* 2D decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2D decoupler off */ ifzero(v1); delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(gstab); elsenz(v1); delay(2.0e-6); zgradpulse(-1.0*gzlvl7,gt7); delay(gstab); endif(v1); delay(lk_wait); /* delay for lk receiver recovery */ rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl8,gt8); decphase(zero); delay(taua - gt8 - 4.0e-6); simpulse(2*pw,2*pwc,zero,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(2.0e-6); delay(taua - 2*POWER_DELAY - gt8 - 4.0e-6); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* Set power for decoupling */ rgpulse(pw,zero,0.0,rof2); lk_sample(); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t5); }
pulsesequence() { /* DECLARE 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); }
pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ sh_reb[MAXSTR], codec[MAXSTR], MQ_flg[MAXSTR], filter_flg[MAXSTR]; int phase, t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ taua, /* set to exactly 1/4JCH */ tsatpwr, /* low level 1H trans.power for presat */ sw1, /* sweep width in f1 */ tpwr_cp, /* power level for 1H CPMG */ pw_cp, /* 1H pw for CPMG */ ncyc_cp, /* number of CPMG cycles */ time_T2, /* total time for CPMG trains */ tau_cpmg, dhpwr, pwc, dmf_co, dpwr_co, dresco, gt0, gt1, gt2, gt3, gt4, gt5, gt6, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, tpwr, pw, d_reb, pwc_reb, dpwr3_D, pwd, pwd1, tau_eq, pwn, dhpwr2; /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("fscuba",fscuba); getstr("sh_reb",sh_reb); getstr("codec",codec); getstr("MQ_flg",MQ_flg); getstr("filter_flg",filter_flg); taua = getval("taua"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); sw1 = getval("sw1"); tpwr_cp = getval("tpwr_cp"); pw_cp = getval("pw_cp"); ncyc_cp = getval("ncyc_cp"); time_T2 = getval("time_T2"); dhpwr = getval("dhpwr"); pwc = getval("pwc"); pwn = getval("pwn"); dhpwr2 = getval("dhpwr2"); dmf_co = getval("dmf_co"); dpwr_co = getval("dpwr_co"); dresco = getval("dresco"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); tpwr = getval("tpwr"); pw = getval("pw"); d_reb = getval("d_reb"); pwc_reb = getval("pwc_reb"); dpwr3_D = getval("dpwr3_D"); pwd = getval("pwd"); pwd1 = getval("pwd1"); tau_eq = getval("tau_eq"); /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t2,2,phi2); settable(t4,8,phi4); settable(t5,4,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { printf("incorrect dec2 decoupler flags! "); abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); abort(1); } if(tpwr_cp > 62) { printf("don't fry the probe, tpwr_cp too large: < 62! "); abort(1); } if(pw_cp < 9.5e-6) { printf("pw_cp is too low; > 9.5us\n"); abort(1); } if( dpwr2 > -16 ) { printf("don't fry the probe, DPWR2 too large! "); abort(1); } if( pw > 20.0e-6 ) { printf("dont fry the probe, pw too high ! "); abort(1); } if(gt1 > 3e-3 || gt2 > 3e-3 || gt3 > 3e-3 || gt4 > 3e-3 || gt5 > 3e-3 || gt6 > 3e-3) { printf("gradients on for too long. Must be < 3e-3 \n"); abort(1); } if(ncyc_cp > 80) { printf("ncyc_cp is too large; must be less than 81\n"); abort(1); } if(time_T2 > .080) { printf("time_T2 is too large; must be less than 80 ms\n"); abort(1); } if(ncyc_cp > 0) { tau_cpmg = time_T2/(4.0*ncyc_cp) - pw_cp; if(ix==1) printf("nuCPMG for curent experiment is (Hz): %5.3f\n",1/(4.0*(tau_cpmg+pw_cp))); } else { tau_cpmg = time_T2/(4.0) - pw_cp; if(ix==1) printf("nuCPMG for curent experiment is (Hz): not applicable"); } if(tau_cpmg + pw_cp < 125e-6) { printf("tau_cpmg is too small; decrease ncyc_cp\n"); abort(1); } if(dpwr_co > 42) { printf("dpwr_co is too high; < 42\n"); abort(1); } if(dpwr3_D > 51) { printf("dpwr3_D is too high; < 52\n"); abort(1); } if(dpwr3 > 59) { printf("dpwr3 is too high; < 60\n"); abort(1); } if(ix==1) printf("If at 800 turn dpwr3=-16, pwd1=0\n"); /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) tsadd(t1,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; if(MQ_flg[A] == 'n') tau1 = tau1 - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 2.0*pw - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6; else tau1 = tau1 - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 2.0*pw - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1)); if(tau1 < 0.4e-6) tau1 = 0.4e-6; } if(tau1 < 0.4e-6) tau1 = 0.4e-6; tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t5,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); rlpower(tsatpwr,TODEV); /* Set transmitter power for 1H presaturation */ rlpower(dhpwr,DODEV); /* Set Dec1 power for 13C pulses */ rlpower(dhpwr2,DO2DEV); /* Set Dec2 power for 15N pulses */ obsoffset(tof); /* Presaturation Period */ status(B); if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presaturation */ rlpower(tpwr,TODEV); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } rlpower(tpwr,TODEV); /* Set transmitter power for 1H CPMG pulses */ txphase(zero); dec2phase(zero); decphase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); rcvroff(); delay(20.0e-6); decrgpulse(pwc,zero,4.0e-6,0.0); delay(2.0e-6); rgradient('z',gzlvl1); delay(gt1); rgradient('z',0.0); delay(250.0e-6); rgpulse(pw,zero,0.0,0.0); decpower(d_reb); delay(2.0e-6); rgradient('z',gzlvl2); delay(gt2); rgradient('z',0.0); delay(150.0e-6); if(filter_flg[A] == 'y') delay(taua - POWER_DELAY - gt2 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb - 4.0/PI*pw); else delay(taua - POWER_DELAY - gt2 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb); simshaped_pulse("hard",sh_reb,2.0*pw,pwc_reb,zero,zero,0.0,0.0); txphase(one); decpower(dhpwr); decphase(t4); delay(taua - 0.5*pwc_reb - WFG2_STOP_DELAY - POWER_DELAY - gt2 - 152e-6 ); delay(2.0e-6); rgradient('z',gzlvl2); delay(gt2); rgradient('z',0.0); delay(150.0e-6); if(filter_flg[A] == 'n') rgpulse(pw,one,0.0,0.0); if(filter_flg[A] == 'y') { decrgpulse(pwc,t4,0.,0.); decpower(d_reb); decphase(zero); delay(2.0e-6); rgradient('z',gzlvl0); delay(gt0); rgradient('z',0.0); delay(150.0e-6); delay(taua - POWER_DELAY - gt0 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb); simshaped_pulse("hard",sh_reb,2.0*pw,pwc_reb,zero,zero,0.0,0.0); txphase(one); decpower(dhpwr); decphase(t4); delay(taua - 0.5*pwc_reb - WFG2_STOP_DELAY - POWER_DELAY - gt0 - 152e-6 ); delay(2.0e-6); rgradient('z',gzlvl0); delay(gt0); rgradient('z',0.0); delay(150.0e-6); decrgpulse(pwc,t4,0.0,0.0); rgpulse(pw,one,0.0,0.0); } decphase(t1); delay(2.0e-6); rgradient('z',gzlvl3); delay(gt3); rgradient('z',0.0); delay(250.0e-6); /* turn on 2H decoupling */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); dec3prgon(dseq3,pwd,dres3); dec3on(); /* turn on 2H decoupling */ if(MQ_flg[A] == 'y') { rgpulse(pw,zero,2.0e-6,0.0); delay(2.0*pwn - PRG_START_DELAY - PRG_STOP_DELAY); } decrgpulse(pwc,t1,4.0e-6,0.0); decphase(zero); /* 13CO decoupling on */ decpower(dpwr_co); decprgon(codec,1.0/dmf_co,dresco); decon(); /* 13CO decoupling on */ delay(tau1); rgpulse(2.0*pw,zero,0.0,0.0); dec2rgpulse(2.0*pwn,zero,0.0,0.0); delay(tau1); /* 13CO decoupling off */ decoff(); decprgoff(); /* 13CO decoupling off */ decpower(dhpwr); decrgpulse(pwc,zero,4.0e-6,0.0); if(MQ_flg[A] == 'y') rgpulse(pw,zero,0.0,0.0); /* turn off decoupling */ dec3off(); dec3prgoff(); dec3blank(); dec3phase(three); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* turn off decoupling */ obspower(tpwr_cp); if(MQ_flg[A] == 'n') { delay(2.0e-6); rgradient('z',gzlvl4); delay(gt4); rgradient('z',0.0); delay(250.0e-6); } else { delay(2.0e-6); rgradient('z',-1.0*gzlvl4); delay(gt4); rgradient('z',0.0); delay(250.0e-6); } /* now include a delay to allow the spin system to equilibrate */ delay(tau_eq); rgpulse(pw_cp,t2,4.0e-6,0.0); txphase(one); /* start of the CPMG period 1 */ if(ncyc_cp == 1) { delay(tau_cpmg - (2.0/PI)*pw_cp); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); } if(ncyc_cp == 2) { delay(tau_cpmg - (2.0/PI)*pw_cp); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); } if(ncyc_cp > 2) { delay(tau_cpmg - (2.0/PI)*pw_cp); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); initval(ncyc_cp-2,v4); loop(v4,v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); endloop(v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); } txphase(t4); decphase(zero); rgpulse(2.0*pw_cp,t4,2.0e-6,2.0e-6); txphase(one); if(ncyc_cp == 1) { delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); txphase(one); delay(tau_cpmg - 2.0/PI*pw_cp); } if(ncyc_cp == 2) { delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); txphase(one); delay(tau_cpmg - 2.0/PI*pw_cp); } if(ncyc_cp > 2) { delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); initval(ncyc_cp-2,v4); loop(v4,v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); delay(tau_cpmg); endloop(v5); delay(tau_cpmg); rgpulse(2.0*pw_cp,one,0.0,0.0); txphase(one); delay(tau_cpmg - 2.0/PI*pw_cp); } rgpulse(pw_cp,zero,0.0,0.0); delay(2.0e-6); rgradient('z',gzlvl5); delay(gt5); rgradient('z',0.0); delay(250.0e-6); obspower(tpwr); rgpulse(pw,zero,4.0e-6,0.0); decpower(d_reb); delay(2.0e-6); rgradient('z',gzlvl6); delay(gt6); rgradient('z',0.0); delay(150.0e-6); delay(taua - POWER_DELAY - gt6 - 152e-6 - WFG2_START_DELAY - 0.5*pwc_reb); simshaped_pulse("hard",sh_reb,2.0*pw,pwc_reb,zero,zero,0.0,0.0); delay(taua - 0.5*pwc_reb - WFG2_STOP_DELAY - 2.0*POWER_DELAY - gt6 - 152e-6); rlpower(dpwr,DODEV); /* Set power for decoupling */ rlpower(dpwr2,DO2DEV); /* Set power for decoupling */ delay(2.0e-6); rgradient('z',gzlvl6); delay(gt6); rgradient('z',0.0); delay(150.0e-6); rgpulse(pw,zero,0.0,0.0); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t5); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ int t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ TC = getval("TC"), /* Constant delay 1/(JCC) ~ 13.5 ms */ mix = getval("mix"), /* TOCSY mixing time */ 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 */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ sw1 = getval("sw1"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gt2 = getval("gt2"), gzlvl2 = getval("gzlvl2"), gstab = getval("gstab"), ppm, co_ofs = getval("co_ofs"), /* offset for C' */ co_bw = getval("co_bw"), /* bandwidth for C' */ copwr = getval("copwr"), /* power for C' decoupling. Get from CO_dec.DEC*/ codmf = getval("codmf"), /* dmf for C' decoupling. Get from CO_dec.DEC */ codres = getval("codres"), /* dres for C' decoupling. Get from CO_dec.DEC */ mixbw, /* band width for mixing shape */ mixpwr = getval("mixpwr"), /* power for CC mixing. Get from ccmix.DEC*/ mixdmf= getval("mixdmf"), /* dmf for CC decoupling. Get from ccmix.DEC */ mixdres = getval("mixdres"); /* dres for CC decoupling. Get from ccmix.DEC */ /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,1,phi2); settable(t3,1,phi3); settable(t12,2,rec); setautocal(); /* activate auto-calibration */ /* INITIALIZE VARIABLES */ /* 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*sfrq); 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*sfrq); rf2 = (4095.0*compC*pwC*2.0)/pwC2; rf2 = (int) (rf2 + 0.5); if( rf2 > 4295 ) { printf("increase pwClvl"); psg_abort(1);} if(( rf2 > 4095 ) && (rf2 <4296)) rf2=4095; /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni*1/(sw1) > TC) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((TC)*2.0*sw1))); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t1,1,4); tau1 = d2; tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t12,2,4); } if (autocal[0] == 'y') { if(FIRST_FID) { ppm = getval("sfrq"); ofs_check(C13ofs); co_ofs = (C13ofs+118.0)*ppm; co_bw = 20*ppm; CO_dec = pbox_Dsh("CO_dec", "SEDUCE1", co_bw, co_ofs, pwC*compC, pwClvl); copwr = CO_dec.pwr; codmf = CO_dec.dmf; codres = CO_dec.dres; mixbw = sw1; mix_seq = pbox_Dsh("mix_seq", "FLOPSY8", mixbw, 0.0, pwC*compC, pwClvl); mixpwr = mix_seq.pwr; mixdmf = mix_seq.dmf; mixdres = mix_seq.dres; } } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(pwClvl); decpower(tpwr); dec2power(dpwr2); dec3power(dpwr3); obspwrf(rf1); /*fine power for Cab 90 degree pulse */ obsoffset(tof); /*13C carrier at 46 ppm */ txphase(zero); delay(1.0e-5); status(B); rgpulse(pwC1, t1, 0.0,0.0); /* xxxxxxxxxxxxxxxxxxxxxx 13Cab Constant Time Evolution xxxxxxxxxxxxxxxxxx */ obspower(copwr); obspwrf(rf0); txphase(zero); obsunblank(); xmtron(); obsprgon("CO_dec",1.0/codmf,codres); if ( dm3[B] == 'y' ) /* turns on 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(TC - tau1 - pwC2/2 - 1/dmf3); } else delay(TC - tau1 - pwC2/2); obsprgoff(); xmtroff(); obsblank(); obspower(pwClvl); obspwrf(rf2); rgpulse(pwC2, zero, 0.0, 0.0); obspower(copwr); obspwrf(rf0); txphase(zero); obsunblank(); xmtron(); obsprgon("CO_dec",1.0/codmf,codres); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { delay(TC + tau1 - pwC2/2 - 1/dmf3); setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ } else delay(TC + tau1 - pwC2/2); obsprgoff(); xmtroff(); obsblank(); obspower(pwClvl); obspwrf(rf1); rgpulse(pwC1,t2,0.0,0.0); status(C); zgradpulse(gzlvl1, gt1); delay(gstab); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxx FLOPSY 8 Spin lock for mixing xxxxxxxxxxxxxxxxxxxx */ obspower(mixpwr); obspwrf(rf0); txphase(zero); obsunblank(); xmtron(); obsprgon("mix_seq",1.0/mixdmf,mixdres); delay(mix-gt1-gt2); obsprgoff(); xmtroff(); obsblank(); obspower(pwClvl); obspwrf(rf1); zgradpulse(gzlvl2,gt2); delay(gstab); rgpulse(pwC1,t3,0.0,rof2); getelem(t3,ct,v3); add(v3,one,v3); obspower(pwClvl); obspwrf(rf0); delay(350e-6-rof2); rgpulse(pwC*2.0,v3,0.0,0.0); delay(350e-6); status(D); setreceiver(t12); }
pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ C_flg[MAXSTR], dtt_flg[MAXSTR]; int phase, phase2, ni, ni2, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JHC = 1.6 ms */ taub, /* 1/6JCH = 1.1 ms */ BigTC, /* Carbon constant time period = 1/4Jcc = 7.0 ms */ BigTC1, /* Carbon constant time period2 < 1/4Jcc to account for relaxation */ pwN, /* PW90 for 15N pulse @ pwNlvl */ pwC, /* PW90 for c nucleus @ pwClvl */ pwcrb180, /* PW180 for C 180 reburp @ rfrb */ pwClvl, /* power level for 13C pulses on dec1 */ compC, compH, /* compression factors for H1 and C13 amps */ rfrb, /* power level for 13C reburp pulse */ pwNlvl, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ tofps, /* tof for presat */ gt0, gt1, gt2, gt3, gt4, gstab, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, decstep1, bw, ofs, ppm, pwd1, dpwr3_D, pwd, tpwrs, pwHs, dof_me, tof_dtt, tpwrs1, pwHs1, dpwrsed, pwsed, dressed, rfrb_cg, pwrb_cg; /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("C_flg",C_flg); getstr("dtt_flg",dtt_flg); tofps = getval("tofps"); taua = getval("taua"); taub = getval("taub"); BigTC = getval("BigTC"); BigTC1 = getval("BigTC1"); pwC = getval("pwC"); pwcrb180 = getval("pwcrb180"); pwN = getval("pwN"); tpwr = getval("tpwr"); pwClvl = getval("pwClvl"); compC = getval("compC"); compH = getval("compH"); dpwr = getval("dpwr"); pwNlvl = getval("pwNlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gstab = getval("gstab"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); decstep1 = getval("decstep1"); pwd1 = getval("pwd1"); dpwr3_D = getval("dpwr3_D"); pwd = getval("pwd"); pwHs = getval("pwHs"); dof_me = getval("dof_me"); pwHs1 = pwHs; tpwrs=-16.0; tpwrs1=tpwrs; tof_dtt = getval("tof_dtt"); dpwrsed = -16; pwsed = 1000.0; dressed = 90.0; pwrb_cg = 0.0; setautocal(); /* activate auto-calibration */ if(FIRST_FID) /* make shapes */ { ppm = getval("dfrq"); bw = 80.0*ppm; rb180 = pbox_make("rb180P", "reburp", bw, 0.0, compC*pwC, pwClvl); bw = 8.125*ppm; ofs = -24.0*ppm; rb180_cg = pbox_make("rb180_cgP", "reburp", bw, ofs, compC*pwC, pwClvl); bw = 20.0*ppm; ofs = 136.0*ppm; cosed = pbox("COsedP", CODEC, CODECps, dfrq, compC*pwC, pwClvl); if(taua < (gt4+106e-6+pwHs)) printf("gt4 or pwHs may be too long! "); if(taub < rb180_cg.pw) printf("rb180_cgP pulse may be too long! "); } pwcrb180 = rb180.pw; rfrb = rb180.pwrf; /* set up parameters */ pwrb_cg = rb180_cg.pw; rfrb_cg = rb180_cg.pwrf; /* set up parameters */ tpwrs = tpwr - 20.0*log10(pwHs/((compH*pw)*1.69)); /* sinc=1.69xrect */ tpwrs = (int) (tpwrs); tpwrs1=tpwrs; dpwrsed = cosed.pwr; pwsed = 1.0/cosed.dmf; dressed = cosed.dres; /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,4,phi3); settable(t4,4,phi4); settable(t5,8,phi5); settable(t6,8,phi6); settable(t7,8,phi7); settable(t8,1,phi8); settable(t9,2,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( BigTC - 0.5*(ni2-1)*1/(sw2) - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 < 0.2e-6 ) { printf(" ni2 is too big\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnnn' "); psg_abort(1); } if( satpwr > 6 ) { printf("SATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > -16 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( pwcrb180 > 500.0e-6 ) { printf("dont fry the probe, pwcrb180 too high ! "); psg_abort(1); } if(dpwr3 > 51) { printf("dpwr3 is too high; < 52\n"); psg_abort(1); } if(dpwr3_D > 49) { printf("dpwr3_D is too high; < 50\n"); psg_abort(1); } if(d1 < 1) { printf("d1 must be > 1\n"); psg_abort(1); } if(dpwrsed > 48) { printf("dpwrsed must be less than 49\n"); psg_abort(1); } if( gt0 > 5.0e-3 || gt1 > 5.0e-3 || gt2 > 5.0e-3 || gt3 > 5.0e-3 || gt4 > 5.0e-3 ) { printf(" all values of gti must be < 5.0e-3\n"); psg_abort(1); } if(ix==1) { printf("make sure that BigTC1 is set properly for your application\n"); printf("7 ms, neglecting relaxation \n"); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t1,1,4); tsadd(t2,1,4); tsadd(t3,1,4); tsadd(t4,1,4); } if (phase2 == 2) tsadd(t8,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; tau1 = tau1 - 2.0*pw - 4.0/PI*pwC - POWER_DELAY - 2.0e-6 - PRG_START_DELAY - PRG_STOP_DELAY - POWER_DELAY - 2.0e-6; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.4e-6) tau1 = 4.0e-7; } tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.4e-6) tau2 = 4.0e-7; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t9,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t8,2,4); tsadd(t9,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(satpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 to low power */ /* Presaturation Period */ status(B); if (fsat[0] == 'y') { obsoffset(tofps); delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat with transmitter */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2.0*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ obsoffset(tof); txphase(t1); decphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); decoffset(dof_me); lk_hold(); rcvroff(); delay(20.0e-6); /* ensure that magnetization originates on 1H and not 13C */ if(dtt_flg[A] == 'y') { obsoffset(tof_dtt); obspower(tpwrs1); shaped_pulse("H2Osinc",pwHs1,zero,10.0e-6,0.0); obspower(tpwr); obsoffset(tof); } decrgpulse(pwC,zero,0.0,0.0); zgradpulse(gzlvl0,gt0); delay(gstab); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ zgradpulse(gzlvl1,gt1); delay(gstab); delay(taua - gt1 -gstab); simpulse(2.0*pw,2.0*pwC,zero,zero,0.0,0.0); txphase(one); delay(taua - gt1 - gstab); zgradpulse(gzlvl1,gt1); delay(gstab); rgpulse(pw,one,0.0,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ decoffset(dof); /* jump 13C to 40 ppm */ zgradpulse(gzlvl2,gt2); delay(gstab); decrgpulse(pwC,t1,4.0e-6,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t2); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t2,0.0,0.0); decphase(zero); /* turn on 2H decoupling */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); dec3prgon(dseq3,pwd,dres3); dec3on(); /* turn on 2H decoupling */ initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC1 - POWER_DELAY - 4.0e-6 - pwd1 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t3); decpwrf(4095.0); delay(BigTC1 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t3,0.0,0.0); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t4); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t4,0.0,0.0); if(C_flg[A] == 'n') { decpower(dpwrsed); decunblank(); decphase(zero); delay(2.0e-6); decprgon(cosed.name,pwsed,dressed); decon(); delay(tau1); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau1); decoff(); decprgoff(); decblank(); decpower(pwClvl); } else simpulse(2.0*pw,2.0*pwC,zero,zero,4.0e-6,4.0e-6); decrgpulse(pwC,t5,2.0e-6,0.0); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t6); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t6,0.0,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC1 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t7); decpwrf(4095.0); delay(BigTC1 - WFG_STOP_DELAY - POWER_DELAY - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6 - pwd1); /* 2H decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2H decoupling off */ decrgpulse(pwC,t7,0.0,0.0); decphase(zero); delay(tau2); rgpulse(2.0*pw,zero,0.0,0.0); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - 2.0*pw - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t8); decpwrf(4095.0); delay(BigTC - tau2 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decrgpulse(pwC,t8,4.0e-6,0.0); decoffset(dof_me); zgradpulse(gzlvl3,gt3); delay(gstab); lk_sample(); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ rgpulse(pw,zero,4.0e-6,0.0); zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - gt4 -gstab - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - 2.0e-6); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ simpulse(2.0*pw,2.0*pwC,zero,zero,2.0e-6,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - POWER_DELAY - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - gt4 - gstab - 2.0*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t9); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES; parameters used in the last half of the */ /* sequence are declared and initialized as 0.0 in bionmr.h, and */ /* reinitialized below */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ COrefoc[MAXSTR], TROSY[MAXSTR]; /* do TROSY on N15 and H1 */ int t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double d2_init=0.0, /* used for states tppi in t1 */ d3_init=0.0, /* used for states tppi in t2 */ tau1, /* t1 delay */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ timeNCA = getval("timeNCA"), timeC = getval("timeC"), lambda = 1.0/(4.0*getval("JNH")), pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ pwS1, /* length of square 90 on Ca */ phshift, /* phase shift induced on Ca by 180 on CO in middle of t1 */ pwS2, /* length of 180 on CO */ pwS = getval("pwS"), /* used to change 180 on CO in t1 for 1D calibrations */ pwZ, /* the largest of pwS2 and 2.0*pwN */ pwZ1, /* the largest of pwS2 and 2.0*pwN for 1D experiments */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("COrefoc",COrefoc); 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 */ kappa = 5.4e-3; pwHs = 1.7e-3*500.0/sfrq; /* length of H2O flipback, 1.7ms at 500 MHz*/ widthHd = 34.0; /* bandwidth of H1 WALTZ16 decoupling, 7.3 kHz at 600 MHz */ pwHd = h1dec90pw("WALTZ16", widthHd, 0.0); /* H1 90 length for WALTZ16 */ /* get calculated pulse lengths of shaped C13 pulses */ pwS1 = c13pulsepw("co", "ca", "sinc", 90.0); pwS2 = c13pulsepw("ca", "co", "square", 180.0); /* get calculated pulse lengths of shaped C13 pulses pwS1 = c13pulsepw("ca", "co", "square", 90.0); pwS2 = c13pulsepw("co", "ca", "sinc", 180.0); */ /* the 180 pulse on CO at the middle of t1 */ if ((ni2 > 0.0) && (ni == 1.0)) ni = 0.0; if (pwS2 > 2.0*pwN) pwZ = pwS2; else pwZ = 2.0*pwN; if ((pwS==0.0) && (pwS2>2.0*pwN)) pwZ1=pwS2-2.0*pwN; else pwZ1=0.0; if ( ni > 1 ) pwS = 180.0; if ( pwS > 0 ) phshift = 130.0; else phshift = 130.0; /* 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 > 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(); rcvroff(); set_c13offset("co"); obsoffset(tof); obspower(tpwr); obspwrf(4095.0); decpower(pwClvl); decpwrf(4095.0); dec2power(pwNlvl); 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); shiftedpulse("sinc", pwHs, 90.0, 0.0, two, 2.0e-6, 0.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); delay(timeTN - 0.5*kappa - WFG3_START_DELAY); } else {txphase(zero); shiftedpulse("sinc", pwHs, 90.0, 0.0, zero, 2.0e-6, 0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); delay(kappa - POWER_DELAY - PWRF_DELAY - pwHd - 4.0e-6 - PRG_START_DELAY); /* delays for h1waltzon subtracted */ h1waltzon("WALTZ16", widthHd, 0.0); decphase(zero); dec2phase(zero); delay(timeTN - kappa - WFG3_START_DELAY); } c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); /* pwS2 */ delay(timeNCA - timeTN - timeC); dec2rgpulse(2.0*pwN,zero,0.0,0.0); c13pulse("ca", "co", "sinc", 180.0, zero, 0.0, 0.0); decphase(zero); delay(timeNCA - timeC + 1.3*pwN); c13pulse("co", "ca", "sinc", 90.0, zero, 0.0, 0.0); /* pwS1 */ delay(timeC); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); /* pwS2 */ delay(timeC); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); c13pulse("co", "ca", "sinc", 90.0, one, 0.0, 0.0); /* pwS1 */ dec2rgpulse(pwN, zero, 0.0, 0.0); if (TROSY[A]=='n') h1waltzoff("WALTZ16", widthHd, 0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); if(dm3[B] == 'y') /*optional 2H decoupling on */ {dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3);} h1waltzon("WALTZ16", widthHd, 0.0); /* xxxxxxxxxxxxxxxxxxxxxx 13Ca EVOLUTION xxxxxxxxxxxxxxxxxx */ set_c13offset("ca"); c13pulse("ca", "co", "square", 90.0, t3, 2.0e-6, 0.0); /* pwS1 */ decphase(zero); if ((ni>1.0) && (tau1>0.0)) /* total 13C evolution equals d2 exactly */ { /* 2.0*pwS1/PI compensates for evolution at 64% rate during 90 */ if (tau1 - 2.0*pwS1/PI - WFG3_START_DELAY - 0.5*pwZ - 2.0e-6 - 2.0*PWRF_DELAY - 2.0*POWER_DELAY > 0.0) { delay(tau1 - 2.0*pwS1/PI - WFG3_START_DELAY - 0.5*pwZ - 2.0e-6 - 2.0*PWRF_DELAY - 2.0*POWER_DELAY); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN,zero, zero, zero, 2.0e-6, 0.0); initval(phshift, v3); decstepsize(1.0); dcplrphase(v3); delay(tau1 - 2.0*pwS1/PI - SAPS_DELAY - 0.5*pwZ - WFG_START_DELAY - 2.0e-6 - 2.0*PWRF_DELAY - 2.0*POWER_DELAY); } else { initval(180.0, v3); decstepsize(1.0); dcplrphase(v3); delay(2.0*tau1 - 4.0*pwS1/PI - SAPS_DELAY - WFG_START_DELAY - 2.0e-6 - PWRF_DELAY - POWER_DELAY); } /* delay(tau1); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN,zero, zero, zero, 2.0e-6, 0.0); delay(tau1); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN,zero, zero, zero, 2.0e-6, 0.0);*/ } else if (ni==1.0) { delay(10.0e-6 + SAPS_DELAY + 0.5*pwZ1 + WFG_START_DELAY); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, pwS, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); initval(phshift, v3); decstepsize(1.0); dcplrphase(v3); delay(10.0e-6 + WFG3_START_DELAY + 0.5*pwZ1); } else { delay(10.0e-6); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); delay(10.0e-6); /* delay(tau1); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN,zero, zero, zero, 2.0e-6, 0.0); delay(tau1); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN,zero, zero, zero, 2.0e-6, 0.0); */ } decphase(t5); c13pulse("ca", "co", "square", 90.0, t5, 2.0e-6, 0.0); /* pwS1 */ h1waltzoff("WALTZ16", widthHd, 0.0); if(dm3[B] == 'y') /*optional 2H decoupling off */ {dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank();} set_c13offset("co"); /* xxxxxxxxxxxxxxxxxxxx N15 EVOLUTION & SE TRAIN xxxxxxxxxxxxxxxxxxxxxxx */ ihn_evol_se_train("co", "ca"); /* common part of sequence in bionmr.h */ if (dm3[B] == 'y') lk_sample(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); DSEQ dec2 = getdseq("Y"); strncpy(dec2.t.ch,"dec2",3); putCmd("chYtppm='dec2'\n"); strncpy(dec2.s.ch,"dec2",3); putCmd("chYspinal='dec2'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwX90"); d.dutyoff = d1 + 4.0e-6; d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = getval("rd") + getval("ad") + at; if ((d.c1 == -1) && (d.c2 == -1)) { d.c1 = ((!strcmp(dec2.seq,"tppm")) && (dec2.t.a == 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = ((!strcmp(dec2.seq,"spinal")) && (dec2.s.a == 0.0)); d.t2 = getval("rd") + getval("ad") + at; } d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phX90,4,table1); settable(phRec,4,table2); setreceiver(phRec); // Begin Sequence txphase(phX90); decphase(zero); dec2phase(zero); obspwrf(getval("aX90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // X Direct Polarization rgpulse(getval("pwX90"),phX90,0.0,0.0); // Begin Acquisition _dseqon(dec); if (NUMch > 2) _dseqon(dec2); if (NUMch > 3) dec3blank(); obsblank(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); if (NUMch > 2) _dseqoff(dec2); if (NUMch > 3) dec3unblank(); obsunblank(); decunblank(); }
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() { /* DECLARE VARIABLES */ char satmode[MAXSTR], fscuba[MAXSTR], fc180[MAXSTR], /* Flag for checking sequence */ ddseq[MAXSTR], /* 2H decoupling seqfile */ fCTCa[MAXSTR], /* Flag for CT or non_CT on Ca dimension */ sel_flg[MAXSTR], cbdecseq[MAXSTR]; int icosel, ni = getval("ni"), t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ tau3, /* t2 delay */ taua, /* ~ 1/4JNH = 2.25 ms */ taub, /* ~ 1/4JNH = 2.25 ms */ tauc, /* ~ 1/4JCaC' = 4 ms */ taud, /* ~ 1/4JCaC' = 4.5 ms if bigTCo can be set to be less than 4.5ms and then taud can be smaller*/ zeta, /* time for C'-N to refocuss set to 0.5*24.0 ms */ bigTCa, /* Ca T period */ bigTCo, /* Co T period */ bigTN, /* nitrogen T period */ BigT1, /* delay to compensate for gradient gt5 */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ sphase, /* small angle phase shift */ sphase1, sphase2, /* used only for constant t2 period */ pwS4, /* selective CO 180 */ pwS3, /* selective Ca 180 */ pwS1, /* selecive Ca 90 */ pwS2, /* selective CO 90 */ cbpwr, /* power level for selective CB decoupling */ cbdmf, /* pulse width for selective CB decoupling */ cbres, /* decoupling resolution of CB decoupling */ gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gt9, gt10, gt11, gt12, gstab, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9, gzlvl10, gzlvl11, gzlvl12, compH = getval("compH"), /* adjustment for amplifier compression */ pwHs = getval ("pwHs"), /* H1 90 degree pulse at tpwrs */ tpwrs, /* power for pwHs ("H2osinc") pulse */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ swCa = getval("swCa"), swCO = getval("swCO"), swN = getval("swN"), swTilt, /* This is the sweep width of the tilt vector */ cos_N, cos_CO, cos_Ca, angle_N, angle_CO, angle_Ca; angle_N=0.0; /*initialize variable*/ /* LOAD VARIABLES */ getstr("satmode",satmode); getstr("fc180",fc180); getstr("fscuba",fscuba); getstr("ddseq",ddseq); getstr("fCTCa",fCTCa); getstr("sel_flg",sel_flg); taua = getval("taua"); taub = getval("taub"); tauc = getval("tauc"); taud = getval("taud"); zeta = getval("zeta"); bigTCa = getval("bigTCa"); bigTCo = getval("bigTCo"); bigTN = getval("bigTN"); BigT1 = getval("BigT1"); tpwr = getval("tpwr"); dpwr = getval("dpwr"); dpwr3 = getval("dpwr3"); sw1 = getval("sw1"); sw2 = getval("sw2"); sphase = getval("sphase"); sphase1 = getval("sphase1"); sphase2 = getval("sphase2"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); gt10 = getval("gt10"); gt11 = getval("gt11"); gt12 = getval("gt12"); gstab = getval("gstab"); 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"); gzlvl10 = getval("gzlvl10"); gzlvl11 = getval("gzlvl11"); gzlvl12 = getval("gzlvl12"); /* Load variable */ cbpwr = getval("cbpwr"); cbdmf = getval("cbdmf"); cbres = getval("cbres"); tau1 = 0; tau2 = 0; tau3 = 0; cos_N = 0; cos_CO = 0; cos_Ca = 0; getstr("cbdecseq", cbdecseq); /* LOAD PHASE TABLE */ settable(t1,1,phi1); settable(t2,1,phi2); settable(t3,4,phi3); settable(t4,1,phi4); settable(t5,1,phi5); settable(t7,4,phi7); settable(t8,4,phi8); settable(t6,4,rec); pwS1=c13pulsepw("ca", "co", "square", 90.0); pwS2=c13pulsepw("co", "ca", "sinc", 90.0); pwS3=c13pulsepw("ca", "co", "square", 180.0); pwS4=c13pulsepw("co", "ca", "sinc", 180.0); 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' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if( satpwr > 6 ) { printf("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 46 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 46 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pwClvl > 62 ) { printf("don't fry the probe, pwClvl 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( gt3 > 2.5e-3 ) { printf("gt3 is too long\n"); psg_abort(1); } if( gt1 > 10.0e-3 || gt2 > 10.0e-3 || gt4 > 10.0e-3 || gt5 > 10.0e-3 || gt6 > 10.0e-3 || gt7 > 10.0e-3 || gt8 > 10.0e-3 || gt9 > 10.0e-3 || gt10 > 10.0e-3 || gt11 > 50.0e-6) { printf("gt values are too long. Must be < 10.0e-3 or gt11=50us\n"); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Set up angles and phases */ angle_CO=getval("angle_CO"); cos_CO=cos(PI*angle_CO/180.0); angle_Ca=getval("angle_Ca"); cos_Ca=cos(PI*angle_Ca/180.0); if ( (angle_CO < 0) || (angle_CO > 90) ) { printf ("angle_CO must be between 0 and 90 degree.\n"); psg_abort(1); } if ( (angle_Ca < 0) || (angle_Ca > 90) ) { printf ("angle_Ca must be between 0 and 90 degree.\n"); psg_abort(1); } if ( 1.0 < (cos_CO*cos_CO + cos_Ca*cos_Ca) ) { printf ("Impossible angles.\n"); psg_abort(1); } else { cos_N=sqrt(1.0- (cos_CO*cos_CO + cos_Ca*cos_Ca)); angle_N = 180.0*acos(cos_N)/PI; } swTilt=swCO*cos_CO + swCa*cos_Ca + swN*cos_N; if (ix ==1) { printf("\n\nn\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"); printf ("Maximum Sweep Width: \t\t %f Hz\n", swTilt); printf ("Anlge_CO:\t%6.2f\n", angle_CO); printf ("Anlge_Ca:\t%6.2f\n", angle_Ca); printf ("Anlge_N :\t%6.2f\n", angle_N ); } /* Set up hyper complex */ /* sw1 is used as symbolic index */ if ( sw1 < 1000 ) { printf ("Please set sw1 to some value larger than 1000.\n"); psg_abort(1); } if (ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if (t1_counter % 2) { tsadd(t2,2,4); tsadd(t6,2,4); } if (phase1 == 1) { ;} /* CC */ else if (phase1 == 2) { tsadd(t5,1,4);} /* SC */ else if (phase1 == 3) { tsadd(t1,1,4); } /* CS */ else if (phase1 == 4) { tsadd(t5,1,4); tsadd(t1,1,4); } /* SS */ else { printf ("phase1 can only be 1,2,3,4. \n"); psg_abort(1); } if (phase2 == 2) { tsadd(t4,2,4); icosel = 1; } /* N */ else icosel = -1; tau1 = 1.0*t1_counter*cos_Ca/swTilt; tau2 = 1.0*t1_counter*cos_CO/swTilt; tau3 = 1.0*t1_counter*cos_N/swTilt; tau1 = tau1/2.0; tau2 = tau2/2.0; tau3 = tau3/2.0; /* CHECK VALIDITY OF PARAMETER RANGES */ if (bigTN - 0.5*ni*(cos_N/swTilt) + pwS4 < 0.2e-6) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((bigTN + pwS4)*2.0*swTilt/cos_N))); psg_abort(1);} if ((fCTCa[A]=='y') && (bigTCa - 0.5*ni*(cos_Ca/swTilt) - WFG_STOP_DELAY - POWER_DELAY - gt11 - 50.2e-6 < 0.2e-6)) { printf(" ni is too big for Ca. Make ni equal to %d or less.\n", (int) ((bigTCa -WFG_STOP_DELAY - POWER_DELAY - gt11 - 50.2e-6)/(0.5*cos_Ca/swTilt)) ); psg_abort(1); } if (bigTCo - 0.5*ni*(cos_CO/swTilt) - 4.0e-6 - POWER_DELAY < 0.2e-6) { printf(" ni is too big for CO. Make ni equal to %d or less.\n", (int) ((bigTCo - 4.0e-6 - POWER_DELAY) / (0.5*cos_CO/swTilt)) ); psg_abort(1); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obsoffset(tof); obspower(satpwr); /* Set transmitter power for 1H presaturation */ obspwrf(4095.0); decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ decpwrf(4095.0); dec2power(pwNlvl); /* Set Dec2 power for 15N hard pulses */ dec2pwrf(4095.0); set_c13offset("ca"); /* set Dec1 carrier at Ca */ sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 0.0, zero, zero, zero, 2.0e-6, 0.0); set_c13offset("co"); /* set Dec1 carrier at Co */ /* Presaturation Period */ if (satmode[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presaturation */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(one); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); lk_hold(); shiftedpulse("sinc", pwHs, 90.0, 0.0, one, 2.0e-6, 0.0); txphase(zero); delay(2.0e-6); /* xxxxxxxxxxxxxxxxxxxxxx 1HN to 15N TRANSFER xxxxxxxxxxxxxxxxxx */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(0.2e-6); zgradpulse(gzlvl1, gt1); delay(2.0e-6); delay(taua - gt1 - 2.2e-6); /* taua <= 1/4JNH */ sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(three); dec2phase(zero); decphase(zero); delay(taua - gt1 - gstab -0.2e-6 - 2.0e-6); delay(0.2e-6); zgradpulse(gzlvl1, gt1); delay(gstab); /* xxxxxxxxxxxxxxxxxxxxxx 15N to 13CO TRANSFER xxxxxxxxxxxxxxxxxx */ if(sel_flg[A] == 'n') { rgpulse(pw,three,2.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl2, gt2); delay(gstab); dec2rgpulse(pwN,zero,0.0,0.0); delay( zeta + pwS4 ); dec2rgpulse(2*pwN,zero,0.0,0.0); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); dec2phase(one); delay(zeta - 2.0e-6); dec2rgpulse(pwN,one,2.0e-6,0.0); } else { rgpulse(pw,one,2.0e-6,0.0); initval(1.0,v6); dec2stepsize(45.0); dcplr2phase(v6); delay(0.2e-6); zgradpulse(gzlvl2, gt2); delay(gstab); dec2rgpulse(pwN,zero,0.0,0.0); dcplr2phase(zero); dec2phase(zero); delay(1.34e-3 - SAPS_DELAY - 2.0*pw); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,0.0); delay( zeta - 1.34e-3 - 2.0*pw + pwS4 ); dec2rgpulse(2*pwN,zero,0.0,0.0); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); dec2phase(one); delay(zeta - 2.0e-6); dec2rgpulse(pwN,one,2.0e-6,0.0); } dec2phase(zero); decphase(zero); delay(0.2e-6); zgradpulse(gzlvl3, gt3); delay(gstab); /* xxxxxxxxxxxxxxxxxxxxx 13CO to 13CA TRANSFER xxxxxxxxxxxxxxxxxxxxxxx */ c13pulse("co", "ca", "sinc", 90.0, zero, 2.0e-6, 0.0); delay(2.0e-7); zgradpulse(gzlvl10, gt10); delay(100.0e-6); delay(tauc - POWER_DELAY - gt10 - 100.2e-6 - (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); delay(2.0e-7); zgradpulse(gzlvl10, gt10); delay(100.0e-6); delay(tauc - POWER_DELAY - 4.0e-6 - gt10 - 100.2e-6 - (0.5*10.933*pwC)); c13pulse("co", "ca", "sinc", 90.0, one, 4.0e-6, 0.0); set_c13offset("ca"); /* change Dec1 carrier to Ca (55 ppm) */ delay(0.2e-6); zgradpulse(gzlvl9, gt9); delay(gstab); /* xxxxxxxxxxxxxxxxxx 13CA EVOLUTION xxxxxxxxxxxxxxxxxxxxxx */ /* Turn on D decoupling using the third decoupler */ dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ c13pulse("ca", "co", "square", 90.0, t5, 2.0e-6, 0.0); if (fCTCa[A]=='y') { /* Constant t2 */ decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(tau1); decoff(); decprgoff(); decpower(pwClvl); dec2rgpulse(pwN,one,0.0,0.0); dec2rgpulse(2*pwN,zero,0.0,0.0); dec2rgpulse(pwN,one,0.0,0.0); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(bigTCa - 4.0*pwN - WFG_START_DELAY - pwS4 - WFG_STOP_DELAY - POWER_DELAY - WFG_START_DELAY - gt11 - gstab -0.2e-6); decoff(); decprgoff(); decpower(pwClvl); delay(0.2e-6); zgradpulse(gzlvl11, gt11); delay(gstab); initval(1.0,v3); decstepsize(140); dcplrphase(v3); c13pulse("ca", "co", "square", 180.0, zero, 0.0, 0.0); delay(0.2e-6); zgradpulse(gzlvl11, gt11); delay(gstab); decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(bigTCa - tau1 - WFG_STOP_DELAY - POWER_DELAY - gt11 - gstab -0.2e-6); decoff(); decprgoff(); } /* non_constant t2 */ else { if (fc180[A]=='n') { if ((ni>1.0) && (tau1>0.0)) { if (tau1 - 2.0*pwS1/PI - PRG_START_DELAY - 2*POWER_DELAY - PRG_STOP_DELAY - pwN > 0.0) { decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(tau1 - 2.0*pwS1/PI - PRG_START_DELAY - 2*POWER_DELAY - PRG_STOP_DELAY - pwN); decoff(); decprgoff(); decphase(zero); dec2phase(zero); decpower(pwClvl); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(tau1 - 2.0*pwS1/PI - PRG_START_DELAY - 2*POWER_DELAY - PRG_STOP_DELAY - pwN); decoff(); decprgoff(); decstepsize(1.0); initval(sphase1, v3); dcplrphase(v3); } else { tsadd(t6,2,4); delay(2.0*tau1); delay(10.0e-6); sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); delay(10.0e-6); } } else { tsadd(t6,2,4); delay(10.0e-6); sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); delay(10.0e-6); } } else { /* for checking sequence */ c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); } } decpower(pwClvl); decphase(t7); c13pulse("ca", "co", "square", 90.0, t7, 4.0e-6, 0.0); dcplrphase(zero); /* Turn off D decoupling */ dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); /* Turn off D decoupling */ set_c13offset("co"); /* set carrier back to Co */ delay(0.2e-6); zgradpulse(gzlvl12, gt12); delay(gstab); /* xxxxxxxxxxxxxxx 13CA to 13CO TRANSFER and CT 13CO EVOLUTION xxxxxxxxxxxxxxxxx */ c13pulse("co", "ca", "sinc", 90.0, t1, 2.0e-6, 0.0); delay(tau2); dec2rgpulse(pwN,one,0.0,0.0); dec2rgpulse(2*pwN,zero,0.0,0.0); dec2rgpulse(pwN,one,0.0,0.0); delay(taud - 4.0*pwN - POWER_DELAY - 0.5*(WFG_START_DELAY + pwS3 + WFG_STOP_DELAY)); c13pulse("ca", "co", "square", 180.0, zero, 0.0, 0.0); decphase(t8); initval(1.0,v4); decstepsize(sphase); dcplrphase(v4); delay(bigTCo - taud - 0.5*(WFG_START_DELAY + pwS3 + WFG_STOP_DELAY) ); c13pulse("co", "ca", "sinc", 180.0, t8, 0.0, 0.0); dcplrphase(zero); decphase(one); delay(bigTCo - tau2 - POWER_DELAY - 4.0e-6); c13pulse("co", "ca", "sinc", 90.0, one, 4.0e-6, 0.0); delay(0.2e-6); zgradpulse(gzlvl4, gt4); delay(gstab); /* t3 period */ dec2rgpulse(pwN,t2,2.0e-6,0.0); dec2phase(t3); delay(bigTN - tau3 + pwS4); dec2rgpulse(2*pwN,t3,0.0,0.0); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); txphase(zero); dec2phase(t4); delay(bigTN - gt5 - gstab -0.2e-6 - 2.0*GRADIENT_DELAY - 4.0e-6 - WFG_START_DELAY - pwS3 - WFG_STOP_DELAY); delay(0.2e-6); zgradpulse(icosel*gzlvl5, gt5); delay(gstab); c13pulse("ca", "co", "square", 180.0, zero, 4.0e-6, 0.0); delay(tau3); sim3pulse(pw,0.0,pwN,zero,zero,t4,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl6, gt6); delay(2.0e-6); dec2phase(zero); delay(taub - gt6 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl6, gt6); delay(200.0e-6); txphase(one); dec2phase(one); delay(taub - gt6 - 200.2e-6); sim3pulse(pw,0.0,pwN,one,zero,one,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7, gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(taub - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7, gt7); delay(200.0e-6); delay(taub - gt7 - 200.2e-6); sim3pulse(pw,0.0,pwN,zero,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(-gzlvl8, gt8/2.0); delay(50.0e-6); delay(BigT1 - gt8/2.0 - 50.2e-6 - 0.5*(pwN - pw) - 2.0*pw/PI); rgpulse(2*pw,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl8, gt8/2.0); delay(50.0e-6); dec2power(dpwr2); decpower(dpwr); delay(BigT1 - gt8/2.0 - 50.2e-6 - 2.0*POWER_DELAY); lk_sample(); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(C); setreceiver(t6); }
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); }
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() { /* 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); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char CA90_in_str[MAXSTR], CA180_in_str[MAXSTR], CA180n_in_str[MAXSTR], CO180offCA_in_str[MAXSTR], RFpars[MAXSTR], exp_mode[MAXSTR], /* flag to run 3D, or 2D time-shared 15N TROSY /13C HSQC-SE*/ f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], f3180[MAXSTR]; /* do TROSY on N15 and H1 */ int icosel=1.0; /* used to get n and p type */ double x,y,z, t2max, t1max, tpwrs, tpwrsf_d = getval("tpwrsf_d"), /* fine power adustment for first soft pulse(down)*/ tpwrsf_u = getval("tpwrsf_u"), /* fine power adustment for second soft pulse(up) */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ compH =getval("compH"), tau1, tau2, /*evolution times in indirect dimensions */ ni2=getval("ni2"), tauNH=getval("tauNH"), /* 1/(4Jhn), INEPTs, 2.4ms*/ tauNH1=getval("tauNH1"), /* 1/(4Jhn), TROSY in CN CT, 2.7ms*/ timeTN1=getval("timeTN1"), /* CT time for (first) N->CA*N transfer */ timeTN=getval("timeTN"), /* CT time for last SE TROSY */ timeCN=getval("timeCN"), /* CT time for CA -> N transfer, middle */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), dfrq = getval("dfrq"), pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ gstab = getval("gstab"), g6bal= getval("g6bal"), /* balance of the decoding gradient around last 180 pulse on 1H g6bal=1.0 : full g6 is on the right side of the last pw180 on 1H g6bal=0.0: full g6 is on the left side*/ gt0 = getval("gt0"), gt1 = getval("gt1"), gt2 = getval("gt2"), gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt6 = getval("gt6"), gt7 = getval("gt7"), gzlvl0 = getval("gzlvl0"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"), gzlvl7 = getval("gzlvl7"), gzlvl11 = getval("gzlvl11"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("exp_mode",exp_mode); 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.0; /* add 6dB to let tpwrsf_d control fine power ~2048*/ /* LOAD PHASE TABLE */ settable(t1,1,phi1); settable(t2,4,phi2); /* default double trosy */ if (exp_mode[A] == 'h') {settable(t2,4,phi2h);}; /*option for regular hNcaNH */ settable(t3,4,phi3); settable(t4,8,phi4); settable(t5,2,phi5); settable(t6,4,phi6); settable(t7,4,phi7); settable(t8,4,phi8); settable(t21,1,psi1); /*trosy and SE hsqc in reverse INPET */ settable(t22,1,psi2); settable(t23,1,psi2c); settable(t31,8,rec); /* some checks */ if((dm2[A] == 'y') || (dm2[B] == 'y') || (dm2[C] == 'y') || (dm2[D] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nnnn' "); psg_abort(1); } if ( dm3[A] == 'y' || dm3[C] == 'y' ) { printf("incorrect dec3 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1);} if ( dpwr3 > 56 ) { printf("dpwr3 too large! recheck value "); psg_abort(1);} if ( (dm3[B] == 'y' ) && (timeCN*2.0 > 60.0e-3) ) { printf("too lond time for 2H decoupling, SOL ");psg_abort(1);} /* INITIALIZE VARIABLES */ if(FIRST_FID) /* call Pbox */ { getstr("CA180_in_str",CA180_in_str); getstr("CA180n_in_str",CA180n_in_str); getstr("CA90_in_str",CA90_in_str); getstr("CO180offCA_in_str",CO180offCA_in_str); strcpy(RFpars, "-stepsize 0.5 -attn i"); CA180 = pbox("et_CA180_auto", CA180_in_str, RFpars, dfrq, compC*pwC, pwClvl); CA180n = pbox("et_CA180n_auto", CA180n_in_str, RFpars, dfrq, compC*pwC, pwClvl); CA90 = pbox("et_CA90_auto", CA90_in_str, RFpars, dfrq, compC*pwC, pwClvl); CO180offCA = pbox("et_CO180offCA_auto", CO180offCA_in_str, RFpars, dfrq, compC*pwC, pwClvl); }; /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ /* t1 , N15 */ if (phase1 == 2) {tsadd(t2 ,1,4);} if(d2_index % 2) {tsadd(t2,2,4); tsadd(t31,2,4); } /* setting up semi-CT on t1 (ni) dimension */ tau1 = d2; t1max=(ni-1.0)/sw1; if((f1180[A] == 'y') && (ni > 0.0)) {tau1 += 0.5/sw1 ; t1max+= 0.5/sw1; } if( t1max < timeTN1*2.0) {t1max=2.0*timeTN1;}; /* if not enough ni increments, then just regular CT in t1/ni CN */ /* t2, CA */ if (phase2 == 2) { tsadd(t3,1,4); } if (d3_index % 2) { tsadd(t3,2,4); tsadd(t31,2,4); } /* setup constant time in t2 (ni2) */ tau2 = d3; t2max=2.0*(timeCN - CO180offCA.pw); if((f2180[A] == 'y') && (ni2 > 0.0)) {tau2 += 0.5/sw2 ; t2max += 0.5/sw2 ;} if(tau2 < 0.2e-6) {tau2 = 0.0;} if ( (ni2-1.0)/sw2 > t2max) { text_error("too many ni2 increments in t2 ! "); psg_abort(1); } if(FIRST_FID) { printf("t1max is %f\n",t1max); printf("t2max is %f\n",t2max); }; /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); txphase(zero); decphase(zero); dec2phase(zero); delay(d1); zgradpulse(gzlvl2, gt2); delay(gstab*3.0); if (exp_mode[B]=='n') dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); /* test for steady-state 15N */ /* Hz -> HzXz INEPT */ rgpulse(pw,zero,rof1,rof1); /* 1H pulse excitation */ zgradpulse(gzlvl0, gt0); delay(tauNH -gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tauNH - gt0 -gstab); zgradpulse(gzlvl0, gt0); delay(gstab); rgpulse(pw, t6, rof1, rof1); /* on HzNz now */ /* water flipback*/ obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc",pwHs,zero,rof1,rof1); obspower(tpwr); obspwrf(4095.0); /* purge */ zgradpulse(gzlvl3, gt3); dec2phase(t2); delay(gstab*2.0); /* HzNz -> NzCAz +t1 evolution*/ dec2rgpulse(pwN, t2, 0.0, 0.0); /* double-trosy hNcaNH */ delay(tauNH1 -pwHs-4.0*rof1 -pw -2.0*POWER_DELAY -WFG_STOP_DELAY-WFG_START_DELAY); obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc",pwHs,two,rof1,rof1); obspower(tpwr); obspwrf(4095.0); rgpulse(pw, zero, rof1, rof1); rgpulse(pw, t7, rof1, rof1); obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc",pwHs,t8,rof1,rof1); obspower(tpwr); obspwrf(4095.0); dec_c13_shpulse(CO180offCA,zero); delay(tau1*0.5); dec_c13_shpulse(CO180offCA,zero); dec2phase(zero); delay( timeTN1 -tauNH1 -pwHs -4.0*rof1 -pw -2.0*POWER_DELAY -WFG_STOP_DELAY -WFG_START_DELAY -CA180.pw -2.0*CO180offCA.pw -3.0*(2.0*POWER_DELAY +WFG_STOP_DELAY +WFG_START_DELAY)); dec_c13_shpulse(CA180,zero); delay(tau1*0.5 -timeTN1*tau1/t1max); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay( timeTN1 -tau1*timeTN1/t1max); dec2rgpulse(pwN, zero, 0.0, 0.0); /* on CAzNz now */ /* purge */ zgradpulse(gzlvl7, gt7); delay(gstab); if(dm3[B] == 'y') { dec3unblank(); if(1.0/dmf3>900.0e-6) { dec3power(dpwr3+6.0); dec3rgpulse(0.5/dmf3, one, 1.0e-6, 0.0e-6); dec3power(dpwr3); } else dec3rgpulse(1.0/dmf3, one, 1.0e-6,0.0e-6); dec3phase(zero); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } /* dec_c13_shpulse(CA90,t3);*/ /* t2 time, CA evolution */ decrgpulse(pwC,t3,0.0,0.0); decphase(zero); delay(0.5*(timeCN+tau2*0.5-CO180offCA.pw) ); dec_c13_shpulse(CO180offCA,zero); delay(0.5*(timeCN+tau2*0.5-CO180offCA.pw) -pwN*2.0 + WFG_STOP_DELAY); if (exp_mode[A]=='R') /* test CA.N relaxation rate */ { delay(2.0*pwN); } else dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); dec_c13_shpulse(CA180n,zero); delay(0.5*(timeCN-tau2*0.5-CO180offCA.pw) ); dec_c13_shpulse(CO180offCA,zero); delay(0.5*(timeCN-tau2*0.5-CO180offCA.pw) + WFG_START_DELAY); /*dec_c13_shpulse(CA90,zero);*/ decrgpulse(pwC,zero,0.0,0.0); if(dm3[B] == 'y') { setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); if(1.0/dmf3>900.0e-6) { dec3power(dpwr3+6.0); dec3rgpulse(0.5/dmf3, three, 1.0e-6, 0.0e-6); dec3power(dpwr3); } else dec3rgpulse(1.0/dmf3, three, 1.0e-6, 0.0e-6); dec3blank(); delay(PRG_START_DELAY); } zgradpulse(gzlvl5, gt5); dec2phase(t4); delay(gstab); /* CaN->N + back to NH */ dec2rgpulse(pwN, t4, 0.0, 0.0); dec2phase(zero); delay(timeTN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); dec_c13_shpulse(CA180,zero); delay(timeTN - CA180.pw -gt4-gstab -pwHs-3.0*rof1 -4.0*POWER_DELAY -2.0*WFG_STOP_DELAY-2.0*WFG_START_DELAY -2.0*GRADIENT_DELAY +4.0*pwN/3.1415-pw); zgradpulse(gzlvl4, gt4); delay(gstab); /*Water flipback (flipdown actually ) */ obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc",pwHs,three,rof1,rof1); obspower(tpwr); obspwrf(4095.0); /* reverse double INEPT */ /* 90 */ rgpulse(pw, t21, rof1, rof1); zgradpulse(gzlvl11, gt1); delay(tauNH -gt1 -rof1 -CA180.pw -2.0*POWER_DELAY - WFG_STOP_DELAY- WFG_START_DELAY ); dec_c13_shpulse(CA180,zero); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tauNH - gt1 -gstab); zgradpulse(gzlvl11, gt1); delay(gstab); /* 90 */ sim3pulse(pw, 0.0, pwN, one, zero, zero, 0.0, 0.0); zgradpulse(gzlvl1, gt1); delay(tauNH -gt1); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tauNH -POWER_DELAY -gt1- gstab); zgradpulse(gzlvl1, gt1); dec2phase(t22); delay(gstab); sim3pulse(0.0,0.0, pwN, one, zero, t22, 0.0, 0.0); zgradpulse(-(1.0-g6bal)*gzlvl6*icosel, gt6); /* 2.0*GRADIENT_DELAY */ delay( gstab -pwN*0.5 +pw*(2.0/3.1415-0.5) ); rgpulse(2.0*pw, zero, rof1, rof1); dec2power(dpwr2); decpower(dpwr); zgradpulse(g6bal*gzlvl6*icosel, gt6); /* 2.0*GRADIENT_DELAY */ delay(gstab +2.0*POWER_DELAY ); status(C); setreceiver(t31); }
pulsesequence() { /* DECLARE VARIABLES */ char autocal[MAXSTR], /* auto-calibration flag */ fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ ddseq[MAXSTR], /* deuterium decoupling sequence */ shp_sl[MAXSTR], shcreb[MAXSTR], /* reburp shape for center of t1 period */ shcgcob[MAXSTR], /* g3 inversion at 154 ppm (350 us) */ shcgcoib[MAXSTR], /* g3 time inversion at 154 ppm (350 us) */ shca180[MAXSTR], /* Ca 180 [D/sq(3)] during 15N CT */ shco180[MAXSTR], /* Co 180 [D/sq(15)] during 15N CT */ sel_flg[MAXSTR], /* active/passive purging of undesired component */ fCT[MAXSTR], /* Flag for constant time C13 evolution */ fc180[MAXSTR], cal_sphase[MAXSTR], shared_CT[MAXSTR], nietl_flg[MAXSTR]; int phase, phase2, ni2, icosel, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JNH = 2.25 ms */ del1, /* time for C'-N to refocus set to 0.5*24.0 ms */ bigTN, /* nitrogen T period */ bigTC, /* carbon T period */ zeta, /* delay for transfer from ca to cb = 3.5 ms */ tsatpwr, /* low level 1H trans.power for presat */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ tauf, /* 1/2J NH value */ pw_sl, /* selective pulse on water */ phase_sl, /* phase on water */ tpwrsl, /* power for pw_sl */ at, d_cgcob, /* power level for g3 pulses at 154 ppm */ d_creb, /* power level for reburp 180 at center of t1 */ pwcgcob, /* g3 ~ 35o us 180 pulse */ pwcreb, /* reburp ~ 400us 180 pulse */ pwD, /* 2H 90 pulse, about 125 us */ pwDlvl, /* 2H 90 pulse, about 125 us */ pwca180, /* Ca 180 during N CT at d_ca180 */ pwco180, /* Co 180 during N CT at d_co180 */ d_ca180, d_co180, compC = getval("compC"), /* C-13 RF calibration parameters */ pwC = getval("pwC"), pwClvl = getval("pwClvl"), pwN, pwNlvl, sphase, pw_sl1, tpwrsl1, gstab, gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gt9, gt11, gt13, gt14, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9, gzlvl11, gzlvl13, gzlvl14; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("autocal",autocal); getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("ddseq",ddseq); getstr("shp_sl",shp_sl); getstr("sel_flg",sel_flg); getstr("fCT",fCT); getstr("fc180",fc180); getstr("cal_sphase",cal_sphase); getstr("shared_CT",shared_CT); getstr("nietl_flg",nietl_flg); taua = getval("taua"); del1 = getval("del1"); bigTN = getval("bigTN"); bigTC = getval("bigTC"); zeta = getval("zeta"); pwN = getval("pwN"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dpwr = getval("dpwr"); pwNlvl = getval("pwNlvl"); pwD = getval("pwD"); pwDlvl = getval("pwDlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni2 = getval("ni2"); tauf = getval("tauf"); pw_sl = getval("pw_sl"); phase_sl = getval("phase_sl"); tpwrsl = getval("tpwrsl"); at = getval("at"); sphase = getval("sphase"); pw_sl1 = getval("pw_sl1"); tpwrsl1 = getval("tpwrsl1"); gstab = getval("gstab"); gt1 = getval("gt1"); if (getval("gt2") > 0) gt2=getval("gt2"); else gt2=gt1*0.1; gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); gt11 = getval("gt11"); gt13 = getval("gt13"); gt14 = getval("gt14"); 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"); gzlvl11 = getval("gzlvl11"); gzlvl13 = getval("gzlvl13"); gzlvl14 = getval("gzlvl14"); if(autocal[0]=='n') { getstr("shcgcob",shcgcob); getstr("shcgcoib",shcgcoib); getstr("shcreb",shcreb); getstr("shca180",shca180); getstr("shco180",shco180); d_ca180 = getval("d_ca180"); d_co180 = getval("d_co180"); d_cgcob = getval("d_cgcob"); d_creb = getval("d_creb"); pwca180 = getval("pwca180"); pwco180 = getval("pwco180"); pwcgcob = getval("pwcgcob"); pwcreb = getval("pwcreb"); } else { strcpy(shcgcob,"Pg3_107p"); strcpy(shcgcoib,"Pg3i_107p"); strcpy(shcreb,"Preb_on"); strcpy(shca180,"Phard_15p"); strcpy(shco180,"Phard_133p"); if (FIRST_FID) { cgcob = pbox(shcgcob, G3CGCOB, CAB180ps, dfrq, compC*pwC, pwClvl); cgcoib = pbox(shcgcoib, G3CGCOBi, CAB180ps, dfrq, compC*pwC, pwClvl); creb = pbox(shcreb, CREB180, CAB180ps, dfrq, compC*pwC, pwClvl); ca180 = pbox(shca180, CA180, CA180ps, dfrq, compC*pwC, pwClvl); co180 = pbox(shco180, CO180, CA180ps, dfrq, compC*pwC, pwClvl); } d_ca180 = ca180.pwr; d_co180 = co180.pwr; d_cgcob = cgcob.pwr; d_creb = creb.pwr; pwca180 = ca180.pw; pwco180 = co180.pw; pwcgcob = cgcob.pw; pwcreb = creb.pw; } /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,8,phi3); settable(t4,1,phi4); settable(t5,16,phi5); settable(t6,8,phi6); settable(t7,1,phi7); settable(t8,16,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if(shared_CT[A] == 'n') if(bigTN - 0.5*(ni2 -1)/sw2 - POWER_DELAY < 0.2e-6) { text_error(" ni2 is too big\n"); text_error(" please set ni2 smaller or equal to %d\n", (int) ((bigTN -POWER_DELAY)*sw2*2.0) +1 ); psg_abort(1); } if(fCT[A] == 'y') if(bigTC - 0.5*(ni-1)/sw1 - WFG_STOP_DELAY - gt14 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 < 0.2e-6) { text_error("ni is too big\n"); text_error(" please set ni smaller or equal to %d\n", (int) ((bigTC - WFG_STOP_DELAY - gt14 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6)*sw1*2.0) +1 ); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y')) { text_error("incorrect dec1 decoupler flags! "); 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( tsatpwr > 6 ) { text_error("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 46 ) { text_error("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 47 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pwClvl > 63 ) { text_error("don't fry the probe, pwClvl too large! "); psg_abort(1); } if( pwNlvl > 63 ) { text_error("don't fry the probe, pwNlvl too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { text_error("dont fry the probe, pwC too high ! "); psg_abort(1); } if( f1180[A] != 'n' && f2180[A] != 'n' ) { text_error("flags may be set wrong: set f1180=n and f2180=n for 3d\n"); psg_abort(1); } if(d_ca180 > 58) { text_error("dont fry the probe, d_ca180 too high ! "); psg_abort(1); } if(d_co180 > 58) { text_error("dont fry the probe, d_ca180 too high ! "); psg_abort(1); } if( gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 || gt7 > 15e-3 || gt8 > 15e-3 || gt9 > 15e-3 || gt11 > 15e-3 || gt13 > 15e-3 || gt14 > 15e-3) { text_error("gti values must be < 15e-3\n"); psg_abort(1); } if(tpwrsl > 25) { text_error("tpwrsl must be less than 25\n"); psg_abort(1); } if(tpwrsl1 > 25) { text_error("tpwrsl1 must be less than 25\n"); psg_abort(1); } if( dpwr3 > 50) { text_error("dpwr3 too high\n"); psg_abort(1); } if( del1 > 0.1 ) { text_error("too long del1\n"); psg_abort(1); } if( zeta > 0.1 ) { text_error("too long zeta\n"); psg_abort(1); } if( bigTN > 0.1) { text_error("too long bigTN\n"); psg_abort(1); } if( bigTC > 0.1) { text_error("too long bigTC\n"); psg_abort(1); } if( pw_sl > 10e-3) { text_error("too long pw_sl\n"); psg_abort(1); } if( pw_sl1 > 10e-3) { text_error("too long pw_sl1\n"); psg_abort(1); } if( at > 0.1 && dm2[D] == 'y') { text_error("too long at with dec2\n"); psg_abort(1); } if(pwDlvl > 59) { text_error("pwDlvl is too high; <= 59\n"); psg_abort(1); } if(d_creb > 62) { text_error("d_creb is too high; <= 62\n"); psg_abort(1); } if(d_cgcob > 60) { text_error("d_cgcob is too high; <=60\n"); psg_abort(1); } if(cal_sphase[A] == 'y') { text_error("Use only to calibrate sphase\n"); text_error("Set zeta to 600 us, gt11=gt13=0, fCT=y, fc180=n\n"); } if(nietl_flg[A] == 'y' && sel_flg[A] == 'y') { text_error("Both nietl_flg and sel_flg cannot by y\n"); psg_abort(1); } if (fCT[A] == 'n' && fc180[A] =='y' && ni > 1.0) { text_error("must set fc180='n' to allow Calfa/Cbeta evolution (ni>1)\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ /* changed from 1 to 3; spect. rev. not needed */ if (phase == 2) { tsadd(t2,3,4); tsadd(t3,3,4); } if (shared_CT[A] == 'n') { if (phase2 == 2) { tsadd(t7,2,4); icosel = 1; } else icosel = -1; } else { if (phase2 == 2) { tsadd(t7,2,4); icosel = -1; } else icosel = 1; } if (nietl_flg[A] == 'y') icosel = -1*icosel; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t2,2,4); tsadd(t8,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(t8,2,4); } /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y' && fCT[A] == 'y') tau1 += ( 1.0 / (2.0*sw1) ); if(f1180[A] == 'y' && fCT[A] == 'n') tau1 += (1.0 / (2.0*sw1) - 4.0/PI*pwC - POWER_DELAY - 4.0e-6); if(f1180[A] == 'n' && fCT[A] == 'n') tau1 = (tau1 - 4.0/PI*pwC - POWER_DELAY - 4.0e-6); if(tau1 < 0.2e-6) tau1 = 4.0e-7; tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.2e-6; } tau2 = tau2/2.0; /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power to high power */ dec2power(pwNlvl); /* Set Dec2 power for 15N hard pulses */ dec3power(pwDlvl); /* Set Dec3 for 2H hard pulses */ /* Presaturation Period */ if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,0.0,2.0e-6); obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if (fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); lk_hold(); delay(20.0e-6); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(0.2e-6); zgradpulse(gzlvl5,gt5); delay(2.0e-6); delay(taua - gt5 - 2.2e-6); /* taua <= 1/4JNH */ sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); dec2phase(t1); decphase(zero); delay(taua - gt5 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl5,gt5); delay(200.0e-6); if (sel_flg[A] == 'y') { rgpulse(pw,one,4.0e-6,0.0); initval(1.0,v2); obsstepsize(phase_sl); xmtrphase(v2); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shp_sl,pw_sl,two,2.0e-6,0.0); xmtrphase(zero); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ initval(1.0,v6); dec2stepsize(45.0); dcplr2phase(v6); delay(0.2e-6); zgradpulse(gzlvl3,gt3); delay(200.0e-6); dec2rgpulse(pwN,t1,0.0,0.0); dcplr2phase(zero); delay(1.34e-3 - SAPS_DELAY); rgpulse(pw,zero,0.0,0.0); rgpulse(2.0*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); decpower(d_ca180); dec2phase(zero); delay(del1 - 1.34e-3 - 4.0*pw - 4.0e-6 - POWER_DELAY + WFG_START_DELAY + pwca180 + WFG_STOP_DELAY); } else { rgpulse(pw,three,4.0e-6,0.0); initval(1.0,v2); obsstepsize(phase_sl); xmtrphase(v2); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shp_sl,pw_sl,zero,2.0e-6,0.0); xmtrphase(zero); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ delay(0.2e-6); zgradpulse(gzlvl3,gt3); delay(200.0e-6); dec2rgpulse(pwN,t1,0.0,0.0); dec2phase(zero); decpower(d_ca180); delay(del1 - POWER_DELAY + WFG_START_DELAY + pwca180 + WFG_STOP_DELAY); } decphase(zero); dec2rgpulse(2*pwN,zero,0.0,0.0); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dec2phase(one); delay(del1); dec2rgpulse(pwN,one,0.0,0.0); decpower(pwClvl); decphase(t2); delay(0.2e-6); zgradpulse(gzlvl4,gt4); delay(200.0e-6); dec2phase(t5); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ decrgpulse(pwC,t2,0.0,0.0); delay(zeta - PRG_STOP_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6 - pwD - gt11 - 102.0e-6 - POWER_DELAY - WFG_START_DELAY); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3phase(three); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ decphase(zero); delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(100.0e-6); if (cal_sphase[A] == 'y') { decpower(pwClvl); decshaped_pulse("hard",2.0*pwC,zero,4.0e-6,4.0e-6); } else { initval(1.0,v3); decstepsize(sphase); dcplrphase(v3); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,4.0e-6); dcplrphase(zero); } delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(100.0e-6); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ delay(zeta - WFG_STOP_DELAY - gt11 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6); decpower(pwClvl); decrgpulse(pwC,t3,4.0e-6,0.0); if (fCT[A] == 'y') { delay(tau1); decpower(d_cgcob); decshaped_pulse(shcgcob,pwcgcob,zero,4.0e-6,0.0); delay(bigTC - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - 102.0e-6 - gt14 - PRG_STOP_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - WFG_START_DELAY); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3phase(three); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ delay(2.0e-6); zgradpulse(gzlvl14,gt14); delay(100.0e-6); initval(1.0,v4); decstepsize(sphase); dcplrphase(v4); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,4.0e-6); dcplrphase(zero); delay(2.0e-6); zgradpulse(gzlvl14,gt14); delay(100.0e-6); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ delay(bigTC - tau1 - WFG_STOP_DELAY - gt14 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decpower(d_cgcob); decshaped_pulse(shcgcoib,pwcgcob,zero,4.0e-6,0.0); decphase(t4); } else if(fCT[A] == 'n' && fc180[A] == 'n') { delay(tau1); delay(tau1); } else if(fCT[A] == 'n' && fc180[A] == 'y') { initval(1.0,v4); decstepsize(sphase); dcplrphase(v4); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,0.0); dcplrphase(zero); } decpower(pwClvl); decrgpulse(pwC,t4,4.0e-6,0.0); delay(zeta - POWER_DELAY - 4.0e-6 - pwD - PRG_STOP_DELAY - DELAY_BLANK - gt13 - 102.0e-6 - POWER_DELAY - WFG_START_DELAY); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ delay(2.0e-6); zgradpulse(gzlvl13,gt13); delay(100.0e-6); if (cal_sphase[A] == 'y') { decpower(pwClvl); decshaped_pulse("hard",2.0*pwC,zero,4.0e-6,4.0e-6); } else { initval(1.0,v5); decstepsize(sphase); dcplrphase(v5); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,4.0e-6); dcplrphase(zero); } delay(2.0e-6); zgradpulse(gzlvl13,gt13); delay(100.0e-6); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ delay(zeta - WFG_STOP_DELAY - gt13 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6); decpower(pwClvl); decrgpulse(pwC,zero,4.0e-6,0.0); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3phase(three); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ delay(0.2e-6); zgradpulse(gzlvl9,gt9); delay(200.0e-6); if (shared_CT[A] == 'n') { dec2rgpulse(pwN,t5,2.0e-6,0.0); decpower(d_ca180); dec2phase(t6); delay(bigTN - tau2 - POWER_DELAY); dec2rgpulse(2*pwN,t6,0.0,0.0); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dec2phase(t7); delay(bigTN - WFG_START_DELAY - pwca180 - WFG_STOP_DELAY - gt1 - 2.0*GRADIENT_DELAY - 500.2e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY - pwco180 - WFG_STOP_DELAY); delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(500.0e-6); decpower(d_co180); decshaped_pulse(shco180,pwco180,zero,4.0e-6,0.0); delay(tau2); sim3pulse(pw,0.0,pwN,zero,zero,t7,0.0,0.0); } else if (shared_CT[A] == 'y') { dec2rgpulse(pwN,t5,2.0e-6,0.0); decpower(d_co180); dec2phase(t6); if (bigTN - tau2 >= 0.2e-6) { delay(tau2); decshaped_pulse(shco180,pwco180,zero,4.0e-6,0.0); decpower(d_ca180); delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(500.0e-6); delay(bigTN - 4.0e-6 - WFG_START_DELAY - pwco180 - WFG_STOP_DELAY - POWER_DELAY - gt1 - 500.2e-6 - 2.0*GRADIENT_DELAY - WFG_START_DELAY - pwca180 - WFG_STOP_DELAY); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dec2rgpulse(2*pwN,t6,0.0,0.0); delay(bigTN - tau2); } else { delay(tau2); decshaped_pulse(shco180,pwco180,zero,4.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(500.0e-6); decpower(d_ca180); delay(bigTN - 4.0e-6 - WFG_START_DELAY - pwco180 - WFG_STOP_DELAY - gt1 - 500.2e-6 - 2.0*GRADIENT_DELAY - POWER_DELAY - WFG_START_DELAY - pwca180 - WFG_STOP_DELAY); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); delay(tau2 - bigTN); dec2rgpulse(2.0*pwN,t6,0.0,0.0); } sim3pulse(pw,0.0,pwN,zero,zero,t7,0.0,0.0); } /* end of shared_CT */ if (nietl_flg[A] == 'n') { decpower(pwClvl); decrgpulse(pwC,zero,4.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(2.0e-6); dec2phase(zero); delay(tauf - POWER_DELAY - 4.0e-6 - pwC - gt6 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); dec2phase(one); delay(tauf - gt6 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(200.0e-6); sim3pulse(pw,0.0,pwN,one,zero,one,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(tauf - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); delay(tauf - gt7 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(200.0e-6); sim3pulse(pw,0.0e-6,pwN,zero,zero,zero,0.0,0.0); } else { /* nietl_flg == y */ /* shaped pulse */ obspower(tpwrsl1); shaped_pulse(shp_sl,pw_sl1,zero,2.0e-6,0.0); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ decpower(pwClvl); decrgpulse(pwC,zero,4.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(2.0e-6); dec2phase(zero); delay(tauf - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pw_sl1 - WFG_STOP_DELAY - 2.0e-6 - POWER_DELAY - POWER_DELAY - 4.0e-6 - pwC - gt6 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); dec2phase(zero); delay(tauf - gt6 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(200.0e-6); sim3pulse(pw,0.0,pwN,one,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(tauf - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); dec2phase(one); delay(tauf - gt7 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(200.0e-6); sim3pulse(pw,0.0e-6,pwN,one,zero,one,0.0,0.0); txphase(zero); } /* end of nietl_flg == y */ delay(gt2 +gstab -0.5*(pwN-pw) -2.0*pw/PI); rgpulse(2*pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(icosel*gzlvl2,gt2); decpower(dpwr); /* NO 13C decoupling */ dec2power(dpwr2); /* NO 15N decoupling */ delay(gstab -2.0e-6 -2.0*GRADIENT_DELAY -2.0*POWER_DELAY); lk_sample(); /* BEGIN ACQUISITION */ status(C); setreceiver(t8); }