pulsesequence() { double slpwrR = getval("slpwrR"), slpwR = getval("slpwR"), mixR = getval("mixR"), gzlvlz = getval("gzlvlz"), gtz = getval("gtz"), zfphinc = getval("zfphinc"); char slpatR[MAXSTR]; int phase1 = (int)(getval("phase")+0.5); /* LOAD AND INITIALIZE PARAMETERS */ getstr("slpatR",slpatR); if (strcmp(slpatR,"cw") && strcmp(slpatR,"troesy") && strcmp(slpatR,"dante")) abort_message("SpinLock pattern %s not supported!.\n", slpatR); sub(ct,ssctr,v7); settable(t1,4,ph1); getelem(t1,v7,v1); settable(t2,8,ph2); getelem(t2,v7,v2); settable(t3,8,ph3); settable(t8,4,ph8); getelem(t8,v7,v8); settable(t6,8,ph6); getelem(t6,v7,v6); assign(v1,oph); if (getflag("zfilt")) getelem(t3,v7,oph); add(v2,one,v3); add(v2,two,v4); add(v2,three,v5); if (phase1 == 2) {incr(v1); incr(v6);} /* hypercomplex method */ /* mod2(id2,v13); dbl(v13,v13); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v13); add(v1,v13,v1); add(v6,v13,v6); add(oph,v13,oph); /* The following is for flipback pulse */ zfphinc=zfphinc+180; if (zfphinc < 0) zfphinc=zfphinc+360; initval(zfphinc,v10); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v6,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); decpower(dpwr); status(B); rgpulse(pw, v1, rof1, rof1); if (d2 > 0.0) delay(d2 - POWER_DELAY - (2*pw/PI) - rof1); else delay(d2); obspower(slpwrR); if (mixR > 0.0) { if (dps_flag) { if (!strcmp(slpatR,"troesy")) rgpulse(mixR,v2,0.0,0.0); else rgpulse(mixR,v3,0.0,0.0); } else SpinLock(slpatR,mixR,slpwR,v2,v3,v4,v5, v9); } if ((getflag("zfilt")) && (getflag("PFGflg"))) { obspower(tpwr); rgpulse(pw,v2,1.0e-6,rof1); zgradpulse(gzlvlz,gtz); delay(gtz/3); if (getflag("flipback")) FBpulse(v8,v10); rgpulse(pw,v8,rof1,rof2); } else delay(rof2); status(C); }
pulsesequence() { /* DECLARE VARIABLES */ char autocal[MAXSTR], /* auto-calibration flag */ fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mess_flg[MAXSTR], /* water purging */ ar180a[MAXSTR], /* waveform shape for aromatic 180 pulse with C transmitter at dof */ cb180b[MAXSTR], /* waveform shape for aliphatic 180 pulse with C transmitter at dofar */ ar180b[MAXSTR]; /* waveform shape for aromatic 180 pulse with C transmitter at dofar */ int phase, ni, t1_counter; /* used for states tppi in t1 */ double tau1, /* t1 delay */ taua, /* ~ 1/4JCbHb = 1.7 ms */ taub, /* ~ 1/4JCgCd = 2.7 ms */ tauc, /* ~ 1/4JCgCd = 2.1 ms */ taud, /* ~ 1/4JCdHd = 1.5 ms */ taue, /* = 1/4JCbHb = 1.8 ms */ tauf, /* 2(tauc-tauf) ~ 1/2JCdHd = 3.1 ms */ TCb, /* carbon constant time period for recording the Cb chemical shifts */ dly_pg1, /* delay for water purging */ pwar180a, /* 180 aro pulse at d_ar180a and dof */ pwcb180b, /* 180 cb pulse at d_cb180b and dofar */ pwC, /* 90 c pulse at pwClvl */ pwsel90, /* 90 c pulse at d_sel90 */ pwar180b, /* 180 c pulse at d_ar180b */ compC, /* C-13 RF calibration parameters */ compH, d_ar180a, d_cb180b, d_sel90, d_ar180b, dofar, tsatpwr, /* low level 1H trans.power for presat */ tpwrmess, /* power level for water purging */ tpwrml, /* power level for 1H decoupling */ pwmlev, /* 90 pulse at tpwrml */ pwClvl, /* power level for high power 13C pulses on dec1 */ sw1, /* sweep width in f1 */ at, gp11, /* gap between 90-90 for selective 180 of Cb */ fab, /* chemical shift difference of Ca-Cb (Hz) */ gt0, gt1, gt2, gt3, gt4, gt5, gt6, gt7, gstab, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("autocal",autocal); getstr("fsat",fsat); getstr("f1180",f1180); getstr("fscuba",fscuba); getstr("mess_flg",mess_flg); taua = getval("taua"); taub = getval("taub"); tauc = getval("tauc"); taud = getval("taud"); taue = getval("taue"); tauf = getval("tauf"); TCb = getval("TCb"); pwC = getval("pwC"); dofar = getval("dofar"); dly_pg1 = getval("dly_pg1"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); tpwrmess = getval("tpwrmess"); tpwrml = getval("tpwrml"); pwClvl = getval("pwClvl"); dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); sw1 = getval("sw1"); ni = getval("ni"); at = getval("at"); fab = getval("fab"); if(autocal[0]=='n') { getstr("ar180a",ar180a); getstr("ar180b",ar180b); getstr("cb180b",cb180b); pwar180a = getval("pwar180a"); pwar180b = getval("pwar180b"); pwcb180b = getval("pwcb180b"); pwsel90 = getval("pwsel90"); d_ar180a = getval("d_ar180a"); d_cb180b = getval("d_cb180b"); d_ar180b = getval("d_ar180b"); d_sel90 = getval("d_sel90"); pwmlev = getval("pwmlev"); } else { strcpy(ar180a,"Pg3_off_cb180a"); strcpy(ar180b,"Pg3_off_cb180b"); strcpy(cb180b,"Pg3_on"); if (FIRST_FID) { compC = getval("compC"); compH = getval("compH"); sel90 = pbox("cal", SEL90, "", dfrq, compC*pwC, pwClvl); ar_180a = pbox(ar180a, AR180a, CB180ps, dfrq, compC*pwC, pwClvl); ar_180b = pbox(ar180b, AR180b, CB180ps, dfrq, compC*pwC, pwClvl); cb_180b = pbox(cb180b, CB180b, CB180ps, dfrq, compC*pwC, pwClvl); w16 = pbox_dec("cal", "WALTZ16", tpwrml, sfrq, compH*pw, tpwr); } pwsel90 = sel90.pw; d_sel90 = sel90.pwr; pwar180a = ar_180a.pw; d_ar180a = ar_180a.pwr; pwar180b = ar_180b.pw; d_ar180b = ar_180b.pwr; pwcb180b = cb_180b.pw; d_cb180b = cb_180b.pwr; pwmlev = 1.0/w16.dmf; } gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gstab = getval("gstab"); 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"); /* LOAD PHASE TABLE */ settable(t1,1,phi1); settable(t2,1,phi2); settable(t3,4,phi3); settable(t4,8,phi4); settable(t5,1,phi5); settable(t6,8,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( 0.5*ni*1/(sw1) > TCb - 2*POWER_DELAY - WFG_START_DELAY - pwar180a - WFG_STOP_DELAY) { printf(" ni 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! "); psg_abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); psg_abort(1); } if( tpwrml > 53 ) { printf("tpwrml too large !!! "); psg_abort(1); } if( tpwrmess > 56 ) { printf("tpwrmess too large !!! "); 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); } if( pwClvl > 63 ) { printf("don't fry the probe, DHPWR too large! "); psg_abort(1); } if( pw > 20.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwcb180b > 500.0e-6 ) { printf("dont fry the probe, pwcb180b too high ! "); psg_abort(1); } if( pwar180a > 500.0e-6 ) { printf("dont fry the probe, pwar180a too high ! "); psg_abort(1); } if (pwar180b > 500.0e-6) { printf("dont fry the probe, pwar180b too long !"); psg_abort(1); } if (pwsel90 > 100.0e-6) { printf("dont fry the probe, pwsel90 too long !"); psg_abort(1); } if(d_ar180a > 60) { printf("dont fry the probe, d_ar180a too high !"); psg_abort(1); } if(d_cb180b > 60) { printf("dont fry the probe, d_cb180b too high !"); psg_abort(1); } if (d_ar180b > 60) { printf("dont fry the probe, d_ar180b too high ! "); psg_abort(1); } if (d_sel90 > 50) { printf("dont fry the probe, d_sel90 too high ! "); psg_abort(1); } if( gt0 > 15e-3 || gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 || gt7 > 15e-3) { printf("gradients on for too long. Must be < 15e-3 \n"); psg_abort(1); } if( fabs(gzlvl0) > 30000 || fabs(gzlvl1) > 30000 || fabs(gzlvl2) > 30000 ||fabs(gzlvl3) > 30000 || fabs(gzlvl4) > 30000 || fabs(gzlvl5) > 30000 ||fabs(gzlvl6) > 30000 || fabs(gzlvl7) > 30000) { printf("too strong gradient"); psg_abort(1); } if( 2*TCb - taue > 0.1 ) { printf("dont fry the probe, too long TCb"); psg_abort(1); } if( at > 0.1 && (dm[C]=='y' || dm2[C]=='y')) { printf("dont fry the probe, too long at with decoupling"); psg_abort(1); } if( pwC > 30.0e-6) { printf("dont fry the probe, too long pwC"); psg_abort(1); } if( dly_pg1 > 10.0e-3) { printf("dont fry the probe, too long dly_pg1"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) tsadd(t2,1,4); /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t2,2,4); tsadd(t6,2,4); } /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); } tau1 = tau1/2.0; /* 90-90 pulse for selective 180 of Cb but not Ca */ gp11 = 1/(2*fab) - 4/PI*pwsel90; if (gp11 < 0.0) { printf("gap of 90-90 negative, check fab and pwsel90"); psg_abort(1); } /* BEGIN ACTUAL PULSE SEQUENCE */ /* Receiver off time */ status(A); decoffset(dof); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(dpwr2); /* Set Dec2 power for 15N decoupling */ /* Presaturation Period */ if(mess_flg[A] == 'y') { obspower(tpwrmess); rgpulse(dly_pg1,zero,20.0e-6,20.0e-6); rgpulse(dly_pg1/1.62,one,20.0e-6,20.0e-6); obspower(tsatpwr); } if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,20.0e-6,20.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); decphase(zero); delay(1.0e-5); /* Begin Pulses */ rcvroff(); delay(10.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(gzlvl0,gt0); delay(gstab); /* this is the real start */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(2.0e-6); delay(taua - gt1 - 4.0e-6); /* taua <= 1/4JCH */ simpulse(2*pw,2*pwC,zero,zero,0.0,0.0); txphase(t1); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(2.0e-6); delay(taua - gt1 - 4.0e-6); rgpulse(pw,t1,0.0,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(gstab); decphase(t2); decpower(d_sel90); decrgpulse(pwsel90,t2,2.0e-6,0.0); decphase(zero); decpower(d_ar180a); decshaped_pulse(ar180a,pwar180a,zero,2.0e-6,0.0); /* bs effect */ delay(taue - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwar180a - WFG_STOP_DELAY - POWER_DELAY - PRG_START_DELAY); /* H decoupling on */ obspower(tpwrml); obsprgon("waltz16",pwmlev,90.0); xmtron(); /* TURN ME OFF DONT FORGET */ /* Hldecoupling on */ delay(TCb + tau1 - taue - POWER_DELAY - 2.0e-6); decphase(t3); decpower(d_sel90); decrgpulse(pwsel90,t3,2.0e-6,0.0); delay(gp11); decrgpulse(pwsel90,t3,0.0,0.0); decphase(zero); decpower(d_ar180a); decshaped_pulse(ar180a,pwar180a,zero,2.0e-6,0.0); delay(TCb - tau1 - POWER_DELAY - WFG_START_DELAY - 2.0e-6 - pwar180a - WFG_STOP_DELAY - POWER_DELAY - 2.0e-6); decphase(zero); decpower(d_sel90); decrgpulse(pwsel90,zero,2.0e-6,0.0); /* H decoupling off */ xmtroff(); obsprgoff(); obspower(tpwr); /* H decoupling off */ decoffset(dofar); delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); decphase(t4); decpower(d_sel90); decrgpulse(pwsel90,t4,2.0e-6,0.0); decphase(zero); decpower(d_cb180b); decshaped_pulse(cb180b,pwcb180b,zero,2.0e-6,0.0); /* B.S. */ delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(2.0e-6); delay(taub - POWER_DELAY - WFG_START_DELAY - 2.0e-6 - pwcb180b - WFG_STOP_DELAY - gt4 - 4.0e-6 - POWER_DELAY - WFG_START_DELAY - 2.0e-6); decphase(zero); decpower(d_ar180b); decshaped_pulse(ar180b,pwar180b,zero,2.0e-6,0.0); decpower(d_cb180b); decshaped_pulse(cb180b,pwcb180b,zero,2.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(2.0e-6); delay(taub - WFG_STOP_DELAY - POWER_DELAY - WFG_START_DELAY - 2.0e-6 - pwcb180b - WFG_STOP_DELAY - gt4 - 4.0e-6 - POWER_DELAY - 2.0e-6); decpower(d_sel90); decrgpulse(pwsel90,zero,2.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(100.0e-6); delay(tauc - POWER_DELAY - gt5 - 102.0e-6 - 2.0e-6); decphase(t5); decpower(pwClvl); decrgpulse(2*pwC,t5,2.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(100.0e-6); txphase(zero); delay(tauf - gt5 - 102.0e-6); rgpulse(2*pw,zero,0.0,0.0); delay(tauc - tauf - 2*pw - POWER_DELAY - 2.0e-6); decphase(zero); decpower(d_sel90); decrgpulse(pwsel90,zero,2.0e-6,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); delay(taud - gt7 - 4.0e-6 - POWER_DELAY - 2.0e-6); decphase(zero); decpower(pwClvl); simpulse(2*pw,2*pwC,zero,zero,2.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); delay(taud - gt7 - 4.0e-6 - 2*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* Set power for decoupling */ rgpulse(pw,zero,0.0,0.0); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(C); setreceiver(t6); }
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() { double gzlvl1, gt1, gzlvl3, gt3, gstab, pwx2lvl, pwx2, tau, gtau, hsglvl, hsgt; char nullflg[MAXSTR], sspul[MAXSTR]; int iphase, icosel; gzlvl1 = getval("gzlvl1"); gt1 = getval("gt1"); gzlvl3 = getval("gzlvl3"); gt3 = getval("gt3"); pwx2lvl = getval("pwx2lvl"); pwx2 = getval("pwx2"); hsglvl = getval("hsglvl"); hsgt = getval("hsgt"); gstab = getval("gstab"); getstr("nullflg",nullflg); getstr("sspul",sspul); iphase = (int)(getval("phase")+0.5); icosel = 1; tau = 1/(2*(getval("j1xh"))); gtau = 2*gstab + GRADIENT_DELAY; if (tau < (gt3+gstab)) { text_error("tau must be greater than gt3+gstab\n"); psg_abort(1); } settable(t1,2,ph1); settable(t2,4,ph2); settable(t3,4,ph3); assign(zero,v4); getelem(t1,ct,v1); getelem(t3,ct,oph); if (iphase == 2) icosel = -1; initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v10); add(v1,v10,v1); add(v4,v10,v4); add(oph,v10,oph); status(A); dec2power(pwx2lvl); if (sspul[0] == 'y') { zgradpulse(hsglvl,hsgt); rgpulse(pw,zero,rof1,rof1); zgradpulse(hsglvl,hsgt); } delay(d1); status(B); rcvroff(); if (nullflg[0] == 'y') { rgpulse(0.5*pw,zero,rof1,rof1); delay(tau); sim3pulse(2.0*pw,0.0,2.0*pwx2,zero,zero,zero,rof1,rof1); delay(tau); rgpulse(1.5*pw,two,rof1,rof1); zgradpulse(hsglvl,hsgt); delay(1e-3); } rgpulse(pw,zero,rof1,rof1); delay(tau - rof1 - (2*pw/PI)); dec2rgpulse(pwx2,v1,rof1,1.0e-6); delay(gt1+gtau - (2*pwx2/PI) - pwx2 - 1.0e-6 - rof1); dec2rgpulse(2*pwx2,v4,rof1,1.0e-6); delay(gstab - pwx2 - 1.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab - rof1 - pw); delay(d2/2); rgpulse(2.0*pw,zero,rof1,rof1); delay(d2/2); delay(gstab - rof1 - pw); zgradpulse(gzlvl1,gt1); delay(gstab - pwx2 - rof1); dec2rgpulse(2*pwx2,zero,rof1,1.0e-6); delay(gt1+gtau - (2*pwx2/PI) - pwx2 - 1.0e-6 - rof1); dec2rgpulse(pwx2,t2,rof1,rof1); delay(gstab - rof1); zgradpulse(icosel*gzlvl3,gt3); delay(tau - gt3 - gstab - GRADIENT_DELAY); dec2power(dpwr2); delay(rof2 - POWER_DELAY); rcvron(); status(C); }
pulsesequence() { char mixpat[MAXSTR], pshape[MAXSTR], httype[MAXSTR], sspul[MAXSTR]; double rg1 = 2.0e-6, mix = getval("mix"), /* mixing time */ mixpwr = getval("mixpwr"), /* mixing pwr */ compH = getval("compH"), gt0 = getval("gt0"), /* gradient pulse in sspul */ gt2 = getval("gt2"), /* gradient pulse preceding mixing */ gzlvl0 = getval("gzlvl0"), /* gradient level for gt0 */ gzlvl2 = getval("gzlvl2"), /* gradient level for gt2 */ gstab = getval("gstab"); /* delay for gradient recovery */ shape hdx; void setphases(); getstr("sspul", sspul); getstr("pshape", pshape); getstr("httype", httype); getstr("mixpat", mixpat); setlimit("mixpwr", mixpwr, 48.0); (void) setphases(); if (httype[0] == 'i') assign(zero,v2); /* MAKE PBOX SHAPES */ if (FIRST_FID) hhmix = pbox_mix("HHmix", mixpat, mixpwr, pw*compH, tpwr); /* HADAMARD stuff */ if(httype[0] == 'e') /* excitation */ hdx = pboxHT_F1e(pshape, pw*compH, tpwr); else if(httype[0] == 'r') /* refocusing */ hdx = pboxHT_F1r(pshape, pw*compH, tpwr); else if(httype[0] == 'd') /* DPFGSE */ { hdx = pboxHT_F1r(pshape, pw*compH, tpwr); if (FIRST_FID) ref180 = hdx; } else /* httype[0] == 'i' */ /* inversion */ hdx = pboxHT_F1i(pshape, pw*compH, tpwr); if (getval("htcal1") > 0.5) /* Optional fine power calibration */ hdx.pwr += getval("htpwr1"); /* THE PULSE PROGRAMM STARTS HERE */ status(A); delay(5.0e-5); zgradpulse(gzlvl0,gt0); if (sspul[A] == 'y') { rgpulse(pw,zero,rof1,rof1); zgradpulse(gzlvl0,gt0); } pre_sat(); if (getflag("wet")) wet4(zero,one); delay(1.0e-5); obspower(tpwr); delay(1.0e-5); status(B); if (httype[0] == 'i') /* longitudinal encoding */ { ifzero(v1); delay(2.0*(pw+rg1)); zgradpulse(gzlvl2,gt2); delay(gstab); elsenz(v1); rgpulse(2.0*pw,v3,rg1,rg1); zgradpulse(gzlvl2,gt2); delay(gstab); endif(v1); pbox_pulse(&hdx, zero, rg1, rg1); zgradpulse(gzlvl2,gt2); delay(gstab); } else /* transverse encoding */ { if (httype[0] == 'e') pbox_pulse(&hdx, oph, rg1, rg1); else { rgpulse(pw,oph,rg1,rg1); if (httype[0] == 'd') /* DPFGSE */ { zgradpulse(2.0*gzlvl2,gt2); delay(gstab); pbox_pulse(&ref180, oph, rg1, rg1); zgradpulse(2.0*gzlvl2,gt2); delay(gstab); } zgradpulse(gzlvl2,gt2); delay(gstab); pbox_pulse(&hdx, v2, rg1, rof2); zgradpulse(gzlvl2,gt2); delay(gstab - POWER_DELAY); } } if (mix) pbox_spinlock(&hhmix, mix, v2); if (httype[0] == 'i') { zgradpulse(0.87*gzlvl2,gt2); delay(gstab); obspower(tpwr); txphase(v3); rgpulse(pw,v3,rg1,rof2); } status(C); }
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 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 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 */ 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); }
void pulsesequence() { char c1d[MAXSTR]; /* option to record only 1D C13 spectrum */ int ncyc; double tau1 = 0.002, /* t1 delay */ post_del = 0.0, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), compH = getval("compH"), mixpwr = getval("mixpwr"), jCH = getval("jCH"), gt0 = getval("gt0"), gt1 = getval("gt1"), gt2 = getval("gt2"), gzlvl0 = getval("gzlvl0"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), grec = getval("grec"), phase = getval("phase"); getstr("c1d",c1d); ncyc=1; if(jCH > 0.0) tau1 = 0.25/jCH; dbl(ct, v1); /* v1 = 0 */ mod4(v1,oph); hlv(ct,v2); add(v2,v1,v2); if (phase > 1.5) incr(v1); /* hypercomplex phase increment */ initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v10); add(v1,v10,v1); add(oph,v10,oph); mod4(v1,v1); mod4(v2,v2); mod4(oph,oph); assign(zero,v3); if(FIRST_FID) { HHmix = pbox_mix("HHmix", "DIPSI2", mixpwr, pw*compH, tpwr); if(c1d[A] == 'n') { opx("CHdec"); setwave("WURST2 30k/1.2m"); pbox_par("steps","600"); cpx(pwC*compC, pwClvl); CHdec = getDsh("CHdec"); } } ncyc = (int) (at/HHmix.pw) + 1; post_del = ncyc*HHmix.pw - at; /* BEGIN PULSE SEQUENCE */ status(A); zgradpulse(gzlvl0, gt0); rgpulse(pw, zero, 0.0, 0.0); /* destroy H-1 magnetization*/ zgradpulse(gzlvl0, gt0); delay(1.0e-4); obspower(tpwr); txphase(v1); decphase(zero); dec2phase(zero); presat(); obspower(tpwr); delay(1.0e-5); status(B); if(c1d[A] == 'y') { rgpulse(pw,v1,0.0,0.0); /* 1H pulse excitation */ delay(d2); rgpulse(pw,two,0.0,0.0); /* 1H pulse excitation */ assign(oph,v3); } else { decunblank(); pbox_decon(&CHdec); rgpulse(pw,v1,0.0,0.0); /* 1H pulse excitation */ txphase(zero); delay(d2); pbox_decoff(); decblank(); decpower(pwClvl); decpwrf(4095.0); delay(tau1 - POWER_DELAY); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); txphase(one); decphase(one); dec2phase(one); delay(tau1); simpulse(pw, pwC, one, one, 0.0, 0.0); txphase(zero); decphase(zero); dec2phase(zero); delay(tau1); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); delay(tau1); simpulse(0.0, pwC, zero, zero, 0.0, 0.0); } zgradpulse(gzlvl1, gt1); delay(grec); simpulse(0.0, pwC, zero, v3, 0.0, rof2); txphase(v2); obsunblank(); pbox_xmtron(&HHmix); status(C); setactivercvrs("ny"); startacq(alfa); acquire(np,1.0/sw); endacq(); delay(post_del); pbox_xmtroff(); obsblank(); zgradpulse(gzlvl2, gt2); obspower(tpwr); delay(grec); rgpulse(pw,zero,0.0,rof2); /* 1H pulse excitation */ status(D); setactivercvrs("yn"); startacq(alfa); acquire(np,1.0/sw); endacq(); }
pulsesequence() { void makeHHdec(), makeCdec(); /* utility functions */ int ihh=1, /* used in HH decoupling to improve water suppression */ t1_counter; char C13refoc[MAXSTR], /* C13 sech/tanh pulse in middle of t1 */ Hdecflg[MAXSTR], /* HH-h**o decoupling flag */ Cdecflg[MAXSTR], /* low power C-13 decoupling flag */ TROSY[MAXSTR], wtg3919[MAXSTR]; double tauxh, tau1, pwNt = 0.0, /* pulse only active in the TROSY option */ gsign = 1.0, /* temporary Pbox parameters */ bw, pws, ofs, ppm, nst, /* bandwidth, pulsewidth, offset, ppm, # steps */ gzlvl3=getval("gzlvl3"), gt3=getval("gt3"), JNH = getval("JNH"), pwN = getval("pwN"), pwNlvl = getval("pwNlvl"), pwHs, tpwrs=0.0, compH=1.0, /* H1 90 degree pulse length at tpwrs */ sw1 = getval("sw1"), pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rfst = 4095.0, /* fine power for the stCall pulse */ compC = getval("compC"), /* adjustment for C13 amplifier compr-n */ tpwrsf = getval("tpwrsf"); /* adjustment for soft pulse power*/ /* INITIALIZE VARIABLES */ getstr("C13refoc",C13refoc); getstr("TROSY",TROSY); getstr("wtg3919",wtg3919); getstr("Hdecflg", Hdecflg); getstr("Cdecflg", Cdecflg); if(wtg3919[0] != 'y') /* selective H20 one-lobe sinc pulse needs 1.69 */ { /* times more power than a square pulse */ pwHs = getval("pwHs"); compH = getval("compH"); } else pwHs = pw*2.385+7.0*rof1+d3*2.5; tauxh = ((JNH != 0.0) ? 1/(4*(JNH)) : 2.25e-3); setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { if (C13refoc[A]=='y') { /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ rfst = (compC*4095.0*pwC*4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)); rfst = (int) (rfst + 0.5); if ( 1.0/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); } } if(wtg3919[0] != 'y') /* selective H20 one-lobe sinc pulse needs 1.69 */ { /* times more power than a square pulse */ if (pwHs > 1e-6) tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); else tpwrs = 0.0; tpwrs = (int) (tpwrs); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { if (C13refoc[A]=='y') { ppm = getval("dfrq"); ofs = 0.0; pws = 0.001; /* 1 ms long pulse */ bw = 200.0*ppm; nst = 1000; /* nst - number of steps */ stC200 = pbox_makeA("stC200", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); C13ofs = 100.0; } if(wtg3919[0] != 'y') H2Osinc = pbox_Rsh("H2Osinc", "sinc90", pwHs, 0.0, compH*pw, tpwr); ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } if (C13refoc[A]=='y') rfst = stC200.pwrf; if (wtg3919[0] != 'y') { pwHs = H2Osinc.pw; tpwrs = H2Osinc.pwr-1.0; /* 1dB correction applied */ } } if (tpwrsf<4095.0) tpwrs = tpwrs + 6.0; tauxh = ((JNH != 0.0) ? 1/(4*(JNH)) : 2.25e-3); if(Cdecflg[0] == 'y') makeCdec(); /* make shapes for HH h**o-decoupling */ if(Hdecflg[0] == 'y') makeHHdec(); if(Hdecflg[0] != 'n') ihh = -3; /* check validity of parameter range */ 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') ) { text_error("incorrect Dec2 decoupler flags! "); psg_abort(1); } if( dpwr > 0 ) { 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 ((TROSY[A]=='y') && (dm2[C] == 'y')) { text_error("Choose either TROSY='n' or dm2='n' ! "); psg_abort(1); } /* LOAD VARIABLES */ if(ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5); tau1 = d2/2.0 - pw; if(tau1 < 0.0) tau1 = 0.0; /* LOAD PHASE TABLES */ settable(t6, 4, recT); if (TROSY[A] == 'y') { gsign = -1.0; pwNt = pwN; assign(zero,v7); assign(two,v8); settable(t1, 1, phT1); settable(t2, 4, phT2); settable(t3, 1, phT4); settable(t4, 1, phT4); settable(t5, 4, recT); } else { assign(one,v7); assign(three,v8); settable(t1, 4, phi1); settable(t2, 2, phi2); settable(t3, 8, phi3); settable(t4, 1, phi4); settable(t5, 8, rec); } if ( phase1 == 2 ) /* Hypercomplex in t1 */ { if (TROSY[A] == 'y') { tsadd(t3, 2, 4); tsadd(t5, 2, 4); } else tsadd(t2, 1, 4); } if(t1_counter %2) /* calculate modification to phases based on */ { tsadd(t2,2,4); tsadd(t5,2,4); tsadd(t6,2,4); } /* current t1 values */ if(wtg3919[0] != 'y') { add(one,v7,v7); add(one,v8,v8); } /* sequence starts!! */ status(A); obspower(tpwr); dec2power(pwNlvl); decpower(pwClvl); decpwrf(rfst); if(Hdecflg[0] != 'n') { delay(5.0e-5); rgpulse(pw,zero,rof1,0.0); rgpulse(pw,one,0.0,rof1); zgradpulse(1.5*gzlvl3, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,rof1,0.0); rgpulse(pw,one,0.0,rof1); zgradpulse(-gzlvl3, 0.5e-3); } delay(d1); rcvroff(); status(B); rgpulse(pw, zero, rof1, rof1); zgradpulse(0.3*gzlvl3,gt3); txphase(zero); dec2phase(zero); delay(tauxh-gt3); /* delay=1/4J(XH) */ sim3pulse(2*pw,0.0,2*pwN,t4,zero,zero,rof1,rof1); zgradpulse(0.3*gzlvl3,gt3); dec2phase(t2); delay(tauxh-gt3 ); /* delay=1/4J(XH) */ rgpulse(pw, t1, rof1, rof1); zgradpulse(0.5*gsign*ihh*gzlvl3,gt3); delay(200.0e-6); decphase(zero); if (TROSY[A] == 'y') { txphase(t3); if ( phase1 == 2 ) dec2rgpulse(pwN, t6, rof1, 0.0); else dec2rgpulse(pwN, t2, rof1, 0.0); if ( (C13refoc[A]=='y') && (d2 > 1.0e-3 + 2.0*WFG2_START_DELAY) ) { delay(d2/2.0 - 0.5e-3 - WFG2_START_DELAY); decshaped_pulse("stC200", 1.0e-3, zero, 0.0, 0.0); delay(d2/2.0 - 0.5e-3 - WFG2_STOP_DELAY); } else delay(d2); rgpulse(pw, t3, 0.0, rof1); zgradpulse(0.65*gzlvl3,gt3); delay(tauxh-gt3 ); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,rof1,rof1); zgradpulse(0.65*gzlvl3,gt3); delay(tauxh-gt3 ); sim3pulse(pw,0.0,pwN,zero,zero,t3,rof1,rof1); } else { txphase(t4); dec2rgpulse(pwN, t2, rof1, 0.0); if ( (C13refoc[A]=='y') && (tau1 > 0.5e-3 + WFG2_START_DELAY) ) { delay(tau1 - 0.5e-3 - WFG2_START_DELAY); simshaped_pulse("", "stC200", 2.0*pw, 1.0e-3, t4, zero, 0.0, 0.0); dec2phase(t3); delay(tau1 - 0.5e-3 - WFG2_STOP_DELAY); } else { delay(tau1); rgpulse(2.0*pw, t4, 0.0, 0.0); dec2phase(t3); delay(tau1); } dec2rgpulse(pwN, t3, 0.0, 0.0); zgradpulse(0.5*gzlvl3,gt3); delay(200.0e-6); rgpulse(pw, two, rof1, rof1); } zgradpulse(gzlvl3,gt3); txphase(v7); dec2phase(zero); delay(tauxh-gt3-pwHs-rof1+5.0e-5); if(wtg3919[0] == 'y') { rgpulse(pw*0.231,v7,rof1,rof1); delay(d3); rgpulse(pw*0.692,v7,rof1,rof1); delay(d3); rgpulse(pw*1.462,v7,rof1,rof1); delay(d3/2-pwN); dec2rgpulse(2*pwN, zero, rof1, rof1); txphase(v8); delay(d3/2-pwN); rgpulse(pw*1.462,v8,rof1,rof1); delay(d3); rgpulse(pw*0.692,v8,rof1,rof1); delay(d3); rgpulse(pw*0.231,v8,rof1,rof1); } else { obspower(tpwrs); if (tpwrsf<4095.0) obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHs, v7, rof1, 0.0); obspower(tpwr); if (tpwrsf<4095.0) obspwrf(4095.0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, v8, zero, zero, 0.0, 0.0); obspower(tpwrs); if (tpwrsf<4095.0)obspwrf(tpwrsf); shaped_pulse("H2Osinc", pwHs, v7, rof1, 0.0); obspower(tpwr); if (tpwrsf<4095.0)obspwrf(4095.0); } zgradpulse(gzlvl3,gt3); if(Cdecflg[0] == 'y') { delay(tauxh-gt3-pwHs-rof1-pwNt-3.0*POWER_DELAY-PRG_START_DELAY); dec2rgpulse(pwNt, zero, rof1, rof1); dec2power(dpwr2); rcvron(); statusdelay(C,5.0e-5); setreceiver(t5); pbox_decon(&Cdseq); if(Hdecflg[0] == 'y') homodec(&HHdseq); } else { delay(tauxh-gt3-pwHs-rof1-pwNt-POWER_DELAY); dec2rgpulse(pwNt, zero, rof1, rof1); dec2power(dpwr2); rcvron(); statusdelay(C,5.0e-5); setreceiver(t5); if(Hdecflg[0] == 'y') homodec(&HHdseq); } }
void pulsesequence() { double gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gzlvl_max = getval("gzlvl_max"), del = getval("del"), dosyfrq=getval("sfrq"), gstab = getval("gstab"), gzlvlhs = getval("gzlvlhs"), hsgt = getval("hsgt"), gtau,tauc,gt4,gzlvl4,Ddelta,dosytimecubed; char convcomp[MAXSTR],sspul[MAXSTR],lkgate_flg[MAXSTR],satmode[MAXSTR], alt_grd[MAXSTR],arraystring[MAXSTR]; int iphase, icosel; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gt1 = syncGradTime("gt1","gzlvl1",1.0); gzlvl1 = syncGradLvl("gt1","gzlvl1",1.0); gtE = syncGradTime("gtE","gzlvlE",1.0); gzlvlE = syncGradLvl("gtE","gzlvlE",1.0); getstr("sspul",sspul); getstr("convcomp",convcomp); getstr("satmode",satmode); getstr("lkgate_flg",lkgate_flg); getstr("alt_grd",alt_grd); getstr("array",arraystring); iphase = (int)(getval("phase")+0.5); icosel = 1; tau = 1/(2*(getval("jnxh"))); gtau = 2*gstab + GRADIENT_DELAY; tauc = gtau+gtE-gstab; if (strcmp(arraystring,"gzlvl1,phase")!=0) fprintf(stdout,"Warning: array should be 'gzlvl1,phase' for this experiment"); Ddelta=gt1; /* the diffusion-encoding pulse width is gt1 */ if (convcomp[0] == 'y') dosytimecubed=2.0*Ddelta*Ddelta*(del-2.0*(Ddelta/3.0)); else dosytimecubed=2.0*Ddelta*Ddelta*(del-(Ddelta/3.0)); putCmd("makedosyparams(%e,%e)\n",dosytimecubed,dosyfrq); if (ni>1) putCmd("dosy3Dproc=\'y\'\n"); else putCmd("dosy3Dproc=\'n\'"); if (tau < (gtE+gstab)) { abort_message("0.5/jnxh must be greater than gtE+gstab"); } if (tau < (1.0*(gt1+gstab)+del)) { abort_message("0.5/jnxh must be greater than del+gt1+gstab"); } settable(t1,2,ph1); settable(t2,4,ph2); settable(t3,4,ph3); assign(zero,v4); getelem(t1,ct,v1); getelem(t3,ct,oph); if (iphase == 2) icosel = -1; initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v11); add(v1,v11,v1); add(v4,v11,v4); add(oph,v11,oph); mod2(ct,v10); /* gradients change sign at odd transients */ status(A); decpower(pwxlvl); if (sspul[0] == 'y') { zgradpulse(gzlvlhs,hsgt); rgpulse(pw,zero,rof1,rof1); zgradpulse(gzlvlhs,hsgt); } if (lkgate_flg[0]=='y') lk_sample(); /* turn lock sampling on */ if (convcomp[0]=='y') gt4=gt1*2.0; else gt4=gt1; gzlvl4=sqrt(gzlvl_max*gzlvl_max-gzlvl1*gzlvl1); if (satmode[0] == 'y') { if (d1 - satdly > 0) delay(d1 - satdly); obspower(satpwr); rgpulse(satdly,zero,rof1,rof1); obspower(tpwr); } else { delay(d1); } if (getflag("wet")) wet4(zero,one); if (lkgate_flg[0]=='y') lk_hold(); /* turn lock sampling off */ status(B); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl4,gt4); elsenz(v10); zgradpulse(-1.0*gzlvl4,gt4); endif(v10); } else zgradpulse(gzlvl4,gt4); delay(gstab); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(-1.0*gzlvl4,gt4); elsenz(v10); zgradpulse(gzlvl4,gt4); endif(v10); } else zgradpulse(-1.0*gzlvl4,gt4); delay(gstab); rgpulse(pw,zero,rof1,1.0e-6); if (convcomp[0]=='y') { delay((tau - 1.0e-6 - (2*pw/PI)-del-2.333*gt1-2.0*gstab)/2.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(-1.0*gzlvl1,gt1); elsenz(v10); zgradpulse(gzlvl1,gt1); endif(v10); } else zgradpulse(-1.0*gzlvl1,gt1); if (satmode[1] == 'y') { obspower(satpwr); rgpulse(del/2.0-5.0*gt1/6.0-2.0*rof1,zero,rof1,rof1); } else delay(del/2.0-5.0*gt1/6.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-1.0*gzlvl1,gt1); endif(v10); } else zgradpulse(gzlvl1,gt1); delay(gstab); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-1.0*gzlvl1,gt1); endif(v10); } else zgradpulse(gzlvl1,gt1); if (satmode[1] == 'y') { rgpulse(del/2.0-5.0*gt1/6.0-2.0*rof1,zero,rof1,rof1); obspower(tpwr); } else delay(del/2.0-5.0*gt1/6.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(-1.0*gzlvl1,gt1); elsenz(v10); zgradpulse(gzlvl1,gt1); endif(v10); } else zgradpulse(-1.0*gzlvl1,gt1); delay((tau - 1.0e-6 - (2*pw/PI)-del-2.333*gt1)/2.0); } else { delay((tau - 1.0e-6 - (2*pw/PI)-del-gt1-gstab)/2.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-1.0*gzlvl1,gt1); endif(v10); } else zgradpulse(gzlvl1,gt1); if (satmode[1] == 'y') { obspower(satpwr); rgpulse(del-gt1-2.0*rof1,zero,rof1,rof1); obspower(tpwr); } else delay(del-gt1); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-1.0*gzlvl1,gt1); endif(v10); } else zgradpulse(gzlvl1,gt1); delay(gstab); delay((tau - 1.0e-6 - (2*pw/PI)-del-gt1-gstab)/2.0); } decrgpulse(pwx,v1,1.0e-6,1.0e-6); delay(gtE+gtau); decrgpulse(2*pwx,v4,1.0e-6,1.0e-6); delay(gstab); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvlE,gtE); elsenz(v10); zgradpulse(-1.0*gzlvlE,gtE); endif(v10); } else zgradpulse(gzlvlE,gtE); delay(gstab); if (d2/2 > pw) delay(d2/2 - pw); else delay(d2/2); rgpulse(2.0*pw,zero,1.0e-6,1.0e-6); if (d2/2 > pw) delay(d2/2 - pw); else delay(d2/2); delay(gstab); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvlE,gtE); elsenz(v10); zgradpulse(-1.0*gzlvlE,gtE); endif(v10); } else zgradpulse(gzlvlE,gtE); delay(gstab); decrgpulse(2*pwx,zero,1.0e-6,1.0e-6); delay(gtE+gtau); decrgpulse(pwx,t2,1.0e-6,1.0e-6); delay(gstab); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(icosel*2.0*gzlvlE/EDratio,gtE); elsenz(v10); zgradpulse(-1.0*icosel*2.0*gzlvlE/EDratio,gtE); endif(v10); } else zgradpulse(icosel*2.0*gzlvlE/EDratio,gtE); if (convcomp[0]=='y') { delay((tau-tauc - 1.0e-6 - (2*pw/PI)-del-2.333*gt1-2.0*gstab)/2.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(-1.0*gzlvl1,gt1); elsenz(v10); zgradpulse(gzlvl1,gt1); endif(v10); } else zgradpulse(-1.0*gzlvl1,gt1); if (satmode[1] == 'y') { obspower(satpwr); rgpulse(del/2.0-5.0*gt1/6.0-2.0*rof1,zero,rof1,rof1); } else delay(del/2.0-5.0*gt1/6.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-1.0*gzlvl1,gt1); endif(v10); } else zgradpulse(gzlvl1,gt1); delay(gstab); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-1.0*gzlvl1,gt1); endif(v10); } else zgradpulse(gzlvl1,gt1); if (satmode[1] == 'y') { rgpulse(del/2.0-5.0*gt1/6.0-2.0*rof1,zero,rof1,rof1); obspower(tpwr); } else delay(del/2.0-5.0*gt1/6.0); zgradpulse(-gzlvl1,gt1); delay((tau-tauc - 1.0e-6 - (2*pw/PI)-del-2.333*gt1)/2.0); if (lkgate_flg[0]=='y') lk_sample(); } else { delay((tau-tauc - 1.0e-6 - (2*pw/PI)-del-gt1-gstab)/2.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(-1.0*gzlvl1,gt1); elsenz(v10); zgradpulse(gzlvl1,gt1); endif(v10); } else zgradpulse(-1.0*gzlvl1,gt1); if (satmode[1] == 'y') { obspower(satpwr); rgpulse(del-gt1-2.0*rof1,zero,rof1,rof1); obspower(tpwr); } else delay(del-gt1); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl1,gt1); elsenz(v10); zgradpulse(-1.0*gzlvl1,gt1); endif(v10); } else zgradpulse(gzlvl1,gt1); delay(gstab); delay((tau-tauc - 1.0e-6 - (2*pw/PI)-del-gt1-gstab)/2.0); if (lkgate_flg[0]=='y') lk_sample(); } decpower(dpwr); delay(rof2 - POWER_DELAY); status(C); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ TROSY[MAXSTR]; /* To check for TROSY flag */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double p_d, rfd, ncyc, COmix = getval("COmix"), p_trim, rftrim, tau1, /* t1 delay */ tau2, /* t2 delay */ timeTN = getval("timeTN"), /* constant time for 15N evolution */ kappa = 5.4e-3, lambda = 2.4e-3, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "proteincal". SLP pulse shapes, "offC3" etc are called */ /* directly from your shapelib. */ pwC3 = getval("pwC3"), /*180 degree pulse at Ca(56ppm) null at CO(174ppm) */ pwC3a = getval("pwC3a"), /* pwC3a=pwC3, but not set to zero when pwC3=0 */ phshift3, /* phase shift induced on CO by pwC3 ("offC3") pulse */ pwZ, /* the largest of pwC3 and 2.0*pwN */ pwZ1, /* the largest of pwC3a and 2.0*pwN for 1D experiments */ pwC6 = getval("pwC6"), /* 90 degree selective sinc pulse on CO(174ppm) */ pwC8 = getval("pwC8"), /* 180 degree selective sinc pulse on CO(174ppm) */ rf3, /* fine power for the pwC3 ("offC3") pulse */ rf6, /* fine power for the pwC6 ("offC6") pulse */ rf8, /* fine power for the pwC8 ("offC8") pulse */ compH = getval("compH"), /* adjustment for C13 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf = getval("tpwrsf"), /* fine power adjustment for flipback */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /* rf for WALTZ decoupling */ waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* g/cm to DAC conversion factor */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("mag_flg",mag_flg); getstr("TROSY",TROSY); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t4,1,phx); settable(t5,4,phi5); settable(t8,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec); /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* 180 degree pulse on Ca, null at CO 118ppm away */ rf3 = (compC*4095.0*pwC*2.0)/pwC3a; rf3 = (int) (rf3 + 0.5); /* the pwC3 pulse at the middle of t1 */ if ((ni2 > 0.0) && (ni == 1.0)) ni = 0.0; if (pwC3a > 2.0*pwN) pwZ = pwC3a; else pwZ = 2.0*pwN; if ((pwC3==0.0) && (pwC3a>2.0*pwN)) pwZ1=pwC3a-2.0*pwN; else pwZ1=0.0; if ( ni > 1 ) pwC3 = pwC3a; if ( pwC3 > 0 ) phshift3 = 48.0; else phshift3 = 0.0; /* 90 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf6 = (compC*4095.0*pwC*1.69)/pwC6; /* needs 1.69 times more */ rf6 = (int) (rf6 + 0.5); /* power than a square pulse */ /* 180 degree one-lobe sinc pulse on CO, null at Ca 118ppm away */ rf8 = (compC*4095.0*pwC*2.0*1.65)/pwC8; /* needs 1.65 times more */ rf8 = (int) (rf8 + 0.5); /* power than a square pulse */ /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /* needs 1.69 times more */ tpwrs = (int) (tpwrs); /* power than a square pulse */ /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(compH*pw)); tpwrd = (int) (tpwrd + 0.5); /* dipsi-3 decoupling on COCO */ p_trim = 1/(4*5000*(sfrq/600.0)); /* 5 kHz trim pulse at 600MHz as per Bax */ p_d = (5.0)/(9.0*4.0*2800.0*(sfrq/600.0)); /* 2.8 kHz DIPSI-3 at 600MHz as per Bax*/ rftrim = (compC*4095.0*pwC)/p_trim; rftrim = (int)(rftrim+0.5); rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = ((COmix - 0.002)/51.8/4/p_d); ncyc = (int) (ncyc + 0.5); initval(ncyc,v9); /* CHECK VALIDITY OF PARAMETER RANGES */ if ( 0.5*ni2*1/(sw2) > timeTN - WFG3_START_DELAY) { printf(" ni2 is too big. Make ni2 equal to %d or less.\n", ((int)((timeTN - WFG3_START_DELAY)*2.0*sw2))); psg_abort(1);} if ( dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' ) { printf("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1);} if ( dm2[A] == 'y' || dm2[B] == 'y' ) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1);} if ( dpwr2 > 50 ) { printf("dpwr2 too large! recheck value "); psg_abort(1);} if ( pw > 50.0e-6 ) { printf(" pw too long ! recheck value "); psg_abort(1);} if ( (pwN > 100.0e-6) && (ni>1 || ni2>1)) { printf(" pwN too long! recheck value "); psg_abort(1);} if ( TROSY[A] == 'y') { printf(" TROSY option is not implemented"); psg_abort(1);} /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t3,1,4); if (phase2 == 2) {tsadd(t10,2,4); icosel = +1;} else icosel = -1; /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t3,2,4); tsadd(t12,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t8,2,4); tsadd(t12,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); delay(d1); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); delay(5.0e-4); rgpulse(pw,zero,0.0,0.0); /* 1H pulse excitation */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(zero); if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, zero, 5.0e-4, 0.0); obspower(tpwrd); obspwrf(4095.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); dec2rgpulse(pwN, zero, 0.0, 0.0); txphase(one); delay(kappa - pwHd - 2.0e-6 - PRG_START_DELAY); rgpulse(pwHd,one,0.0,0.0); txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); decphase(zero); dec2phase(zero); decpwrf(rf8); delay(timeTN - kappa - WFG3_START_DELAY); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(t3); decpwrf(rf6); delay(timeTN); dec2rgpulse(pwN, zero, 0.0, 0.0); xmtroff(); obsprgoff(); rgpulse(pwHd,three,2.0e-6,0.0); zgradpulse(gzlvl3, gt3); delay(2.0e-4); /***************************************************************/ /* The sequence is different from here with respect to ghn_co **/ /***************************************************************/ rgpulse(pwHd,one,2.0e-6,0.0); /* H1 decoupler is turned on */ txphase(zero); delay(2.0e-6); obsprgon("waltz16", pwHd, 90.0); xmtron(); decshaped_pulse("offC6", pwC6, t3, 0.0, 0.0); decphase(zero); /* Refocus CO, evolve CO, spinlock CO and defocus CO */ delay(timeTN - tau1/2 - 0.6*pwC6 - WFG3_START_DELAY); decpwrf(rf8); sim3shaped_pulse("", "offC8","",0.0,pwC8, 2.0*pwN, zero,zero,zero,0.0,0.0); decpwrf(rf3); delay(timeTN - WFG3_STOP_DELAY - WFG_START_DELAY - pwC3a/2); decshaped_pulse("offC3",pwC3a,zero,0.0,0.0); if (tau1 > 0) delay(tau1/2 - WFG_STOP_DELAY - pwC3a/2 - 2.0e-6); else delay(tau1/2); /*******DO SPINLOCK ********/ decpwrf(rftrim); decrgpulse(0.002,zero,2.0e-6,0.0); decpwrf(rfd); starthardloop(v9); decrgpulse(6.4*p_d,zero,0.0,0.0); decrgpulse(8.2*p_d,two,0.0,0.0); decrgpulse(5.8*p_d,zero,0.0,0.0); decrgpulse(5.7*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.5*p_d,zero,0.0,0.0); decrgpulse(5.3*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.4*p_d,two,0.0,0.0); decrgpulse(8.2*p_d,zero,0.0,0.0); decrgpulse(5.8*p_d,two,0.0,0.0); decrgpulse(5.7*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.5*p_d,two,0.0,0.0); decrgpulse(5.3*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.4*p_d,two,0.0,0.0); decrgpulse(8.2*p_d,zero,0.0,0.0); decrgpulse(5.8*p_d,two,0.0,0.0); decrgpulse(5.7*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.5*p_d,two,0.0,0.0); decrgpulse(5.3*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.4*p_d,zero,0.0,0.0); decrgpulse(8.2*p_d,two,0.0,0.0); decrgpulse(5.8*p_d,zero,0.0,0.0); decrgpulse(5.7*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.5*p_d,zero,0.0,0.0); decrgpulse(5.3*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); endhardloop(); decpwrf(4095.0); /* End of spinlock */ delay(timeTN - WFG3_START_DELAY); decpwrf(rf8); sim3shaped_pulse("","offC8","",0.0,pwC8,2*pwN,zero,zero,zero,0.0,0.0); decpwrf(rf6); delay(timeTN - WFG3_STOP_DELAY); /***************************************************************/ /* The sequence is same as ghn_co from this point ********/ /***************************************************************/ decshaped_pulse("offC6", pwC6, t5, 0.0, 0.0); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ dec2phase(t8); zgradpulse(gzlvl4, gt4); txphase(one); dcplrphase(zero); delay(2.0e-4); dec2rgpulse(pwN, t8, 0.0, 0.0); decphase(zero); dec2phase(t9); decpwrf(rf8); delay(timeTN - WFG3_START_DELAY - tau2); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC8", "", 0.0, pwC8, 2.0*pwN, zero, zero, t9, 0.0, 0.0); dec2phase(t10); decpwrf(rf3); if (tau2 > kappa) { delay(timeTN - pwC3a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > (kappa - pwC3a - WFG_START_DELAY)) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(kappa -pwC3a -WFG_START_DELAY -gt1 -2.0*GRADIENT_DELAY -1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else if (tau2 > gt1 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa - tau2 - pwC3a - WFG_START_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2 - gt1 - 2.0*GRADIENT_DELAY - 1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); } else { delay(timeTN + tau2 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6); xmtroff(); obsprgoff(); /* PRG_STOP_DELAY */ rgpulse(pwHd,three,2.0e-6,0.0); txphase(t4); delay(kappa-tau2-pwC3a-WFG_START_DELAY-gt1-2.0*GRADIENT_DELAY-1.0e-4); if (mag_flg[A]=='y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ obspower(tpwr); /* POWER_DELAY */ delay(1.0e-4 - POWER_DELAY); /* WFG_START_DELAY */ decshaped_pulse("offC3", pwC3a, zero, 0.0, 0.0); delay(tau2); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(gzlvl6, gt5); delay(lambda - 0.65*pwN - gt5); rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 +gstab - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 0.0,0.0); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, gt1/10.0); else zgradpulse(icosel*gzlvl2, gt1/10.0); /* 2.0*GRADIENT_DELAY */ delay(gstab); rcvron(); statusdelay(C,1.0e-4); setreceiver(t12); }
pulsesequence() { double del = getval("del"), gstab = getval("gstab"), gt1 = getval("gt1"), gzlvl1 = getval("gzlvl1"), gt2 = getval("gt2"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), gzlvl0 = getval("gzlvl0"), gths = getval("gths"), gzlvlhs = getval("gzlvlhs"), satpwr = getval("satpwr"), satdly = getval("satdly"), satfrq = getval("satfrq"), trim = getval("trim"), trimpwr = getval("trimpwr"), mix = getval("mix"), wrefpwr = getval("wrefpwr"), wrefpw = getval("wrefpw"), wrefpwrf = getval("wrefpwrf"); char delflag[MAXSTR],satmode[MAXSTR],dpfgse_flg[MAXSTR],sspul[MAXSTR], trim_flg[MAXSTR],alt_grd[MAXSTR],wrefshape[MAXSTR]; getstr("delflag",delflag); getstr("satmode",satmode); getstr("dpfgse_flg",dpfgse_flg); getstr("trim_flg", trim_flg); getstr("alt_grd",alt_grd); getstr("wrefshape", wrefshape); getstr("sspul",sspul); if (alt_grd[0] == 'y') mod2(ct,v6); /* alternate gradient sign on every 2nd transient */ /* SET PHASES */ sub(ct,ssctr,v12); /* Steady-state phase cycling */ settable(t1, 2, phi1); getelem(t1,v12,v1); settable(t2, 8, phi2); getelem(t2,v12,v2); settable(t3,16, phi3); getelem(t3,v12,v3); settable(t4,64, phi4); getelem(t4,v12,v4); settable(t5,64, rec); getelem(t5,v12,oph); /* equilibrium period */ status(A); obspower(tpwr); if (sspul[A] == 'y') { zgradpulse(gzlvl0,gt0); rgpulse(pw,zero,rof1,rof1); zgradpulse(gzlvl0,gt0); } if (satmode[0] == 'y') { if (d1 - satdly > 0) delay(d1 - satdly); else delay(0.02); obspower(satpwr); if (satfrq != tof) obsoffset(satfrq); rgpulse(satdly,zero,rof1,rof1); if (satfrq != tof) obsoffset(tof); obspower(tpwr); delay(1.0e-5); } else delay(d1); status(B); /* first part of bppdel sequence */ if (delflag[0]=='y') { if (gt1>0 && gzlvl1>0) { rgpulse(pw, zero, rof1, 0.0); /* first 90, zero */ ifzero(v6); zgradpulse(gzlvl1,gt1/2.0); elsenz(v6); zgradpulse(-1.0*gzlvl1,gt1/2.0); endif(v6); delay(gstab); rgpulse(pw*2.0, zero, rof1, 0.0); /* first 180, zero */ ifzero(v6); zgradpulse(-1.0*gzlvl1,gt1/2.0); elsenz(v6); zgradpulse(gzlvl1,gt1/2.0); endif(v6); delay(gstab); rgpulse(pw, v1, rof1, 0.0); /* second 90, v1 */ if (satmode[1] == 'y') { obspower(satpwr); rgpulse(del-4.0*pw-3.0*rof1-gt1-2.0*gstab,zero,rof1,rof1); obspower(tpwr); } else { delay(del-4.0*pw-3.0*rof1-gt1-2.0*gstab);/*diffusion delay */ } rgpulse(pw, v2, rof1, 0.0); /* third 90, v2 */ ifzero(v6); zgradpulse(gzlvl1,gt1/2.0); elsenz(v6); zgradpulse(-1.0*gzlvl1,gt1/2.0); endif(v6); delay(gstab); rgpulse(pw*2.0, zero, rof1, rof1); /* second 180, zero */ ifzero(v6); zgradpulse(-1.0*gzlvl1,gt1/2.0); elsenz(v6); zgradpulse(gzlvl1,gt1/2.0); endif(v6); delay(gstab); rgpulse(pw, v3, rof1, rof1); /* mixing 90, v3 */ delay(0.7*mix); ifzero(v6); zgradpulse(gzlvlhs,gths); elsenz(v6); zgradpulse(-1.0*gzlvlhs,gths); endif(v6); delay(0.3*mix-gths); if ((dpfgse_flg[A] == 'n')&&(trim_flg[0] == 'n')) rgpulse(pw, v4, rof1, rof2); else rgpulse(pw, v4, rof1, rof1); /* read pulse */ /* DPFGSE block */ if (dpfgse_flg[A] == 'y') { add(v4,two,v7); ifzero(v6); zgradpulse(gzlvl2,gt2); elsenz(v6); zgradpulse(-gzlvl2,gt2); endif(v6); obspower(wrefpwr+6); obspwrf(wrefpwrf); delay(gstab); shaped_pulse(wrefshape,wrefpw,v7,rof1,rof1); obspower(tpwr); obspwrf(4095.0); rgpulse(2.0*pw,v4,rof1,rof1); ifzero(v6); zgradpulse(gzlvl2,gt2); elsenz(v6); zgradpulse(-gzlvl2,gt2); endif(v6); obspower(wrefpwr+6); obspwrf(wrefpwrf); delay(gstab); ifzero(v6); zgradpulse(1.2*gzlvl2,gt2); elsenz(v6); zgradpulse(-1.2*gzlvl2,gt2); endif(v6); delay(gstab); shaped_pulse(wrefshape,wrefpw,v7,rof1,rof1); obspower(tpwr); obspwrf(4095.0); if (trim_flg[A] == 'y') rgpulse(2.0*pw,v4,rof1,0.0); else rgpulse(2.0*pw,v4,rof1,rof2); ifzero(v6); zgradpulse(1.2*gzlvl2,gt2); elsenz(v6); zgradpulse(-1.2*gzlvl2,gt2); endif(v6); delay(gstab); } if (trim_flg[A] == 'y') { obspower(trimpwr); add(v4,one,v5); rgpulse(trim,v5,rof1,rof2); } } } else rgpulse(pw,oph,rof1,rof2); /* --- observe period --- */ status(C); }
void pulsesequence() { char codec[MAXSTR], codecseq[MAXSTR]; int icosel, t1_counter; double d2_init = 0.0, rf0 = 4095, rf200, pw200, copwr, codmf, cores, copwrf, tpwrs, pwHs = getval("pwHs"), compH = getval("compH"), pwClvl = getval("pwClvl"), pwC = getval("pwC"), compC = getval("compC"), pwNlvl = getval("pwNlvl"), pwN = getval("pwN"), sw1 = getval("sw1"), swH = getval("swH"), swC = getval("swC"), swN = getval("swN"), swTilt, angle_H = getval("angle_H"), angle_C = getval("angle_C"), angle_N, cos_H, cos_C, cos_N, mix = getval("mix"), tauCH = getval("tauCH"), /* 1/4JCH */ tauNH = getval("tauNH"), /* 1/4JNH */ tau1, tau2, tau3, tofali =getval("tofali"), /* aliphatic protons offset */ dofcaco =getval("dofcaco"), /* offset for caco decoupling, ~120 ppm */ dof = getval("dof"), 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"), gt8 = getval("gt8"), gzlvl8 = getval("gzlvl8"), gt9 = getval("gt9"), gzlvl9 = getval("gzlvl9"); /* LOAD VARIABLES */ copwr = getval("copwr"); copwrf = getval("copwrf"); codmf = getval("codmf"); cores = getval("cores"); getstr("codecseq", codecseq); getstr("codec", codec); /* Load phase cycling variables */ settable(t1, 4, phi1); settable(t2, 2, phi2); settable(t3, 1, phi3); settable(t4, 8, phi4); settable(t5, 1, phi5); settable(t14, 2, phi14); settable(t11, 8, rec); angle_N=0.0; cos_N=0.0; /* activate auto-calibration flags */ setautocal(); if (autocal[0] == 'n') { /* 180 degree adiabatic C13 pulse from 0 to 200 ppm */ pw200 = getval("pw200"); rf200 = (compC*4095.0*pwC*4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)); rf200 = (int) (rf200 + 0.5); if (1.0/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((30.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { strcpy(codecseq,"Pdec_154p"); if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 200.0*ppm; pws = 0.001; ofs = 0.0; nst = 1000; /* 1 ms long pulse, nst: number of steps */ stC200 = pbox_makeA("stC200", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); bw=20.0*ppm; ofs=154*ppm; Pdec_154p = pbox_Dsh("Pdec_154p", "WURST2", bw, ofs, compC*pwC, pwClvl); } rf200 = stC200.pwrf; pw200 = stC200.pw; } /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); tpwrs = (int)(tpwrs+0.5); /* check validity of parameter range */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y')) { printf("incorrect Dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect Dec2 decoupler flags! "); psg_abort(1); } if ((dpwr > 48) || (dpwr2 > 48)) { printf("don't fry the probe, dpwr too high! "); psg_abort(1); } /* set up angles for PR42 experiments */ /* sw1 is used as symbolic index */ if ( sw1 < 1000 ) { printf ("Please set sw1 to some value larger than 1000.\n"); psg_abort(1); } if (angle_H < 0 || angle_C < 0 || angle_H > 90 || angle_C > 90 ) { printf("angles must be set between 0 and 90 degree.\n"); psg_abort(1); } cos_H = cos (PI*angle_H/180); cos_C = cos (PI*angle_C/180); if ( (cos_H*cos_H + cos_C*cos_C) > 1.0) { printf ("Impossible angle combinations.\n"); psg_abort(1); } else { cos_N = sqrt(1 - (cos_H*cos_H + cos_C*cos_C) ); angle_N = acos(cos_N)*180/PI; } 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); } swTilt = swH*cos_H + swC*cos_C + swN*cos_N; if (phase1 == 1) {;} /* CC */ else if (phase1 == 2) { tsadd(t1, 1, 4); } /* SC */ else if (phase1 == 3) { tsadd(t2, 1, 4); tsadd(t14,1,4); } /* CS */ else if (phase1 == 4) { tsadd(t1, 1, 4); tsadd(t2,1,4); tsadd(t14,1,4); } /* SS */ if ( phase2 == 1 ) { tsadd(t5,2,4); icosel = 1; } else icosel = -1; tau1 = 1.0 * t1_counter * cos_H / swTilt; tau2 = 1.0 * t1_counter * cos_C / swTilt; tau3 = 1.0 * t1_counter * cos_N / swTilt; tau1 = tau1/2.0; tau2 = tau2/2.0; tau3 =tau3/2.0; if (ix ==1 ) { printf ("Current Spectral Width:\t\t%5.2f\n", swTilt); printf ("Angle_H: %5.2f \n", angle_H); printf ("Angle_C: %5.2f \n", angle_C); printf ("Angle_N: %5.2f \n", angle_N); printf ("\n\n\n\n\n"); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); delay(d1); rcvroff(); obsoffset(tofali); obspower(tpwr); obspwrf(4095.0); decoffset(dof); decpower(pwClvl); decpwrf(rf0); dec2offset(dof2); dec2power(pwNlvl); dec2pwrf(4095.0); if (gt0 > 0.2e-6) { decrgpulse(pwC,zero,10.0e-6,0.0); dec2rgpulse(pwN,zero,2.0e-6,2.0e-6); zgradpulse(gzlvl0,gt0); delay(gstab); } txphase(t1); decphase(t2); dec2phase(zero); status(B); rgpulse(pw,t1,4.0e-6,2.0e-6); zgradpulse(gzlvl3,gt3); delay(2.0*tauCH - gt3 - 2.0*GRADIENT_DELAY -4.0e-6); decrgpulse(pwC,t2,2.0e-6,2.0e-6); decphase(zero); /*======= Start of c13 evolution ==========*/ if ( ((tau2 -PRG_START_DELAY - POWER_DELAY -pwN - 2.0*pwC/PI -2.0e-6)> 0) && ((tau2 -PRG_STOP_DELAY - POWER_DELAY - pwN - 2.0*pwC/PI -2.0e-6)>0) && (codec[A] == 'y') ) { decpower(copwr); decpwrf(copwrf); decprgon(codecseq,1/codmf,cores); decon(); delay(tau2 -PRG_START_DELAY - POWER_DELAY -pwN - 2.0*pwC/PI -2.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, t1, zero, zero, 0.0, 0.0); delay(tau2 -PRG_STOP_DELAY - POWER_DELAY - pwN - 2.0*pwC/PI -2.0e-6); decoff(); decprgoff(); } else if ( (tau2 -pwN - 2.0*pwC/PI -2.0e-6) > 0) { delay(tau2 -pwN - 2.0*pwC/PI -2.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, t1, zero, zero, 0.0, 0.0); delay(tau2 -pwN - 2.0*pwC/PI -2.0e-6); } else { delay(2.0*tau2); decphase(t14); delay(4.0e-6); sim3pulse(2.0*pw, 2.0*pwC, 2.0*pwN, t1, t14, zero, 0.0, 0.0); delay(4.0e-6); } decpower(pwClvl); decpwrf(rf0); decphase(zero); /*======= End of c13 evolution ==========*/ decrgpulse(pwC,zero, 2.0e-6,2.0e-6); txphase(zero); delay(2.0*tauCH + tau1 - gt3 - 4.0*pwC - gstab -4.0e-6 - 2.0*GRADIENT_DELAY); zgradpulse(gzlvl3,gt3); delay(gstab); decrgpulse(pwC,zero,0.0, 0.0); decphase(one); decrgpulse(2.0*pwC, one, 0.2e-6, 0.0); decphase(zero); decrgpulse(pwC, zero, 0.2e-6, 0.0); delay(tau1); rgpulse(pw,zero,2.0e-6,0.0); /* ===========Beginning of NOE transfer ======= */ delay(mix - gt4 - gt5 - pwN -pwC - 2.0*gstab); obsoffset(tof); zgradpulse(gzlvl4,gt4); delay(gstab); decrgpulse(pwC, zero, 2.0e-6, 2.0e-6); dec2rgpulse(pwN, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); /* H2O relaxes back to +z */ /* =========== End of NOE transfer ======= */ rgpulse(pw, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl6,gt6); delay(tauNH - gt6 - 4.0e-6 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw, 0.0, 2*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(tauNH - gt6 - gstab -4.0e-6 - 2.0*GRADIENT_DELAY); zgradpulse(gzlvl6,gt6); txphase(one); delay(gstab); rgpulse(pw,one,2.0e-6,2.0e-6); txphase(two); obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 2.0e-6); obspower(tpwr); zgradpulse(gzlvl7,gt7); dec2phase(t3); decoffset(dofcaco); /* offset on 120ppm for CaCO decoupling */ decpwrf(rf200); /* fine power for stC200 */ delay(gstab); dec2rgpulse(pwN,t3,2.0e-6,2.0e-6); dec2phase(t4); delay(tau3); rgpulse(2.0*pw, zero, 2.0e-6, 2.0e-6); decshaped_pulse("stC200", 1.0e-3, zero, 2.0e-6, 2.0e-6); delay(tau3); delay(gt1 +gstab +8.0e-6 - 1.0e-3 - 2.0*pw); dec2rgpulse(2.0*pwN, t4, 2.0e-6, 2.0e-6); dec2phase(t5); zgradpulse(gzlvl1, gt1); delay(gstab + WFG_START_DELAY + WFG_STOP_DELAY - 2.0*GRADIENT_DELAY); sim3pulse(pw, 0.0, pwN, zero, zero, t5, 2.0e-6, 2.0e-6); dec2phase(zero); zgradpulse(gzlvl8, gt8); delay(tauNH - gt8 - 2.0*GRADIENT_DELAY -4.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(tauNH - gt8 - gstab -4.0e-6 - 2.0*GRADIENT_DELAY); zgradpulse(gzlvl8, gt8); txphase(one); dec2phase(one); delay(gstab); sim3pulse(pw, 0.0, pwN, one, zero, one, 2.0e-6, 2.0e-6); txphase(zero); dec2phase(zero); zgradpulse(gzlvl9, gt9); delay(tauNH - gt9 - 2.0*GRADIENT_DELAY -4.0e-6); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(tauNH - gt9 - 2.0*GRADIENT_DELAY -gstab -4.0e-6); zgradpulse(gzlvl9, gt9); delay(gstab); rgpulse(pw, zero, 2.0e-6, 2.0e-6); delay((gt1/10.0) +gstab -2.0e-6 - 0.5*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2.0*pw, zero, 2.0e-6, 2.0e-6); zgradpulse(icosel*gzlvl2, gt1/10.0); dec2power(dpwr2); delay(gstab); status(C); setreceiver(t11); }
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 */ c180_flg[MAXSTR], codecseq[MAXSTR], mess_flg[MAXSTR], ch_shp1[MAXSTR], /* shape for the 1st purge CHIRP */ ch_shp2[MAXSTR], /* shape for the 2nd purge CHIRP */ chshpi[MAXSTR]; /* shape for the INEPT CHIRPs */ int phase, phase2, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ ni2, mix, /* mixing time in seconds */ pwC, /* PW90 for c nucleus @ pwClvl */ pwcodec, /* PW for C' nucleus @ dpwrco seduce dec */ tsatpwr, /* low level 1H trans.power for presat */ pwClvl, /* power level for 13C pulses on dec1 */ dpwrco, /* power level for C' seduce decoupling */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ tofps, /* tof for presat */ dressed, /* decoupler resolution for seduce decoupling */ tpwrmess, /* power level for Messerlie purge */ dly_pg1, /* duration of first part of purge */ dly_wt, taua1, /* Delay for the first purge CHIRP */ taua2, /* Delay for the second purge CHIRP */ pwchirp1, /* duration of the 1st purge CHIRP */ pwchirp2, /* duration of the 2nd purge CHIRP */ d_me1, /* time difference between start of the sweep and the excitation of the methyl region automatically calculated by the program necessary parameter diff (see below) */ d_me2, /* time difference between start of the sweep and the excitation of the methyl region automatically calculated by the program necessary parameter diff (see below) */ dchrp1, /* power for the 1st purge CHIRP pulse, only lower limit is important (see above!) */ dchrp2, /* power for the 2nd purge CHIRP pulse, only lower limit is important (see above!) */ dmfchp1, /* dmf (1/90) for the 1st purge CHIRP pulse dmfchp1 = 1/time_step of chirp-pulse [time_step = pwchirp1/no. of points in the .DEC-shape] */ dmfchp2, /* dmf (1/90) for the 1st purge CHIRP pulse dmfchp2 = 1/time_step of chirp-pulse [time_step = pwchirp2/no. of points in the .DEC-shape] */ dres_chp, /* dres for the chirp pulse (must be set to 90, otherwise timing errors! ) */ diff1, /* shift differences between methyl region and start of sweep */ diff2, /* shift differences between methyl region and start of sweep */ rate1, /* sweep rate of the 1st purge CHIRP pulse frequency sweep/pwchirp1 */ rate2, /* sweep rate of the 2nd purge CHIRP pulse frequency sweep/pwchirp2 */ dchrpi, dmfchpi, pwchirpi, /* INEPT CHIRP duration */ ratei, diffi, tauf, d_mei, compC, /* C-13 RF calibration parameters */ gt0, gt1, gt2, gt3, gt4, gt5, gt8, gt9, gt10, gt11, gstab, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl8, gzlvl9, gzlvl10, gzlvl11; /* 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("c180_flg",c180_flg); getstr("mess_flg",mess_flg); tofps = getval("tofps"); mix = getval("mix"); pwC = getval("pwC"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); pwClvl = getval("pwClvl"); dpwr = getval("dpwr"); dpwr2 = getval("dpwr2"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni2 = getval("ni2"); tpwrmess = getval("tpwrmess"); dly_pg1 = getval("dly_pg1"); dly_wt = getval("dly_wt"); taua1 = getval("taua1"); taua2 = getval("taua2"); rate1 = getval("rate1"); rate2 = getval("rate2"); diff1 = getval("diff1"); diff2 = getval("diff2"); diffi = getval("diffi"); ratei = getval("ratei"); tauf = getval("tauf"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt8 = getval("gt8"); gt9 = getval("gt9"); gt10 = getval("gt10"); gt11 = getval("gt11"); gstab = getval("gstab"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl8 = getval("gzlvl8"); gzlvl9 = getval("gzlvl9"); gzlvl10 = getval("gzlvl10"); gzlvl11 = getval("gzlvl11"); if(autocal[0]=='n') { getstr("codecseq",codecseq); dressed = getval("dressed"); pwcodec = getval("pwcodec"); dpwrco = getval("dpwrco"); getstr("ch_shp1",ch_shp1); getstr("ch_shp2",ch_shp2); pwchirp1 = getval("pwchirp1"); pwchirp2 = getval("pwchirp2"); dchrp1 = getval("dchrp1"); dchrp2 = getval("dchrp2"); dmfchp1 = getval("dmfchp1"); dmfchp2 = getval("dmfchp2"); dres_chp = getval("dres_chp"); getstr("chshpi",chshpi); dchrpi = getval("dchrpi"); dmfchpi = getval("dmfchpi"); pwchirpi = getval("pwchirpi"); } else { strcpy(codecseq,"Psed_108p"); strcpy(ch_shp1,"Pwurst180_1"); strcpy(ch_shp2,"Pwurst180_2"); strcpy(chshpi,"Pwurst180i"); if (FIRST_FID) { compC = getval("compC"); codec = pbox(codecseq, CODEC, CODECps, dfrq, compC*pwC, pwClvl); chirp1 = pbox(ch_shp1, CHIRP1, CHIRPps, dfrq, compC*pwC, pwClvl); chirp2 = pbox(ch_shp2, CHIRP2, CHIRPps, dfrq, compC*pwC, pwClvl); chirpi = pbox(chshpi, CHIRPi, CHIRPps, dfrq, compC*pwC, pwClvl); } dpwrco = codec.pwr; pwcodec = 1.0/codec.dmf; dressed = codec.dres; dchrp1 = chirp1.pwr; dmfchp1 = chirp1.dmf; pwchirp1 = chirp1.pw; dres_chp = chirp1.dres; dchrp2 = chirp1.pwr; dmfchp2 = chirp2.dmf; pwchirp2 = chirp2.pw; dchrpi = chirpi.pwr; dmfchpi = chirpi.dmf; pwchirpi = chirpi.pw; } /* LOAD PHASE TABLE */ settable(t1,8,phi1); settable(t2,16,phi2); settable(t4,16,rec); settable(t5,4,phi5); settable(t6,2,phi6); settable(t7,4,phi7); /* CHECK VALIDITY OF PARAMETER RANGES */ 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! Should be 'nnn' "); psg_abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 50 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwrco > 50 ) { printf("don't fry the probe, dpwrco too large! "); psg_abort(1); } if( dpwr2 > 46 ) { 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( pwC > 200.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( pwcodec < 300.0e-6 ) { printf("dont fry the probe, pwcodec too high ! "); psg_abort(1); } if ( tpwrmess > 56 ) { printf("dont fry the probe, tpwrmess too high ! "); psg_abort(1); } if ( dly_pg1 > 0.010) { printf("dont fry the probe, dly_pg1 too long ! "); psg_abort(1); } if( gt0 > 15e-3 || gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt8 > 15e-3 || gt9 > 15e-3 || gt10 > 15e-3 || gt11 > 15e-3 ) { printf("gti values < 15e-3\n"); psg_abort(1); } if( gzlvl3*gzlvl4 > 0.0 ) { printf("gt3 and gt4 must be of opposite sign \n"); printf("for optimal water suppression\n"); psg_abort(1); } if( dchrp1 > 60 ) { printf("don't fry the probe, dchrp1 too large! "); psg_abort(1); } if( dchrp2 > 60 ) { printf("don't fry the probe, dchrp2 too large! "); psg_abort(1); } if( pwchirp1 > 10.e-03 ) { printf("don't fry the probe, pwchirp1 too large! "); psg_abort(1); } if( pwchirp2 > 10.e-03 ) { printf("don't fry the probe, pwchirp2 too large! "); psg_abort(1); } d_me1 = diff1/rate1 ; d_me2 = diff2/rate2 ; if( d_me1 > 10.e-03 ) { printf("don't fry the probe, d_me1 too large \n"); printf(" (must be less than 10 msec)! "); psg_abort(1); } if( d_me2 > 10.e-03 ) { printf("don't fry the probe, d_me2 too large \n"); printf(" (must be less than 10 msec)! "); psg_abort(1); } if( d_me1 > pwchirp1 ) { printf("impossible; d_me1 > pwchirp1 ! "); psg_abort(1); } if( d_me2 > pwchirp2 ) { printf("impossible; d_me2 > pwchirp2 ! "); psg_abort(1); } if( dchrpi > 60 ) { printf("dont fry the probe, dchrpi too large\n"); psg_abort(1); } if(pwchirpi > 10.0e-3) { printf("don't fry the probe, pwchirpi too large! "); psg_abort(1); } d_mei = diffi/ratei; /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) tsadd(t1,1,4); if (phase2 == 2) tsadd(t2,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) - 4.0/PI*pw - 2.0e-6 ); } else tau1 = tau1 - 4.0/PI*pw - 2.0e-6; if(tau1 < 0.2e-6) tau1 = 2.0e-7; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) - (4.0/PI)*pwC - 2.0*pw - PRG_START_DELAY - PRG_STOP_DELAY - 2.0*POWER_DELAY - 4.0e-6); } else tau2 = tau2 - ((4.0/PI)*pwC + 2.0*pw + PRG_START_DELAY + PRG_STOP_DELAY + 2.0*POWER_DELAY + 4.0e-6); if(tau2 < 0.2e-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(t4,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t4,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); delay(5.0e-6); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ delay(5.0e-6); /* Presaturation Period */ if (mess_flg[A] == 'y') { obsoffset(tofps); obspower(tpwrmess); txphase(zero); rgpulse(dly_pg1,zero,2.0e-6,2.0e-6); txphase(one); rgpulse(dly_pg1/1.62,one,2.0e-6,2.0e-6); obspower(tsatpwr); } if (fsat[0] == 'y') { obsoffset(tofps); delay(2.0e-5); 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 */ obsoffset(tof); decphase(zero); /* Begin Pulses */ status(B); rcvroff(); delay(10.0e-6); rgpulse(pw,t6,4.0e-6,0.0); /* 90 deg 1H pulse */ txphase(zero); decphase(zero); delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(gstab); delay(taua1 - gt8 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - PRG_START_DELAY - d_me1); /* 1st purge CHIRP inversion on */ decpower(dchrp1); /* Set power for 1st purge CHIRP inversion */ delay(4.0e-6); decprgon(ch_shp1,1.0/dmfchp1,dres_chp); decon(); delay(d_me1); rgpulse(2*pw,zero,0.0,0.0); /* 1H inversion pulse */ delay(pwchirp1 - d_me1 - 2*pw); decoff(); decprgoff(); /* chirp inversion off */ delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(gstab); delay(taua1 + 2*pw - (pwchirp1 - d_me1) - PRG_STOP_DELAY - gt8 - gstab -2.0e-6); rgpulse(pw,zero,0.0,0.0); txphase(t7); delay(2.0e-6); zgradpulse(gzlvl9,gt9); delay(2.0*gstab); rgpulse(pw,t7,0.0,0.0); /* PHASE t7 = 2(x),2(-x)*/ delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(gstab); decphase(zero); txphase(zero); delay(taua2 - gt11 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - PRG_START_DELAY - d_me2); /* Second chirp inversion on */ decpower(dchrp2); /* Set power for chirp inversion */ delay(4.0e-6); decprgon(ch_shp2,1.0/dmfchp2,dres_chp); decon(); delay(d_me2); rgpulse(2*pw,zero,0.0,0.0); /* 1H inversion pulse */ delay(pwchirp2 - d_me2 - 2*pw); decoff(); decprgoff(); /* Second purge CHIRP off */ delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(gstab); txphase(zero); delay(taua2 + 2*pw - (pwchirp2 - d_me2) - PRG_STOP_DELAY - gt11 - gstab -2.0e-6 ); rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(2.0*gstab); rgpulse(pw,t1,4.0e-6,0.0); delay(tau1); rgpulse(pw,zero,2.0e-6,0.0); delay(mix - 10.0e-3); delay(2.0e-6); zgradpulse(gzlvl0,gt0); decpower(pwClvl); /* Set power for hard pulses */ delay(4.0e-6); decrgpulse(pwC,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(2.0e-6); decphase(zero); delay(10.0e-3 - gt1 - gt0 - 8.0e-6); rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(gstab); decphase(zero); delay(tauf - gt2 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - PRG_START_DELAY - d_mei); /* INEPT CHIRP inversion on */ decpower(dchrpi); /* Set power for chirp inversion */ delay(4.0e-6); decprgon(chshpi,1.0/dmfchpi,dres_chp); decon(); delay(d_mei); rgpulse(2*pw,zero,0.0,0.0); /* 1H inversion pulse */ delay(pwchirpi - d_mei - 2*pw); decoff(); decprgoff(); /* chirp inversion off */ delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(gstab); txphase(one); delay(tauf + 2*pw - (pwchirpi - d_mei) - PRG_STOP_DELAY - gt2 - gstab -2.0e-6 ); rgpulse(pw,one,0.0,0.0); txphase(zero); decphase(t2); decpower(pwClvl); /* Set power for C13 hard pulse */ delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(200.0e-6); decrgpulse(pwC,t2,0.0,0.0); decphase(zero); if( c180_flg[A] == 'n' ) { delay(2.0e-6); /* CO decoupling on */ decpower(dpwrco); decprgon(codecseq,pwcodec,dressed); decon(); /* CO decoupling on */ delay(tau2); rgpulse(2*pw,zero,0.0,0.0); delay(tau2); /* CO decoupling off */ decoff(); decprgoff(); decpower(pwClvl); /* CO decoupling off */ delay(2.0e-6); } else simpulse(2*pw,2*pwC,zero,zero,2.0e-6,2.0e-6); decrgpulse(pwC,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(200.0e-6); rgpulse(pw,t5,2.0e-6,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); decphase(zero); delay(tauf - gt5 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - PRG_START_DELAY - d_mei); /* 2nd INEPT CHIRP inversion on */ decpower(dchrpi); /* Set power for chirp inversion */ delay(4.0e-6); decprgon(chshpi,1.0/dmfchpi,dres_chp); decon(); delay(d_mei); rgpulse(2*pw,zero,0.0,0.0); /* 1H inversion pulse */ delay(pwchirpi - d_mei - 2*pw); decoff(); decprgoff(); /* chirp inversion off */ delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); decpower(dpwr); /* Set power for decoupling */ txphase(t5); delay(tauf + 2*pw - (pwchirpi - d_mei) - PRG_STOP_DELAY - gt5 - gstab -2.0e-6 - 2*POWER_DELAY); rgpulse(pw,t5,0.0,0.0); /* BEGIN ACQUISITION */ status(C); setreceiver(t4); }
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() { int t1_counter; char CCLS[MAXSTR], /* C13 refocussing pulse in middle of t1 */ wtg3919[MAXSTR], f1180[MAXSTR]; /* Flag to start t1 @ halfdwell */ double timeCT=getval("timeCT"), tauxh, tau1, gzlvl3=getval("gzlvl3"), gzlvl4=getval("gzlvl4"), gt3=getval("gt3"), gt4=getval("gt4"), gstab=getval("gstab"), /* gradient recovery delay */ JNH = getval("JNH"), pwN = getval("pwN"), pwNlvl = getval("pwNlvl"), pwHs, tpwrs=0.0, compH=1.0, /* H1 90 degree pulse length at tpwrs */ sw1 = getval("sw1"), /* temporary Pbox parameters */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"); /* C13 90 degree pulse length at pwClvl */ getstr("CCLS",CCLS); getstr("wtg3919",wtg3919); getstr("f1180",f1180); /* check validity of parameter range */ 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') ) { text_error("incorrect Dec2 decoupler flags! "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, dpwr2 too large! "); psg_abort(1); } /* INITIALIZE VARIABLES */ if(wtg3919[0] != 'y') /* selective H20 one-lobe sinc pulse needs 1.69 */ { /* times more power than a square pulse */ pwHs = getval("pwHs"); compH = getval("compH"); } else pwHs = pw*2.385+7.0*rof1+d3*2.5; tauxh = ((JNH != 0.0) ? 1/(4*(JNH)) : 2.25e-3); setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { if(wtg3919[0] != 'y') /* selective H20 one-lobe sinc pulse needs 1.69 */ { /* times more power than a square pulse */ if (pwHs > 1e-6) tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); else tpwrs = 0.0; tpwrs = (int) (tpwrs); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { if(wtg3919[0] != 'y') H2Osinc = pbox_Rsh("H2Osinc", "sinc90", pwHs, 0.0, compH*pw, tpwr); } if (wtg3919[0] != 'y') { pwHs = H2Osinc.pw; tpwrs = H2Osinc.pwr-1.0; } /* 1dB correction applied */ } /* LOAD VARIABLES */ if(ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5); /* 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; /* LOAD PHASE TABLES */ assign(one,v7); assign(three,v8); settable(t1, 4, phi1); settable(t2, 2, phi2); settable(t3, 8, phi3); settable(t4, 16, phi4); settable(t5, 8, rec); if ( phase1 == 2 ) tsadd(t2, 1, 4); if(t1_counter %2) /* calculate modification to phases based on */ { tsadd(t2,2,4); tsadd(t5,2,4); } /* current t1 values */ if(wtg3919[0] != 'y') { add(one,v7,v7); add(one,v8,v8); } /* sequence starts!! */ status(A); obspower(tpwr); dec2power(pwNlvl); decpower(pwClvl); decpwrf(4095.0); delay(d1); status(B); rgpulse(pw, zero, rof1, rof1); zgradpulse(0.3*gzlvl3,gt3); txphase(zero); dec2phase(zero); delay(tauxh-gt3); /* delay=1/4J(XH) */ sim3pulse(2*pw,0.0,2*pwN,t4,zero,zero,rof1,rof1); zgradpulse(0.3*gzlvl3,gt3); dec2phase(t2); delay(tauxh-gt3 ); /* delay=1/4J(XH) */ rgpulse(pw, t1, rof1, rof1); decphase(zero); txphase(t4); zgradpulse(gzlvl3,gt3); delay(gstab); dec2rgpulse(pwN, t2, rof1, rof1); /* CT EVOLUTION BEGINS */ dec2phase(t3); delay(timeCT -SAPS_DELAY -tau1); if (CCLS[A]=='y') { sim3pulse(0.0, 2.0*pwC, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(timeCT -2.0*pw); rgpulse(2.0*pw, t4, 0.0, 0.0); } else { dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(timeCT -2.0*pwC); simpulse(2.0*pw, 2.0*pwC, t4, zero, 0.0, 0.0); } delay(tau1); /* CT EVOLUTION ENDS */ dec2rgpulse(pwN, t3, rof1, rof1); zgradpulse(gzlvl3,gt3); delay(gstab); rgpulse(pw, two, rof1, rof1); decrgpulse(pwC, zero, rof1, rof1); zgradpulse(gzlvl4,gt4); txphase(v7); dec2phase(zero); delay(tauxh -gt4 -pwHs -rof1 -2.0*pwC -2.0*rof1); if(wtg3919[0] == 'y') { rgpulse(pw*0.231,v7,rof1,rof1); delay(d3); rgpulse(pw*0.692,v7,rof1,rof1); delay(d3); rgpulse(pw*1.462,v7,rof1,rof1); delay(d3/2-pwN); dec2rgpulse(2*pwN, zero, rof1, rof1); txphase(v8); delay(d3/2-pwN); rgpulse(pw*1.462,v8,rof1,rof1); delay(d3); rgpulse(pw*0.692,v8,rof1,rof1); delay(d3); rgpulse(pw*0.231,v8,rof1,rof1); } else { obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, v7, rof1, 0.0); obspower(tpwr); sim3pulse(2.0*pw, 0.0, 2.0*pwN, v8, zero, zero, 0.0, 0.0); obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, v7, rof1, 0.0); obspower(tpwr); } zgradpulse(gzlvl4,gt4); delay(tauxh -gt4 -pwHs -rof1 -POWER_DELAY); dec2power(dpwr2); status(C); setreceiver(t5); }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), mixT = getval("mixT"), gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gzlvl2 = getval("gzlvl2"), gt2 = getval("gt2"), gstab = getval("gstab"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), selfrq = getval("selfrq"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), zqfpw2 = getval("zqfpw2"), zqfpwr2 = getval("zqfpwr2"), gzlvlzq1 = getval("gzlvlzq1"), gzlvlzq2 = getval("gzlvlzq2"); char slpatT[MAXSTR], selshapeA[MAXSTR], selshapeB[MAXSTR], zqfpat1[MAXSTR], zqfpat2[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatT",slpatT); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat1",zqfpat1); getstr("zqfpat2",zqfpat2); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ ifzero(ssctr); assign(ct,v13); elsenz(ssctr); sub(ssval, ssctr, v13); /* v13 = 0,...,ss-1 */ endif(ssctr); mod4(v13,v1); /* v1 = 0 1 2 3 */ hlv(v13,v13); hlv(v13,v13); mod4(v13,v11); /* v11 = 0000 1111 2222 3333 */ dbl(v1,oph); add(v11,oph,oph); add(v11,oph,oph); /* oph = 2v1 + 2v11 */ /* CYCLOPS */ hlv(v13,v13); hlv(v13,v14); add(v1,v14,v1); add(v11,v14,v11); add(oph,v14,oph); assign(v14,v3); add(one,v3,v3); add(two,v3,v12); sub(v3,one,v2); add(v3,one,v4); add(v3,two,v5); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v6,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw, v14, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v1,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlA,gtA); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v11,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlB,gtB); delay(gstab); if (selfrq != tof) obsoffset(tof); rgpulse(pw, v14, rof1, rof1); if (getflag("Gzqfilt")) { obspower(zqfpwr1); rgradient('z',gzlvlzq1); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,v14,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); } obspower(slpwrT); zgradpulse(gzlvl1,gt1); delay(gstab); if (mixT > 0.0) { if (dps_flag) rgpulse(mixT,v3,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v2,v3,v4,v5, v9); } if (getflag("Gzqfilt")) { obspower(zqfpwr2); rgradient('z',gzlvlzq2); delay(100.0e-6); shaped_pulse(zqfpat2,zqfpw2,v14,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); } obspower(tpwr); zgradpulse(gzlvl2,gt2); delay(gstab); rgpulse(pw,v14,rof1,rof2); status(C); }
pulsesequence() { double gtE = getval("gtE"), gzlvlE=getval("gzlvlE"), selpwrPS = getval("selpwrPS"), selpwPS = getval("selpwPS"), gzlvlPS = getval("gzlvlPS"), droppts=getval("droppts"), gstab = getval("gstab"); int prgcycle=(int)(getval("prgcycle")+0.5); char selshapePS[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",1.0); gzlvlE = syncGradLvl("gtE","gzlvlE",1.0); getstr("selshapePS",selshapePS); assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1,4,ph1); settable(t2,32,ph2); settable(t3,8,ph3); settable(t4,16,ph4); getelem(t1,v17,v1); getelem(t2,v17,v2); getelem(t3,v17,v3); getelem(t4,v17,v4); assign(v4,oph); assign(v1,v6); add(oph,v18,oph); add(oph,v19,oph); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,v6); if (getflag("prgflg")) shaped_purge(v1,v6,v18,v19); } else { satpulse(satdly,v6,rof1,rof1); if (getflag("prgflg")) purge(v1,v6,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); obspower(tpwr); rgpulse(pw, v1, rof1, rof2); delay(d2/2.0); delay((0.25/sw1) - gtE - gstab - 2*pw/PI - rof2 - 2*GRADIENT_DELAY); zgradpulse(gzlvlE,gtE); delay(gstab); rgpulse(2*pw,v2,rof1,rof1); delay(0.25/sw1); delay(gstab); zgradpulse(-1.0*gzlvlE,gtE); delay(gstab); obspower(selpwrPS); rgradient('z',gzlvlPS); shaped_pulse(selshapePS,selpwPS,v3,rof1,rof1); rgradient('z',0.0); obspower(tpwr); delay(gstab); zgradpulse(-2.0*gzlvlE,gtE); delay(gstab - droppts/sw); delay(d2/2.0); status(C); }
void pulsesequence() { double slpwrR = getval("slpwrR"), slpwR = getval("slpwR"), mixR = getval("mixR"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gstab = getval("gstab"), selfrq = getval("selfrq"), gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gzlvl2 = getval("gzlvl2"), gt2 = getval("gt2"), zqfpw1 = getval("zqfpw1"), zqfpwr1 = getval("zqfpwr1"), gzlvlzq1 = getval("gzlvlzq1"), phincr1 = getval("phincr1"); char selshapeA[MAXSTR],selshapeB[MAXSTR], slpatR[MAXSTR], zqfpat1[MAXSTR], alt_grd[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatR",slpatR); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat1",zqfpat1); getstr("alt_grd",alt_grd); if (strcmp(slpatR,"cw") && strcmp(slpatR,"troesy") && strcmp(slpatR,"dante")) abort_message("SpinLock pattern %s not supported!.\n", slpatR); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ assign(ct,v17); ifzero(ssctr); assign(v17,v13); elsenz(ssctr); /* purge option does not adjust v13 during steady state */ sub(ssval, ssctr, v13); endif(ssctr); /* Beginning phase cycling */ dbl(v13,v1); /* v1 = 0 2 */ hlv(v13,v13); dbl(v13,v20); /* v20 = 00 22 */ hlv(v13,v13); dbl(v13,v6); /* v6 = 0000 2222 */ hlv(v13,v13); dbl(v13,v7); /* v7 = 00000000 22222222 */ assign(v1,oph); if (getflag("Gzqfilt")) add(v7,oph,oph); /* CYCLOPS */ assign(v13,v14); /* v14 = 8x0 8x1 8x2 8x3 */ if (getflag("Gzqfilt")) hlv(v13,v14); /* v14 = 16x0 16x1 16x2 16x3 */ add(v1,v14,v1); add(v20,v14,v20); add(v6,v14,v6); add(v7,v14,v7); add(oph,v14,oph); /* add(oph,v18,oph); add(oph,v19,oph); */ assign(zero,v9); mod2(ct,v2); /* 01 01 */ hlv(ct,v11); hlv(v11,v11); mod2(v11,v11); dbl(v11,v11); /* 0000 2222 */ add(v11,v2,v11); mod4(v11,v11); /* 0101 2323 first echo in Excitation Sculpting */ hlv(ct,v4); mod2(v4,v4); /* 0011 */ hlv(ct,v12); hlv(v12,v12); hlv(v12,v12); dbl(v12,v12); add(v12,v4,v12); mod4(v12,v12); /* 0011 0011 2233 2233 second echo in Excitation Sculpting */ dbl(v2,v2); /* 0202 */ dbl(v4,v4); /* 0022 */ add(v2,v4,v4); /* 0220 correct oph for Excitation Sculpting */ add(oph,v4,oph); mod4(oph,oph); if (!strcmp(slpatR,"troesy")) assign(v20,v21); else add(v20,one,v21); if (alt_grd[0] == 'y') mod2(ct,v8); /* alternate gradient sign on even scans */ /* The following is for flipback pulse */ if (phincr1 < 0.0) phincr1=360+phincr1; initval(phincr1,v5); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); if (getflag("lkgate_flg")) lk_sample(); /* turn lock sampling on */ obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); delay(d1); if (getflag("lkgate_flg")) lk_hold(); /* turn lock sampling off */ status(B); if (getflag("cpmgflg")) { rgpulse(pw, v1, rof1, 0.0); cpmg(v1, v15); } else rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); ifzero(v8); zgradpulse(gzlvlA,gtA); elsenz(v8); zgradpulse(-gzlvlA,gtA); endif(v8); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v14,rof1,rof1); obspower(tpwr); ifzero(v8); zgradpulse(gzlvlA,gtA); elsenz(v8); zgradpulse(-gzlvlA,gtA); endif(v8); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); ifzero(v8); zgradpulse(gzlvlB,gtB); elsenz(v8); zgradpulse(-gzlvlB,gtB); endif(v8); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v6,rof1,rof1); obspower(slpwrR); ifzero(v8); zgradpulse(gzlvlB,gtB); elsenz(v8); zgradpulse(-gzlvlB,gtB); endif(v8); delay(gstab); if (selfrq != tof) obsoffset(tof); if (mixR > 0.0) { if (dps_flag) rgpulse(mixR,v21,0.0,0.0); else SpinLock(slpatR,mixR,slpwR,v21); } if (getflag("Gzqfilt")) { obspower(tpwr); rgpulse(pw,v7,rof1,rof1); ifzero(v8); zgradpulse(gzlvl1,gt1); elsenz(v8); zgradpulse(-gzlvl1,gt1); endif(v8); delay(gstab); obspower(zqfpwr1); ifzero(v8); rgradient('z',gzlvlzq1); elsenz(v8); rgradient('z',-gzlvlzq1); endif(v8); delay(100.0e-6); shaped_pulse(zqfpat1,zqfpw1,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); delay(gstab); ifzero(v8); zgradpulse(-gzlvl2,gt2); elsenz(v8); zgradpulse(gzlvl2,gt2); endif(v8); obspower(tpwr); delay(gstab); if (getflag("flipback")) FlipBack(v14,v5); rgpulse(pw,v14,rof1,2.0e-6); } ExcitationSculpting(v11,v12,v8); delay(rof2); status(C); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ imino[MAXSTR], amino[MAXSTR], mag_flg[MAXSTR], /*magic-angle coherence transfer gradients */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ C13refoc[MAXSTR], /* C13 sech/tanh pulse in middle of t1*/ NH2only[MAXSTR]; /* spectrum of only NH2 groups */ int icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ mix = getval("mix"), /* NOESY mix time */ tau2, /* t2 delay */ lambda = 0.94/(4.0*getval("JNH")), /* 1/4J H1 evolution delay */ tNH = 1.0/(4.0*getval("JNH")), /* 1/4J N15 evolution delay */ /* 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 */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrs, /* power for the pwHs ("H2Osinc") pulse */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gzcal=getval("gzcal"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl6 = getval("gzlvl6"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"); getstr("f1180",f1180); getstr("imino",imino); getstr("amino",amino); getstr("mag_flg",mag_flg); getstr("f2180",f2180); getstr("C13refoc",C13refoc); getstr("NH2only",NH2only); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t3,4,phi3); settable(t9,16,phi9); settable(t10,1,phi10); settable(t11,8,rec); /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses (and initialize rfst) */ rf0 = 4095.0; rfst=0.0; /* 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 */ /* CHECK VALIDITY OF PARAMETER RANGES */ if ( (mix - gt4 - gt5) < 0.0 ) { text_error("mix is too small. Make mix equal to %f or more or reduce gt4+gt5.\n",(gt4 + gt5)); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 20.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t1,1,4); if (phase2 == 1) { tsadd(t10,2,4); icosel = 1; } else icosel = -1; /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t11,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } /* Correct inverted signals for NH2 only spectra */ if (NH2only[A]=='y') { tsadd(t3,2,4); } if ( ((imino[A]=='y') && (amino[A]=='y')) ) { printf(" Choose ONE of imino='y' OR amino='y' "); psg_abort(1); } if ( ((imino[A]=='y') && (NH2only[A]=='y')) ) { printf(" NH2only='y' only for amino='y'! "); psg_abort(1); } /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); if (imino[A] == 'y') dec2offset(dof2 - 45*dfrq2); if (amino[A] == 'y') dec2offset(dof2 - 115*dfrq2); decpwrf(rf0); txphase(zero); dec2phase(zero); delay(d1); dec2rgpulse(pwN, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ decrgpulse(pwC, zero, 0.0, 0.0); zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); txphase(t1); decphase(zero); dec2phase(zero); initval(135.0,v1); obsstepsize(1.0); xmtrphase(v1); delay(5.0e-4); rcvroff(); rgpulse(pw, t1, 50.0e-6, 0.0); /* 1H pulse excitation */ xmtrphase(zero); /* SAPS_DELAY */ txphase(zero); if (C13refoc[A]=='y') {decpower(pwClvl-3.0); dec2power(pwNlvl-3.0);} if (tau1 > (2.0*GRADIENT_DELAY + pwN*1.4 + 0.64*pw + 5.0*SAPS_DELAY)) { if (C13refoc[A]=='y') { zgradpulse(gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - 1.4*pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - 1.4*pwN - 0.64*pw) - SAPS_DELAY); sim3pulse(0.0, 2.0*pwC*1.4, 2.0*pwN*1.4, zero, zero, zero, 0.0, 0.0); zgradpulse(-1.0*gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - 1.4*pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - 1.4*pwN - 0.64*pw)); } else { zgradpulse(gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw) - SAPS_DELAY); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); zgradpulse(-1.0*gzlvl6, 0.8*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw)); delay(0.2*(tau1 - 2.0*GRADIENT_DELAY - pwN - 0.64*pw)); } } else if (tau1 > (0.64*pw + 0.5*SAPS_DELAY)) delay(2.0*tau1 - 2.0*0.64*pw - SAPS_DELAY ); rgpulse(pw, zero, 0.0, 0.0); if (C13refoc[A]=='y') {decpower(pwClvl); dec2power(pwNlvl);} delay(mix - gt4 - gt5 -400.0e-6); zgradpulse(gzlvl4, gt4); dec2rgpulse(pwN, zero, 200.0e-6, 0.0); zgradpulse(gzlvl5, gt5); rgpulse(pw, zero, 200.0e-6,0.0); /* HSQC begins */ dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(two); obspower(tpwrs); shaped_pulse("H2Osinc", pwHs, two, 5.0e-4, 0.0); obspower(tpwr); zgradpulse(gzlvl3, gt3); dec2phase(t3); decpwrf(rfst); delay(2.0e-4); dec2rgpulse(pwN, t3, 0.0, 0.0); decphase(zero); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ txphase(zero); dec2phase(t9); if (NH2only[A]=='y') { delay(tau2); /* optional sech/tanh pulse in middle of t2 */ if (C13refoc[A]=='y') /* WFG_START_DELAY */ {decshaped_pulse("stC200", 1.0e-3, zero, 0.0, 0.0); delay(tNH - 1.0e-3 - WFG_START_DELAY - 2.0*pw);} else {delay(tNH - 2.0*pw);} rgpulse(2.0*pw, zero, 0.0, 0.0); if (tNH < gt1 + 1.99e-4) delay(gt1 + 1.99e-4 - tNH); delay(tau2); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1, gt1); } dec2phase(t10); if (tNH > gt1 + 1.99e-4) delay(tNH - gt1 - 2.0*GRADIENT_DELAY); else delay(1.99e-4 - 2.0*GRADIENT_DELAY); } else { if ( (C13refoc[A]=='y') && (tau2 > 0.5e-3 + WFG2_START_DELAY) ) {delay(tau2 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ simshaped_pulse("", "stC200", 2.0*pw, 1.0e-3, zero, zero, 0.0, 0.0); delay(tau2 - 0.5e-3); delay(gt1 + 2.0e-4);} else {delay(tau2); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(gt1 + 2.0e-4 - 2.0*pw); delay(tau2);} dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl1, gt1); } else { zgradpulse(gzlvl1, gt1); } dec2phase(t10); delay(2.0e-4 - 2.0*GRADIENT_DELAY); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ sim3pulse(pw, 0.0, pwN, zero, zero, t10, 0.0, 0.0); dec2phase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 1.5*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(one); delay(lambda - 1.5*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, one, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - 1.5*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - pwN - 0.5*pw - gt5); rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 - 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); } rcvron(); statusdelay(C,1.0e-4-rof1); setreceiver(t11); }
pulsesequence() { double pwx2lvl, pwx2, hsglvl, hsgt, satfrq, satdly, satpwr, slpw, slpwr, trim, mix, mult, cycles, tau, j1xh, null, phase; int iphase; char sspul[MAXSTR], nullflg[MAXSTR], PFGflg[MAXSTR], satmode[MAXSTR]; mix = getval("mix"); slpwr = getval("slpwr"); slpw = getval("slpw"); trim = getval("trim"); mult = getval("mult"); pwx2lvl = getval("pwx2lvl"); pwx2 = getval("pwx2"); hsglvl = getval("hsglvl"); hsgt = getval("hsgt"); getstr("PFGflg",PFGflg); getstr("nullflg",nullflg); satfrq = getval("satfrq"); satdly = getval("satdly"); satpwr = getval("satpwr"); null = getval("null"); j1xh = getval("j1xh"); tau = 1/(4*j1xh); phase = getval("phase"); getstr("satmode",satmode); getstr("sspul",sspul); iphase = (int) (phase + 0.5); cycles = (mix - trim ) / (96.66*slpw); cycles = 2.0*(double) (int) (cycles/2.0); initval(cycles, v9); settable(t1,4,ph1); settable(t2,2,ph2); settable(t3,8,ph3); settable(t4,16,ph4); settable(t5,16,ph5); getelem(t2,ct,v2); getelem(t5,ct,oph); initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); if (iphase == 2) incr(v2); add(v2,v14,v2); add(oph,v14,oph); status(A); dec2power(pwx2lvl); obspower(tpwr); if (sspul[0] == 'y') { if (PFGflg[0] == 'y') { zgradpulse(hsglvl,hsgt); rgpulse(pw,zero,rof1,rof1); zgradpulse(hsglvl,hsgt); } else { obspower(tpwr-12); rgpulse(500*pw,zero,rof1,rof1); rgpulse(500*pw,one,rof1,rof1); obspower(tpwr); } } delay(d1); if (satmode[0] == 'y') { obspower(satpwr); if (satfrq != tof) obsoffset(satfrq); rgpulse(satdly,zero,rof1,rof1); if (satfrq != tof) obsoffset(tof); obspower(tpwr); delay(1.0e-5); } status(B); if (PFGflg[0] == 'y') { if (nullflg[0] == 'y') { rgpulse(0.5*pw,zero,rof1,rof1); delay(2*tau); sim3pulse(2.0*pw,0.0,2.0*pwx2,zero,zero,zero,rof1,rof1); delay(2*tau); rgpulse(1.5*pw,two,rof1,rof1); zgradpulse(hsglvl,hsgt); delay(1e-3); } } else { if (null != 0.0) { rgpulse(pw,zero,rof1,rof1); delay(2*tau); sim3pulse(2*pw,0.0,2*pwx2,zero,zero,zero,rof1,rof1); delay(2*tau); rgpulse(pw,two,rof1,rof1); delay(null); } } rcvroff(); rgpulse(pw,zero,rof1,rof1); delay(tau - pwx2 - 2*pw/PI - 2*rof1); sim3pulse(2*pw,0.0,2*pwx2,zero,zero,zero,rof1,rof1); delay(tau - pwx2 - 2*pwx2/PI - 2*rof1); sim3pulse(pw,0.0,pwx2,t1,zero,v2,rof1,2.0e-6); if (d2/2 > 0.0) delay(d2/2 - (2*pwx2/PI) - pw - 4.0e-6); else delay(d2/2); rgpulse(2*pw,zero,2.0e-6,2.0e-6); if (d2/2 > 0.0) delay(d2/2 - (2*pwx2/PI) - pw - 4.0e-6); else delay(d2/2); sim3pulse(pw,0.0,pwx2,t3,zero,t4,2.0e-6,rof1); delay(tau - pwx2 - (2*pwx2/PI) - 2*rof1); sim3pulse(2*pw,0.0,2*pwx2,zero,zero,zero,rof1, rof1); obspower(slpwr); txphase(zero); delay(tau - rof1 - pwx2 - POWER_DELAY); if (cycles > 1.0) { xmtron(); delay(trim); starthardloop(v9); mleva(); mleva(); mlevb(); mlevb(); mlevb(); mleva(); mleva(); mlevb(); mlevb(); mlevb(); mleva(); mleva(); mleva(); mlevb(); mlevb(); mleva(); txphase(one); delay(0.66*slpw); endhardloop(); xmtroff(); } if (mult > 0.5) { obspower(tpwr); delay(tau - POWER_DELAY - rof1); sim3pulse(2*pw,0.0,mult*pwx2,zero,zero,zero,rof1,0.0); rcvron(); dec2power(dpwr2); delay(tau - POWER_DELAY); } else { dec2power(dpwr2); delay(rof2 - POWER_DELAY); rcvron(); } status(C); }
pulsesequence() { double gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), EDratio = getval("EDratio"), gstab = getval("gstab"), mult = getval("mult"), pwx180 = getval("pwx180"), pwxlvl180 = getval("pwxlvl180"), pwx180r = getval("pwx180r"), pwxlvl180r = getval("pwxlvl180r"), tpwr180 = getval("tpwr180"), pw180 = getval("pw180"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), gzlvl5 = getval("gzlvl5"), tau, taug; int icosel, phase1 = (int)(getval("phase")+0.5), prgcycle = (int)(getval("prgcycle")+0.5), ZZgsign; char pwx180ad[MAXSTR], pwx180ref[MAXSTR], bipflg[MAXSTR], pw180ad[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",0.5); gzlvlE = syncGradLvl("gtE","gzlvlE",0.5); getstr("pwx180ad", pwx180ad); getstr("pwx180ref", pwx180ref); getstr("pw180ad", pw180ad); getstr("bipflg",bipflg); if (bipflg[0] == 'y') { tpwr180=getval("tnbippwr"); pw180=getval("tnbippw"); getstr("tnbipshp",pw180ad); } if (bipflg[1] == 'y') { pwxlvl180=getval("dnbippwr"); pwx180=getval("dnbippw"); getstr("dnbipshp",pwx180ad); } tau = 1 / (4*(getval("j1xh"))); if (mult > 0.5) taug = 2*tau + getval("tauC"); else taug = gtE + gstab + 2 * GRADIENT_DELAY; ZZgsign=-1; if (mult == 2) ZZgsign=1; icosel = 1; assign(ct,v17); assign(zero,v18); assign(zero,v19); if (getflag("prgflg") && (satmode[0] == 'y') && (prgcycle > 1.5)) { hlv(ct,v17); mod2(ct,v18); dbl(v18,v18); if (prgcycle > 2.5) { hlv(v17,v17); hlv(ct,v19); mod2(v19,v19); dbl(v19,v19); } } settable(t1, 4, ph1); settable(t2, 2, ph2); settable(t3, 8, ph3); settable(t4, 16, ph4); settable(t5, 16, ph5); getelem(t1, v17, v1); getelem(t3, v17, v3); getelem(t4, v17, v4); getelem(t2, v17, v2); getelem(t5, v17, oph); assign(zero,v6); add(oph,v18,oph); add(oph,v19,oph); if ((phase1 == 2) || (phase1 == 5)) icosel = -1; initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); /* mod2(id2, v14); dbl(v14,v14); */ add(v2, v14, v2); add(oph, v14, oph); status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); if (getflag("slpsat")) { shaped_satpulse("relaxD",satdly,zero); if (getflag("prgflg")) shaped_purge(v6,zero,v18,v19); } else { satpulse(satdly,zero,rof1,rof1); if (getflag("prgflg")) purge(v6,zero,v18,v19); } } else delay(d1); if (getflag("wet")) wet4(zero,one); obspower(tpwr); decpower(pwxlvl180); status(B); if (getflag("nullflg")) { rgpulse(0.5 * pw, zero, rof1, rof1); obspower(tpwr180); delay(tau); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof1); delay(tau+POWER_DELAY+rof1); delay(tau+POWER_DELAY+rof1); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof1); obspower(tpwr); delay(tau); rgpulse(0.5 * pw, zero, rof1, rof1); zgradpulse(hsglvl, hsgt); delay(1e-3); } rgpulse(pw, v6, rof1, rof1); obspower(tpwr180); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); delay(tau+2.0*POWER_DELAY+2.0*rof1); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof1); delay(tau); obspower(tpwr); rgpulse(pw, v1, rof1, rof1); zgradpulse(hsglvl, 2 * hsgt); decpower(pwxlvl); obspower(tpwr180); delay(1e-3); decrgpulse(pwx, v2, rof1, 2.0e-6); delay(d2 / 2); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); delay(d2 / 2); delay(taug - POWER_DELAY); decpower(pwxlvl180r); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); if(mult < 1.5) { obspower(tpwr); if (mult <0.5) delay(2*rof1); else rgpulse(mult*pw,zero,rof1,rof1); } else shaped_pulse(pw180ad,pw180,zero,rof1,rof1); if(mult < 1.5) delay(4*pwx/PI + 4.0e-6 + taug - gtE - gstab - 2 * GRADIENT_DELAY + WFG_START_DELAY + pw180 + WFG_STOP_DELAY - mult*pw); else delay(4*pwx/PI + 4.0e-6 + POWER_DELAY + taug - gtE - gstab - 2 * GRADIENT_DELAY); zgradpulse(gzlvlE, gtE); delay(gstab); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); decpower(pwxlvl); decrgpulse(pwx, v4, 2.0e-6, rof1); obspower(tpwr); decpower(pwxlvl180); zgradpulse(ZZgsign*0.6 * hsglvl, 1.2 * hsgt); delay(1e-3); rgpulse(pw, v3, rof1, rof1); obspower(tpwr180); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); zgradpulse(gzlvl5,gtE/2.0); delay(tau-gtE/2.0+2.0*POWER_DELAY); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof2); zgradpulse(gzlvl5+icosel * 2.0*gzlvlE/EDratio, gtE/2.0); delay(tau-gtE/2.0); decpower(dpwr); status(C); }
pulsesequence() { double slpwrT = getval("slpwrT"), slpwT = getval("slpwT"), mixT = getval("mixT"), trim = getval("trim"), tauz1 = getval("tauz1"), tauz2 = getval("tauz2"), tauz3 = getval("tauz3"), tauz4 = getval("tauz4"), selpwrA = getval("selpwrA"), selpwA = getval("selpwA"), gzlvlA = getval("gzlvlA"), gtA = getval("gtA"), selpwrB = getval("selpwrB"), selpwB = getval("selpwB"), gzlvlB = getval("gzlvlB"), gtB = getval("gtB"), gstab = getval("gstab"), selfrq = getval("selfrq"); char selshapeA[MAXSTR], selshapeB[MAXSTR], slpatT[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtA = syncGradTime("gtA","gzlvlA",1.0); gzlvlA = syncGradLvl("gtA","gzlvlA",1.0); gtB = syncGradTime("gtB","gzlvlB",1.0); gzlvlB = syncGradLvl("gtB","gzlvlB",1.0); getstr("slpatT",slpatT); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); if (strcmp(slpatT,"mlev17c") && strcmp(slpatT,"dipsi2") && strcmp(slpatT,"dipsi3") && strcmp(slpatT,"mlev17") && strcmp(slpatT,"mlev16")) abort_message("SpinLock pattern %s not supported!.\n", slpatT); assign(ct,v6); if (getflag("zqfilt")) { hlv(v6,v6); hlv(v6,v6); } settable(t1,4,ph1); getelem(t1,v6,v1); settable(t3,8,ph3); getelem(t3,v6,v11); settable(t4,8,ph4); settable(t2,4,ph2); getelem(t2,v6,v2); settable(t7,8,ph7); getelem(t7,v6,v7); settable(t8,4,ph8); getelem(t8,v6,v8); if (getflag("zqfilt")) getelem(t4,v6,oph); else assign(v1,oph); sub(v2,one,v3); add(v2,two,v4); add(v3,two,v5); mod4(ct,v10); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); if (getflag("sspul")) steadystate(); if (satmode[0] == 'y') { if ((d1-satdly) > 0.02) delay(d1-satdly); else delay(0.02); satpulse(satdly,v6,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v1,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlA,gtA); delay(gstab); if (selfrq != tof) delay(2*OFFSET_DELAY); zgradpulse(gzlvlB,gtB); delay(gstab); obspower(selpwrB); shaped_pulse(selshapeB,selpwB,v2,rof1,rof1); obspower(slpwrT); zgradpulse(gzlvlB,gtB); delay(gstab); if (selfrq != tof) obsoffset(tof); if (mixT > 0.0) { rgpulse(trim,v11,0.0,0.0); if (dps_flag) rgpulse(mixT,v3,0.0,0.0); else SpinLock(slpatT,mixT,slpwT,v2,v3,v4,v5, v9); } if (getflag("zqfilt")) { obspower(tpwr); rgpulse(pw,v7,1.0e-6,rof1); ifzero(v10); delay(tauz1); endif(v10); decr(v10); ifzero(v10); delay(tauz2); endif(v10); decr(v10); ifzero(v10); delay(tauz3); endif(v10); decr(v10); ifzero(v10); delay(tauz4); endif(v10); rgpulse(pw,v8,rof1,rof2); } else delay(rof2); status(C); }
pulsesequence() { double d3 = getval("d3"), vtcomplvl = getval("vtcomplvl"), gzlvl = getval("gzlvl"), shapedpw90 = getvalnwarn("shapedpw90"), shapedpw180 = getvalnwarn("shapedpw180"), shapedpwr90 = getvalnwarn("shapedpwr90"), shapedpwr180 = getvalnwarn("shapedpwr180"), gt,gts,lvlf; int hs_gradtype; char shaped[MAXSTR], shapename90[MAXSTR], shapename180[MAXSTR]; getstrnwarn("shaped", shaped); getstrnwarn("shapename90", shapename90); getstrnwarn("shapename180", shapename180); settmpgradtype("tmpgradtype"); hs_gradtype = ((specialGradtype == 'h') || (specialGradtype == 'a')); if ((p1==0.0) && ((vtcomplvl>0.5) || (hs_gradtype))) { p1 = 2.0*pw; } if ((vtcomplvl==2) && ((hs_gradtype) || (spin>0))) { vtcomplvl = 1; if (ix==1) { text_message("gmapz: vtcomplvl set to 1\n"); putCmd("setvalue('vtcomplvl',%.0f)\n",vtcomplvl); putCmd("setvalue('vtcomplvl',%.0f,'processed')\n",vtcomplvl); } } /* lvlf, gt, gts only used for convection compensation */ if (gradtype[2]=='l') lvlf=2.5; else lvlf=3.0; if ((hs_gradtype) || (spin>0)) lvlf=1.0; gt = (0.5*at + d2)/lvlf; gts=0.18*at/lvlf; gts = 0.2*at/lvlf; if (vtcomplvl==2) gt += gts; gt *= 2.0; settable(t1,16,ph1); settable(t2,2,ph2); settable(t3,8,ph3); settable(t4,16,ph4); sub(ct,ssctr,v12); getelem(t1,v12,v1); getelem(t2,v12,v2); getelem(t3,v12,v3); getelem(t4,v12,oph); if (vtcomplvl < 0.5) { getelem(t4,v12,v1); getelem(t1,v12,v2); } /* --- equilibration period --- */ status(A); delay(d1); /* --- initial pulse --- */ status(B); if (shaped[A] == 'y') { obspower(shapedpwr90); shaped_pulse(shapename90,shapedpw90,v1,rof1,rof2); obspower(tpwr); } else pulse(pw,v1); /* instead of hard pulse, could use shapedpulse("gauss",pw,oph,rof1,rof2); or "bir4_90_512" or other shape for selective excitation. selective inversion pulses may or may not work as well. */ /* --- shim phase encode, not during PFG recovery --- */ delay(2e-5+d3); /* First case: No convection compensation, traditional sequence */ if (vtcomplvl < 0.5) { if (p1 > 0) { zgradpulse(gzlvl,at/2+d2); delay(d2); if (shaped[A] == 'y') { obspower(shapedpwr180); shaped_pulse(shapename180,shapedpw180,v2,rof1,rof2); obspower(tpwr); } else pulse(p1,v2); delay(d2); } else { zgradpulse(-gzlvl,at/2+d2); delay(d2*2); } } else /* (vtcomplvl > 0.5) */ { /* Second case: convection compensation */ zgradpulse(gzlvl,at/2+d2); delay(d2); if (vtcomplvl==2) { zgradpulse(lvlf*gzlvl,gts); delay(d2); } if (shaped[A] == 'y') { obspower(shapedpwr180); shaped_pulse(shapename180,shapedpw180,v2,rof1,rof2); } else pulse(p1,v2); delay(d2); zgradpulse(lvlf*gzlvl,gt); delay(d2); if (shaped[A] == 'y') { shaped_pulse(shapename180,shapedpw180,v3,rof1,rof2); obspower(tpwr); } else pulse(p1,v3); delay(d2); if (vtcomplvl==2) { zgradpulse(lvlf*gzlvl,gts); delay(d2); } } /* --- acq. of echo during gradient --- */ rgradient('z',gzlvl); delay(d2); /* gradient switches off at end of acq. */ }
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); }
void pulsesequence() { char shname1[MAXSTR], f1180[MAXSTR], f2180[MAXSTR], CT_flg[MAXSTR], n15_flg[MAXSTR]; int icosel, t1_counter, t2_counter, ni2 = getval("ni2"), phase; double d2_init=0.0, d3_init=0.0, pwS1,pwS2,pwS3,pwS4,pwS5,pwS6,pwS7,max, kappa, lambda = getval("lambda"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"), gt1 = getval("gt1"), gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt6 = getval("gt6"), gstab = getval("gstab"), tpwrsf = getval("tpwrsf"), shlvl1, shpw1 = getval("shpw1"), pwClvl = getval("pwClvl"), pwNlvl = getval("pwNlvl"), pwN = getval("pwN"), dpwr2 = getval("dpwr2"), d2 = getval("d2"), shbw = getval("shbw"), shofs = getval("shofs")-4.77, scale = getval("scale"), sw1 = getval("sw1"), timeTN = getval("timeTN"), timeTN1, Delta, t2a,t2b,halfT2,ctdelay, tauNCO = getval("tauNCO"), CTdelay = getval("CTdelay"), tauC = getval("tauC"), tau1, tau2, taunh = getval("taunh"); getstr("shname1", shname1); getstr("CT_flg",CT_flg); getstr("n15_flg",n15_flg); getstr("f1180",f1180); getstr("f2180",f2180); phase = (int) (getval("phase") + 0.5); settable(t1,2,phi1); settable(t3,1,phi3); settable(t4,4,phi4); settable(t5,1,phi5); settable(t14,4,phi14); settable(t24,4,phi24); /* INITIALIZE VARIABLES */ timeTN1= timeTN-tauC; Delta = timeTN-tauC-tauNCO; //shpw1 = pw*8.0; shlvl1=tpwr; pwS1 = c13pulsepw("ca", "co", "square", 90.0); pwS2 = c13pulsepw("ca", "co", "square", 180.0); pwS3 = c13pulsepw("co", "ca", "sinc", 180.0); pwS7 = c13pulsepw("co", "ca", "sinc", 90.0); pwS4 = h_shapedpw("eburp2",shbw,shofs,zero, 0.0, 0.0); pwS6 = h_shapedpw("reburp",shbw,shofs,zero, 0.0, 0.0); pwS5 = h_shapedpw("pc9f",shbw,shofs,zero, 2.0e-6, 0.0); if (CT_flg[0] == 'y') { if ( ni*1/(sw1)/2.0 > (CTdelay*0.5-gt3-1.0e-4)) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((CTdelay*0.5-gt3-1.0e-4)*2.0*sw1))); psg_abort(1);} } if (phase == 1) ; if (phase == 2) {tsadd(t1,1,4);} if ( phase2 == 2 ) { tsadd ( t3,2,4 ); tsadd ( t5,2,4 ); icosel = +1; } else icosel = -1; /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } /************************************************************/ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t14,2,4); tsadd(t24,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t4,2,4); tsadd(t14,2,4); tsadd(t24,2,4); } /************************************************************/ /* Set up CONSTANT/SEMI-CONSTANT time evolution in N15 */ /************************************************************/ ctdelay = timeTN1-gt1-1.0e-4; // ctdelay = timeTN1-gt1-1.0e-4-2.0*GRADIENT_DELAY-4*POWER_DELAY-4*PWRF_DELAY-(4/PI)*pwN; if (ni2 > 1) { halfT2 = 0.5*(ni2-1)/sw2; t2b = (double) t2_counter*((halfT2 - ctdelay)/((double)(ni2-1))); if( ix==1 && halfT2 - timeTN > 0 ) printf("SCT mode on, max ni2=%g\n",timeTN*sw2*2+1); if(t2b < 0.0) t2b = 0.0; t2a = ctdelay - tau2*0.5 + t2b; if(t2a < 0.2e-6) t2a = 0.0; } else { t2b = 0.0; t2a = ctdelay - tau2*0.5; } /************************************************************/ status(A); rcvroff(); decpower(pwClvl); decoffset(dof); dec2power(pwNlvl); dec2offset(dof2); obspwrf(tpwrsf); decpwrf(4095.0); obsoffset(tof); set_c13offset("co"); dec2rgpulse(pwN*2.0,zero,0.0,0.0); zgradpulse(gzlvl4, gt4); delay(1.0e-4); delay(d1-gt4); lk_hold(); h_shapedpulse("pc9f",shbw,shofs,zero, 2.0e-6, 0.0); delay(lambda-pwS5*0.5-pwS6*0.4); h_sim3shapedpulse("reburp",shbw,shofs,0.0,2.0*pwN, one, zero, zero, 0.0, 0.0); delay(lambda-pwS5*0.5-pwS6*0.4); if(n15_flg[0]=='y') h_shapedpulse("pc9f_",shbw,shofs,three, 0.0, 0.0); else h_shapedpulse("pc9f_",shbw,shofs,one, 0.0, 0.0); zgradpulse(gzlvl4, gt4*4.0); delay(1.0e-4); obspower(shlvl1); /**************************************************************************/ /* xxxxxxxxxxxxxxxxxxxxxx N-> CA transfer xxxxxxxxxxxxxxxxxx */ /**************************************************************************/ dec2rgpulse(pwN,zero,0.0,0.0); delay(timeTN1); sim3_c13pulse("", "ca", "co", "square", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(Delta); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); delay(timeTN1-Delta-pwS3+pwN*4.0/3.0); c13pulse("co", "ca", "sinc", 90.0, zero, 0.0, 0.0); delay(tauC); 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, 2.0e-6, 2.0e-6); delay(tauC); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); c13pulse("co", "ca", "sinc", 90.0, one, 0.0, 0.0); dec2rgpulse(pwN,one,0.0,0.0); /**************************************************************************/ /* xxxxxxxxxxxxxxxxxxxxxx 13CA EVOLUTION xxxxxxxxxxxxxxxxxx */ /**************************************************************************/ set_c13offset("ca"); c13pulse("ca", "co", "square", 90.0, t1, 2.0e-6, 0.0); if(CT_flg[0]=='y') { delay(tau1*0.5); sim3_c13pulse(shname1, "co", "ca", "sinc", "", shpw1, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, gt3); delay(1.0e-4); delay(CTdelay*0.5-gt3-1.0e-4); c13pulse("cab", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); delay(CTdelay*0.5-gt3-1.0e-4-tau1*0.5); sim3_c13pulse(shname1, "co", "ca", "sinc", "", shpw1, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, gt3); delay(1.0e-4); } else { delay(tau1*0.5); sim3_c13pulse(shname1, "co", "ca", "sinc", "", shpw1, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, gt3); delay(1.0e-4); delay(tau1*0.5); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); sim3_c13pulse(shname1, "co", "ca", "sinc", "", shpw1, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); zgradpulse(gzlvl3, gt3); delay(1.0e-4); } c13pulse("ca", "co", "square", 90.0, zero, 0.0, 0.0); set_c13offset("co"); /**************************************************************************/ /* xxxxxxxxxxxxxxxxxxxxxx N-> CA back transfer xxxxxxxxxxxxxxx */ /**************************************************************************/ obspower(shlvl1); dec2rgpulse(pwN,t4,0.0,0.0); c13pulse("co", "ca", "sinc", 90.0, one, 0.0, 0.0); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); delay(tauC); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 2.0e-6); delay(tauC); c13pulse("co", "ca", "sinc", 90.0, zero, 0.0, 0.0); // delay(timeTN1-Delta+tau2*0.5-pwS2-pwS3); delay(timeTN1-Delta+tau2*0.5-pwS2-pwS3-2.0*GRADIENT_DELAY+4*POWER_DELAY+4*PWRF_DELAY); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); delay(Delta); c13pulse("ca", "co", "square", 180.0, zero, 0.0, 0.0); delay (t2b); dec2rgpulse (2.0*pwN, zero, 0.0, 0.0); zgradpulse(gzlvl1, gt1); delay(1.0e-4); delay (t2a); /**************************************************************************/ /** gradient-selected TROSY sequence *********/ /**************************************************************************/ delay(gt1/10.0+1.0e-4); h_shapedpulse("eburp2_",shbw,shofs,t3, 2.0e-6, 0.0); zgradpulse(gzlvl5, gt5); delay(lambda-pwS6*0.5-pwS4*scale- gt5); h_sim3shapedpulse("reburp",shbw,shofs,0.0,2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); delay(lambda-pwS6*0.5-pwS4*scale- gt5); h_shapedpulse("eburp2",shbw,shofs,zero, 0.0, 0.0); delay(gt1/10.0+1.0e-4); dec2rgpulse(pwN,one,0.0,0.0); zgradpulse(gzlvl6, gt6); txphase(zero); delay(lambda-pwS6*0.5-gt6); h_sim3shapedpulse("reburp",shbw,shofs,0.0,2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt6); delay(lambda-pwS6*0.5-gt6); dec2rgpulse(pwN,t5,0.0,0.0); /**************************************************************************/ zgradpulse(-icosel*gzlvl2, gt1/10.0); dec2power(dpwr2); lk_sample(); if (n15_flg[0] =='y') { setreceiver(t14); } else { setreceiver(t24); } rcvron(); statusdelay(C,1.0e-4 ); }
void pulsesequence() { /* DECLARE VARIABLES */ char f1180[MAXSTR],f2180[MAXSTR],satmode[MAXSTR]; int icosel,t1_counter,t2_counter,first_FID; double /* DELAYS */ tau1, /* t1/2 */ tau2, /* t2/2 */ /* COUPLINGS */ jhn = getval("jhn"), tauhn, jnco = getval("jnco"), taunco, jcoca = getval("jcoca"), taucoca, jnca = getval("jnca"), taunca, jhaca = getval("jhaca"), tauhaca, jcaha = getval("jcaha"), taucaha, jcacb = getval("jcacb"), taucacb, /* PULSES */ pwN = getval("pwN"), /* PW90 for N-nuc */ pwC = getval("pwC"), /* PW90 for C-nuc */ pwHs = getval("pwHs"), /* pw for water selective pulse at twprsl */ /* POWER LEVELS */ satpwr = getval("satpwr"), /* low power level for presat */ tpwrsf_d = getval("tpwrsf_d"), /* fine power level "down" flipback pulse*/ tpwrsf_u = getval("tpwrsf_u"), /* fine power level "up" flipback pulse*/ tpwrs, /* power level for selective pulse for water */ tpwrd,pwHd, /* power/pulse width for decoupling */ pwClvl = getval("pwClvl"), /* power level for C hard pulses */ compH = getval("compH"), /* compression factor */ compC = getval("compC"), /* compression factor */ pwNlvl = getval("pwNlvl"), /* power level for N hard pulses */ rf90onco, pw90onco, /* power level/width for CO 90 pulses */ rf180onco, pw180onco, /* power level/width for CO 180 pulses */ rf180offca, pw180offca, /* power level/width for off-res Ca 180 pulses */ /* CONSTANTS */ lambda = getval("lambda"), /* J scaling factor */ kappa, /* semi constant-time factor */ ni2=getval("ni2"), waltzB1 = getval("waltzB1"), /* waltz16 field strength (in Hz) */ /* GRADIENT DELAYS AND LEVES */ gt0 = getval("gt0"), /* gradient time */ gt1 = getval("gt1"), /* gradient time */ gt3 = getval("gt3"), /* gradient time */ gt5 = getval("gt5"), gstab = getval("gstab"), gzlvl0 = getval("gzlvl0"), /* level of gradient */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gzlvl5 = getval("gzlvl5"); /* 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); /* LOAD VARIABLES */ getstr("satmode",satmode); getstr("f1180",f1180); getstr("f2180",f2180); /* check validity of parameter range */ 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! "); psg_abort(1); } if ( satpwr > 8 ) { printf("satpwr too large !!! "); psg_abort(1); } if ( dpwr > 50 ) { printf("don't fry the probe, dpwr too large! "); psg_abort(1); } if ( dpwr2 > 50 ) { printf("don't fry the probe, dpwr2 too large! "); psg_abort(1); } /* LOAD VARIABLES */ settable(t1, 1, phi1); settable(t2, 1, phi2); settable(t3, 1, phi3); settable(t4, 2, phi4); settable(t5, 4, phi5); settable(t6, 8, phi6); settable(t7, 4, phi7); /* INITIALIZE VARIABLES */ tauhn = ((jhn != 0.0) ? 1/(4*(jhn)) : 2.75e-3); taunco = ((jnco !=0.0) ? 1/(4*(jnco)) : 16.6e-3); taucoca = ((jcoca !=0.0) ? 1/(4*(jcoca)) : 4.5e-3); taunca = ((jnca !=0.0) ? 1/(4*(jnca)) : 12e-3); tauhaca = ((jhaca !=0.0) ? 1/(4*(jhaca)) : 12e-3); taucaha = ((jcaha !=0.0) ? 1/(4*(jcaha)) : 12e-3); taucacb = ((jcacb !=0.0) ? 1/(4*(jcacb)) : 12e-3); if((getval("arraydim") < 1.5) || (ix==1)) first_FID = 1; else first_FID = 0; /* 90 degree pulse on CO, null at Ca 118ppm away */ pw90onco = sqrt(15.0)/(4.0*118.0*dfrq); rf90onco = (4095.0*pwC*compC)/pw90onco; rf90onco = (int) (rf90onco + 0.5); if(rf90onco > 4095.0) { if(first_FID) printf("insufficient power for pw90onco -> rf90onco (%.0f)\n", rf90onco); rf90onco = 4095.0; pw90onco = pwC; } /* 180 degree pulse on CO, null at Ca 118ppm away */ pw180onco = sqrt(3.0)/(2.0*118.0*dfrq); rf180onco = (4095.0*pwC*compC*2.0)/pw180onco; rf180onco = (int) (rf180onco + 0.5); if(rf180onco > 4095.0) { if(first_FID) printf("insufficient power for pw180onco -> rf180onco (%.0f)\n", rf180onco); rf180onco = 4095.0; pw180onco = pwC*2.0; } pw180offca = pw180onco; rf180offca = rf180onco; /* Phase incrementation for hypercomplex data */ if (phase1 == 2) /* Hypercomplex in t1 */ { tsadd(t4, 1, 4); } if (phase1 == 4) /* Hypercomplex in t1 */ { tsadd(t4, 1, 4); } kappa=(taunco - tauhn)/(0.5*ni2/sw2)-0.001; if (kappa > 1.0) { kappa=1.0-0.01; } if (phase2 == 1) /* Hypercomplex in t2 */ { icosel = -1; tsadd(t2, 2, 4); tsadd(t3, 2, 4); } else icosel = 1; if (ix == 1) printf("semi constant time factor %4.6f\n",kappa); /* 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) /* STATES-TPPI */ { tsadd(t4,2,4); tsadd(t7,2,4); } if(ix==1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5); if(t2_counter %2) { tsadd(t1,2,4); tsadd(t7,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)); 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) ); tau2 = tau2/2.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 */ if (tpwrsf_d<4095.0) tpwrs=tpwrs+6; /* nominal tpwrsf_d ~ 2048 */ /* tpwrsf_d,tpwrsf_u can be used to correct for radiation damping */ /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(satpwr); /* Set power for presaturation */ decpower(pwClvl); /* Set decoupler1 power to pwClvl */ decpwrf(rf90onco); dec2power(pwNlvl); /* Set decoupler2 power to pwNlvl */ /* Presaturation Period */ if (satmode[0] == 'y') { rgpulse(d1,zero,rof1,0.0); obspower(tpwr); /* Set power for hard pulses */ } else { obspower(tpwr); /* Set power for hard pulses */ delay(d1); } status(B); rcvroff(); decpwrf(rf90onco); /* Set decoupler1 power to rf90onco */ sim3pulse(0.0,pw90onco,pwN,zero,zero,zero,rof1,rof1); /* 90 for 15N and 13C' */ zgradpulse(gzlvl0,gt0); delay(gstab); /* transfer from HN to N by INEPT */ /* shaped pulse for water flip-back */ obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc_d",pwHs,one,2.0e-6,0.0); obspower(tpwr); obspwrf(4095.0); /* shaped pulse */ rgpulse(pw,zero,rof1,0.0); zgradpulse(gzlvl0*1.3,gt0); delay(gstab); delay(tauhn - gt0 - gstab); /* 1/(4JHN) */ sim3pulse(2.0*pw,0.0,2.0*pwN,zero,zero,zero,rof1,rof1); delay(tauhn - gt0 - gstab); /* 1/(4JHN) */ zgradpulse(gzlvl0*1.3,gt0); delay(gstab); rgpulse(pw,three,rof1,0.0); /* 90 1H */ zgradpulse(gzlvl3,gt3); delay(gstab); decpwrf(rf180onco); /* Set decoupler power to rf180onco */ dec2rgpulse(pwN,zero,0.0,0.0); /* 90 15N */ /* start transfer from N to CO */ delay(5.5e-3 - pwHd - POWER_DELAY - PRG_START_DELAY); /* 1/(2JHN) */ obspower(tpwrd); rgpulse(pwHd,one,rof1,0.0); txphase(zero); obsprgon("waltz16", pwHd, 90.0); xmtron(); delay(taunco - 5.5e-3 - 0.5*pw180onco); /* 1/(4JNCO) - 1/(2JHN) */ sim3pulse(0.0,pw180onco,2.0*pwN,zero,zero,zero,rof1,rof1); delay(taunco - 5.5e-3 - 0.5*pw180onco); /* 1/(4JNCO) - 1/(2JHN) */ /* turn proton decoupling off */ xmtroff(); obsprgoff(); rgpulse(pwHd,three,rof1,0.0); obspower(tpwr); /* turned proton decoupling off */ delay(5.5e-3 - PRG_STOP_DELAY - pwHd - POWER_DELAY); /* 1/(2JHN) */ /* Start in-phase filter */ if (( phase1 == 1 || phase1 == 2)) { dec2rgpulse(pwN,one,0.0,0.0); /* 90 15N */ zgradpulse(gzlvl3*1.5,gt3); delay(gstab); /* shaped pulse WATER-FLIP-back */ obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc_d",pwHs,one,rof1,0.0); obspower(tpwr); obspwrf(4095.0); /* shaped pulse */ rgpulse(pw,one,rof1,0.0); /* 90 1H */ zgradpulse(gzlvl0*1.1,gt0); delay(gstab); delay(0.5*tauhn - gt0 - gstab); /* 1/(8JNH) */ dec2rgpulse(2.0*pwN,zero,0.0,0.0); /* 180 15N */ delay(0.5*tauhn - gt0 - gstab); /* 1/(8JNH) */ zgradpulse(gzlvl0*1.1,gt0); delay(gstab); rgpulse(2.0*pw,zero,rof1,rof1); /* 180 1H */ zgradpulse(gzlvl0*1.1,gt0); delay(gstab); delay(0.5*tauhn - gt0 -gstab); /* 1/(8JNH) */ dec2rgpulse(2.0*pwN,zero,0.0,0.0); /* 180 15N */ delay(0.5*tauhn - gt0 -gstab); /* 1/(8JNH) */ zgradpulse(gzlvl0*1.1,gt0); delay(gstab); rgpulse(pw,one,rof1,0.0); /* 90 1H */ /* shaped pulse WATER-FLIP-back */ obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc_u",pwHs,three,rof1,0.0); obspower(tpwr); obspwrf(4095.0); /* shaped pulse */ } /* start antiphase filter */ if (( phase1 == 3 || phase1 == 4 )) { dec2rgpulse(pwN,one,0.0,0.0); /* 90 15N */ zgradpulse(gzlvl3*1.5,gt3); delay(gstab); /* shaped pulse WATER-FLIP-back */ obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc_d",pwHs,zero,rof1,0.0); obspower(tpwr); obspwrf(4095.0); /* shaped pulse */ rgpulse(pw,zero,rof1,0.0); /* 90 1H */ zgradpulse(gzlvl0*0.9,gt0); delay(gstab); delay(tauhn - gt0 - gstab - 2.0*pwN); /* 1/(4JNH) */ sim3pulse(2.0*pw,0.0,2.0*pwN,zero,zero,zero,rof1,rof1); /* 180 1H and 15N */ delay(tauhn - gt0 - gstab - 2.0*pwN); /* 1/(4JNH) */ zgradpulse(gzlvl0*0.9,gt0); delay(gstab); rgpulse(pw,one,rof1,0.0); /* 90 1H */ /* shaped pulse WATER-FLIP-back */ obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc_u",pwHs,three,rof1,0.0); obspower(tpwr); obspwrf(4095.0); /* shaped pulse */ } /* End of filter section */ zgradpulse(gzlvl3*0.9,gt3); delay(gstab); rgpulse(2.0*pw,zero,rof1,0.0); decpwrf(rf90onco); /* Set decoupler power to rf90onco */ decrgpulse(pw90onco,t4,0.0,0.0); /* 90 for 13C */ /* record 13C' frequences and 13C'-15N coupling */ delay(tau1); decpwrf(rf180offca); /* Set decoupler power to rf180offca */ simshaped_pulse("","offC3",2.0*pw,pw180offca,zero,zero,rof1,rof1); /* 180 for 1H and 13CA */ decphase(zero); decpwrf(rf180onco); delay(tau1); if (lambda>0.0) { delay(lambda*tau1); sim3pulse(0.0,pw180onco,2.0*pwN,zero,t5,zero,0.0,0.0); delay(lambda*tau1); } else decrgpulse(pw180onco,t5,0.0,0.0); decpwrf(rf180offca); /* Set decoupler power to rf180offca */ simshaped_pulse("","offC3",0.0,pw180offca,zero,zero,0.0,0.0); /* 180 CA */ decphase(zero); decpwrf(rf90onco); /* start reverse transfer from CO to N by INEPT */ decrgpulse(pw90onco,zero,0.0,0.0); /* 90 for 13C' */ zgradpulse(gzlvl3*0.7,gt3); delay(gstab); dec2rgpulse(pwN,t1,0.0,0.0); /* 90 for 15N */ delay((taunco - tauhn) - kappa*tau2); /* 1/4J(NCO) - 1/4J(NH) - kt2/2 */ dec2rgpulse(2.0*pwN,zero,0.0,0.0); /* 180 for 15N */ delay((1-kappa)*tau2); /* (1-k)t2/2 */ decpwrf(rf180onco); decrgpulse(pw180onco,zero,0.0,0.0); /* 180 for 13C' */ decpwrf(rf180offca); delay(taunco - tauhn - gt1 - gstab - pw180onco - pw180offca - 3.0*POWER_DELAY); zgradpulse(gzlvl1,gt1); delay(gstab); decshaped_pulse("offC3",pw180offca,zero,0.0,0.0); delay(tau2); /* t2/2 */ /* start TROSY transfer from N to HN */ rgpulse(pw,t2,rof1,0.0); /* 180 for 1H */ zgradpulse(gzlvl5,gt5); delay(gstab); delay(tauhn - gt5 - gstab ); decpwrf(rf180onco); sim3pulse(2.0*pw,pw180onco,2.0*pwN,zero,zero,zero,rof1,rof1); delay(tauhn - gt5 - gstab ); zgradpulse(gzlvl5,gt5); delay(gstab); decpwrf(rf90onco); sim3pulse(pw,pw90onco,pwN,one,t6,zero,rof1,0.0); /* shaped pulse for water flip-back */ obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc_u",pwHs,t2,rof1,0.0); obspwrf(4095.0); obspower(tpwr); /* shaped pulse */ zgradpulse(gzlvl5*0.9,gt5); delay(gstab); delay(tauhn - gt5 - gstab - POWER_DELAY - pwHs); sim3pulse(2.0*pw,0.0,2.0*pwN,zero,zero,zero,rof1,rof1); delay(tauhn - gt5 - gstab ); decpower(dpwr); zgradpulse(gzlvl5*0.9,gt5); delay(gstab); dec2rgpulse(pwN,t3,0.0,0.0); /* 90 for 15N */ dec2power(dpwr2); delay((gt1/10.0) - pwN + gstab -POWER_DELAY); rgpulse(2.0*pw, zero, rof1, rof1); zgradpulse(gzlvl2*icosel,gt1/10.0); delay(gstab); /* acquire data */ status(C); setreceiver(t7); }
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); }