pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /*magic angle gradient*/ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ codecseq[MAXSTR]; /* sequence for 13C' decoupling */ int icosel1, /* used to get n and p type */ icosel2, t1_counter, /* used for states tppi in t1 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ del = getval("del"), /* time delays for CH coupling evolution */ del1 = getval("del1"), del2 = getval("del2"), del3 = getval("del3"), del4 = getval("del4"), TC = getval("TC"), satpwr = getval("satpwr"), waltzB1 = getval("waltzB1"), spinlock = getval("spinlock"), pwco,copwr, cores,codmf, kappa, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* p_d is used to calculate the isotropic mixing on the Cab region */ p_d, /* 50 degree pulse for DIPSI-2 at rfd */ rfd, /* fine power for 7 kHz rf for 500MHz magnet */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ pwHd, /* H1 90 degree pulse length at tpwrd */ tpwrd, /*rf for WALTZ decoupling */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* G/cm to DAC coversion factor*/ gstab = getval("gstab"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), /* other gradients */ gt5 = getval("gt5"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("f2180",f2180); getstr("codecseq",codecseq); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,1,phi2); settable(t3,1,phi3); settable(t4,1,phi4); settable(t11,2,rec); /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; /* dipsi-3 decoupling on CbCa */ p_d = (5.0)/(9.0*4.0*spinlock); /* DIPSI-3*/ rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = (int) (ncyc + 0.5); /* power level and pulse time for WALTZ 1H decoupling */ pwHd = 1/(4.0 * waltzB1) ; tpwrd = tpwr - 20.0*log10(pwHd/(pw)); tpwrd = (int) (tpwrd + 0.5); /* activate auto-calibration flags */ setautocal(); if (autocal[0] == 'n') { codmf= getval("codmf"); pwco = 1.0/codmf; /* pw for 13C' decoupling field */ copwr = getval("copwr"); /* power level for 13C' decoupling */ cores = getval("cores"); /* power level for 13C' decoupling */ } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { strcpy(codecseq,"Pdec_154p"); if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw=20.0*ppm; ofs=154*ppm; Pdec_154p = pbox_Dsh("Pdec_154p", "WURST2", bw, ofs, compC*pwC, pwClvl); bw=30*ppm; ofs=0.0*ppm; nst = 1000; pws = 0.001; me180 = pbox_makeA("me180", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); } copwr = Pdec_154p.pwr; pwco = 1.0/Pdec_154p.dmf; cores = Pdec_154p.dres; pwme180 = me180.pw; me180pwr= me180.pwr; me180pwrf = me180.pwrf; } /* CHECK VALIDITY OF PARAMETER RANGES */ if( gt1 > 0.5*del - 1.0e-4) { printf(" gt1 is too big. Make gt1 less than %f.\n", (0.5*del - 1.0e-4)); psg_abort(1); } if( dm[A] == 'y' ) { printf("incorrect dec1 decoupler flag! Should be 'nny' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm3[A] == 'y' || dm3[C] == 'y')) { printf("incorrect dec3 decoupler flags! Should be 'nnn' or 'nyn' "); psg_abort(1); } if( dpwr > 52 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ icosel1 = 1; icosel2 = 1; if (phase1 == 2) { tsadd(t2,2,4); icosel1 = -1;} if (phase2 == 2) { tsadd(t4,2,4); icosel2 = -1; tsadd(t2,2,4);} /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t11,2,4); } if(ni > 1) kappa = (double)(t1_counter*(del2)) / ( (double) (ni-1) ); else kappa = 0.0; /* BEGIN PULSE SEQUENCE */ status(A); decoffset(dof-140*dfrq); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(zero); delay(1.0e-5); if (satmode[A] == 'y') { obspower(satpwr); txphase(zero); rgpulse(d1,zero,20.0e-6,20.0e-6); obspower(tpwr); /* Set power for hard pulses */ } else { obspower(tpwr); /* Set power for hard pulses */ delay(d1); } decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl1, 0.5e-3); delay(gstab); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl1, 0.5e-3); delay(1.1*gstab); if(dm3[B] == 'y') /*optional 2H decoupling on */ { dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pw, zero, 0.0, 0.0); /* 1H pulse excitation */ zgradpulse(gzlvl3, gt3); decphase(zero); delay(0.5*del - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); txphase(one); decphase(t1); delay(0.5*del - gt3); rgpulse(pw,one,0.0,0.0); zgradpulse(1.8*gzlvl3, gt3); txphase(zero); delay(150e-6); decrgpulse(pwC, t1, 0.0, 0.0); /* decoupling on for carbonyl carbon */ decpwrf(4095.0); decpower(copwr); decprgon(codecseq,pwco,cores); decon(); /* decoupling on for carbonyl carbon */ delay(tau1); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); zgradpulse(icosel1*gzlvl4, gt1); delay(0.5*del2 - 2.0*pwN - gt1 - 2.0*pw); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau1 - (kappa*tau1)); /* co-decoupling off */ decoff(); decprgoff(); /* co-decoupling off */ decpower(pwClvl); decrgpulse(2.0*pwC, zero, 0.0, 0.0); /* decoupling on for carbonyl carbon */ decpwrf(4095.0); decpower(copwr); decprgon(codecseq,pwco,cores); decon(); /* decoupling on for carbonyl carbon */ delay(0.5*del2 - kappa*tau1); /* co-decoupling off */ decoff(); decprgoff(); /* co-decoupling off */ decpower(pwClvl); decphase(t2); decrgpulse(pwC, t2, 0.0, 0.0); decpwrf(rfd); delay(2.0e-6); initval(ncyc, v2); starthardloop(v2); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(5.0*p_d,one,0.0,0.0); decrgpulse(5.5*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.6*p_d,three,0.0,0.0); decrgpulse(7.2*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.4*p_d,one,0.0,0.0); decrgpulse(6.8*p_d,three,0.0,0.0); decrgpulse(7.0*p_d,one,0.0,0.0); decrgpulse(5.2*p_d,three,0.0,0.0); decrgpulse(5.4*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.5*p_d,one,0.0,0.0); decrgpulse(7.3*p_d,three,0.0,0.0); decrgpulse(5.1*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(5.0*p_d,three,0.0,0.0); decrgpulse(5.5*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.6*p_d,one,0.0,0.0); decrgpulse(7.2*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.4*p_d,three,0.0,0.0); decrgpulse(6.8*p_d,one,0.0,0.0); decrgpulse(7.0*p_d,three,0.0,0.0); decrgpulse(5.2*p_d,one,0.0,0.0); decrgpulse(5.4*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.5*p_d,three,0.0,0.0); decrgpulse(7.3*p_d,one,0.0,0.0); decrgpulse(5.1*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(5.0*p_d,three,0.0,0.0); decrgpulse(5.5*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.6*p_d,one,0.0,0.0); decrgpulse(7.2*p_d,three,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.4*p_d,three,0.0,0.0); decrgpulse(6.8*p_d,one,0.0,0.0); decrgpulse(7.0*p_d,three,0.0,0.0); decrgpulse(5.2*p_d,one,0.0,0.0); decrgpulse(5.4*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.5*p_d,three,0.0,0.0); decrgpulse(7.3*p_d,one,0.0,0.0); decrgpulse(5.1*p_d,three,0.0,0.0); decrgpulse(7.9*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); decrgpulse(5.0*p_d,one,0.0,0.0); decrgpulse(5.5*p_d,three,0.0,0.0); decrgpulse(0.6*p_d,one,0.0,0.0); decrgpulse(4.6*p_d,three,0.0,0.0); decrgpulse(7.2*p_d,one,0.0,0.0); decrgpulse(4.9*p_d,three,0.0,0.0); decrgpulse(7.4*p_d,one,0.0,0.0); decrgpulse(6.8*p_d,three,0.0,0.0); decrgpulse(7.0*p_d,one,0.0,0.0); decrgpulse(5.2*p_d,three,0.0,0.0); decrgpulse(5.4*p_d,one,0.0,0.0); decrgpulse(0.6*p_d,three,0.0,0.0); decrgpulse(4.5*p_d,one,0.0,0.0); decrgpulse(7.3*p_d,three,0.0,0.0); decrgpulse(5.1*p_d,one,0.0,0.0); decrgpulse(7.9*p_d,three,0.0,0.0); endhardloop(); txphase(one); decpwrf(rf0); decphase(t3); obspower(tpwrd); decrgpulse(pwC,t3,0.0,0.0); decoffset(dof - 155*dfrq); rgpulse(pwHd,one,0.0,2.0e-6); txphase(zero); obsunblank(); obsprgon("waltz16", pwHd, 90.0); /* PRG_START_DELAY */ xmtron(); delay(TC - OFFSET_DELAY - POWER_DELAY - PRG_START_DELAY - tau2); decrgpulse(2.0*pwC, zero, 0.0, 0.0); delay(TC + tau2 - POWER_DELAY - PRG_STOP_DELAY - 2*gt1 - gstab - 2.0*pw); xmtroff(); obsprgoff(); obsblank(); rgpulse(pwHd,three,2.0e-6,0.0); obspower(tpwr); if (mag_flg[A] =='y') magradpulse(gzcal*icosel2*gzlvl2, gt1); else zgradpulse(icosel2*gzlvl2, gt1); delay(gstab/2.0); rgpulse(2.0*pw,zero,0.0,0.0); if (mag_flg[A] =='y') magradpulse(gzcal*icosel2*gzlvl2, gt1); else zgradpulse(icosel2*gzlvl2, gt1); delay(gstab/2.0); decphase(zero); simpulse(0.0,pwC, two, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); delay(0.5*del1 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); decphase(t4); delay(0.5*del1 - gt5); simpulse(pw, pwC, one, t4, 0.0, 0.0); zgradpulse(gzlvl6, gt5); txphase(zero); decphase(zero); delay(0.5*del4 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(0.5*del4 - gt5); simpulse(pw,pwC,zero,zero,0.0,0.0); zgradpulse(2.3*gzlvl6, gt1); if (autocal[A] == 'y') { decpower(me180pwr); decpwrf(me180pwrf); delay(0.5*del3 - gt1 - 0.0005 -2.0*POWER_DELAY- WFG2_START_DELAY); simshaped_pulse("","me180",2.0*pw,0.001, zero, zero, 0.0, 0.0); decpwrf(rf0); decphase(zero); } else { delay(0.5*del3 - 0.5*pwC - gt1); simpulse(2.0*pw,2.0*pwC, zero, zero, 0.0, 0.0); } decpower(dpwr); if (mag_flg[A] == 'y') magradpulse(gzcal*((2.3*gzlvl6)+gzlvl1), gt1); else zgradpulse(((2.3*gzlvl6)+gzlvl1), gt1); if (autocal[A] == 'y') { if(dm3[B] == 'y') delay(0.5*del3 - 0.0005 -gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - 2.0*POWER_DELAY); else delay(0.5*del3 - 0.0005 -gt1 - 2.0*GRADIENT_DELAY - 2.0*POWER_DELAY); } else { if(dm3[B] == 'y') delay(0.5*del3 - gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - POWER_DELAY); else delay(0.5*del3 - gt1 - 2.0*GRADIENT_DELAY - POWER_DELAY); } if(dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } if (dm3[B]=='y') lk_sample(); status(C); setreceiver(t11); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values double aXxyxy8 = getval("aXxyxy8"); double aYxyxy8 = getval("aYxyxy8"); double pwXxyxy8 = getval("pwXxyxy8"); double pwYxyxy8 = getval("pwYxyxy8"); double nXYxy8 = getval("nXYxy8"); int counter = nXYxy8; initval(nXYxy8,v8); double fXYxy8 = getval("fXYxy8"); double onYxyxy8 = getval("onYxyxy8"); double srate = getval("srate"); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); DSEQ mix = getdseq("Hmix"); strncpy(mix.t.ch,"dec",3); putCmd("chHmixtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHmixspinal='dec'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwX90") + nXYxy8*(pwXxyxy8 + pwYxyxy8); d.dutyoff = d1 + 4.0e-6; d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = getval("rd") + getval("ad") + at; d.c3 = d.c3 + (!strcmp(mix.seq,"tppm")); d.c3 = d.c3 + ((!strcmp(mix.seq,"tppm")) && (mix.t.a > 0.0)); d.t3 = nXYxy8*(1.0/srate - pwXxyxy8 - pwYxyxy8); d.c4 = d.c4 + (!strcmp(mix.seq,"spinal")); d.c4 = d.c4 + ((!strcmp(mix.seq,"spinal")) && (mix.s.a > 0.0)); d.t4 = nXYxy8*(1.0/srate - pwXxyxy8 - pwYxyxy8); d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phX90,4,table1); settable(phXYxy8,8,table2); settable(phXxyxy8,4,table3); settable(phYxyxy8,4,table4); settable(phRec,4,table5); settable(ph1Rec,4,table6); settable(ph2Rec,4,table7); settable(ph3Rec,4,table8); int tix = counter%8; if ((tix == 1) || (tix == 7)) ttadd(phRec,ph1Rec,4); if ((tix == 2) || (tix == 6)) ttadd(phRec,ph2Rec,4); if ((tix == 3) || (tix == 5)) ttadd(phRec,ph3Rec,4); setreceiver(phRec); // Begin Sequence txphase(phX90); decphase(zero); obspwrf(getval("aX90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // X Direct Polarization rgpulse(getval("pwX90"),phX90,0.0,0.0); // xy8XY Period if (counter > 0) { _dseqon(mix); delay(pwXxyxy8/2.0); obspwrf(aXxyxy8); dec2pwrf(aYxyxy8); sub(v1,v1,v1); if (counter >= 1) { loop(v8,v9); getelem(phXYxy8,v1,v4); incr(v1); getelem(phXxyxy8,ct,v2); getelem(phYxyxy8,ct,v3); add(v4,v2,v2); add(v4,v3,v3); txphase(v2); dec2phase(v3); delay((1.0 - fXYxy8)/srate - pwYxyxy8/2.0 - pwXxyxy8/2.0); if (onYxyxy8 == 2) dec2rgpulse(pwYxyxy8,v3,0.0,0.0); else delay(pwYxyxy8); delay(fXYxy8/srate - pwYxyxy8/2.0 - pwXxyxy8/2.0); rgpulse(pwXxyxy8,v2,0.0,0.0); endloop(v9); delay(1.0/srate - pwXxyxy8/2.0); } _dseqoff(mix); } // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
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() { double gzlvl1,qlvl,grise,gstab,gt1,ss,phase; int icosel,iphase; ss = getval("ss"); grise=getval("grise"); gstab=getval("gstab"); gt1=getval("gt1"); gzlvl1=getval("gzlvl1"); qlvl=getval("qlvl"); phase=getval("phase"); iphase = (int) (phase + 0.5); /* DETERMINE STEADY-STATE MODE */ if (ss < 0) ss = (-1) * ss; else if ((ss > 0) && (ix == 1)) ss = ss; else ss = 0; initval(ss, ssctr); initval(ss, ssval); assign(oph,v2); assign(oph,v1); if (iphase == 2) incr(v1); /* HYPERCOMPLEX MODE */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v6); if ((iphase==1) || (iphase==2)) {add(v1,v6,v1); add(oph,v6,oph);} status(A); rcvroff(); delay(d1); if (getflag("wet")) wet4(zero,one); rlpower(tpwr,TODEV); rgpulse(pw,v1,rof1,rof2); status(B); if (d2 > rof1 + 4.0*pw/3.1416) delay(d2 - rof1 - 4.0*pw/3.1416); status(C); rgpulse(pw,v2,rof1,rof2); delay(gt1+2.0*grise+24.4e-6); rgpulse(2.0*pw,v2,rof1,rof2); icosel=-1; rgradient('z',gzlvl1*(double)icosel); delay(gt1+grise); rgradient('z',0.0); txphase(oph); delay(grise); rgpulse(pw,v2,rof1,rof2); rgradient('z',gzlvl1*qlvl); delay(gt1+grise); rgradient('z',0.0); delay(grise); rcvron(); delay(gstab); status(D); }
pulsesequence() { char rcvrsflag[MAXSTR], mrmode[MAXSTR]; double compH, Hdpwr, pw90, pwx = getval("pwx"), pwxlvl = getval("pwxlvl"); getstr("rcvrs",rcvrsflag); getstr("mrmode",mrmode); Hdpwr = 0.0; compH = 1.0; /* initialize the parameters */ if (strcmp(rcvrsflag,"yy")) printf("rcvrs parameter should be set to 'yy'\n"); /* check decoupling modes */ if ((dm[A] == 'y') || (dm[B] == 'y') || (dm[C] == 'y') || (dm[D] == 'y') || (h**o[0] == 'y')) { printf("dm should be set to 'nnnn' and h**o should set to 'n'"); psg_abort(1); } if(mrmode[A] == 'd') /* make the decoupling waveform */ { Hdpwr = getval("Hdpwr"); compH = getval("compH"); pw90 = getval("pw90"); if(FIRST_FID) H1dec = pbox_mix("pansyW16", "WALTZ16", Hdpwr, pw90*compH, tpwr); } else if(mrmode[A] != 's') mrmode[A] = 'p'; /* default is 'p' */ status(A); delay(1.0e-4); decpower(pwxlvl); obspower(tpwr); delay(d1); status(B); if(mrmode[A] != 'p') /* sequential acquisition */ { rgpulse(pw, oph, rof1, rof2); setactivercvrs("yn"); startacq(alfa); acquire(np,1.0/sw); endacq(); delay(1.0e-6); if(mrmode[A] == 'd') { obsunblank(); pbox_xmtron(&H1dec); } delay(d2); decrgpulse(pwx, oph, rof1, rof2); status(C); setactivercvrs("ny"); startacq(alfa); acquire(np,1.0/sw); endacq(); if(mrmode[A] == 'd') { pbox_xmtroff(); obsblank(); } } else { delay(d2); simpulse(pw, pwx, oph, oph, rof1, rof2); status(C); } }
pulsesequence() { char sspul[MAXSTR]; double pwClvl=getval("pwClvl"); /* LOAD VARIABLES AND CHECK CONDITIONS */ getstr("sspul", sspul); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ ifzero(ssctr); hlv(ct, v4); mod4(ct, v3); elsenz(ssctr); sub(ssval, ssctr, v12); /* v12 = 0,...,ss-1 */ hlv(v12, v4); mod4(v12, v3); endif(ssctr); /* CALCULATE PHASECYCLE */ /* The phasecycle first performs a 4-step cycle on the third pulse in order to select for DQC. Second, the 2-step QIS cycle is added in. Third, a 2-step cycle for axial peak suppression is performed on the second pulse. Fourth, a 2-step cycle for axial peak suppression is performed on the first pulse. If P-type peaks only are being selected, the 2-step cycle for P-type peak selection is performed on the first pulse immediately after the 4-step cycle on the third pulse. */ hlv(v4, v4); if (phase1 == 0) { assign(v4, v6); hlv(v4, v4); mod2(v6, v6); /* v6 = P-type peak selection in w1 */ } hlv(v4, v2); mod4(v4, v4); /* v4 = quadrature image suppression */ hlv(v2, v1); mod2(v1, v1); dbl(v1, v1); mod2(v2, v2); dbl(v2, v2); dbl(v3, v5); add(v3, v5, v5); add(v1, v5, v5); add(v2, v5, v5); add(v4, v5, v5); add(v4, v1, v1); add(v4, v2, v2); add(v4, v3, v3); if (phase1 == 0) { add(v6, v1, v1); add(v6, v5, v5); } if (phase1 == 2) incr(v1); if (phase1 == 3) add(id2, v1, v1); /* adds TPPI increment to the phase of the * first pulse */ assign(v5, oph); /* FOR HYPERCOMPLEX, USE STATES-TPPI TO MOVE AXIALS TO EDGE */ if ((phase1==2)||(phase1==1)) { initval(2.0*(double)(d2_index%2),v9); /* moves axials */ add(v1,v9,v1); add(oph,v9,oph); } /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); if (sspul[0] == 'y') { obspower(pwClvl-12); rgpulse(200*pw, one, 10.0e-6, 0.0e-6); rgpulse(200*pw, zero, 0.0e-6, 1.0e-6); obspower(pwClvl); } delay(d1); status(B); rgpulse(pw, v1, rof1, 1.0e-6); if (d2>0.0) delay(d2 - rof1 - 1.0e-6 -(4*pw)/3.1416); rgpulse(pw, v2, rof1, 0.0); rgpulse(pw, v3, 1.0e-6, rof2); add(v3,one,v8); delay(d3); rgpulse(2.0*pw,v8,rof1,rof1); delay(d3); status(C); }
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 */ spco180a[MAXSTR], spco90b[MAXSTR], spco180b[MAXSTR], cadecseq[MAXSTR]; int phase, phase2, ni, ni2, icosel, /* used to get n and p type */ t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JCH = 1.7 ms */ tauc, /* ~ 1/4JCAC' = 3.6 ms */ taud, /* ~ 1/4JC'CA = 4.3, 4.4 ms */ taue, /* 1/4JC'N = 12.4 ms */ tauf, /* 1/4JNH = 2.25 ms */ BigTC, /* carbon constant time period */ BigTN, /* nitrogen constant time period */ pwn, /* PW90 for 15N pulse */ pwca90a, /* PW90 for 13C at dvhpwr */ pwca180a, /* PW180 for 13C at dvhpwra */ pwco180a, pwca180b, /* PW180 for ca nucleus @ dvhpwrb */ pwco180b, pwco90b, /* PW90 for co nucleus @ dhpwrb */ tsatpwr, /* low level 1H trans.power for presat */ tpwrml, /* power level for h decoupling */ pwmlev, /* h 90 pulse at tpwrml */ dhpwr, /* power level for 13C pulses on dec1 90 for part a of the sequence at 43 ppm */ dvhpwra, /* power level for 180 13C pulses at 43 ppm */ dhpwrb, /* power level for 13C pulses on dec1 - 54 ppm 90 for part b of the sequence*/ dvhpwrb, /* power level for 13C pulses on dec1 - 54 ppm 180 for part b of the sequence */ dhpwr2, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ dofcacb, /* dof for dipsi part, 43 ppm */ pwcadec, /* seduce ca decoupling at dpwrsed */ dpwrsed, /* power level for seduce ca decoupling */ dressed, /* resoln for seduce decoupling = 2 */ dhpwrcoa, /* power level for pwco180a, 180 shaped C' */ sphase1, /* phase shift for off resonance C' 180 */ pwN, pwNlvl, /* N-15 RF calibration parameters */ pwC, compC, pwClvl, /* C-13 RF calibration parameters */ compH,waltzB1, BigT1, gt1, gt2, gt4, gt5, gt6, gt7, gt9, gt10, gstab, gzlvl1, gzlvl2, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl9, gzlvl10; /* 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); taua = getval("taua"); tauc = getval("tauc"); taud = getval("taud"); taue = getval("taue"); tauf = getval("tauf"); BigTC = getval("BigTC"); BigTN = getval("BigTN"); pwN = getval("pwN"); pwNlvl = getval("pwNlvl"); pwn = getval("pwn"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); tpwrml = getval("tpwrml"); dpwr = getval("dpwr"); dhpwr2 = getval("dhpwr2"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); dofcacb = getval("dofcacb"); ni = getval("ni"); ni2 = getval("ni2"); BigT1 = getval("BigT1"); sphase1 = getval("sphase1"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt9 = getval("gt9"); gt10 = getval("gt10"); gstab = getval("gstab"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl9 = getval("gzlvl9"); gzlvl10 = getval("gzlvl10"); if(autocal[0]=='n') { getstr("spco180a",spco180a); getstr("spco90b",spco90b); getstr("spco180b",spco180b); getstr("cadecseq",cadecseq); pwca90a = getval("pwca90a"); pwca180a = getval("pwca180a"); pwco180a = getval("pwco180a"); pwca180b = getval("pwca180b"); pwco90b = getval("pwco90b"); pwco180b = getval("pwco180b"); dhpwr = getval("dhpwr"); dvhpwra = getval("dvhpwra"); dhpwrb = getval("dhpwrb"); dvhpwrb = getval("dvhpwrb"); dhpwrcoa = getval("dhpwrcoa"); dpwrsed = getval("dpwrsed"); dressed = getval("dressed"); pwcadec = getval("pwcadec"); pwmlev = getval("pwmlev"); } else { waltzB1=getval("waltzB1"); pwmlev=1/(4.0*waltzB1); compH = getval("compH"); tpwrml= tpwr - 20.0*log10(pwmlev/(compH*pw)); tpwrml= (int) (tpwrml + 0.5); strcpy(spco180a,"Psed180_133p"); strcpy(spco90b,"Phard90co_118p"); strcpy(spco180b,"Phard180co_118p"); strcpy(cadecseq,"Pseduce1_lek"); if (FIRST_FID) { pwN = getval("pwN"); pwNlvl = getval("pwNlvl"); pwC = getval("pwC"); pwClvl = getval("pwClvl"); compC = getval("compC"); ca90 = pbox("cal", CA90, "", dfrq, compC*pwC, pwClvl); ca180 = pbox("cal", CA180, "", dfrq, compC*pwC, pwClvl); co180 = pbox(spco180a, CO180, CO180ps, dfrq, compC*pwC, pwClvl); co90b = pbox(spco90b, CO90b, CA180ps, dfrq, compC*pwC, pwClvl); co180b = pbox(spco180b, CO180b, CA180ps, dfrq, compC*pwC, pwClvl); ca180b = pbox("cal", CA180b, "", dfrq, compC*pwC, pwClvl); cadec = pbox(cadecseq, CADEC, CADECps, dfrq, compC*pwC, pwClvl); w16 = pbox_dec("cal", "WALTZ16", tpwrml, sfrq, compH*pw, tpwr); } pwca90a = ca90.pw; dhpwr = ca90.pwr; pwca180a = ca180.pw; dvhpwra = ca180.pwr; pwco180a = co180.pw; dhpwrcoa = co180.pwr; pwco90b = co90b.pw; dhpwrb = co90b.pwr; pwco180b = co180b.pw; pwca180b = ca180b.pw; dvhpwrb = ca180b.pwr; pwcadec = 1.0/cadec.dmf; dpwrsed = cadec.pwr; dressed = cadec.dres; pwmlev = 1.0/w16.dmf; pwn=pwN; dhpwr2=pwNlvl; } /* LOAD PHASE TABLE */ settable(t1,1,phi1); settable(t2,1,phi2); settable(t3,4,phi3); settable(t4,1,phi4); settable(t5,2,phi5); settable(t6,2,phi6); settable(t7,1,phi7); settable(t8,1,phi8); settable(t9,8,phi9); settable(t10,8,rec); settable(t11,1,phi11); settable(t12,1,phi12); settable(t13,1,phi13); /* CHECK VALIDITY OF PARAMETER RANGES */ if( 0.5*ni*1/(sw1) > BigTC - gt10 ) { printf(" ni is too big\n"); psg_abort(1); } if( ni2*1/(sw2) > 2.0*BigTN ) { 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' )) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } if( pwmlev < 30.0e-6 ) { printf("too much power during proton mlev sequence\n"); psg_abort(1); } if( tpwrml > 53 ) { printf("tpwrml is too high\n"); 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( dpwr2 > 50 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( dhpwr > 62 ) { printf("don't fry the probe, DHPWR too large! "); psg_abort(1); } if( dhpwrb > 62 ) { printf("don't fry the probe, DHPWRB too large! "); psg_abort(1); } if( dvhpwrb > 62 ) /* pwr level for dipsi */ { printf("don't fry the probe, DVHPWRB too large! "); psg_abort(1); } if( dhpwr2 > 62 ) { printf("don't fry the probe, DHPWR2 too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwmlev > 200.0e-6 ) { printf("dont fry the probe, pwmlev too high ! "); psg_abort(1); } if( pwn > 200.0e-6 ) { printf("dont fry the probe, pwn too high ! "); psg_abort(1); } if( pwcadec > 500.0e-6 || pwcadec < 200.0e-6 ) { printf("pwcadec outside reasonable limits: < 500e-6 > 200e-6 \n"); psg_abort(1); } if( dpwrsed > 45 ) { printf("dpwrsed is too high\n"); psg_abort(1); } if( gt1 > 15e-3 || gt2 > 15e-3 || gt4 >=15e-3 || gt5 > 15e-3 || gt6 >= 15e-3 || gt7 >= 15e-3 || gt9 >= 15e-3 || gt10 >= 15e-3) { printf("all gti values must be < 15e-3\n"); psg_abort(1); } if(gt10 > 250.0e-6) { printf("gt10 must be 250e-6\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) tsadd(t3,1,4); if (phase2 == 2) { tsadd(t11,2,4); icosel = 1; } else icosel = -1; /* Set up f1180 tau1 = t1 */ 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 = t2 */ 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(t10,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(t10,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); decoffset(dofcacb); /* initially pulse at 43 ppm */ decpower(dhpwr); /* Set Dec1 power for hard 13C pulses */ dec2power(dhpwr2); /* Set Dec2 power for 15N hard pulses */ /* Presaturation Period */ if (fsat[A] == 'y') { obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ delay(2.0e-5); rgpulse(d1,zero,rof1,rof1); obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[A] == '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 obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(d1); txphase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); delay(20.0e-6); /* ensure that magnetization originates on H and not 13C */ decrgpulse(pwca90a,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(gstab); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ decphase(t1); delay(0.2e-6); zgradpulse(gzlvl9,gt9); delay(2.0e-6); decpower(dvhpwra); delay(taua - POWER_DELAY - gt2 - 2.2e-6); /* taua <= 1/4JCH */ simpulse(2*pw,pwca180a,zero,t1,0.0,0.0); decpower(dhpwr); delay(0.2e-6); zgradpulse(gzlvl9,gt9); delay(2.0e-6); txphase(t2); decphase(t3); delay(taua - POWER_DELAY - gt2 - 2.2e-6); rgpulse(pw,t2,0.0,0.0); decrgpulse(pwca90a,t3,2.0e-6,0.0); delay(2.0e-6); delay(tau1); decpower(dhpwrcoa); decshaped_pulse(spco180a,pwco180a,zero,4.0e-6,0.0); dec2rgpulse(2*pwn,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(2.0e-6); decpower(dvhpwra); delay(0.80e-3 - gt10 - 4.0e-6 - 2*POWER_DELAY); delay(0.2e-6); rgpulse(2*pw,zero,0.0,0.0); decphase(t4); initval(1.0,v3); decstepsize(0.0); dcplrphase(v3); delay(BigTC - 0.80e-3); decrgpulse(pwca180a,t4,0.0,0.0); dcplrphase(zero); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(2.0e-6); delay(BigTC - tau1 + 2*pwn + 2*pw - 2*POWER_DELAY - gt10 - 4.0e-6); delay(0.2e-6); decpower(dhpwrcoa); decshaped_pulse(spco180a,pwco180a,zero,4.0e-6,0.0); /* bloch seigert */ decpower(dhpwr); decrgpulse(pwca90a,zero,2.0e-6,0.0); txphase(one); delay(2.0e-6); /* H decoupling on */ obspower(tpwrml); obsprgon("waltz16",pwmlev,90.0); xmtron(); /* TURN ME OFF DONT FORGET */ /* H decoupling on */ decpower(dhpwrcoa); decshaped_pulse(spco180a,pwco180a,zero,4.0e-6,0.0); /* bloch seigert */ decphase(t5); initval(1.0,v3); decstepsize(0.0); dcplrphase(v3); delay(tauc - 3*POWER_DELAY - PRG_START_DELAY); decpower(dvhpwra); decrgpulse(pwca180a,t5,0.0,0.0); dcplrphase(zero); decpower(dhpwrcoa); decshaped_pulse(spco180a,pwco180a,zero,4.0e-6,0.0); decphase(zero); decpower(dhpwr); delay(tauc - 2*POWER_DELAY); decrgpulse(pwca90a,zero,0.0,0.0); /* H decoupling off */ xmtroff(); obsprgoff(); /* H decoupling off */ rgpulse(pwmlev,two,2.0e-6,0.0); delay(0.2e-6); decoffset(dof); decpower(dhpwrb); delay(0.2e-6); zgradpulse(gzlvl4,gt4); delay(gstab); rgpulse(pwmlev,zero,2.0e-6,0.0); txphase(one); delay(2.0e-6); /* H decoupling on */ obspower(tpwrml); obsprgon("waltz16",pwmlev,90.0); xmtron(); /* H decoupling on */ decphase(t6); delay(2.0e-6); decshaped_pulse(spco90b,pwco90b,t6,0.0,0.0); decphase(zero); delay(taud - POWER_DELAY - 4.0e-6); decpower(dvhpwrb); decrgpulse(pwca180b,zero,4.0e-6,0.0); decpower(dhpwrb); delay(taue - taud - POWER_DELAY + 2*pwn); /* adjust phase */ initval(1.0,v2); decstepsize(sphase1); dcplrphase(v2); /* adjust phase */ decshaped_pulse(spco180b,pwco180b,zero,0.0,0.0); dcplrphase(zero); dec2rgpulse(2*pwn,zero,0.0,0.0); delay(taue - 2*POWER_DELAY - 4.0e-6 - 4.0e-6); decpower(dvhpwrb); decrgpulse(pwca180b,zero,4.0e-6,0.0); /* bloch seigert */ decpower(dhpwrb); decshaped_pulse(spco90b,pwco90b,t7,4.0e-6,0.0); /* H decoupling off */ xmtroff(); obsprgoff(); /* H decoupling off */ rgpulse(pwmlev,two,2.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl5,gt5); delay(gstab); rgpulse(pwmlev,zero,2.0e-6,0.0); txphase(one); delay(2.0e-6); /* H decoupling on */ obspower(tpwrml); obsprgon("waltz16",pwmlev,90.0); xmtron(); /* H decoupling on */ dec2rgpulse(pwn,t8,2.0e-6,0.0); dec2phase(t9); decphase(zero); /* seduce on */ decpower(dpwrsed); decprgon(cadecseq,pwcadec,dressed); decon(); /* seduce on */ delay(BigTN - tau2 + WFG_START_DELAY + WFG_STOP_DELAY + pwco180b); /* seduce off */ decoff(); decprgoff(); decpower(dhpwrb); /* seduce off */ dec2rgpulse(2*pwn,t9,0.0,0.0); decshaped_pulse(spco180b,pwco180b,zero,0.0,0.0); dec2phase(t11); /* seduce on */ decpower(dpwrsed); decprgon(cadecseq,pwcadec,dressed); decon(); /* seduce on */ delay(BigTN + tau2 - 5.5e-3 - POWER_DELAY - PRG_STOP_DELAY - pwmlev - 2.0e-6); /* H decoupling off */ xmtroff(); obsprgoff(); /* H decoupling off */ rgpulse(pwmlev,two,2.0e-6,0.0); obspower(tpwr); delay(2.5e-3); /* seduce off */ decoff(); decprgoff(); decpower(dhpwrb); /* seduce off */ delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(2.0e-6); txphase(zero); dec2phase(t11); delay(3.0e-3 - gt1 - 2.2e-6 - 2.0*GRADIENT_DELAY); sim3pulse(pw,0.0,pwn,zero,zero,t11,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); dec2phase(zero); delay(tauf - 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(2.0e-6); txphase(t12); dec2phase(t13); delay(tauf - gt7 - 2.2e-6); sim3pulse(pw,0.0,pwn,t12,zero,t13,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(tauf - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwn,zero,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); txphase(zero); delay(tauf - gt7 - 2.2e-6); rgpulse(pw,zero,0.0,0.0); txphase(zero); delay(BigT1); rgpulse(2*pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(icosel*gzlvl2,gt1/10); delay(2.0e-6); delay(BigT1 - gt1/10 - POWER_DELAY - 4.0e-6 - 2*GRADIENT_DELAY); dec2power(dpwr2); /* set power for 15N decoupling */ /* BEGIN ACQUISITION */ status(C); setreceiver(t10); }
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); }
void 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 */ shib[MAXSTR], /* iburp for inversion during first inept */ Hshp[MAXSTR], /* proton inversion during chirp */ ddseq[MAXSTR], shreb[MAXSTR], /* reburb hard during t2 */ co_shp[MAXSTR], /* shape of co 180 at 176 ppm */ CT_flg[MAXSTR], codecseq[MAXSTR], c180_flg[MAXSTR], n_shift[MAXSTR], shibca[MAXSTR], shibcai[MAXSTR]; int phase, phase2, t2_counter, ni2, ni, t1_counter; /* used for states tppi in t2,t1 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JCH = 1.7 ms; first inept */ mix, /* noesy mixing time */ TC, /* Variable CT period during t1 1/2JCC */ TC2, /* Variable CT period during t3 1/2JCC */ pwc, /* 90 c pulse at dhpwr */ tsatpwr, /* low level 1H trans.power for presat */ dhpwr, /* power level for high power 13C pulses on dec1 */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ pwC,pwClvl,compC,pwN,pwNlvl,ppm,ofs,bw, /*used by Pbox */ d_ib, pwib, pwhshp, pwd1, /* 2H flip back pulses */ d_reb, pwreb, ph_reb, ph_reb1, /* only used if CT_flg=='y' and n_shift=='y' */ pwco180, dhpwr2, pwn, d_co180, pwcodec, /* carbon pw90 for seduce decoupling */ dpwrsed, dressed, d_ibca, /* power level for selective 13Ca pulse during CT-t2 */ pwibca, /* selective 13Ca pulse width */ 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; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("autocal",autocal); getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("ddseq",ddseq); getstr("n_shift",n_shift); getstr("Hshp",Hshp); getstr("CT_flg",CT_flg); getstr("c180_flg",c180_flg); compC = getval("compC"); pwN=getval("pwN"); pwNlvl=getval("pwNlvl"); pwC = getval("pwC"); pwClvl=getval("pwClvl"); pwhshp = getval("pwhshp"); taua = getval("taua"); mix = getval("mix"); TC = getval("TC"); pwc = getval("pwc"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dhpwr = getval("dhpwr"); dpwr = getval("dpwr"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni2 = getval("ni2"); ni = getval("ni"); pwd1 = getval("pwd1"); ph_reb = getval("ph_reb"); ph_reb1 = getval("ph_reb1"); TC2 = getval("TC2"); dhpwr2 = getval("dhpwr2"); pwn = getval("pwn"); setautocal(); if(autocal[0]=='n') { getstr("shreb",shreb); getstr("shib",shib); getstr("shibca",shibca); getstr("shibcai",shibcai); getstr("co_shp",co_shp); getstr("codecseq",codecseq); d_reb = getval("d_reb"); pwreb = getval("pwreb"); d_ib = getval("d_ib"); pwib = getval("pwib"); d_ibca = getval("d_ibca"); pwibca = getval("pwibca"); d_co180 = getval("d_co180"); pwco180 = getval("pwco180"); pwcodec = getval("pwcodec"); dpwrsed = getval("dpwrsed"); dressed = getval("dressed"); } else { /*strcpy(Hshp,"hard"); former declarations using TNMR.h syntax strcpy(shreb,"Preb_5p"); strcpy(shib,"Pib_1p5"); strcpy(shibca,"Pib_35p"); strcpy(shibcai,"Pib_35pi"); strcpy(co_shp,"Psed_156p"); strcpy(codecseq,"Pdec_156p");*/ strcpy(Hshp,"hard"); strcpy(shreb,"Preb_5p"); strcpy(shib,"Pib_1p5"); strcpy(shibca,"Pib_35p"); strcpy(shibcai,"Pib_35pi"); strcpy(co_shp,"Psed_156p"); strcpy(codecseq,"Pdec_156p"); if (FIRST_FID) { ppm = getval("dfrq"); /* These are former declarations (at top) using TNMR.h syntax */ /*REB180 "reburp 110p 5p"*/ /* RE-BURP 180 on Cab at 24.6 ppm, 5 ppm away */ /*IB180 "iburp2 24.4p 1.5p"*/ /* I-BURP 180 on Me at 21.1 ppm, 1.5 ppm away */ /*IBCA "iburp2 24.4p 35p"*/ /* I-BURP 180 on Cab at 54.6 ppm, 35 ppm away */ /*IBCAI "iburp2 24.4p 35p"*/ /* I-BURP 180 on Cab at 54.6 ppm, 35 ppm away */ /*CO180 "seduce 30p 156p"*/ /* SEDUCE 180 on C' at 175.6 ppm 156 ppm away */ /*CODEC "WURST2 20p/4m 156p"*/ /* WURST2 decoupling on C' at 175.6 ppm 156 ppm away */ /*REB180ps "-stepsize 0.5 -attn i"*/ /* seduce 180 shape parameters */ /*CODECps "-dres 1.0 -maxincr 20.0 -attn i"*/ /*co180 = pbox(co_shp, CO180, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*ibcai = pbox(shibcai, IBCAI, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*ibca = pbox(shibca, IBCA, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*ib180 = pbox(shib, IB180, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*reb = pbox(shreb, REB180, REB180ps, dfrq, compC*pwc, dhpwr);*/ /*COdec = pbox(codecseq, CODEC, CODECps, dfrq, compC*pwc, dhpwr);*/ bw = 110.0*ppm; ofs = 5.0*ppm; Preb_5p = pbox_Rsh("Preb_5p", "reburp", bw , ofs, compC*pwC, pwClvl); bw = 24.4*ppm; ofs = 1.5*ppm; Pib_1p5 = pbox_Rsh("Pib_1p5", "iburp2", bw , ofs, compC*pwC, pwClvl); bw = 24.4*ppm; ofs = 35*ppm; Pib_35p = pbox_Rsh("Pib_35p", "iburp2", bw , ofs, compC*pwC, pwClvl); bw = 24.4*ppm; ofs = 35*ppm; Pib_35pi = pbox_Rsh("Pib_35pi", "iburp2", bw , ofs, compC*pwC, pwClvl); bw = 30.0*ppm; ofs = 156*ppm; Psed_156p = pbox_Rsh("Psed_156p", "seduce", bw , ofs, compC*pwC, pwClvl); bw = 20.0*ppm; ofs = 156*ppm; Pdec_156p = pbox_Dsh("Pdec_156p", "WURST2", bw , ofs, compC*pwC, pwClvl); ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } d_reb = Preb_5p.pwr; pwreb = Preb_5p.pw; d_ib = Pib_1p5.pwr; pwib = Pib_1p5.pw; d_ibca = Pib_35p.pwr; pwibca = Pib_35p.pw; d_co180 = Psed_156p.pwr; pwco180 = Psed_156p.pw; dpwrsed = Pdec_156p.pwr; pwcodec = 1.0/Pdec_156p.dmf; dressed = Pdec_156p.dres; pwc=pwC; dhpwr=pwClvl; pwn=pwN; dhpwr2=pwNlvl; pwhshp=2.0*pw; pwd1=1/dmf3; pwhshp=2.0*pw; } 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 PHASE TABLE */ settable(t1,4,phi1); settable(t2,8,phi2); settable(t7,2,phi7); settable(t8,2,phi8); settable(t9,8,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if(TC/2.0 - 0.5*(ni-1)*1/(sw1) - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt4 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY < 0.2e-6) { printf(" ni is too big\n"); psg_abort(1); } if(CT_flg[A] == 'y' && n_shift[A] == 'n') { if(TC2/2.0 - 0.5*(ni2-1)*1/(sw2) - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY < 0.2e-6) { printf(" ni2 is too big\n"); psg_abort(1); } } if(CT_flg[A] == 'y' && n_shift[A] == 'y') { if(TC2/2.0 - 0.5*(ni2-1)/sw2 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - 2.0e-6 - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwibca - WFG_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY < 0.2e-6) { printf(" ni2 is too big\n"); psg_abort(1); } } if((dm[A] == 'y' || dm[B] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect dec2 decoupler flags! "); psg_abort(1); } if((dm3[A] == 'y' || dm3[B] == 'y' || dm3[C] == 'y')) { printf("incorrect dec3 decoupler flags! "); psg_abort(1); } if( tsatpwr > 6 ) { printf("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( d_ib > 54 ) { printf("don't fry the probe, d_ib too large! "); psg_abort(1); } if( dpwr2 > 49 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( dpwr3 > 51 ) { printf("don't fry the probe, DPWR3 too large! "); psg_abort(1); } if( dhpwr > 63 ) { printf("don't fry the probe, DHPWR too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwd1 < 100.0e-6 && pwd1 != 0.0) { printf("dont fry the probe, pwd1 too short and dpwr3 too high! "); psg_abort(1); } if(d_co180 > 50) { printf("dont fry the probe, d_co180 is too high\n "); psg_abort(1); } if(((pwco180 > 250e-6) || (pwco180 < 200e-6)) && (autocal[A] == 'n')) { printf("pwco180 is misset < 250 us > 200 us\n"); psg_abort(1); } if(dpwrsed > 45) { printf("dpwrsed is misset < 46\n"); psg_abort(1); } if(gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 || gt7 > 15e-3 || gt8 > 15e-3 || gt9 > 15e-3 || gt10 > 15e-3 || gt11 > 15e-3 || gt12 > 15e-3) { printf("gradients on for too long. Must be < 15e-3 \n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase2 == 2) { tsadd(t2,1,4); } if (phase == 2) tsadd(t1,1,4); /* Set up f2180 tau2 = t2 */ tau2 = d3; if(CT_flg[A] == 'y') { if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); } } if(CT_flg[A] == 'n' && n_shift[A] == 'n') { if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); if(tau2 < 0.0 && ix == 1) printf("tau2 start2 negative; decrease sw2\n"); } if(f2180[A] == 'n') { tau2 = ( tau2 - 4.0/PI*pwc - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - 2.0*pwn - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); } } if(CT_flg[A] == 'n' && n_shift[A] == 'y') { if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) - 4.0/PI*pwn - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); if(tau2 < 0.0 && ix == 1) printf("tau2 start2 negative; decrease sw2\n"); } if(f2180[A] == 'n') { tau2 = ( tau2 - 4.0/PI*pwn - POWER_DELAY - PRG_START_DELAY - 4.0*pw - 4.0e-6 - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6); } } if(tau2 < 0.4e-6) tau2 = 0.4e-6; tau2 = tau2/2.0; /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); } if(tau1 < 0.4e-6) tau1 = 0.4e-6; tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(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(t2,2,4); tsadd(t9,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(dhpwr); /* Set Dec1 power for hard 13C pulses */ dec2power(dhpwr2); /* Set Dec2 power for hard 15N pulses */ dec3power(dpwr3); /* Set Dec3 power for 2H pulses */ /* Presaturation Period */ if (fsat[0] == 'y') { 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 */ txphase(zero); dec2phase(zero); decphase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); lk_hold(); delay(20.0e-6); /* first ensure that magnetization does infact start on H and not C */ decrgpulse(pwc,zero,2.0e-6,2.0e-6); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); decpower(d_ib); /* set power for chirp during inept */ delay(4e-6); /* this is the real start */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6 - WFG2_START_DELAY); /* taua <= 1/4JCH */ simshaped_pulse(Hshp,shib,pwhshp,pwib,zero,zero,0.0,0.0); decphase(zero); txphase(one); decphase(t1); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(taua - gt2 - 4.0e-6 - WFG2_STOP_DELAY - POWER_DELAY); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); decrgpulse(pwc,t1,0.0,0.0); decphase(zero); delay(tau1); decpower(d_co180); sim3shaped_pulse(Hshp,co_shp,"hard",pwhshp,pwco180,2.0*pwn,zero,zero,zero,4.0e-6,0.0); delay(TC/2.0 - tau1 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt4 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY); dec3rgpulse(pwd1,zero,0.0,0.0); delay(tau1); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); initval(1.0,v3); decstepsize(ph_reb); dcplrphase(v3); decpower(d_reb); decshaped_pulse(shreb,pwreb,zero,4.0e-6,0.0); dcplrphase(zero); decphase(zero); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); delay(TC/2.0 - tau1 - WFG_STOP_DELAY - POWER_DELAY - gt4 - gstab -2.0e-6); decrgpulse(pwc,zero,0.0,0.0); dec3rgpulse(pwd1,two,4.0e-6,0.0); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(gstab); rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); decpower(d_ib); delay(taua - gt6 - 4.0e-6 - WFG2_START_DELAY - POWER_DELAY); simshaped_pulse(Hshp,shib,pwhshp,pwib,zero,zero,0.0,0.0); decphase(zero); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); decpower(dhpwr); txphase(one); delay(taua - gt6 - gstab -2.0e-6 - POWER_DELAY - WFG2_STOP_DELAY); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(mix - gt7 - 352.0e-6); decrgpulse(pwc,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(gstab); decpower(d_ib); /* set power level for iburp */ rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(2.0e-6); if(n_shift[A] == 'n') { delay(taua - gt8 - 4.0e-6 - WFG2_START_DELAY); /* taua <= 1/4JCH */ simshaped_pulse(Hshp,shib,pwhshp,pwib,zero,zero,0.0,0.0); decphase(zero); } else { delay(taua - gt8 - 4.0e-6 - WFG3_START_DELAY); sim3shaped_pulse(Hshp,shib,"hard",pwhshp,pwib,2.0*pwn,zero,zero,zero,0.0,0.0); } txphase(one); decphase(t2); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(2.0e-6); if(n_shift[A] == 'n') delay(taua - gt8 - 4.0e-6 - WFG2_STOP_DELAY - POWER_DELAY); else delay(taua - gt8 - 4.0e-6 - WFG3_STOP_DELAY - POWER_DELAY); rgpulse(pw,one,0.0,0.0); txphase(zero); delay(2.0e-6); zgradpulse(gzlvl9,gt9); delay(gstab); if(CT_flg[A] == 'y' && n_shift[A] == 'n') { decrgpulse(pwc,t2,0.0,0.0); decphase(zero); delay(tau2); decpower(d_co180); sim3shaped_pulse(Hshp,co_shp,"hard",pwhshp,pwco180,2.0*pwn,zero,zero,zero,4.0e-6,0.0); delay(TC2/2.0 - tau2 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY); dec3rgpulse(pwd1,zero,0.0,0.0); delay(tau2); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); initval(1.0,v4); decstepsize(ph_reb); dcplrphase(v4); decpower(d_reb); decshaped_pulse(shreb,pwreb,zero,4.0e-6,0.0); dcplrphase(zero); decphase(zero); decpower(dhpwr); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); delay(TC2/2.0 - tau2 - WFG_STOP_DELAY - POWER_DELAY - gt10 - gstab -2.0e-6); decrgpulse(pwc,zero,0.0,0.0); dec3rgpulse(pwd1,two,4.0e-6,0.0); } if(CT_flg[A] == 'y' && n_shift[A] == 'y') { dec2phase(t2); delay(2.0e-6); dec2rgpulse((pwn-pwc)/2.0,t2,0.0,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,t2,t2,0.0,0.0); dec2rgpulse((pwn-pwc)/2.0,t2,0.0,0.0); decphase(zero); delay(tau2); decphase(zero); decpower(d_co180); sim3shaped_pulse(Hshp,co_shp,"hard",pwhshp,pwco180,0.0e-6,zero,zero,zero,4.0e-6,2.0e-6); decpower(d_ibca); decshaped_pulse(shibca,pwibca,zero,4.0e-6,0.0); decphase(zero); delay(TC2/2.0 - tau2 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY - pwco180 - WFG3_STOP_DELAY - 2.0e-6 - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwibca - WFG_STOP_DELAY - pwd1 - gt10 - gstab -2.0e-6 - POWER_DELAY - 4.0e-6 - WFG3_START_DELAY); dec3rgpulse(pwd1,zero,0.0,0.0); delay(tau2); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); initval(1.0,v4); decstepsize(ph_reb1); dcplrphase(v4); decpower(d_reb); sim3shaped_pulse("hard",shreb,"hard",0.0e-6,pwreb,2.0*pwn,zero,zero,zero,4.0e-6,0.0); dcplrphase(zero); decphase(t7); decpower(d_ibca); decshaped_pulse(shibcai,pwibca,t7,4.0e-6,0.0); decpower(dhpwr); decphase(zero); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(gstab); delay(TC2/2.0 - tau2 - WFG3_STOP_DELAY - POWER_DELAY - 4.0e-6 - WFG_START_DELAY - pwibca - WFG_STOP_DELAY - POWER_DELAY - gt10 - gstab -2.0e-6); dec2rgpulse((pwn-pwc)/2.0,zero,0.0,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,zero,zero,0.0,0.0); dec2rgpulse((pwn-pwc)/2.0,zero,0.0,0.0); dec3rgpulse(pwd1,two,4.0e-6,0.0); } if(CT_flg[A] == 'n' && n_shift[A] == 'n') { txphase(one); decrgpulse(pwc,t2,0.0,0.0); if(c180_flg[A] == 'n') { decphase(zero); /* seduce on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* seduce on */ delay(tau2); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,2.0e-6,0.0); rgpulse(pw,one,2.0e-6,0.0); dec2rgpulse(2.0*pwn,zero,0.0,0.0); delay(tau2); /* seduce off */ decoff(); decprgoff(); decpower(dhpwr); /* seduce off */ } else decrgpulse(2.0*pwc,zero,4.0e-6,0.0); decrgpulse(pwc,zero,4.0e-6,0.0); } if(CT_flg[A] == 'n' && n_shift[A] == 'y') { txphase(one); dec2phase(t2); dec2rgpulse((PI-2.0)/PI*(pwn-pwc),t2,2.0e-6,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,t2,t2,0.0,0.0); dec2rgpulse((2.0/PI)*(pwn-pwc),t2,0.0,0.0); if(c180_flg[A] == 'n') { decphase(zero); /* seduce on */ decpower(dpwrsed); decprgon(codecseq,pwcodec,dressed); decon(); /* seduce on */ delay(tau2); rgpulse(pw,one,0.0,0.0); rgpulse(2.0*pw,zero,2.0e-6,0.0); rgpulse(pw,one,2.0e-6,0.0); delay(tau2); /* seduce off */ decoff(); decprgoff(); /* note that ca-n evolves ; keep t2,max <= 9.5ms */ decpower(dhpwr); /* seduce off */ } else sim3pulse(0.0,2.0*pwc,2.0*pwn,zero,zero,zero,4.0e-6,0.0); dec2rgpulse((2.0/PI)*(pwn-pwc),zero,4.0e-6,0.0); sim3pulse(0.0e-6,pwc,pwc,zero,zero,zero,0.0,0.0); dec2rgpulse((PI-2.0)/PI*(pwn-pwc),zero,0.0,0.0); } delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(gstab); lk_sample(); rgpulse(pw,t8,4.0e-6,0.0); /* 90 deg 1H pulse */ delay(2.0e-6); zgradpulse(gzlvl12,gt12); delay(2.0e-6); decpower(d_ib); if(n_shift[A] == 'n') { delay(taua - gt12 - 4.0e-6 - WFG2_START_DELAY - POWER_DELAY); simshaped_pulse(Hshp,shib,pwhshp,pwib,t8,zero,0.0,0.0); decphase(zero); } else { delay(taua - gt12 - 4.0e-6 - WFG3_START_DELAY - POWER_DELAY); sim3shaped_pulse(Hshp,shib,"hard",pwhshp,pwib,2.0*pwn,t8,zero,zero,0.0,0.0); } delay(2.0e-6); zgradpulse(gzlvl12,gt12); delay(2.0e-6); if(n_shift[A] == 'n') delay(taua - gt12 - 4.0e-6 - WFG2_STOP_DELAY - 2.0*POWER_DELAY); else delay(taua - gt12 - 4.0e-6 - WFG3_STOP_DELAY - 2.0*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* Set power for decoupling */ rgpulse(pw,t8,0.0,rof2); /* BEGIN ACQUISITION */ status(C); setreceiver(t9); }
pulsesequence() { /* DECLARE VARIABLES */ char SE[MAXSTR], /* coherence gradients & sensitivity enhance */ CT[MAXSTR], /* constant time in t1 */ CCdseq[MAXSTR], CChomodec[MAXSTR], /* Setup for C-imino - C-H6 */ C13refoc[MAXSTR], /* C13 pulse in middle of t1*/ f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR]; /* Flag to start t1 @ halfdwell */ int icosel, ni2 = getval("ni2"), t1_counter, t2_counter; double tau1, /* t1 delay */ tau2, /* t2 delay */ lambda = 0.94/(4.0*getval("JCH")), /* 1/4J C-H INEPT delay */ CTdelay = getval("CTdelay"), /* total constant time evolution */ CCdpwr = getval("CCdpwr"), /* power level for CC decoupling */ CCdres = getval("CCdres"), /* dres for CC decoupling */ CCdmf = getval("CCdmf"), /* dmf for CC decoupling */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ pwZa, /* the largest of 2.0*pw and 2.0 *pwN */ tpwr = getval("tpwr"), /* power for H1 pulses */ pw = getval("pw"), /* H1 90 degree pulse length at tpwr */ compH = getval("compH"), /* adjustment for H1 amplifier compression */ ncyc_cc = getval("ncyc_cc"), /* number of DIPSI3 cycles for CC spinlock */ tof_75, /* tof shifted to 7.5 ppm for H4-N4 transfer */ tof_12, /* tof shifted to 12 ppm for H3-N3 transfer */ dof_80, /* dof shifted to 169 ppm for N3-C4 transfer */ dof_92p5, /* dof shifted to 92.5ppm */ /* p_d is used to calculate the isotropic mixing */ p_d, /* 50 degree pulse for DIPSI-3 at rfdC */ p_d2, /* 50 degree pulse for DIPSI-3 at rfd */ rfd, /* fine C13 power for 10 kHz rf for 500MHz magnet */ sw1 = getval("sw1"), sw2 = getval("sw2"), gstab = getval("gstab"), pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrs, /* power for the pwHs ("rna_H2Osinc") pulse */ pwHs2 = getval("pwHs2"), /* H1 90 degree pulse length at tpwrs2 */ tpwrs2, /* power for the pwHs2 square pulse */ gt1 = getval("gt1"), /* coherence pathway gradients */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gt3 = getval("gt3"), gzlvl4 = getval("gzlvl4"), gt4 = getval("gt4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"), gt5 = getval("gt5"), gzlvlr = getval("gzlvlr"); getstr("SE",SE); getstr("CT",CT); getstr("CChomodec",CChomodec); getstr("CCdseq",CCdseq); getstr("C13refoc",C13refoc); getstr("f1180",f1180); getstr("f2180",f2180); /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t3,8,phi3); settable(t4,16,phi4); settable(t9,1,phi9); settable(t10,1,phi10); settable(t5,4,phi5); settable(t11,8,rec1); /* INITIALIZE VARIABLES */ /* different offset values tof=H2O, dof=110ppm, dof2=200ppm */ tof_75 = tof + 2.5*sfrq; /* tof shifted to nH2 */ tof_12 = tof + 8.0*sfrq; /* tof shifted to nH */ dof_92p5 = dof - 17.5*dfrq; /* dof shifted to C1' */ dof_80 = dof - 30*dfrq; /* dof shifted to C6 */ /* 1.9 kHz DIPSI-3 at 500MHz scaled to this sfrq*/ p_d = (5.0)/(9.0*4.0*1900.0*(sfrq/500.0)); /* 7 kHz DIPSI-3 at 500MHz scaled to this sfrq*/ p_d2 = (5.0)/(9.0*4.0*7000.0*(sfrq/500.0)); ncyc_cc = (int) (ncyc_cc + 0.5); if (ncyc_cc > 0 ) { printf("CC-mixing time is %f ms.\n",(ncyc_cc*51.8*4*p_d2)); } if( ncyc_cc > 12 ) { text_error("check C->C dipsi-3 time !! "); psg_abort(1); } initval(ncyc_cc,v2); /* fine C13 power for dipsi-3 isotropic mixing */ rfd = (compC*4095.0*pwC*5.0)/(p_d2*9.0); rfd = (int) (rfd + 0.5); /* 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 */ /* selective H20 square pulse */ tpwrs2 = tpwr - 20.0*log10(pwHs2/(compH*pw)); tpwrs2 = (int) (tpwrs2); if (2.0*pw > 2.0*pwN) pwZa = 2.0*pw; else pwZa = 2.0*pwN; if ((CT[A]=='y') && (ni2/(4.0*sw2) > CTdelay)) { text_error( " ni2 is too big. Make ni2 equal to %d or less.\n", ((int)(CTdelay*sw2*4.0)) ); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 2) tsadd(t5,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(t5,2,4); tsadd(t11,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; icosel=1; if (SE[A]=='y') { if (phase2 == 2) { tsadd(t10,2,4); icosel = -1; } } /* 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) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } /* CHECK VALIDITY OF PARAMETER RANGE */ if( sfrq > 610 ) { printf("Power Levels at 750/800 MHz may be too high for probe"); psg_abort(1); } if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } if( dpwrf2 < 4095 ) { printf("reset dpwrf2=4095 and recalibrate N15 90 degree pulse"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y')) { printf("incorrect dec1 decoupler flag! Should be 'nny' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' or 'nny' "); psg_abort(1); } if( ((dm[C] == 'y') && (dm2[C] == 'y') && (at > 0.18)) ) { text_error("check at time! Don't fry probe !! "); 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( pw > 20.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwC > 40.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } if (gzlvlr > 500 || gzlvlr < -500) { text_error(" RDt1-gzlvlr must be -500 to 500 (0.5G/cm) \n"); psg_abort(1); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); obsstepsize(0.5); decpower(pwClvl); decstepsize(0.5); obsoffset(tof); dec2power(pwNlvl); dec2stepsize(0.5); decoffset(dof_80); /* Preset the carbon frequency for the C1' carbons */ txphase(zero); decphase(zero); dec2phase(zero); delay(d1); rcvroff(); 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); delay(5.0e-4); delay(lambda); simpulse(2*pw, 2*pwC, zero, zero, 0.0, 0.0); dec2phase(t5); delay(lambda - SAPS_DELAY); simpulse(pw, pwC, zero, t5, 0.0, 0.0); /* 2x, -2x*/ dec2phase(zero); txphase(one); zgradpulse(gzlvl5,gt5); delay(lambda - SAPS_DELAY - gt5); simpulse(2*pw, 2*pwC, one, zero, 0.0, 0.0); zgradpulse(gzlvl5,gt5); delay(lambda - 2*SAPS_DELAY - gt5 - 2*POWER_DELAY); decpwrf(4095.0); txphase(zero); decphase(zero); if (C13refoc[A]=='y') { if (tau1 > (2.0*GRADIENT_DELAY + pwN + 0.64*pw + 5.0*SAPS_DELAY)) { zgradpulse(gzlvlr, 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); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(-1.0*gzlvlr, 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 ); } else { if (tau1 > (2.0*GRADIENT_DELAY + pwN + 0.64*pw + 5.0*SAPS_DELAY)) { zgradpulse(gzlvlr, 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*gzlvlr, 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 ); } decrgpulse(pwC,three,0.0,0.0); /* flip transferred 13C-magn. to z */ decrgpulse(pwC,one,0.0,0.0); /* flip transferred 13C-magn. to z */ decphase(zero); decpwrf(rfd); starthardloop(v2); decrgpulse(6.4*p_d2,zero,0.0,0.0); decrgpulse(8.2*p_d2,two,0.0,0.0); decrgpulse(5.8*p_d2,zero,0.0,0.0); decrgpulse(5.7*p_d2,two,0.0,0.0); decrgpulse(0.6*p_d2,zero,0.0,0.0); decrgpulse(4.9*p_d2,two,0.0,0.0); decrgpulse(7.5*p_d2,zero,0.0,0.0); decrgpulse(5.3*p_d2,two,0.0,0.0); decrgpulse(7.4*p_d2,zero,0.0,0.0); decrgpulse(6.4*p_d2,two,0.0,0.0); decrgpulse(8.2*p_d2,zero,0.0,0.0); decrgpulse(5.8*p_d2,two,0.0,0.0); decrgpulse(5.7*p_d2,zero,0.0,0.0); decrgpulse(0.6*p_d2,two,0.0,0.0); decrgpulse(4.9*p_d2,zero,0.0,0.0); decrgpulse(7.5*p_d2,two,0.0,0.0); decrgpulse(5.3*p_d2,zero,0.0,0.0); decrgpulse(7.4*p_d2,two,0.0,0.0); decrgpulse(6.4*p_d2,two,0.0,0.0); decrgpulse(8.2*p_d2,zero,0.0,0.0); decrgpulse(5.8*p_d2,two,0.0,0.0); decrgpulse(5.7*p_d2,zero,0.0,0.0); decrgpulse(0.6*p_d2,two,0.0,0.0); decrgpulse(4.9*p_d2,zero,0.0,0.0); decrgpulse(7.5*p_d2,two,0.0,0.0); decrgpulse(5.3*p_d2,zero,0.0,0.0); decrgpulse(7.4*p_d2,two,0.0,0.0); decrgpulse(6.4*p_d2,zero,0.0,0.0); decrgpulse(8.2*p_d2,two,0.0,0.0); decrgpulse(5.8*p_d2,zero,0.0,0.0); decrgpulse(5.7*p_d2,two,0.0,0.0); decrgpulse(0.6*p_d2,zero,0.0,0.0); decrgpulse(4.9*p_d2,two,0.0,0.0); decrgpulse(7.5*p_d2,zero,0.0,0.0); decrgpulse(5.3*p_d2,two,0.0,0.0); decrgpulse(7.4*p_d2,zero,0.0,0.0); endhardloop(); decphase(t3); decpwrf(4095.0); decrgpulse(pwC,three,0.0,0.0); /* flip transferred 13C-magnetization to z */ decoffset(dof_92p5); /* Preset the carbon frequency for the C1' carbon */ decrgpulse(pwC,t3,0.0,0.0); /* 4x,-4x flip transferred 13C-magnetization to x */ if (SE[A]=='y') { /***************** CONSTANT TIME EVOLUTION *****************/ if (CT[A]=='y') { /***************/ initval(90.0, v9); decstepsize(1.0); dcplrphase(v9); decphase(t9); delay(CTdelay/2.0 - tau2); decrgpulse(2.0*pwC, t9, 0.0, 0.0); dcplrphase(zero); decphase(t10); if (tau2 < gt1 + gstab) {delay(CTdelay/2.0 - pwZa - gt1 - gstab); zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ delay(gstab - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tau2);} else {delay(CTdelay/2.0 - pwZa); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tau2 - gt1 - gstab); zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ delay(gstab - 2.0*GRADIENT_DELAY);} /***************/ } /********************************************************************/ /***************** NORMAL EVOLUTION *****************/ else { /***************/ if (CChomodec[A]=='y') { decpower(CCdpwr); decphase(zero); decprgon(CCdseq,1.0/CCdmf,CCdres); decon(); /* CC decoupling on */ } decphase(zero); delay(tau2); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); decphase(t9); delay(gt1 + gstab - pwZa); delay(tau2); if (CChomodec[A]=='y') { decoff(); decprgoff(); /* CC decoupling off */ decpower(pwClvl); } decrgpulse(2.0*pwC, t9, 0.0, 0.0); zgradpulse(icosel*gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ decphase(t10); delay(gstab - 2.0*GRADIENT_DELAY); /***************/ } /********************************************************************/ /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ decrgpulse(pwC, zero, 0.0, 0.0); decphase(zero); zgradpulse(gzlvl5, gt5); delay(lambda - 0.5*pwC - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); decphase(t10); delay(lambda - 0.5*pwC - gt5); simpulse(pw, pwC, one, t10, 0.0, 0.0); txphase(zero); decphase(zero); zgradpulse(gzlvl6, gt5); delay(lambda - 0.5*pwC - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); txphase(two); zgradpulse(gzlvl6, gt5); delay(lambda - 0.5*pwC - gt5); simpulse(pw, pwC, two, zero, 0.0, 0.0); txphase(zero); delay(lambda - 0.5*pwC); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); dcplrphase(zero); /* SAPS_DELAY */ zgradpulse(gzlvl2, gt1/4.0); /* 2.0*GRADIENT_DELAY */ delay(lambda - gt1/4.0 - 0.5*pwC - 2.0*GRADIENT_DELAY - 2*POWER_DELAY - SAPS_DELAY); } else { decphase(zero); zgradpulse(gzlvl5,gt5); delay(lambda - gt5); simpulse(2*pw,2*pwC,zero,zero,0.0,0.0); zgradpulse(gzlvl5,gt5); delay(lambda - gt5); decrgpulse(pwC,zero,0.0,0.0); zgradpulse(gzlvl3,gt3); delay(gstab); obspower(tpwrs); shaped_pulse("rna_H2Osinc", pwHs, zero, 5.0e-4, 0.0); obspower(tpwr); rgpulse(pw, zero, 2*rof1, 0.0); txphase(two); obspower(tpwrs2); zgradpulse(gzlvl4,gt4); delay(gstab - 2*SAPS_DELAY - 2*POWER_DELAY - GRADIENT_DELAY); rgpulse((lambda-gstab-gt4-pwC), two, 0.0, 0.0); simpulse(pwC,pwC,two,three,0.0,0.0); simpulse(2*pwC,2*pwC,two,zero,0.0,0.0); simpulse(pwC,pwC,two,three,0.0,0.0); rgpulse((pwHs2-2*pwC-(lambda-gstab-gt4-pwC)), two, 0.0, 0.0); txphase(zero); obspower(tpwr); rgpulse(2*pw, zero, 0.0, 0.0); obspower(tpwrs2); rgpulse(pwHs2, two, 4.0e-6, 0.0); decphase(t4); zgradpulse(gzlvl4,gt4); delay(gstab-2*pwC-2*SAPS_DELAY - POWER_DELAY - GRADIENT_DELAY); decrgpulse(pwC,t4,0.0,0.0); decrgpulse(pwC,zero,0.0,0.0); } dec2power(dpwr2); /* 2*POWER_DELAY */ decpower(dpwr); status(C); setreceiver(t11); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values CP hx = getcp("HX",0.0,0.0,0,1); strncpy(hx.fr,"dec",3); strncpy(hx.to,"obs",3); putCmd("frHX='dec'\n"); putCmd("toHX='obs'\n"); MPSEQ c7 = getpostc7("c7X",0,0.0,0.0,0,1); MPSEQ c7ref = getpostc7("c7X",c7.iSuper,c7.phAccum,c7.phInt,1,1); strncpy(c7.ch,"obs",3); putCmd("chXc7='obs'\n"); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); // Set Constant-time Period for d2. if (d2_index == 0) d2_init = getval("d2"); double d2_ = (ni - 1)/sw1 + d2_init; putCmd("d2acqret = %f\n",roundoff(d2_,12.5e-9)); putCmd("d2dwret = %f\n",roundoff(1.0/sw1,12.5e-9)); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHX") + 2.0* getval("pwX90") + c7.t + c7ref.t; d.dutyoff = d1 + 4.0e-6 + 2.0*getval("tZF"); d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = d2_ + getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = d2_ + getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phH90,4,table1); settable(phXhx,4,table2); settable(phHhx,4,table3); settable(phXmix1,4,table4); settable(phXmix2,4,table5); settable(phRec,4,table6); // Add STATES-TPPI (STATES + "FAD") double obsstep = 360.0/(PSD*8192); if (phase1 == 2) initval((45.0/obsstep),v1); else initval(0.0,v1); initval((d2*c7.of[0]*360.0/obsstep),v2); obsstepsize(obsstep); setreceiver(phRec); // Begin Sequence txphase(phXhx); decphase(phH90); obspwrf(getval("aXhx")); decpwrf(getval("aH90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H to X Cross Polarization decrgpulse(getval("pwH90"),phH90,0.0,0.0); decphase(phHhx); _cp_(hx,phHhx,phXhx); obspwrf(getval("aX90")); // Mixing with C7 Recoupling-Period One rgpulse(getval("pwX90"),phXmix1,0.0,0.0); obspwrf(getval("aXc7")); decoff(); xmtrphase(v1); txphase(phXmix1); delay(getval("tZF")); decpwrf(getval("aHmix")); decunblank(); decon(); _mpseq(c7, phXmix1); decoff(); // F1 Indirect Period For X xmtrphase(v2); txphase(phXmix2); _dseqon(dec); delay(d2); _dseqoff(dec); // Mixing with C7 Recoupling-Period Two decpwrf(getval("aHmix")); decunblank(); decon(); _mpseq(c7ref, phXmix2); decoff(); obspwrf(getval("aX90")); xmtrphase(zero); txphase(phXmix2); delay(getval("tZF")); rgpulse(getval("pwX90"),phXmix2,0.0,0.0); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /* magic-angle coherence transfer gradients */ C13refoc[MAXSTR], /* C13 sech/tanh pulse in middle of t1*/ NH2only[MAXSTR], /* spectrum of only NH2 groups */ amino[MAXSTR], /* select amino nitrogens */ imino[MAXSTR], /* select imino nitrogens */ T1[MAXSTR], /* insert T1 relaxation delay */ T1rho[MAXSTR], /* insert T1rho relaxation delay */ T2[MAXSTR], /* insert T2 relaxation delay */ bottom[MAXSTR], right[MAXSTR], 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 */ rTnum, /* number of relaxation times, relaxT */ rTcounter; /* to obtain maximum relaxT, ie relaxTmax */ double tau1, /* t1 delay */ lambda = 0.91/(4.0*getval("JNH")), /* 1/4J H1 evolution delay */ tNH = 1.0/(4.0*getval("JNH")), /* 1/4J N15 evolution delay */ relaxT = getval("relaxT"), /* total relaxation time */ rTarray[1000], /* to obtain maximum relaxT, ie relaxTmax */ maxrelaxT = getval("maxrelaxT"), /* maximum relaxT in all exps */ ncyc, /* number of pulsed cycles in relaxT */ /* the sech/tanh pulse is automatically calculated by the macro "rna_cal", */ /* and is called directly from your shapelib. */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rfC, /* maximum fine power when using pwC pulses */ rfst, /* fine power for the rna_stC140 pulse */ /* temporary Pbox parameters */ bw, pws, ofs, ppm, nst, /* bandwidth, pulsewidth, offset, ppm, # steps */ compH = getval("compH"), /* adjustment for H1 amplifier compression */ compN = getval("compN"), /* adjustment for N15 amplifier compression */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ calH = getval("calH"), /* multiplier on a pw pulse for H1 calibration */ 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 */ calN = getval("calN"), /* multiplier on a pwN pulse for calibration */ slNlvl, /* power for N15 spin lock */ slNrf = 1500.0, /* RF field in Hz for N15 spin lock at 600 MHz */ dof2a, /* offset for imino/amino */ sw1 = getval("sw1"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* dac to G/cm conversion */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), BPpwrlimits, /* =0 for no limit, =1 for limit */ gt0 = getval("gt0"), /* other gradients */ gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"); P_getreal(GLOBAL,"BPpwrlimits",&BPpwrlimits,1); getstr("f1180",f1180); getstr("mag_flg",mag_flg); getstr("C13refoc",C13refoc); getstr("NH2only",NH2only); getstr("T1",T1); getstr("T1rho",T1rho); getstr("T2",T2); getstr("bottom",bottom); getstr("right",right); getstr("TROSY",TROSY); getstr("imino",imino); getstr("amino",amino); /* LOAD PHASE TABLE */ settable(t3,2,phi3); if (TROSY[A]=='y') { settable(t1,1,ph_x); if (bottom[A]=='y') settable(t4,1,phx); else settable(t4,1,ph_x); if (right[A]=='y') settable(t10,1,phy); else settable(t10,1,ph_y); settable(t9,1,phx); settable(t11,1,phx); settable(t12,2,recT); } else { settable(t1,1,phx); settable(t4,1,phx); settable(t9,8,phi9); settable(t10,1,phx); settable(t11,1,phy); settable(t12,4,rec); } /* INITIALIZE VARIABLES */ dof2a=dof2; /* IMINO-region setting of dof2 */ if (imino[A] == 'y') dof2a=dof2-45*dfrq2; if (amino[A] == 'y') dof2a=dof2-115*dfrq2; if ((imino[A] == 'n') && (amino[A] == 'n')) dof2a=dof2; /* maximum fine power for pwC pulses (and initialize rfst) */ rfC = 4095.0; rfst=0.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* 180 degree adiabatic C13 pulse covers 140 ppm */ if (C13refoc[A]=='y') { rfst = (compC*4095.0*pwC*4000.0*sqrt((21.0*sfrq/600.0+7.0)/0.35)); rfst = (int) (rfst + 0.5); if ( 1.0/(4000.0*sqrt((21.0*sfrq/600.0+7.0)/0.35)) < pwC ) { text_error( " Not enough C13 RF. pwC must be %f usec or less.\n", (1.0e6/(4000.0*sqrt((21.0*sfrq/600.0+7.0)/0.35))) ); psg_abort(1); } } /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 140.0*ppm; pws = 0.001; ofs = 0.0; nst = 1000.0; if (C13refoc[A]=='y') stC140 = pbox_makeA("rna_stC140", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); H2Osinc = pbox_Rsh("rna_H2Osinc", "sinc90", pwHs, 0.0, compH*pw, tpwr); if (dm3[B] == 'y') H2ofs = 3.2; ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } if (C13refoc[A]=='y') rfst = stC140.pwrf; pwHs = H2Osinc.pw; tpwrs = H2Osinc.pwr; } /* power level for N15 spinlock (90 degree pulse length calculated first) */ slNlvl = 1/(4.0*slNrf*sfrq/600.0) ; slNlvl = pwNlvl - 20.0*log10(slNlvl/(pwN*compN)); slNlvl = (int) (slNlvl + 0.5); /* use 1/8J times for relaxation measurements of NH2 groups */ if ( (NH2only[A]=='y') && ((T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y')) ) { tNH = tNH/2.0; } /* reset calH and calN for 2D if inadvertently left at 2.0 */ if (ni>1.0) { calH=1.0; calN=1.0; } /* CHECK VALIDITY OF PARAMETER RANGES */ if ( ((imino[A] == 'y') && (amino[A] == 'y')) ) { printf(" Choose ONE of the cases: imino='y' OR amino='y' "); psg_abort(1); } if ( ((imino[A] == 'y') && (NH2only[A] == 'y')) ) { printf(" NH2only='y' only valide for amino='y' "); psg_abort(1); } if ((TROSY[A]=='y') && (gt1 < -2.0e-4 + pwHs + 1.0e-4 + 2.0*POWER_DELAY)) { text_error( " gt1 is too small. Make gt1 equal to %f or more.\n", (-2.0e-4 + pwHs + 1.0e-4 + 2.0*POWER_DELAY) ); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( (pwN > 100.0e-6) && (pwNlvl > 54) ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } /* RELAXATION TIMES AND FLAGS */ /* evaluate maximum relaxT, relaxTmax chosen by the user */ rTnum = getarray("relaxT", rTarray); relaxTmax = rTarray[0]; for (rTcounter=1; rTcounter<rTnum; rTcounter++) if (relaxTmax < rTarray[rTcounter]) relaxTmax = rTarray[rTcounter]; /* compare relaxTmax with maxrelaxT */ if (maxrelaxT > relaxTmax) relaxTmax = maxrelaxT; if ( ((T1rho[A]=='y') || (T2[A]=='y')) && (relaxTmax > d1) ) { text_error("Maximum relaxation time, relaxT, is greater than d1 ! "); psg_abort(1); } if ( ((T1[A]=='y') && (T1rho[A]=='y')) || ((T1[A]=='y') && (T2[A]=='y')) || ((T1rho[A]=='y') && (T2[A]=='y')) ) { text_error("Choose only one relaxation measurement ! "); psg_abort(1); } if ( ((T1[A]=='y') || (T1rho[A]=='y')) && ((relaxT*100.0 - (int)(relaxT*100.0+1.0e-4)) > 1.0e-6) ) { text_error("Relaxation time, relaxT, must be zero or multiple of 10msec"); psg_abort(1); } if ( (T2[A]=='y') && (((relaxT+0.01)*50.0 - (int)((relaxT+0.01)*50.0+1.0e-4)) > 1.0e-6) ) { text_error("Relaxation time, relaxT, must be odd multiple of 10msec"); psg_abort(1); } if ( ((T1rho[A]=='y') || (T2[A]=='y')) && (relaxTmax > 0.25) && (ix==1) ) { printf("WARNING, sample heating may result in a reduced lock level for relaxT>0.25sec"); } if ( ((T1rho[A]=='y') || (T2[A]=='y')) && (relaxTmax > 0.5) ) { text_error("relaxT greater than 0.5 seconds will heat sample"); psg_abort(1); } if ( ((NH2only[A]=='y') || (T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y')) && (TROSY[A]=='y') ) { text_error("TROSY not implemented with NH2 spectrum, or relaxation exps."); psg_abort(1); } if ((TROSY[A]=='y') && (dm2[C] == 'y')) { text_error("Choose either TROSY='n' or dm2='nnn' ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (TROSY[A]=='y') { if (phase1 == 1) icosel = -1; else { tsadd(t4,2,4); tsadd(t10,2,4); icosel = +1; } } else { if (phase1 == 1) { tsadd(t10,2,4); icosel = +1; } else icosel = -1; } /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t3,2,4); tsadd(t12,2,4); } /* Correct inverted signals for NH2 only spectra */ if ((NH2only[A]=='y') && (T1[A]=='n') && (T1rho[A]=='n') && (T2[A]=='n')) { tsadd(t3,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); decpwrf(rfC); dec2power(pwNlvl); dec2offset(dof2a); txphase(zero); decphase(zero); dec2phase(zero); delay(d1); /* xxxxxxxxxxxxxxxxx CONSTANT SAMPLE HEATING FROM N15 RF xxxxxxxxxxxxxxxxx */ if (T1rho[A]=='y') { dec2power(slNlvl); dec2rgpulse(relaxTmax-relaxT, zero, 0.0, 0.0); dec2power(pwNlvl); } if (T2[A]=='y') { ncyc = 8.0*100.0*(relaxTmax - relaxT); if (BPpwrlimits > 0.5) { dec2power(pwNlvl-3.0); /* reduce for probe protection */ pwN=pwN*compN*1.4; } if (ncyc > 0) { initval(ncyc,v1); loop(v1,v2); delay(0.625e-3 - pwN); dec2rgpulse(2*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN); endloop(v2); } if (BPpwrlimits > 0.5) { dec2power(pwNlvl); /* restore normal value */ pwN=getval("pwN"); } } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ rcvroff(); if (TROSY[A]=='n') dec2rgpulse(pwN, zero, 0.0, 0.0); decrgpulse(pwC, zero, 0.0, 0.0); /*destroy N15 and C13 magnetization*/ zgradpulse(gzlvl0, 0.5e-3); delay(1.0e-4); if (TROSY[A]=='n') dec2rgpulse(pwN, one, 0.0, 0.0); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl0, 0.5e-3); decpwrf(rfst); txphase(t1); delay(5.0e-4); if(dm3[B] == 'y') /*optional 2H decoupling on */ { lk_hold(); dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(calH*pw,t1,0.0,0.0); /* 1H pulse excitation */ txphase(zero); dec2phase(zero); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); txphase(one); zgradpulse(gzlvl0, gt0); delay(lambda - gt0); rgpulse(pw, one, 0.0, 0.0); txphase(two); obspower(tpwrs); shaped_pulse("rna_H2Osinc", pwHs, two, 5.0e-5, 0.0); obspower(tpwr); zgradpulse(gzlvl3, gt3); dec2phase(t3); delay(2.0e-4); dec2rgpulse(calN*pwN, t3, 0.0, 0.0); txphase(zero); decphase(zero); /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 RELAXATION xxxxxxxxxxxxxxxxxxxx */ if ( (T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y') ) { dec2phase(one); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ delay(tNH - gt4 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, one, 0.0, 0.0); zgradpulse(gzlvl4, gt4); /* 2.0*GRADIENT_DELAY */ delay(tNH - gt4 - 2.0*GRADIENT_DELAY); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (T1[A]=='y') { dec2rgpulse(pwN, one, 0.0, 0.0); dec2phase(three); zgradpulse(gzlvl0, gt0); /* 2.0*GRADIENT_DELAY */ delay(2.5e-3 - gt0 - 2.0*GRADIENT_DELAY - pw); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(2.5e-3 - pw); ncyc = (100.0*relaxT); initval(ncyc,v4); if (ncyc > 0) { loop(v4,v5); delay(2.5e-3 - pw); rgpulse(2.0*pw, two, 0.0, 0.0); delay(2.5e-3 - pw); delay(2.5e-3 - pw); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(2.5e-3 - pw); endloop(v5); } dec2rgpulse(pwN, three, 0.0, 0.0); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ /* Theory suggests 8.0 is better than 2PI as RF */ /* field multiplier and experiment confirms this.*/ if (T1rho[A]=='y') /* Shift evolution of 2.0*pwN/PI for one pulse */ { /* at end left unrefocused as for normal sequence*/ delay(1.0/(8.0*slNrf) - pwN); decrgpulse(pwN, zero, 0.0, 0.0); dec2power(slNlvl); /* minimum 5ms spinlock to dephase */ dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); /* spins not locked */ sim3pulse(2.0*pw, 0.0, 2.0*pw, zero, zero, zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); ncyc = 100.0*relaxT; initval(ncyc,v4); if (ncyc > 0) { loop(v4,v5); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); sim3pulse(2.0*pw, 0.0, 2.0*pw, two, zero, zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); sim3pulse(2.0*pw, 0.0, 2.0*pw, zero, zero, zero, 0.0, 0.0); dec2rgpulse((2.5e-3-pw), zero, 0.0, 0.0); endloop(v5); } dec2power(pwNlvl); decrgpulse(pwN, zero, 0.0, 0.0); delay(1.0/(8.0*slNrf) + 2.0*pwN/PI - pwN); } /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (T2[A]=='y') { dec2phase(zero); initval(0.0,v3); initval(180.0,v4); if (BPpwrlimits > 0.5) { dec2power(pwNlvl-3.0); /* reduce for probe protection */ pwN=pwN*compN*1.4; } ncyc = 100.0*relaxT; initval(ncyc,v5); loop(v5,v6); initval(3.0,v7); loop(v7,v8); delay(0.625e-3 - pwN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN); endloop(v8); delay(0.625e-3 - pwN - SAPS_DELAY); add(v4,v3,v3); obsstepsize(1.0); xmtrphase(v3); /* SAPS_DELAY */ dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN - pw); rgpulse(2*pw, zero, 0.0, 0.0); delay(0.625e-3 - pwN - pw ); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); xmtrphase(zero); /* SAPS_DELAY */ delay(0.625e-3 - pwN - SAPS_DELAY); initval(3.0,v9); loop(v9,v10); delay(0.625e-3 - pwN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(0.625e-3 - pwN); endloop(v10); endloop(v6); if (BPpwrlimits > 0.5) { dec2power(pwNlvl); /* restore normal value */ pwN=getval("pwN"); } } /* xxxxxxxxxxxxxxxxxx OPTIONS FOR N15 EVOLUTION xxxxxxxxxxxxxxxxxxxxx */ txphase(zero); dec2phase(t9); if ( (NH2only[A]=='y') || (T1[A]=='y') || (T1rho[A]=='y') || (T2[A]=='y') ) { delay(tau1); /* optional sech/tanh pulse in middle of t1 */ if (C13refoc[A]=='y') /* WFG_START_DELAY */ { decshaped_pulse("rna_stC140", 1.0e-3, zero, 0.0, 0.0); delay(tNH - 1.0e-3 - WFG_START_DELAY - 2.0*pw); } else { delay(tNH - 2.0*pw); } rgpulse(2.0*pw, zero, 0.0, 0.0); if (tNH < gt1 + 1.99e-4) delay(gt1 + 1.99e-4 - tNH); delay(tau1); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ txphase(t4); dec2phase(t10); if (tNH > gt1 + 1.99e-4) delay(tNH - gt1 - 2.0*GRADIENT_DELAY); else delay(1.99e-4 - 2.0*GRADIENT_DELAY); } else if (TROSY[A]=='y') { if ( (C13refoc[A]=='y') && (tau1 > 0.5e-3 + WFG2_START_DELAY) ) { delay(tau1 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ decshaped_pulse("rna_stC140", 1.0e-3, zero, 0.0, 0.0); delay(tau1 - 0.5e-3); } else delay(2.0*tau1); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ delay(2.0e-4 - 2.0*GRADIENT_DELAY); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); delay(gt1 + 2.0e-4 - pwHs - 1.0e-4 - 2.0*POWER_DELAY); txphase(three); obspower(tpwrs); /* POWER_DELAY */ shaped_pulse("rna_H2Osinc", pwHs, three, 5.0e-5, 0.0); txphase(t4); obspower(tpwr); /* POWER_DELAY */ delay(5.0e-5); } else { /* fully-coupled spectrum */ if (dm2[C]=='n') { rgpulse(2.0*pw, zero, 0.0, 0.0); pw=0.0; } if ( (C13refoc[A]=='y') && (tau1 > 0.5e-3 + WFG2_START_DELAY) ) { delay(tau1 - 0.5e-3 - WFG2_START_DELAY); /* WFG2_START_DELAY */ simshaped_pulse("", "rna_stC140", 2.0*pw, 1.0e-3, zero, zero, 0.0, 0.0); delay(tau1 - 0.5e-3); delay(gt1 + 2.0e-4); } else { delay(tau1); rgpulse(2.0*pw, zero, 0.0, 0.0); delay(gt1 + 2.0e-4 - 2.0*pw); delay(tau1); } decphase(zero); pw=getval("pw"); dec2rgpulse(2.0*pwN, t9, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ txphase(t4); dec2phase(t10); delay(2.0e-4 - 2.0*GRADIENT_DELAY); } if (T1rho[A]=='y') delay(POWER_DELAY); /* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */ if (TROSY[A]=='y') rgpulse(pw, t4, 0.0, 0.0); else sim3pulse(pw, 0.0, pwN, t4, zero, t10, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 0.65*(pw + pwN) - gt5); else delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); dec2phase(t11); delay(lambda - 1.3*pwN - gt5); sim3pulse(pw, 0.0, pwN, one, zero, t11, 0.0, 0.0); txphase(zero); dec2phase(zero); zgradpulse(1.5*gzlvl5, gt5); delay(lambda - 1.3*pwN - gt5); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); dec2phase(t10); zgradpulse(1.5*gzlvl5, gt5); if (TROSY[A]=='y') delay(lambda - 1.6*pwN - gt5); else delay(lambda - 0.65*pwN - gt5); if (TROSY[A]=='y') dec2rgpulse(pwN, t10, 0.0, 0.0); else rgpulse(pw, zero, 0.0, 0.0); delay((gt1/10.0) + 1.0e-4 - 0.65*pw + 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(); } rgpulse(2.0*pw, zero, 0.0, rof1); dec2power(dpwr2); /* POWER_DELAY */ if (mag_flg[A] == 'y') magradpulse(icosel*gzcal*gzlvl2, 0.1*gt1); else zgradpulse(icosel*gzlvl2, 0.1*gt1); /* 2.0*GRADIENT_DELAY */ rcvron(); statusdelay(C,1.0e-4-rof1); if (dm3[B] == 'y') { delay(1/dmf3); lk_sample(); } setreceiver(t12); }
pulsesequence() { double gzlvl1 = getval("gzlvl1"), gt1 = getval("gt1"), gstab = getval("gstab"), del = getval("del"), tweek = getval("tweek"), prgtime = getval("prgtime"), prgpwr = getval("prgpwr"), satpwr = getval("satpwr"), satdly = getval("satdly"), gzlvl2 = getval("gzlvl2"), gt2 = getval("gt2"), gzlvlhs = getval("gzlvlhs"), hsgt = getval("hsgt"), wrefpwr = getval("wrefpwr"), wrefpw = getval("wrefpw"), wrefpwrf = getval("wrefpwrf"), dosytimecubed,dosyfrq,Ddelta; char delflag[MAXSTR],lkgate_flg[MAXSTR],alt_grd[MAXSTR],prg_flg[MAXSTR]; char satmode[MAXSTR],sspul[MAXSTR],wrefshape[MAXSTR]; getstr("delflag",delflag); getstr("lkgate_flg",lkgate_flg); getstr("alt_grd",alt_grd); getstr("prg_flg",prg_flg); getstr("satmode",satmode); getstr("sspul",sspul); getstr("wrefshape", wrefshape); //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gt1 = syncGradTime("gt1","gzlvl1",1.0); gzlvl1 = syncGradLvl("gt1","gzlvl1",1.0); gt2 = syncGradTime("gt2","gzlvl2",1.0); gzlvl2 = syncGradLvl("gt2","gzlvl2",1.0); if (del<(3*gt1+3.0*gstab+2.0*rof1+pw*2.0)) { abort_message("DgcsteSL error: del is less than %f, too short!", (3*gt1+3.0*gstab+2.0*rof1+pw*2.0)); } /* Safety check for the duration of the purge pulse */ if (prgtime > 4.0e-2) { text_error("prgtime has been reset to a maximum of 2 ms"); prgtime = 2.0e-3; } dosyfrq=sfrq; Ddelta=gt1; /* the diffusion-encoding pulse width is gt1 */ dosytimecubed=Ddelta*Ddelta*(del-(Ddelta/3.0)); putCmd("makedosyparams(%e,%e)\n",dosytimecubed,dosyfrq); /* phase cycling calculation */ if (delflag[0]=='y') { hlv(ct,v4); mod2(v4,v2); mod2(ct,v1); dbl(v1,v1); add(v2,v1,v1); mod4(v1,v1); /* 0 2 1 3 , 1st 90 */ hlv(v4,v4); mod2(v4,v3); dbl(v3,v3); /* (0)4 (2)4 */ hlv(v4,v4); mod2(v4,v2); dbl(v2,v2); /* (0)8 (2)8 */ hlv(v4,v4); mod2(v4,v5); add(v5,v3,v3); mod4(v3,v3); /* {(0)4 (2)4}2 {(1)4 (3)4}2, 3rd 90 */ hlv(v4,v4); assign(v4,v6); mod2(v4,v4); add(v4,v2,v2); mod4(v2,v2); /* {(0)8 (2)8}2 {(1)8 (3)8}2, 2nd 90 */ mod2(ct,v10); /* gradients change sign every increment */ assign(v3,oph); add(oph,v2,oph); sub(oph,v1,oph); mod4(oph,oph); assign(oph,v5); add(one,v5,v5); mod2(ct,v7); dbl(v7,v7); hlv(v6,v6); mod2(v6,v6); dbl(v6,v6); add(v7,v5,v5); /* the purge pulse is 90 deg. off the receiver phase */ add(v6,v5,v5); /* it is phase alternated every increment */ mod4(v5,v5); /* and also every 64 increments */ } else { assign(ct,v4); assign(oph,v4); /*v4 used only for normal s2pul- type sequence */ } add(v3,two,v9); if (ni > 1.0) { abort_message("DgcsteSL is a 2D, not a 3D dosy sequence: please set ni to 0 or 1"); } /* equilibrium period */ status(A); obspower(tpwr); if (sspul[A] == 'y') { zgradpulse(gzlvlhs,hsgt); rgpulse(pw,zero,rof1,rof1); zgradpulse(gzlvlhs,hsgt); } if (satmode[0] == 'y') { if (d1 - satdly > 0) delay(d1 - satdly); else delay(0.02); obspower(satpwr); txphase(v1); rgpulse(satdly,zero,rof1,rof1); obspower(tpwr); delay(1.0e-5); } else { delay(d1); } obspower(tpwr); status(B); /* first part of bppdel sequence */ if(delflag[0] == 'y') { rgpulse(pw, v1, rof1, 0.0); /* first 90, v1 */ if (lkgate_flg[0] == 'y') lk_hold(); /* turn lock sampling off */ 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); rgpulse(pw, v2, rof1, 0.0); /* second 90, v2 */ if (alt_grd[0] == 'y') { ifzero(v10); /* compensating AND CPS gradient */ zgradpulse(-1.0*gzlvl1*(1.0-tweek),gt1); elsenz(v10); zgradpulse(gzlvl1*(1.0-tweek),gt1); endif(v10); } else /* compensating AND CPS gradient */ zgradpulse(-1.0*gzlvl1*(1.0-tweek),gt1); delay(gstab); if (satmode[B] == 'y') { obspower(satpwr); rgpulse(del-3.0*(gt1+gstab)-2.0*rof1-pw*2.0,zero,rof1,rof1); obspower(tpwr); } else delay(del-3.0*(gt1+gstab)-2.0*rof1-pw*2.0); /* diffusion delay */ if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(-1.0*gzlvl1*(1.0+tweek),gt1); elsenz(v10); zgradpulse(gzlvl1*(1.0+tweek),gt1); endif(v10); } else zgradpulse(-1.0*gzlvl1*(1.0+tweek),gt1); delay(gstab); rgpulse(pw, v3, rof1, 0.0); /* third 90, v3 */ 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(gzlvl2,gt2); elsenz(v10); zgradpulse(-gzlvl2,gt2); endif(v10);} else zgradpulse(gzlvl2,gt2); obspower(wrefpwr+6); obspwrf(wrefpwrf); delay(gstab); shaped_pulse(wrefshape,wrefpw,v9,rof1,0.0); obspower(tpwr); obspwrf(4095.0); rgpulse(2.0*pw,v3,rof1,0.0); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(gzlvl2,gt2); elsenz(v10); zgradpulse(-gzlvl2,gt2); endif(v10);} else zgradpulse(gzlvl2,gt2); obspower(wrefpwr+6); obspwrf(wrefpwrf); delay(gstab); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(1.2*gzlvl2,gt2); elsenz(v10); zgradpulse(-1.2*gzlvl2,gt2); endif(v10); } else zgradpulse(1.2*gzlvl2,gt2); delay(gstab); shaped_pulse(wrefshape,wrefpw,v9,rof1,0.0); obspower(tpwr); obspwrf(4095.0); rgpulse(2.0*pw,v3,rof1,rof1); if (alt_grd[0] == 'y') { ifzero(v10); zgradpulse(1.2*gzlvl2,gt2); elsenz(v10); zgradpulse(-1.2*gzlvl2,gt2); endif(v10); } else zgradpulse(1.2*gzlvl2,gt2); delay(gstab+2.0*pw/3.14); if (lkgate_flg[0] == 'y') lk_sample(); /* turn lock sampling on */ /* purge pulse to scramble any magnetisation that is not in phase with the receiver */ if (prg_flg[0] == 'y') { obspower(prgpwr); rgpulse(prgtime, v5, rof1, 0.0); } } else rgpulse(pw, v4, rof1, rof2); /* first 90, v1 */ status(C); }
pulsesequence() { /* DECLARE VARIABLES */ char satmode[MAXSTR], f1180[MAXSTR], abfilter[MAXSTR]; /* set 'a' for inphase and 'b' for antiphase */ int t1_counter,icosel,first_FID; double /* DELAYS */ tau1, /* t1/2 */ tauhn,taunco,taucoca,taunca,tauhaca,taucaha,taucacb, /* COUPLINGS */ jhn = getval("jhn"), jnco = getval("jnco"), jcoca = getval("jcoca"), jnca = getval("jnca"), jhaca = getval("jhaca"), jcaha = getval("jcaha"), jcacb = getval("jcacb"), /* PULSES */ pwN = getval("pwN"), /* PW90 for N-nuc */ pwC = getval("pwC"), /* PW90 for C-nuc */ pwHs = getval("pwHs"), /* POWER LEVELS */ satpwr = getval("satpwr"), /* low power level for presat */ tpwrsf_d = getval("tpwrsf_d"), /* fine power level for first pwHs */ tpwrsf_u = getval("tpwrsf_u"), /* fine power level for second pwHs */ tpwrs, pwClvl = getval("pwClvl"), /* power level for C hard pulses */ compC = getval("compC"), /* amplifier compression factor */ compH = getval("compH"), /* amplifier compression factor */ pwNlvl = getval("pwNlvl"), /* power level for N hard pulses */ rf90onco,pw90onco, /* power level/pw for CO 90 pulses */ rf180onco,pw180onco, /* power level/pw for CO 180 pulses */ rf180offca,pw180offca, /* power level/pw for CA 180 pulses */ /* CONSTANTS */ kappa, lambda = getval("lambda"), /* scaling factor for JNCa */ /* GRADIENT DELAYS AND LEVELS */ 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"); /* LOAD VARIABLES */ getstr("satmode",satmode); getstr("f1180",f1180); getstr("abfilter",abfilter); /* 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(t6, 4, phi6); settable(t7, 2, phi7); /* INITIALIZE VARIABLES AND POWER LEVELS FOR PULSES */ tauhn = ((jhn != 0.0) ? 1/(4*(jhn)) : 2.25e-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 */ kappa=(taunco - tauhn - gt1 - gstab)/(0.5*ni/sw1)-0.001; if (kappa > 1.0) { kappa=1.0-0.01; } if ( phase1 == 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(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; /* 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.0; /* allow for fine power control via tpwrsf_d */ /* 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,rof1); obspower(tpwr); /* Set power for hard pulses */ } else { obspower(tpwr); /* Set power for hard pulses */ delay(d1); } status(B); rcvroff(); /* eliminate all magnetization originating on 13C */ decpwrf(rf90onco); decrgpulse(pw90onco,zero,0.0,0.0); zgradpulse(gzlvl0,gt0); delay(gstab); /* shaped pulse for water flip-back */ obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc_d",pwHs,one,rof1,0.0); delay(2.0e-6); obspower(tpwr); obspwrf(4095.0); /* shaped pulse */ /* transfer from HN to N by INEPT */ rgpulse(pw,zero,rof1,0.0); /* 90 for 1H */ 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,0.0,0.0); /* 180 for 1H and 15N */ delay(tauhn - gt0 - gstab); /* 1/4JHN */ zgradpulse(gzlvl0*1.3,gt0); delay(gstab); rgpulse(pw,three,rof1,0.0); zgradpulse(gzlvl3,gt3); delay(gstab); /* start transfer from N to CO */ dec2rgpulse(pwN,zero,0.0,0.0); delay(taunco - gt0 - gstab - POWER_DELAY - 0.5*pw180onco); /* 1/4J(NCO) */ decpwrf(rf180onco); /* Set decoupler1 power to rf180onco */ zgradpulse(gzlvl0,gt0); delay(gstab); sim3pulse(0.0,pw180onco,2.0*pwN,zero,zero,zero,rof1,rof1); /* 180 for 13C' and 15N */ zgradpulse(gzlvl0,gt0); delay(gstab); decpwrf(rf90onco); /* Set decoupler1 power to rf90onco */ delay(taunco - gt0 - gstab - POWER_DELAY - 0.5*pw180onco); /* 1/4J(NCO) */ dec2rgpulse(pwN,one,0.0,0.0); /* 90 for 15N */ zgradpulse(gzlvl3*1.1,gt3); delay(gstab); decphase(t4); decrgpulse(pw90onco,t4,0.0,0.0); /* 90 for 13C' */ if (abfilter[0] == 'b') { decpwrf(rf180offca); /* Set decoupler1 power to rf180offca */ decshaped_pulse("offC3",pw180offca,zero,0.0,0.0); decpwrf(rf180onco); /* Set decoupler1 power to rf180onco */ delay(taucoca - gt0 - gstab - 0.5*pw180onco - pw180offca - 2.0*POWER_DELAY); /* 1/4J(COCA) */ zgradpulse(gzlvl0*0.9,gt0); delay(gstab); decrgpulse(pw180onco,zero,0.0,0.0); /* 180 13C' */ decpwrf(rf180offca); /* Set decoupler1 power to rf180offca */ decshaped_pulse("offC3",pw180offca,zero,0.0,0.0); zgradpulse(gzlvl0*0.9,gt0); delay(gstab); delay(taucoca - gt0 - gstab - 0.5*pw180onco - pw180offca - 2.0*POWER_DELAY); /* 1/4J(NCO) */ decpwrf(rf90onco); /* Set decoupler1 power to rf90onco */ decrgpulse(pw90onco,one,0.0,0.0); /* 90 for 13C' do not touch alpha's */ /* Field crusher gradient */ zgradpulse(gzlvl3*0.9,gt3); delay(gstab); /* Field crusher gradient */ } if (abfilter[0] == 'a') { zgradpulse(gzlvl0*0.9,gt0); delay(gstab); decpwrf(rf180offca); /* Set decoupler1 power to rf180offca */ delay(0.5*taucoca - gt0 - gstab - POWER_DELAY - 0.5*pw180offca); /* 1/8J(COCA) */ decshaped_pulse("offC3",pw180offca,zero,0.0,0.0); delay(0.5*taucoca - gt0 - gstab - POWER_DELAY - 0.5*pw180offca - 0.5*pw180onco); /* 1/8J(COCA) */ decpwrf(rf180onco); /* Set decoupler1 power to rf180onco */ zgradpulse(gzlvl0*0.9,gt0); delay(gstab); decrgpulse(pw180onco,zero,0.0,0.0); /* 180 13C' */ zgradpulse(gzlvl0*0.9,gt0); delay(gstab); decpwrf(rf180offca); delay(0.5*taucoca - gt0 - gstab - POWER_DELAY - 0.5*pw180onco - 0.5*pw180offca); /* 1/8J(COCA) */ decshaped_pulse("offC3",pw180offca,zero,0.0,0.0); delay(0.5*taucoca - gt0 - gstab - POWER_DELAY - 0.5*pw180offca); /* 1/8J(COCA) */ decpwrf(rf90onco); /* Set decoupler1 power to rf90onco */ zgradpulse(gzlvl0*0.9,gt0); delay(gstab); decrgpulse(pw90onco,zero,0.0,0.0); /* 90 for 13C' */ /* Field crusher gradient */ zgradpulse(gzlvl3*0.9,gt3); delay(gstab); /* Field crusher gradient */ } dec2rgpulse(pwN,t1,0.0,0.0); /* 90 15N */ if (lambda>0.0) { delay(lambda*tau1); /* (lambda)t1/2 */ decpwrf(rf180offca); sim3shaped_pulse("","offC3","",0.0,pw180offca,2.0*pwN,zero,zero,zero,rof1,rof1); delay(lambda*tau1); /* (lambda)t1/2 */ } delay(tau1); /* t1/2 */ delay(taunco - tauhn - pw180onco); decpwrf(rf180onco); decrgpulse(pw180onco,zero,0.0,0.0); /* 180 for 13C' */ delay((1-kappa)*tau1); /* (1-k)t1/2 */ dec2rgpulse(2.0*pwN,zero,0.0,0.0); /* 180 for 15N */ delay((taunco - tauhn - gt1 - gstab) - kappa*tau1); /* 1/4J(NCO) - 1/4J(NH) - kt1/2 */ zgradpulse(gzlvl1,gt1); delay(gstab); /* start TROSY transfer from N to HN */ sim3pulse(pw,0.0,0.0,t2,zero,zero,rof1,rof1); zgradpulse(gzlvl5,gt5); delay(gstab); delay(tauhn - gt5 - gstab - POWER_DELAY); decpwrf(rf180onco); sim3pulse(2.0*pw,pw180onco,2*pwN,zero,zero,zero,rof1,rof1); delay(tauhn - gt5 - gstab - POWER_DELAY); zgradpulse(gzlvl5,gt5); delay(gstab); decpwrf(rf90onco); sim3pulse(pw,pw90onco,pwN,one,t6,zero,rof1,rof1); /* shaped pulse WATERGATE */ obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc_u",pwHs,t2,rof1,0.0); obspower(tpwr); obspwrf(4095.0); /* shaped pulse */ zgradpulse(gzlvl5*0.8,gt5); delay(gstab); delay(tauhn - gt5 - gstab - 2.0*POWER_DELAY - pwHs); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,rof1,rof1); delay(tauhn - gt5 - gstab - 2.0*POWER_DELAY); decpower(dpwr); zgradpulse(gzlvl5*0.8,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); status(C); setreceiver(t7); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], bottom[MAXSTR], right[MAXSTR], C13refoc[MAXSTR]; int t1_counter; double tau1, /* t1 delay */ taua=getval("taua"), /* < 1 / 4J(NH) 2.25 ms */ taub=getval("taub"), /* 1 / 4J(NH) 2.75 ms */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compH = getval("compH"), /* adjustment for H1 amplifier compression */ compN = getval("compN"), /* adjustment for N15 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 */ finepwrf = getval("finepwrf"), /* fine power adjustment */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gzlvlr = getval("gzlvlr"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"); getstr("f1180",f1180); getstr("bottom",bottom); getstr("right",right); getstr("C13refoc",C13refoc); /* INITIALIZE VARIABLES */ compN=compN; compC=compC; /* 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 */ tpwrs = tpwrs+6; /* increase attenuator setting so that fine power control can be varied about the nominal 2048 value */ /* 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( 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( pwNlvl > 63 ) { printf("don't fry the probe, pwNlvl too large !"); psg_abort(1); } if( pwClvl > 63 ) { printf("don't fry the probe, pwClvl too large !"); psg_abort(1); } if( gzlvlr > 500 ) { printf("don't fry the probe, gzlvl0 too large !"); psg_abort(1); } /* LOAD VARIABLES */ settable(t1, 8, phi1); if (bottom[A]=='y') { settable(t2, 1, ph_y); settable(t5, 2, phi5); settable(t7, 2, phi6); } else { settable(t2, 1, phy); settable(t5, 2, phi6); settable(t7, 2, phi5); } if (right[A]=='y') settable(t3, 1, ph_y); else settable(t3, 1, phy); settable(t4, 8, phi4); settable(t6, 8, rec); /* Set up f1180 */ tau1 = d2; if(f1180[A] == 'y' && C13refoc[A] == 'n') tau1 += ( 1.0 / (2.0*sw1) - pw); if(f1180[A] == 'y' && C13refoc[A] == 'y') tau1 += ( 1.0 / (2.0*sw1) - 2.0*pwC - 4.0e-6 - pw); if(f1180[A] == 'n' && C13refoc[A] == 'n') tau1 = tau1 - pw; if(f1180[A] == 'n' && C13refoc[A] == 'y') tau1 = ( tau1 - 2.0*pwC - 4.0e-6 - pw); if(tau1 < 0.2e-6) tau1 = 0.2e-6; /* set up for complex FID */ if (phase1 == 2) { tsadd(t2,2,4); tsadd(t3,2,4); tsadd(t6,2,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(t1,2,4); tsadd(t4,2,4); tsadd(t6,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obsoffset(tof); decoffset(dof+(50*dfrq)); /* 160 ppm for DEC */ dec2offset(dof2-(45*dfrq2)); /* Middle of imino-N15 = 155 ppm */ obspower(tpwr); obspwrf(4095.0); decpower(pwClvl); dec2power(pwNlvl); txphase(two); decphase(zero); dec2phase(zero); delay(d1); rcvroff(); delay(20.0e-6); rgpulse(pw,two,0.0,0.0); txphase(zero); zgradpulse(gzlvl5, gt5); delay(taua - gt5 - 2.0*GRADIENT_DELAY); /* delay < 1/4J(XH) */ sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); zgradpulse(gzlvl5, gt5); delay(taua - gt5 - 2.0*GRADIENT_DELAY); if (phase1 == 1) sim3pulse(pw,0.0,pwN,one,zero,t1,0.0,0.0); if (phase1 == 2) sim3pulse(pw,0.0,pwN,one,zero,t4,0.0,0.0); txphase(zero); decphase(zero); if (C13refoc[A] == 'y') { if (tau1>0.001) { zgradpulse(gzlvlr,(0.8*tau1/2.0 - 2.0*GRADIENT_DELAY )); delay(0.2*tau1/2.0 ); } else delay(tau1/2.0); decrgpulse(pwC,zero,0.0,0.0); decrgpulse(2.0*pwC,one,2.0e-6,0.0); decrgpulse(pwC,zero,2.0e-6,0.0); if (tau1>0.001) { zgradpulse(-gzlvlr,(0.8*tau1/2.0 - 2.0*GRADIENT_DELAY )); delay(0.2*tau1/2.0 ); } else if ((tau1/2.0)>0.0) delay(tau1/2.0); } else { if (tau1>0.001) { zgradpulse(gzlvlr,(0.8*tau1 - 2.0*GRADIENT_DELAY)); delay(0.2*tau1); zgradpulse(-gzlvlr,(0.8*tau1 - 2.0*GRADIENT_DELAY )); delay(0.2*tau1); } else delay(tau1); } rgpulse(pw,t2,0.0,0.0); txphase(zero); dec2phase(zero); zgradpulse(gzlvl3,gt3); delay(taub - gt3 - 2.0*GRADIENT_DELAY); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); dec2phase(t3); zgradpulse(gzlvl3,gt3); delay(taub - gt3 - 2.0*GRADIENT_DELAY); sim3pulse(pw,0.0,pwN,zero,zero,t3,0.0,0.0); txphase(t5); dec2phase(zero); obspower(tpwrs); obspwrf(finepwrf); zgradpulse(gzlvl4,gt4); delay(taub - gt4 - 4.0*POWER_DELAY - rof1 - 2.0*GRADIENT_DELAY - pwHs); shaped_pulse("H2Osinc",pwHs,t5,0.0,0.0); txphase(t7); obspower(tpwr); obspwrf(4095.0); sim3pulse(2.0*pw,0.0e-6,2.0*pwN,t7,zero,zero,rof1,rof1); txphase(t5); obspwrf(finepwrf); obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,t5,0.0,0.0); txphase(zero); obspower(tpwr); obspwrf(4095.0); zgradpulse(gzlvl4,gt4); delay(taub - gt4 - 6.0*POWER_DELAY - rof1 - 2.0*GRADIENT_DELAY - 0.5*(pwN-pw) - pwHs); dec2rgpulse(pwN,zero,0.0,0.0); decpower(dpwr); dec2power(dpwr2); /* acquire data */ status(C); setreceiver(t6); }
pulsesequence() { /* DECLARE VARIABLES */ char satmode[MAXSTR], fscuba[MAXSTR], fc180[MAXSTR], /* Flag for checking sequence */ 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 */ satpwr, /* low level 1H trans.power for presat */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ sphase, /* small angle phase shift */ cbpwr, /* power level for selective CB decoupling */ cbdmf, /* pulse width for selective CB decoupling */ cbres, /* decoupling resolution of CB decoupling */ pwS1, /* length of square 90 on Ca */ phshift, /* phase shift induced on Ca by 180 on CO in middle of t1 */ pwS2, /* length of 180 on CO */ pwS3, /* length of 180 on Ca */ pwS4, /* length of 90 on CO */ pwS = getval("pwS"), /* used to change 180 on CO in t1 for 1D calibrations */ pwZ, /* the largest of pwS2 and 2.0*pwN */ pwZ1, /* the largest of pwS2 and 2.0*pwN for 1D experiments */ 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 */ waltzB1 = getval("waltzB1"), 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); 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"); satpwr = getval("satpwr"); dpwr = getval("dpwr"); sw1 = getval("sw1"); sw2 = getval("sw2"); sphase = getval("sphase"); 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); kappa = 5.4e-3; /* get calculated pulse lengths of shaped C13 pulses */ pwS1 = c13pulsepw("ca", "co", "square", 90.0); pwS2 = c13pulsepw("co", "ca", "sinc", 180.0); pwS3 = c13pulsepw("ca","co","square",180.0); pwS4 = c13pulsepw("co", "ca", "sinc", 90.0); /* the 180 pulse on CO at the middle of t1 */ if (pwS2 > 2.0*pwN) pwZ = pwS2; else pwZ = 2.0*pwN; if ((pwS==0.0) && (pwS2>2.0*pwN)) pwZ1=pwS2-2.0*pwN; else pwZ1=0.0; if ( ni > 1 ) pwS = 180.0; if ( pwS > 0 ) phshift = 140.0; else phshift = 0.0; tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ widthHd = 2.681*waltzB1/sfrq; /* bandwidth of H1 WALTZ16 decoupling */ pwHd = h1dec90pw("WALTZ16", widthHd, 0.0); /* H1 90 length for WALTZ16 */ /* CHECK VALIDITY OF PARAMETER RANGES */ if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' )) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); 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( pwS3 > 200.0e-6 ) { printf("dont fry the probe, pwS3 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 ("Angle_CO:\t%6.2f\n", angle_CO); printf ("Angle_Ca:\t%6.2f\n", angle_Ca); printf ("Angle_N :\t%6.2f\n", angle_N ); } /* Set up hyper complex */ /* sw1 is used as symbolic index */ if ( sw1 < 1000 ) { printf ("Please set sw1 to some value larger than 1000.\n"); psg_abort(1); } if (ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if (t1_counter % 2) { tsadd(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) + pwS2 < 0.2e-6) { printf(" ni is too big. Make ni equal to %d or less.\n", ((int)((bigTN + pwS2)*2.0*swTilt/cos_N))); 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); set_c13offset("ca"); /* set Dec1 carrier at Co */ obspower(satpwr); /* Set transmitter power for 1H presaturation */ obspwrf(4095.0); decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ decpwrf(4095.0); dec2power(pwNlvl); /* Set Dec2 power for hard 15N pulses */ dec2pwrf(4095.0); sim3_c13pulse("", "ca", "co", "sinc", "", 0.0, 180.0, 0.0, /* to produce shape */ zero, zero, zero, 2.0e-6, 2.0e-4); 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(three); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); shiftedpulse("sinc", pwHs, 90.0, 0.0, three, 2.0e-6, 2.0e-6); txphase(zero); /* 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(one); 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 */ rgpulse(pw,one,2.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl2, gt2); delay(gstab); dec2rgpulse(pwN,zero,0.0,0.0); delay(kappa - POWER_DELAY - PWRF_DELAY - pwHd - 4.0e-6 - PRG_START_DELAY); /* delays for h1waltzon subtracted */ h1waltzon("WALTZ16", widthHd, 0.0); decphase(zero); dec2phase(zero); delay(zeta - kappa - WFG3_START_DELAY); dec2rgpulse(2*pwN,zero,0.0,0.0); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); dec2phase(zero); delay(zeta - 2.0e-6); dec2rgpulse(pwN,zero,2.0e-6,0.0); h1waltzoff("WALTZ16", widthHd, 0.0); dec2phase(zero); decphase(zero); delay(0.2e-6); /* CHECK Negative gradient */ 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(tauc - gt10 - 0.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(tauc - 4.0e-6 - gt10 - 0.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); decphase(t5); delay(gstab); /* xxxxxxxxxxxxxxxxxx 13CA EVOLUTION xxxxxxxxxxxxxxxxxxxxxx */ h1waltzon("WALTZ16", widthHd, 0.0); c13pulse("ca", "co", "square", 90.0, t5, 2.0e-6, 0.0); /* pwS1 */ if (fc180[A]=='n') { if ((ni>1.0) && (tau1>0.0)) { if (tau1 - 2.0*pwS1/PI - WFG3_START_DELAY - PRG_START_DELAY - 2*POWER_DELAY - PRG_STOP_DELAY - 2.0*PWRF_DELAY - 0.5*pwZ > 0.0) { decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(tau1 - 2.0*pwS1/PI - WFG3_START_DELAY - PRG_START_DELAY - 2*POWER_DELAY - PRG_STOP_DELAY - 2.0*PWRF_DELAY - 0.5*pwZ); decoff(); decprgoff(); decpower(pwClvl); decphase(zero); dec2phase(zero); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); decpower(cbpwr); decphase(zero); decprgon(cbdecseq,1/cbdmf,cbres); decon(); delay(tau1 - 2.0*pwS1/PI - PRG_START_DELAY - 2*POWER_DELAY - PRG_STOP_DELAY - WFG_START_DELAY - 2.0*PWRF_DELAY - 0.5*pwZ); decoff(); decprgoff(); decpower(pwClvl); initval(140.0, v9); decstepsize(1.0); dcplrphase(v9); } else { tsadd(t6,2,4); delay(2.0*tau1); delay(10.0e-6); sim3_c13pulse("", "ca", "co", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(10.0e-6); } } else { tsadd(t6,2,4); delay(10.0e-6); sim3_c13pulse("", "co", "ca", "sinc", "", 0.0, 180.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 2.0e-6); delay(10.0e-6); } } else { /* for checking sequence */ c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); } decphase(t7); c13pulse("ca", "co", "square", 90.0, t7, 4.0e-6, 0.0); /* pwS1 */ dcplrphase(zero); h1waltzoff("WALTZ16", widthHd, 0.0); 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, 2.0e-6, 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, 2.0e-6, 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); h1waltzon("WALTZ16", widthHd, 0.0); /* t3 period */ dec2rgpulse(pwN,t2,2.0e-6,0.0); dec2phase(t3); delay(bigTN - tau3 + pwS2); dec2rgpulse(2*pwN,t3,0.0,0.0); c13pulse("co", "ca", "sinc", 180.0, zero, 0.0, 0.0); dec2phase(t4); if (tau3 > (kappa + PRG_STOP_DELAY + pwHd + 2.0e-6)) { delay(bigTN - pwS3 - WFG_START_DELAY - 2.0*POWER_DELAY - 2.0*PWRF_DELAY - 2.0e-6); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); delay(tau3 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6 - POWER_DELAY - PWRF_DELAY); h1waltzoff("WALTZ16", widthHd, 0.0); txphase(zero); delay(kappa - gt5 - 2.0*GRADIENT_DELAY - 1.0e-4); zgradpulse(gzlvl5, gt5); /* 2.0*GRADIENT_DELAY */ delay(1.0e-4); } else if (tau3 > (kappa - pwS3 - WFG_START_DELAY - 2.0*POWER_DELAY - 2.0*PWRF_DELAY - 2.0e-6)) { delay(bigTN + tau3 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6 - POWER_DELAY - PWRF_DELAY); h1waltzoff("WALTZ16", widthHd, 0.0); txphase(zero); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); delay(kappa - pwS3 - WFG_START_DELAY - 2.0*POWER_DELAY - 2.0*PWRF_DELAY - 2.0e-6 - gt5 - 2.0*GRADIENT_DELAY - 1.0e-4); zgradpulse(gzlvl5, gt5); /* 2.0*GRADIENT_DELAY */ delay(1.0e-4); } else if (tau3 > gt5 + 2.0*GRADIENT_DELAY + 1.0e-4) { delay(bigTN + tau3 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6 - POWER_DELAY - PWRF_DELAY); h1waltzoff("WALTZ16", widthHd, 0.0); txphase(zero); delay(kappa - tau3 - pwS3 - WFG_START_DELAY - 2.0*POWER_DELAY - 2.0*PWRF_DELAY - 2.0e-6); c13pulse("ca", "co", "square", 180.0, zero, 2.0e-6, 0.0); delay(tau3 - gt5 - 2.0*GRADIENT_DELAY - 1.0e-4); zgradpulse(gzlvl5, gt5); /* 2.0*GRADIENT_DELAY */ delay(1.0e-4); } else { delay(bigTN + tau3 - kappa - PRG_STOP_DELAY - pwHd - 2.0e-6 - POWER_DELAY - PWRF_DELAY); h1waltzoff("WALTZ16", widthHd, 0.0); txphase(zero); delay(kappa - tau3 - pwS3 - WFG_START_DELAY - 2.0*POWER_DELAY - 2.0*PWRF_DELAY - 2.0e-6 - gt5 - 2.0*GRADIENT_DELAY - 1.0e-4); zgradpulse(gzlvl5, gt5); /* 2.0*GRADIENT_DELAY */ delay(1.0e-4); c13pulse("ca", "co", "square", 180.0, zero, 2.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.0*pw,0.0,2.0*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.0*pw,0.0,2.0*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); rgpulse(pw, zero, 0.0, 0.0); delay(gt8 + 1.0e-4 + 1.0e-4 - 0.3*pw + 2.0*GRADIENT_DELAY + POWER_DELAY); rgpulse(2*pw,zero,0.0,0.0); dec2power(dpwr2); decpower(dpwr); zgradpulse(icosel*gzlvl8, gt8); delay(1.0e-4); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ statusdelay(C, 1.0e-4); setreceiver(t6); }
pulsesequence() { double j1min = getval("j1min"), j1max = getval("j1max"), gzlvlE = getval("gzlvlE"), gtE = getval("gtE"), mult = getval("mult"), pwx180 = getval("pwx180"), pwxlvl180 = getval("pwxlvl180"), pw180 = getval("pw180"), pwx180r = getval("pwx180r"), pwxlvl180r = getval("pwxlvl180r"), tpwr180 = getval("tpwr180"), EDratio = getval("EDratio"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), gstab = getval("gstab"), dmfct = getval("dmfct"), dpwrct = getval("dpwrct"), tau, tau1, tau3, taug, bigT = getval("BigT"); char pwx180ad[MAXSTR], pw180ad[MAXSTR], dmct[MAXSTR], bipflg[MAXSTR], pwx180ref[MAXSTR], dmmct[MAXSTR]; int icosel, igcorr, prgcycle = (int)(getval("prgcycle")+0.5), phase1 = (int)(getval("phase")+0.5); //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtE = syncGradTime("gtE","gzlvlE",1.0); gzlvlE = syncGradLvl("gtE","gzlvlE",1.0); getstr("pwx180ad",pwx180ad); getstr("pw180ad",pw180ad); getstr("dmct",dmct); getstr("pwx180ref", pwx180ref); getstr("dmmct", dmmct); 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); } tau1 = 1/(2*(j1min + 0.07*(j1max - j1min))); tau3 = 1/(2*(j1max - 0.07*(j1max - j1min))); tau = 1 / (j1min+j1max); taug = tau + getval("tauC"); icosel = 1; igcorr = 2; if (mult > 0.5) igcorr = 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, 8, ph2); settable(t3, 16, ph3); settable(t6, 2, ph6); getelem(t1, v17, v1); getelem(t3, v17, v3); getelem(t2, v17, v2); getelem(t6, v17, oph); assign(zero, v4); assign(zero,v6); add(oph,v18,oph); add(oph,v19,oph); initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v14); /* mod2(id2, v14); dbl(v14,v14); */ add(v2, v14, v2); add(v4, v14, v4); add(oph, v14, oph); if ((phase1 == 2) || (phase1 == 5)) icosel = -1; status(A); 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(pwxlvl); if (getflag("nullflg")) { decpower(pwxlvl180); rgpulse(0.5 * pw, zero, rof1, rof1); obspower(tpwr180); delay(tau/2.0); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,zero,zero,rof1,rof1); delay(tau/2.0+POWER_DELAY+rof1); delay(tau/2.0+POWER_DELAY+rof1); simshaped_pulse(pw180ad,pwx180ad,pw180,pwx180,two,two,rof1,rof1); obspower(tpwr); delay(tau/2.0); rgpulse(0.5 * pw, zero, rof1, rof1); decpower(pwxlvl); zgradpulse(hsglvl, 1.4*hsgt); delay(1e-3); } status(B); rgpulse(pw, zero, rof1, rof1); if (getflag("dmct")) { decpower(dpwrct); decprgon("garp1",1/dmfct,1.0); /* setstatus(DECch, FALSE, 'g', FALSE, dmfct); */ decunblank(); decon(); } obspower(tpwr180); delay(bigT/2 - d2/2 - tau - taug - pwx180r); delay(pw180+WFG_START_DELAY+WFG_STOP_DELAY); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); delay(bigT/2 - d2/2 - tau - taug - pwx180r); delay(4*pw/PI+2*rof1+POWER_DELAY+4*pwx/PI+2*POWER_DELAY); if (getflag("dmct")) { decoff(); decblank(); decprgoff(); /* setstatus(DECch, FALSE, 'c', FALSE, dmf); */ decpower(pwxlvl); } if (mult > 0.5) { delay(tau-gtE-2*GRADIENT_DELAY-gstab); zgradpulse(icosel*gzlvlE,gtE); delay(gstab); } else { delay(tau); } decrgpulse(pwx,v2,rof1,rof1); if (mult > 0.5) { decpower(pwxlvl180r); delay(taug); decshaped_pulse(pwx180ref, pwx180r, v4, rof1, rof1); delay(d2/2); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); delay(d2/2); zgradpulse(icosel*gzlvlE,gtE); delay(taug-gtE-2*GRADIENT_DELAY+(4*pwx/PI+2*rof1+2*POWER_DELAY-(WFG_START_DELAY+pw180+WFG_STOP_DELAY+2*rof1))); decshaped_pulse(pwx180ref, pwx180r, v3, rof1, rof1); } else { decpower(pwxlvl180); delay(taug/2+(pwx180r-pwx180)/2); decshaped_pulse(pwx180ad, pwx180, v4, rof1, rof1); delay(taug/2+(pwx180r-pwx180)/2.0-gtE-2*GRADIENT_DELAY-gstab); zgradpulse(icosel*gzlvlE,gtE); delay(gstab); delay(d2/2); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); delay(d2/2); zgradpulse(icosel*gzlvlE,gtE); delay(taug/2+(pwx180r-pwx180)/2.0+(4*pwx/PI+2*rof1+2*POWER_DELAY-WFG_START_DELAY-pw180-WFG_STOP_DELAY-2*rof1)-gtE-2*GRADIENT_DELAY); decshaped_pulse(pwx180ad, pwx180, v3, rof1, rof1); delay(taug/2+(pwx180r-pwx180)/2); } decpower(pwxlvl); decrgpulse(pwx,v1,rof1,rof1); obspower(tpwr); delay(tau); rgpulse(pw,one,rof1,rof2); decrgpulse(pwx,zero,rof1,rof1); obspower(tpwr180); zgradpulse(igcorr*3*gzlvlE/(10*EDratio),gtE); delay(tau3 - gtE - 2*GRADIENT_DELAY); decrgpulse(pwx,zero,rof1,rof1); zgradpulse(igcorr*7*gzlvlE/(10*EDratio),gtE); delay(tau - gtE - 2*GRADIENT_DELAY); decrgpulse(pwx,zero,rof1,rof1); shaped_pulse(pw180ad,pw180,zero,rof1,rof1); zgradpulse(igcorr*2*gzlvlE/EDratio,gtE); delay(tau1 - gtE - 2*GRADIENT_DELAY - POWER_DELAY); decpower(dpwr); status(C); delay(tau+tau3+3*pwx+6*rof1-tau1+WFG_START_DELAY+WFG_STOP_DELAY); }
pulsesequence() { char f1180[MAXSTR], f2180[MAXSTR], mag_flg[MAXSTR], flg_3919[MAXSTR], ref_flg[MAXSTR]; int phase, ni2, t1_counter, t2_counter; double gzcal = getval("gzcal"), factor = 0.08, /* used for 3-9-19 water gate */ tau_3919 = getval("tau_3919"), flipphase = getval("flipphase"), tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* 1/4JNH ~ 2.3 ms */ taub, /* 1/4JNH ~ 2.3 ms */ bigT, /* ~ 19 ms */ pwNlvl, pwN, gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, compH = getval("compH"), /* adjustment for C13 amplifier compression */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ tpwrsf = getval("tpwrsf"), /* fine power adjustment for flipback pulse */ tpwrs; /* power for the pwHs ("H2Osinc") pulse */ /* LOAD VARIABLES */ getstr("f1180",f1180); getstr("f2180",f2180); getstr("flg_3919", flg_3919); getstr("mag_flg", mag_flg); getstr("ref_flg", ref_flg); taua = getval("taua"); taub = getval("taub"); bigT = getval("bigT"); tpwr = getval("tpwr"); pwNlvl = getval("pwNlvl"); pwN = getval("pwN"); dpwr = getval("dpwr"); dpwr2 = getval("dpwr2"); phase = (int)( getval("phase") + 0.5); phase2 = (int)( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl8 = getval("gzlvl8"); /* LOAD PHASE TABLE */ settable(t1,4,phi1); settable(t2,2,phi2); settable(t3,8,phi3); settable(t4,16, phi4); if (ref_flg[A] == 'y') { settable(t10,8,ref); } else { settable(t10,8,rec); } /* selective H20 one-lobe sinc pulse */ tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ /* CHECK VALIDITY OF PARAMETER RANGES */ if (ref_flg[A] == 'y' && ni > 1) { printf(" Incorrect setting of ni and ref_flg.\n"); printf(" Please choose either ni=1 or ref_flg=n.\n"); psg_abort(1); } if (ref_flg[A] == 'y' && dps_flag) { printf(" Please use phase2 and ni2 for 2D reference spectrum\n"); if (ni2/sw2 > 2.0*(2.0*bigT - gt5 - 200.0e-6)) { printf("ni2 is too big, should be < %f\n", 2.0*sw2*(2.0*bigT-gt5-200.0e-6)); psg_abort(1); } } if ((ni2/sw2 > 2.0*(bigT - gt5 - 200.0e-6)) && (ref_flg[A] !='y')) { printf(" ni2 is too big, should be < %f\n", 2.0*sw2*(bigT-gt6-200.0e-6)); psg_abort(1); } if(dpwr2 > 50) { printf("don't fry the probe, dpwr2 is too large! "); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y')) { printf("incorrect dec1 decoupler flags! should be 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' )) { printf("incorrect dec2 decoupler flags! Should be 'nny' "); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t1,1,4); } if (phase2 == 2) { tsadd(t2,1,4); } /* Set up f1180 half_dwell time (1/sw1)/2.0 */ tau1 = d2 - (4.0*pw/PI + 2.0*pwN); if(f1180[A] == 'y') { tau1 += (1.0/(2.0*sw1)); } if(tau1 < 0.2e-6) tau1 = 0.0; tau1 = tau1/2.0; /* Set up f2180 half dwell time (1/sw2)/2.0 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += (1.0/(2.0*sw2)); } if(tau2 < 0.2e-6) tau2 = 0.0; tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int)((d2-d2_init)*sw1 + 0.5); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t10,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int)((d3-d3_init)*sw2 + 0.5); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t10,2,4); } if (flipphase < -0.01) flipphase = flipphase + 360.0; initval(flipphase, v10); obsstepsize(0.25); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); dec2power(pwNlvl); txphase(zero); dec2phase(zero); delay(d1); if(gt1 > 0.2e-6) { dec2rgpulse(pwN, zero, 0.2e-6, 0.0); delay(2.0e-6); zgradpulse(gzlvl1, gt1); delay(0.001); } rcvroff(); status(B); rgpulse(pw, zero,rof1, 0.0); delay(2.0e-6); if (gt2 > 0.2e-6) zgradpulse(gzlvl2,gt2); delay(taua - gt2 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0,2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(taua - gt2 - 400.0e-6); if (gt2 > 0.2e-6) { zgradpulse(gzlvl2,gt2); } txphase(one); dec2phase(t2); delay(400.0e-6); rgpulse(pw, one, 0.0, 0.0); if (gt3 > 0.2e-6) { delay(2.0e-6); zgradpulse(gzlvl3, gt3); delay(200.0e-6); } txphase(zero); dec2rgpulse(pwN, t2, 0.0, 0.0); if (ref_flg[A] == 'y') { delay(tau2); rgpulse(2.0*pw, zero, 0.0, 0.0); dec2phase(t3); if (gt5 > 0.2e-6) { delay(2.0*bigT - gt5 - 2.0*pw - 1.0e-3); zgradpulse(gzlvl5, gt5); delay(1.0e-3); dec2rgpulse(2.0*pwN, t3, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl5, gt5); delay(2.0*bigT - tau2 - gt5 - 2.0e-6); } else { delay(2.0*bigT - 2.0*pw); dec2rgpulse(2.0*pwN, t3, 0.0, 0.0); delay(2.0*bigT - tau2); } } else { dec2phase(zero); if (gt4 > 0.2e-6) { delay(2.0e-6); zgradpulse(gzlvl4, gt4); delay(bigT - gt4 - 2.0e-6); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl4, gt4); delay(1.0e-3 - 2.0e-6); } else { delay(bigT); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, zero, 0.0, 0.0); delay(1.0e-3); gt4 = 0.0; } zgradpulse(gzlvl5, gt5); txphase(t1); delay(bigT - gt4 - gt5 - 1.0e-3 - 2.0*GRADIENT_DELAY); rgpulse(pw, t1, 0.0, 0.0); delay(tau1); dec2rgpulse(2.0*pwN, t3, 0.0, 0.0); txphase(zero); delay(tau1); rgpulse(pw, zero, 0.0, 0.0); delay(2.0e-6); zgradpulse(gzlvl5, gt5); dec2phase(t4); if (gt6 > 0.2e-6) { delay(tau2 + 100.0e-6); zgradpulse(gzlvl6, gt6); delay(bigT - gt5 - gt6 - 100.0e-6 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, t4, 0.0, 0.0); delay(2.0e-6); dec2phase(zero); zgradpulse(gzlvl6, gt6); delay(bigT - tau2 - gt6 - 2.0e-6); } else { delay(bigT + tau2 - gt5 - 2.0*GRADIENT_DELAY); sim3pulse(2.0*pw,(double)0.0, 2.0*pwN, zero,zero, t4, 0.0, 0.0); dec2phase(zero); delay(bigT - tau2); } } if (gt7 > 0.2e-6) { dec2rgpulse(pwN, zero, 0.0,2.0e-6); zgradpulse(gzlvl7, gt7); txphase(zero); delay(200.0e-6); if (pwHs > 0.2e-6) { xmtrphase(v10); if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); txphase(two); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 0.0); xmtrphase(zero); obspower(tpwr); obspwrf(4095.0); } rgpulse(pw, zero, 2.0e-6, 0.0); } else { sim3pulse(pw,(double)0.0, pwN, zero,zero, zero, 0.0, 0.0); } delay(2.0e-6); if(mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl8, gt8); } else { zgradpulse(gzlvl8, gt8); } if (flg_3919[A] == 'y') { delay(taub - 31.0*factor*pw - 2.5*tau_3919 - gt8 - 2.0e-6); rgpulse(pw*factor*3.0, two, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*9.0, two, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*19.0, two, 0.0, 0.0); delay(tau_3919/2.0 - pwN); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(tau_3919/2.0 - pwN); rgpulse(pw*factor*19.0, zero, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*9.0, zero, 0.0, 0.0); delay(tau_3919); rgpulse(pw*factor*3.0, zero, 0.0, 0.0); delay(taub - 31.0*factor*pw - 2.5*tau_3919 - gt8 - POWER_DELAY - 402.0e-6); } else { if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); txphase(two); xmtrphase(v10); delay(taub - pwHs - gt8 - 2.0*POWER_DELAY - 2.0e-6); shaped_pulse("H2Osinc", pwHs, two, 0.0, 0.0); obspower(tpwr); obspwrf(4095.0); xmtrphase(zero); txphase(zero); sim3pulse(2.0*pw, (double)0.0, 2.0*pwN, zero, zero, zero, 2.0e-6, 0.0); if (tpwrsf<4095.0) {obspower(tpwrs+6.0); obspwrf(tpwrsf);} else obspower(tpwrs); txphase(two); xmtrphase(v10); shaped_pulse("H2Osinc", pwHs, two, 2.0e-6, 0.0); xmtrphase(zero); obspower(tpwr); obspwrf(4095.0); dec2power(dpwr2); delay(taub - pwHs - gt8 - 3.0*POWER_DELAY - 402.0e-6); } dec2power(dpwr2); if(mag_flg[A] == 'y') { magradpulse(gzcal*gzlvl8, gt8); } else { zgradpulse(gzlvl8, gt8); } delay(400.0e-6); status(C); setreceiver(t10); rcvron(); }
pulsesequence() { double hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), tau, taug, evolcorr, pwx180 = getval("pwx180"), pwxlvl180 = getval("pwxlvl180"), pwx180r = getval("pwx180r"), pwxlvl180r = getval("pwxlvl180r"), mult = getval("mult"), null = getval("null"); int phase1 = (int)(getval("phase")+0.5), prgcycle = (int)(getval("prgcycle")+0.5), ZZgsign; char pwx180ad[MAXSTR], pwx180adR[MAXSTR], pwx180ref[MAXSTR]; getstr("pwx180ad", pwx180ad); getstr("pwx180adR", pwx180adR); getstr("pwx180ref", pwx180ref); tau = 1/(4*(getval("j1xh"))); evolcorr = (4*pwx/PI) + 2*pw + 8.0e-6; if (mult > 0.5) taug = 2*tau + getval("tauC"); else taug = 0.0; ZZgsign=-1; if (mult == 2) ZZgsign=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) incr(v2); /* mod2(id2,v14); dbl(v14, v14); */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),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); decpower(pwxlvl); status(B); if ((getflag("PFGflg")) && (getflag("nullflg"))) { rgpulse(0.5 * pw, zero, rof1, rof1); delay(2 * tau); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(2 * tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); 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); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(2 * tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(pw, two, rof1, rof1); if (satmode[1] == 'y') { if (getflag("slpsat")) shaped_satpulse("BIRDnull",null,zero); else satpulse(null,zero,rof1,rof1); } else delay(null); } rgpulse(pw, v6, rof1, rof1); delay(tau); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(pw, v1, rof1, rof1); if (getflag("PFGflg")) { zgradpulse(hsglvl, 2 * hsgt); delay(1e-3); } decrgpulse(pwx, v2, rof1, 2.0e-6); delay(d2/2); rgpulse(2*pw,zero,2.0e-6,2.0e-6); delay(d2/2); if (mult>0.5) { delay(taug); decpower(pwxlvl180r); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); rgpulse(mult * pw, zero, rof1, rof1); delay(taug - mult*pw - 2*rof1 + 2*POWER_DELAY + evolcorr); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); } else { decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); delay(2*POWER_DELAY + evolcorr); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); } decpower(pwxlvl); decrgpulse(pwx, v4, 2.0e-6, rof1); if (getflag("PFGflg")) { zgradpulse(ZZgsign*0.6 * hsglvl, 1.2 * hsgt); delay(1e-3); } rgpulse(pw, v3, rof1, rof1); decpower(pwxlvl180); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(dpwr); delay(tau - 2*rof1 - (2*pw/PI)); rgpulse(2 * pw, zero, rof1, rof2); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); decpower(dpwr); delay(tau); status(C); }
void pulsesequence() { double j1min, j1max, pwxlvl, pwx, gzlvl0, gt0, gzlvl1, gt1, gzlvl3, gt3, bird, gstab, hsglvl, hsgt, satdly, tauX, tau, tautau, t1max, tauA, tauB, tau1, tau2, taumb; char sspul[MAXSTR], accord[MAXSTR], satmode[MAXSTR]; int ijscaleU, ijscaleD, t1_counter; j1min = getval("j1min"); j1max = getval("j1max"); pwxlvl = getval("pwxlvl"); pwx = getval("pwx"); getstr("sspul",sspul); getstr("accord",accord); gzlvl0 = getval("gzlvl0"); gt0 = getval("gt0"); gzlvl1 = getval("gzlvl1"); gt1 = getval("gt1"); gzlvl3 = getval("gzlvl3"); gt3 = getval("gt3"); gstab = getval("gstab"); hsglvl = getval("hsglvl"); hsgt = getval("hsgt"); satdly = getval("satdly"); getstr("satmode",satmode); tauX = 1/(2*(getval("jnmax"))); tauA = 1/(2*(j1min + 0.146*(j1max - j1min))); tauB = 1/(2*(j1max - 0.146*(j1max - j1min))); bird = (tauA+tauB)/2; ijscaleD = (int)(getval("jscaleD") + 0.5); ijscaleU = (int)(getval("jscaleU") + 0.5); t1max = ((getval("ni")-1)/getval("sw1")) + 0.0005; tautau = ((ijscaleU - 1)*d2); taumb = 1/(2*(getval("jnmin"))); if(ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*(getval("sw1")) + 0.5); if (accord[0] == 'y') { if ((taumb - tauX) < t1max/2) taumb = tauX + t1max/2; tau = ((taumb - tauX)*t1_counter/ni); } else { taumb = 1/(2*(getval("jnxh"))); if (ijscaleU > 0) tau = 0.0; else tau = t1max/2; } tau1 = ijscaleD * d2; tau2 = (ijscaleD*t1max) - tau1; if ((ijscaleD > 0) && (ijscaleU > 0)) { printf("Either jscaleD or jscaleU must be set to zero.\n"); psg_abort(1); } settable(t1,1,ph1); settable(t3,2,ph3); settable(t4,1,ph4); settable(t5,4,ph5); settable(t6,4,ph6); getelem(t3,ct,v3); getelem(t6,ct,oph); initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v10); add(v3,v10,v3); add(oph,v10,oph); status(A); decpower(pwxlvl); if (sspul[0] == 'y') { zgradpulse(hsglvl*1.3,hsgt); rgpulse(pw,zero,rof1,rof1); zgradpulse(hsglvl*1.3,hsgt); } 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); } if (getflag("wet")) wet4(zero,one); status(B); rgpulse(pw,t1,rof1,rof2); /* Start of J filter */ zgradpulse(gzlvl0/2,gt0); delay(tauA - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0/3,gt0); delay(tauB - gt0); decrgpulse(pwx, zero, rof1, rof1); zgradpulse(-gzlvl0/6,gt0); delay(gstab); /* End of J filter */ /* Start of STARR */ /* rev-BIRD in the middle of tau2 - 180 for C13-H and 360 for C12-H */ /* - decouple long-range CH */ /* evolution and let HH evolution continue except for */ /* 2-bond correlations */ delay(tau2/2); zgradpulse(gzlvl0*1.5,gt0); delay(gstab); rgpulse(pw,zero,rof1,rof1); delay(bird); simpulse(2*pw,2*pwx,zero,zero,rof1,rof1); delay(bird); rgpulse(pw,zero,rof1,rof2); zgradpulse(-gzlvl0*1.5,gt0); delay(gstab); delay(tau2/2); /* Simple C 180 in the middle of tau1 - decouple */ /* CH evolution and let HH evolution continue */ /* AND Start of CT-VD */ if (!((accord[0] == 'n') && (ijscaleU == 1))) { delay(tau1/2 + tau/2 + tautau/4); zgradpulse(gzlvl0,gt0); delay(gstab); decrgpulse(2*pwx,two,rof1,rof1); zgradpulse(-gzlvl0,gt0); delay(gstab); delay(tau1/2 + tau/2 + tautau/4); } /* End of STARR */ if (accord[0] == 'y') delay(taumb - tau); else delay(taumb); /* End of CT-VD */ decrgpulse(pwx,v3,rof1,rof1); zgradpulse(gzlvl1,gt1); delay(gstab); delay(d2/2); rgpulse(pw*2.0,t4,rof1,rof1); delay(d2/2); zgradpulse(gzlvl1,gt1); delay(gstab); decrgpulse(pwx,t5,rof1,rof1); zgradpulse(gzlvl3,gt3); decpower(dpwr); delay(t1max/2 + tautau/2); status(C); }
pulsesequence() { // ========================================================= // Define Variables and Objects and Get Parameter Values // ========================================================= // -------------------------------- // Acquisition Decoupling // ------------------------------- char Hseq[MAXSTR]; getstr("Hseq",Hseq); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); // --------------------------------------------- // Determine taur, One Rotor Cycle and Set tHrr. // --------------------------------------------- double srate = getval("srate"); double taur = 0.0; if (srate >= 500.0) taur = roundoff((1.0/srate), 0.125e-6); else { abort_message("ABORT: Spin Rate (srate) must be greater than 500\n"); } double tHrr = getval("nHrr")*taur; double tHrrret= 2.0*tHrr; putCmd("tHrrret = %f\n",tHrrret*1.0e6); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); //------------------------------ // Dutycycle Protection //------------------------------ DUTY d = init_dutycycle(); d.dutyon = getval("pwX90"); d.dutyoff = d1 + 4.0e-6; if (getval("aHrr") > 0.0) d.dutyon += 2.0*tHrr; d.c1 = d.c1 + (!strcmp(Hseq,"tppm")); d.c1 = d.c1 + ((!strcmp(Hseq,"tppm")) && (dec.t.a > 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(Hseq,"spinal")); d.c2 = d.c2 + ((!strcmp(Hseq,"spinal")) && (dec.s.a > 0.0)); d.t2 = getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); //--------------------------- // Set Phase Tables //--------------------------- settable(phX90,4,tblX90); settable(phHrr,4,tblHrr); settable(ph1Hrr,4,tblHrr2); settable(phRec,4,tblRec); setreceiver(phRec); //=========================== // Begin Sequence //=========================== txphase(phX90); decphase(zero); obspwrf(getval("aX90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); //---------------------------- // X Direct Polarization //---------------------------- rgpulse(getval("pwX90"),phX90,0.0,0.0); obsunblank(); // ----------------------------- // Begin Rotary Resonance // ----------------------------- if(getval("aHrr") > 0.0) { obspwrf(getval("aHrr")); txphase(phHrr); xmtron(); delay(tHrr); txphase(ph1Hrr); delay(tHrr); xmtroff(); } //=========================== // Begin Acquisition //=========================== _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { double mixN = getval("mixN"), gzlvlC = getval("gzlvlC"), gtC = getval("gtC"), 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"), zqfpw3 = getval("zqfpw3"), zqfpwr3 = getval("zqfpwr3"), gzlvlzq3 = getval("gzlvlzq3"), mixNcorr, sweeppw = getval("sweeppw"), sweeppwr = getval("sweeppwr"); char sweepshp[MAXSTR], selshapeA[MAXSTR], selshapeB[MAXSTR], zqfpat3[MAXSTR]; //synchronize gradients to srate for probetype='nano' // Preserve gradient "area" gtC = syncGradTime("gtC","gzlvlC",1.0); gzlvlC = syncGradLvl("gtC","gzlvlC",1.0); 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("sweepshp",sweepshp); getstr("selshapeA",selshapeA); getstr("selshapeB",selshapeB); getstr("zqfpat3",zqfpat3); mixNcorr=0.0; if (getflag("Gzqfilt")) mixNcorr=getval("zqfpw3"); hlv(ct,v1); hlv(v1,v1); hlv(v1,v1); hlv(v1,v1); mod4(v1,v1); mod4(ct,v2); add(v1,v2,v2); hlv(ct,v3); hlv(v3,v3); mod4(v3,v3); add(v1,v3,v3); dbl(v3,v4); dbl(v2,oph); add(oph,v4,oph); add(oph,v1,oph); /* BEGIN THE ACTUAL PULSE SEQUENCE */ status(A); obspower(tpwr); delay(5.0e-5); 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,zero,rof1,rof1); } else delay(d1); if (getflag("wet")) wet4(zero,one); status(B); if (selfrq != tof) obsoffset(selfrq); rgpulse(pw, v1, rof1, rof1); if (selfrq != tof) obsoffset(selfrq); zgradpulse(gzlvlA,gtA); delay(gstab); obspower(selpwrA); shaped_pulse(selshapeA,selpwA,v2,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,v3,rof1,rof1); obspower(tpwr); zgradpulse(gzlvlB,gtB); delay(gstab); if (selfrq != tof) obsoffset(tof); rgpulse(pw,v1,rof1,rof1); obspower(sweeppwr); delay(0.31*mixN); zgradpulse(gzlvlC,gtC); delay(gstab); shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); zgradpulse(-gzlvlC,gtC); delay(0.49*mixN); zgradpulse(-gzlvlC,2*gtC); delay(gstab); if (getflag("Gzqfilt")) { obspower(zqfpwr3); rgradient('z',gzlvlzq3); delay(100.0e-6); shaped_pulse(zqfpat3,zqfpw3,zero,rof1,rof1); delay(100.0e-6); rgradient('z',0.0); } else shaped_pulse(sweepshp,sweeppw,zero,rof1,rof1); delay(gstab); zgradpulse(gzlvlC,2*gtC); delay(0.2*mixN); obspower(tpwr); rgpulse(pw,v1,rof1,rof2); status(C); }
pulsesequence() { double gzlvl1,qlvl,grise,gstab,gt1,taud2,tau1; int icosel; grise=getval("grise"); gstab=getval("gstab"); gt1=getval("gt1"); gzlvl1=getval("gzlvl1"); qlvl=getval("qlvl"); tau1 = getval("tau1"); taud2 = getval("taud2"); if (phase1 == 2) { icosel=-1; if (ix==1) fprintf(stdout,"P-type MQCOSY\n"); } else { icosel=1; /* Default to N-type experiment */ if (ix==1) fprintf(stdout,"N-type MQCOSY\n"); } qlvl++ ; status(A); obspower(satpwr); delay(d1); rgpulse(satdly,zero,rof1,rof2); obspower(tpwr); delay(1.0e-6); rgpulse(pw,oph,rof1,rof2); delay(d2); rgradient('z',gzlvl1); delay(gt1+grise); rgradient('z',0.0); txphase(oph); delay(grise); rgpulse(pw,oph,0.0,rof2); delay(taud2); rgradient('z',gzlvl1); delay(gt1+grise); rgradient('z',0.0); txphase(oph); delay(grise); delay(taud2); status(B); rgpulse(pw,oph,rof1,rof2); delay(tau1); rgradient('z',gzlvl1*qlvl*(double)icosel); delay(gt1+grise); rgradient('z',0.0); delay(grise); delay(gstab); status(C); }
pulsesequence() { char pshape[MAXSTR], httype[MAXSTR]; int Hdim = (int) (0.5 + getval("Hdim")); /* dimension for testing */ double rg1 = 2.0e-6, compH = getval("compH"), /* compression factor for H-1 channel */ gt0 = getval("gt0"), /* gradient pulse preceding d1 */ gt1 = getval("gt1"), /* gradient pulse preceding mixing */ gt2 = getval("gt2"), /* gradient pulse following mixing */ gzlvl0 = getval("gzlvl0"), /* gradient level for gt1 */ gzlvl1 = getval("gzlvl1"), /* gradient level for gt2 */ gzlvl2 = getval("gzlvl2"), /* gradient level for gt3 */ gstab = getval("gstab"); /* delay for gradient recovery */ shape hdx; getstr("pshape", pshape); getstr("httype", httype); add(one,oph,v1); /* MAKE PBOX SHAPES */ if(Hdim == 0) hdx = pboxHT(pshape, pw*compH, tpwr, httype[0]); /* HADAMARD stuff */ else /* if(Hdim == 1) */ hdx = pboxHT_F1(pshape, pw*compH, tpwr, httype[0]); /* Optional stuff to enable manual power calibration */ if ((Hdim == 0) && (getval("htcal") > 0.5)) hdx.pwr = getval("htpwr"); if ((Hdim == 1) && (getval("htcal1") > 0.5)) hdx.pwr = getval("htpwr1"); /* THE PULSE PROGRAMM STARTS HERE */ status(A); delay(1.0e-4); zgradpulse(gzlvl0,gt0); pre_sat(); if (getflag("wet")) wet4(zero,one); obspower(tpwr); delay(1.0e-5); status(B); if ((httype[0] == 'i') || (httype[0] == 's')) /* inversion and sequential inversion */ { pbox_pulse(&hdx, zero, rof1, rof1); zgradpulse(gzlvl2,gt2); obspower(tpwr); delay(gstab); rgpulse(pw,oph,rg1,rof2); } else if (httype[0] == 'r') /* gradient echo */ { obspower(tpwr); rgpulse(pw,oph,rg1,rg1); zgradpulse(gzlvl1,gt1); delay(gstab); pbox_pulse(&hdx, oph, rg1, rof2); zgradpulse(gzlvl1,gt1); delay(gstab); } else /* if (httype[0] == 'e') */ /* selective excitation */ pbox_pulse(&hdx, oph, rof1, rof1); status(C); }
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 */ ddseq[MAXSTR], /* deuterium decoupling sequence */ shp_sl[MAXSTR], shcreb[MAXSTR], /* reburp shape for center of t1 period */ shcgcob[MAXSTR], /* g3 inversion at 154 ppm (350 us) */ shcgcoib[MAXSTR], /* g3 time inversion at 154 ppm (350 us) */ shca180[MAXSTR], /* Ca 180 [D/sq(3)] during 15N CT */ shco180[MAXSTR], /* Co 180 [D/sq(15)] during 15N CT */ sel_flg[MAXSTR], /* active/passive purging of undesired component */ fCT[MAXSTR], /* Flag for constant time C13 evolution */ fc180[MAXSTR], cal_sphase[MAXSTR], shared_CT[MAXSTR], nietl_flg[MAXSTR]; int phase, phase2, ni2, icosel, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JNH = 2.25 ms */ del1, /* time for C'-N to refocus set to 0.5*24.0 ms */ bigTN, /* nitrogen T period */ bigTC, /* carbon T period */ zeta, /* delay for transfer from ca to cb = 3.5 ms */ tsatpwr, /* low level 1H trans.power for presat */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ tauf, /* 1/2J NH value */ pw_sl, /* selective pulse on water */ phase_sl, /* phase on water */ tpwrsl, /* power for pw_sl */ at, d_cgcob, /* power level for g3 pulses at 154 ppm */ d_creb, /* power level for reburp 180 at center of t1 */ pwcgcob, /* g3 ~ 35o us 180 pulse */ pwcreb, /* reburp ~ 400us 180 pulse */ pwD, /* 2H 90 pulse, about 125 us */ pwDlvl, /* 2H 90 pulse, about 125 us */ pwca180, /* Ca 180 during N CT at d_ca180 */ pwco180, /* Co 180 during N CT at d_co180 */ d_ca180, d_co180, compC = getval("compC"), /* C-13 RF calibration parameters */ pwC = getval("pwC"), pwClvl = getval("pwClvl"), pwN, pwNlvl, sphase, pw_sl1, tpwrsl1, gstab, gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gt9, gt11, gt13, gt14, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9, gzlvl11, gzlvl13, gzlvl14; /* variables commented out are already defined by the system */ /* LOAD VARIABLES */ getstr("autocal",autocal); getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("ddseq",ddseq); getstr("shp_sl",shp_sl); getstr("sel_flg",sel_flg); getstr("fCT",fCT); getstr("fc180",fc180); getstr("cal_sphase",cal_sphase); getstr("shared_CT",shared_CT); getstr("nietl_flg",nietl_flg); taua = getval("taua"); del1 = getval("del1"); bigTN = getval("bigTN"); bigTC = getval("bigTC"); zeta = getval("zeta"); pwN = getval("pwN"); tpwr = getval("tpwr"); tsatpwr = getval("tsatpwr"); dpwr = getval("dpwr"); pwNlvl = getval("pwNlvl"); pwD = getval("pwD"); pwDlvl = getval("pwDlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni2 = getval("ni2"); tauf = getval("tauf"); pw_sl = getval("pw_sl"); phase_sl = getval("phase_sl"); tpwrsl = getval("tpwrsl"); at = getval("at"); sphase = getval("sphase"); pw_sl1 = getval("pw_sl1"); tpwrsl1 = getval("tpwrsl1"); gstab = getval("gstab"); gt1 = getval("gt1"); if (getval("gt2") > 0) gt2=getval("gt2"); else gt2=gt1*0.1; gt3 = getval("gt3"); gt4 = getval("gt4"); gt5 = getval("gt5"); gt6 = getval("gt6"); gt7 = getval("gt7"); gt8 = getval("gt8"); gt9 = getval("gt9"); gt11 = getval("gt11"); gt13 = getval("gt13"); gt14 = getval("gt14"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl8 = getval("gzlvl8"); gzlvl9 = getval("gzlvl9"); gzlvl11 = getval("gzlvl11"); gzlvl13 = getval("gzlvl13"); gzlvl14 = getval("gzlvl14"); if(autocal[0]=='n') { getstr("shcgcob",shcgcob); getstr("shcgcoib",shcgcoib); getstr("shcreb",shcreb); getstr("shca180",shca180); getstr("shco180",shco180); d_ca180 = getval("d_ca180"); d_co180 = getval("d_co180"); d_cgcob = getval("d_cgcob"); d_creb = getval("d_creb"); pwca180 = getval("pwca180"); pwco180 = getval("pwco180"); pwcgcob = getval("pwcgcob"); pwcreb = getval("pwcreb"); } else { strcpy(shcgcob,"Pg3_107p"); strcpy(shcgcoib,"Pg3i_107p"); strcpy(shcreb,"Preb_on"); strcpy(shca180,"Phard_15p"); strcpy(shco180,"Phard_133p"); if (FIRST_FID) { cgcob = pbox(shcgcob, G3CGCOB, CAB180ps, dfrq, compC*pwC, pwClvl); cgcoib = pbox(shcgcoib, G3CGCOBi, CAB180ps, dfrq, compC*pwC, pwClvl); creb = pbox(shcreb, CREB180, CAB180ps, dfrq, compC*pwC, pwClvl); ca180 = pbox(shca180, CA180, CA180ps, dfrq, compC*pwC, pwClvl); co180 = pbox(shco180, CO180, CA180ps, dfrq, compC*pwC, pwClvl); } d_ca180 = ca180.pwr; d_co180 = co180.pwr; d_cgcob = cgcob.pwr; d_creb = creb.pwr; pwca180 = ca180.pw; pwco180 = co180.pw; pwcgcob = cgcob.pw; pwcreb = creb.pw; } /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,8,phi3); settable(t4,1,phi4); settable(t5,16,phi5); settable(t6,8,phi6); settable(t7,1,phi7); settable(t8,16,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if(shared_CT[A] == 'n') if(bigTN - 0.5*(ni2 -1)/sw2 - POWER_DELAY < 0.2e-6) { text_error(" ni2 is too big\n"); text_error(" please set ni2 smaller or equal to %d\n", (int) ((bigTN -POWER_DELAY)*sw2*2.0) +1 ); psg_abort(1); } if(fCT[A] == 'y') if(bigTC - 0.5*(ni-1)/sw1 - WFG_STOP_DELAY - gt14 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 < 0.2e-6) { text_error("ni is too big\n"); text_error(" please set ni smaller or equal to %d\n", (int) ((bigTC - WFG_STOP_DELAY - gt14 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6)*sw1*2.0) +1 ); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y')) { text_error("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if( tsatpwr > 6 ) { text_error("TSATPWR too large !!! "); psg_abort(1); } if( dpwr > 46 ) { text_error("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 47 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pwClvl > 63 ) { text_error("don't fry the probe, pwClvl too large! "); psg_abort(1); } if( pwNlvl > 63 ) { text_error("don't fry the probe, pwNlvl too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { text_error("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { text_error("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { text_error("dont fry the probe, pwC too high ! "); psg_abort(1); } if( f1180[A] != 'n' && f2180[A] != 'n' ) { text_error("flags may be set wrong: set f1180=n and f2180=n for 3d\n"); psg_abort(1); } if(d_ca180 > 58) { text_error("dont fry the probe, d_ca180 too high ! "); psg_abort(1); } if(d_co180 > 58) { text_error("dont fry the probe, d_ca180 too high ! "); psg_abort(1); } if( gt1 > 15e-3 || gt2 > 15e-3 || gt3 > 15e-3 || gt4 > 15e-3 || gt5 > 15e-3 || gt6 > 15e-3 || gt7 > 15e-3 || gt8 > 15e-3 || gt9 > 15e-3 || gt11 > 15e-3 || gt13 > 15e-3 || gt14 > 15e-3) { text_error("gti values must be < 15e-3\n"); psg_abort(1); } if(tpwrsl > 25) { text_error("tpwrsl must be less than 25\n"); psg_abort(1); } if(tpwrsl1 > 25) { text_error("tpwrsl1 must be less than 25\n"); psg_abort(1); } if( dpwr3 > 50) { text_error("dpwr3 too high\n"); psg_abort(1); } if( del1 > 0.1 ) { text_error("too long del1\n"); psg_abort(1); } if( zeta > 0.1 ) { text_error("too long zeta\n"); psg_abort(1); } if( bigTN > 0.1) { text_error("too long bigTN\n"); psg_abort(1); } if( bigTC > 0.1) { text_error("too long bigTC\n"); psg_abort(1); } if( pw_sl > 10e-3) { text_error("too long pw_sl\n"); psg_abort(1); } if( pw_sl1 > 10e-3) { text_error("too long pw_sl1\n"); psg_abort(1); } if( at > 0.1 && dm2[D] == 'y') { text_error("too long at with dec2\n"); psg_abort(1); } if(pwDlvl > 59) { text_error("pwDlvl is too high; <= 59\n"); psg_abort(1); } if(d_creb > 62) { text_error("d_creb is too high; <= 62\n"); psg_abort(1); } if(d_cgcob > 60) { text_error("d_cgcob is too high; <=60\n"); psg_abort(1); } if(cal_sphase[A] == 'y') { text_error("Use only to calibrate sphase\n"); text_error("Set zeta to 600 us, gt11=gt13=0, fCT=y, fc180=n\n"); } if(nietl_flg[A] == 'y' && sel_flg[A] == 'y') { text_error("Both nietl_flg and sel_flg cannot by y\n"); psg_abort(1); } if (fCT[A] == 'n' && fc180[A] =='y' && ni > 1.0) { text_error("must set fc180='n' to allow Calfa/Cbeta evolution (ni>1)\n"); psg_abort(1); } /* Phase incrementation for hypercomplex 2D data */ /* changed from 1 to 3; spect. rev. not needed */ if (phase == 2) { tsadd(t2,3,4); tsadd(t3,3,4); } if (shared_CT[A] == 'n') { if (phase2 == 2) { tsadd(t7,2,4); icosel = 1; } else icosel = -1; } else { if (phase2 == 2) { tsadd(t7,2,4); icosel = -1; } else icosel = 1; } if (nietl_flg[A] == 'y') icosel = -1*icosel; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t2,2,4); tsadd(t8,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t5,2,4); tsadd(t8,2,4); } /* Set up f1180 tau1 = t1 */ tau1 = d2; if(f1180[A] == 'y' && fCT[A] == 'y') tau1 += ( 1.0 / (2.0*sw1) ); if(f1180[A] == 'y' && fCT[A] == 'n') tau1 += (1.0 / (2.0*sw1) - 4.0/PI*pwC - POWER_DELAY - 4.0e-6); if(f1180[A] == 'n' && fCT[A] == 'n') tau1 = (tau1 - 4.0/PI*pwC - POWER_DELAY - 4.0e-6); if(tau1 < 0.2e-6) tau1 = 4.0e-7; tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.2e-6; } tau2 = tau2/2.0; /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tsatpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power to high power */ dec2power(pwNlvl); /* Set Dec2 power for 15N hard pulses */ dec3power(pwDlvl); /* Set Dec3 for 2H hard pulses */ /* Presaturation Period */ if (fsat[0] == 'y') { delay(2.0e-5); rgpulse(d1,zero,0.0,2.0e-6); obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if (fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ txphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(B); rcvroff(); lk_hold(); delay(20.0e-6); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ delay(0.2e-6); zgradpulse(gzlvl5,gt5); delay(2.0e-6); delay(taua - gt5 - 2.2e-6); /* taua <= 1/4JNH */ sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); dec2phase(t1); decphase(zero); delay(taua - gt5 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl5,gt5); delay(200.0e-6); if (sel_flg[A] == 'y') { rgpulse(pw,one,4.0e-6,0.0); initval(1.0,v2); obsstepsize(phase_sl); xmtrphase(v2); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shp_sl,pw_sl,two,2.0e-6,0.0); xmtrphase(zero); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ initval(1.0,v6); dec2stepsize(45.0); dcplr2phase(v6); delay(0.2e-6); zgradpulse(gzlvl3,gt3); delay(200.0e-6); dec2rgpulse(pwN,t1,0.0,0.0); dcplr2phase(zero); delay(1.34e-3 - SAPS_DELAY); rgpulse(pw,zero,0.0,0.0); rgpulse(2.0*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); decpower(d_ca180); dec2phase(zero); delay(del1 - 1.34e-3 - 4.0*pw - 4.0e-6 - POWER_DELAY + WFG_START_DELAY + pwca180 + WFG_STOP_DELAY); } else { rgpulse(pw,three,4.0e-6,0.0); initval(1.0,v2); obsstepsize(phase_sl); xmtrphase(v2); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shp_sl,pw_sl,zero,2.0e-6,0.0); xmtrphase(zero); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ delay(0.2e-6); zgradpulse(gzlvl3,gt3); delay(200.0e-6); dec2rgpulse(pwN,t1,0.0,0.0); dec2phase(zero); decpower(d_ca180); delay(del1 - POWER_DELAY + WFG_START_DELAY + pwca180 + WFG_STOP_DELAY); } decphase(zero); dec2rgpulse(2*pwN,zero,0.0,0.0); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dec2phase(one); delay(del1); dec2rgpulse(pwN,one,0.0,0.0); decpower(pwClvl); decphase(t2); delay(0.2e-6); zgradpulse(gzlvl4,gt4); delay(200.0e-6); dec2phase(t5); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ decrgpulse(pwC,t2,0.0,0.0); delay(zeta - PRG_STOP_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6 - pwD - gt11 - 102.0e-6 - POWER_DELAY - WFG_START_DELAY); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3phase(three); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ decphase(zero); delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(100.0e-6); if (cal_sphase[A] == 'y') { decpower(pwClvl); decshaped_pulse("hard",2.0*pwC,zero,4.0e-6,4.0e-6); } else { initval(1.0,v3); decstepsize(sphase); dcplrphase(v3); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,4.0e-6); dcplrphase(zero); } delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(100.0e-6); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ delay(zeta - WFG_STOP_DELAY - gt11 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6); decpower(pwClvl); decrgpulse(pwC,t3,4.0e-6,0.0); if (fCT[A] == 'y') { delay(tau1); decpower(d_cgcob); decshaped_pulse(shcgcob,pwcgcob,zero,4.0e-6,0.0); delay(bigTC - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - 102.0e-6 - gt14 - PRG_STOP_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - WFG_START_DELAY); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3phase(three); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ delay(2.0e-6); zgradpulse(gzlvl14,gt14); delay(100.0e-6); initval(1.0,v4); decstepsize(sphase); dcplrphase(v4); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,4.0e-6); dcplrphase(zero); delay(2.0e-6); zgradpulse(gzlvl14,gt14); delay(100.0e-6); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ delay(bigTC - tau1 - WFG_STOP_DELAY - gt14 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY - 4.0e-6 - pwcgcob - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decpower(d_cgcob); decshaped_pulse(shcgcoib,pwcgcob,zero,4.0e-6,0.0); decphase(t4); } else if(fCT[A] == 'n' && fc180[A] == 'n') { delay(tau1); delay(tau1); } else if(fCT[A] == 'n' && fc180[A] == 'y') { initval(1.0,v4); decstepsize(sphase); dcplrphase(v4); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,0.0); dcplrphase(zero); } decpower(pwClvl); decrgpulse(pwC,t4,4.0e-6,0.0); delay(zeta - POWER_DELAY - 4.0e-6 - pwD - PRG_STOP_DELAY - DELAY_BLANK - gt13 - 102.0e-6 - POWER_DELAY - WFG_START_DELAY); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ delay(2.0e-6); zgradpulse(gzlvl13,gt13); delay(100.0e-6); if (cal_sphase[A] == 'y') { decpower(pwClvl); decshaped_pulse("hard",2.0*pwC,zero,4.0e-6,4.0e-6); } else { initval(1.0,v5); decstepsize(sphase); dcplrphase(v5); decpower(d_creb); decshaped_pulse(shcreb,pwcreb,zero,4.0e-6,4.0e-6); dcplrphase(zero); } delay(2.0e-6); zgradpulse(gzlvl13,gt13); delay(100.0e-6); /* Turn on D decoupling using the third decoupler */ dec3phase(one); dec3power(pwDlvl); dec3rgpulse(pwD,one,4.0e-6,0.0); dec3phase(zero); dec3power(dpwr3); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); /* Turn on D decoupling */ delay(zeta - WFG_STOP_DELAY - gt13 - 102.0e-6 - POWER_DELAY - 4.0e-6 - pwD - POWER_DELAY - PRG_START_DELAY - DELAY_BLANK - POWER_DELAY - 4.0e-6); decpower(pwClvl); decrgpulse(pwC,zero,4.0e-6,0.0); /* Turn off D decoupling */ setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3blank(); dec3phase(three); dec3power(pwDlvl); dec3rgpulse(pwD,three,4.0e-6,0.0); /* Turn off D decoupling */ delay(0.2e-6); zgradpulse(gzlvl9,gt9); delay(200.0e-6); if (shared_CT[A] == 'n') { dec2rgpulse(pwN,t5,2.0e-6,0.0); decpower(d_ca180); dec2phase(t6); delay(bigTN - tau2 - POWER_DELAY); dec2rgpulse(2*pwN,t6,0.0,0.0); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dec2phase(t7); delay(bigTN - WFG_START_DELAY - pwca180 - WFG_STOP_DELAY - gt1 - 2.0*GRADIENT_DELAY - 500.2e-6 - POWER_DELAY - 4.0e-6 - WFG_START_DELAY - pwco180 - WFG_STOP_DELAY); delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(500.0e-6); decpower(d_co180); decshaped_pulse(shco180,pwco180,zero,4.0e-6,0.0); delay(tau2); sim3pulse(pw,0.0,pwN,zero,zero,t7,0.0,0.0); } else if (shared_CT[A] == 'y') { dec2rgpulse(pwN,t5,2.0e-6,0.0); decpower(d_co180); dec2phase(t6); if (bigTN - tau2 >= 0.2e-6) { delay(tau2); decshaped_pulse(shco180,pwco180,zero,4.0e-6,0.0); decpower(d_ca180); delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(500.0e-6); delay(bigTN - 4.0e-6 - WFG_START_DELAY - pwco180 - WFG_STOP_DELAY - POWER_DELAY - gt1 - 500.2e-6 - 2.0*GRADIENT_DELAY - WFG_START_DELAY - pwca180 - WFG_STOP_DELAY); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); dec2rgpulse(2*pwN,t6,0.0,0.0); delay(bigTN - tau2); } else { delay(tau2); decshaped_pulse(shco180,pwco180,zero,4.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl1,gt1); delay(500.0e-6); decpower(d_ca180); delay(bigTN - 4.0e-6 - WFG_START_DELAY - pwco180 - WFG_STOP_DELAY - gt1 - 500.2e-6 - 2.0*GRADIENT_DELAY - POWER_DELAY - WFG_START_DELAY - pwca180 - WFG_STOP_DELAY); decshaped_pulse(shca180,pwca180,zero,0.0,0.0); delay(tau2 - bigTN); dec2rgpulse(2.0*pwN,t6,0.0,0.0); } sim3pulse(pw,0.0,pwN,zero,zero,t7,0.0,0.0); } /* end of shared_CT */ if (nietl_flg[A] == 'n') { decpower(pwClvl); decrgpulse(pwC,zero,4.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(2.0e-6); dec2phase(zero); delay(tauf - POWER_DELAY - 4.0e-6 - pwC - gt6 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); dec2phase(one); delay(tauf - gt6 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(200.0e-6); sim3pulse(pw,0.0,pwN,one,zero,one,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(tauf - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); delay(tauf - gt7 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(200.0e-6); sim3pulse(pw,0.0e-6,pwN,zero,zero,zero,0.0,0.0); } else { /* nietl_flg == y */ /* shaped pulse */ obspower(tpwrsl1); shaped_pulse(shp_sl,pw_sl1,zero,2.0e-6,0.0); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ decpower(pwClvl); decrgpulse(pwC,zero,4.0e-6,0.0); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(2.0e-6); dec2phase(zero); delay(tauf - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pw_sl1 - WFG_STOP_DELAY - 2.0e-6 - POWER_DELAY - POWER_DELAY - 4.0e-6 - pwC - gt6 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); dec2phase(zero); delay(tauf - gt6 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl6,gt6); delay(200.0e-6); sim3pulse(pw,0.0,pwN,one,zero,zero,0.0,0.0); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); txphase(zero); dec2phase(zero); delay(tauf - gt7 - 2.2e-6); sim3pulse(2*pw,0.0,2*pwN,zero,zero,zero,0.0,0.0); txphase(one); dec2phase(one); delay(tauf - gt7 - 200.2e-6); delay(0.2e-6); zgradpulse(gzlvl7,gt7); delay(200.0e-6); sim3pulse(pw,0.0e-6,pwN,one,zero,one,0.0,0.0); txphase(zero); } /* end of nietl_flg == y */ delay(gt2 +gstab -0.5*(pwN-pw) -2.0*pw/PI); rgpulse(2*pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(icosel*gzlvl2,gt2); decpower(dpwr); /* NO 13C decoupling */ dec2power(dpwr2); /* NO 15N decoupling */ delay(gstab -2.0e-6 -2.0*GRADIENT_DELAY -2.0*POWER_DELAY); lk_sample(); /* BEGIN ACQUISITION */ status(C); setreceiver(t8); }
void 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"), hsglvl = getval("hsglvl"), hsgt = getval("hsgt"), tauA=getval("tauA"), //compensation for tauB and tauD tauB=getval("tauB"), //effect of rof2 tauD=getval("tauD"), //effect of alfa tBal=getval("tBal"), //supports inova console if ~1/(fb*1.3) pwr_XBIP = getval("pwr_XBIP"), pw_XBIP = getval("pw_XBIP"), pwr_HBIP = getval("pwr_HBIP"), pw_HBIP = getval("pw_HBIP"), gzlvlcr = getval("gzlvlcr"), gtcr = getval("gtcr"), //crusher gradient in BIRD npoints = getval("npoints"), // npoints should be an integer multiple of np tau, evolcorr, taug,cycles; int prgcycle = (int)(getval("prgcycle")+0.5), phase1 = (int)(getval("phase")+0.5), icosel, ZZgsign; char pwx180ad[MAXSTR], pwx180adR[MAXSTR], pwx180ref[MAXSTR], shp_XBIP[MAXSTR], shp_HBIP[MAXSTR], BIRD[MAXSTR], BIRDmode[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("pwx180adR", pwx180adR); getstr("pwx180ref", pwx180ref); getstr("shp_XBIP",shp_XBIP); getstr("shp_HBIP",shp_HBIP); getstr("BIRD",BIRD); getstr("BIRDmode",BIRDmode); tau = 1 / (4*(getval("j1xh"))); evolcorr = (4*pwx/PI)+2*pw+8.0e-6; cycles=np/npoints; cycles = (double)((int)((cycles))); initval(cycles,v20); 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); } } if (BIRD[0]=='n') //gHSQC phases { settable(t1,4,ph1); settable(t2,2,ph2); settable(t3,8,ph3); settable(t4,16,ph4); settable(t5,16,ph5); } else //rtgHSQC-BIRD phases { settable(t1,8,ph11); settable(t2,2,ph12); settable(t3,16,ph13); settable(t4,32,ph14); settable(t5,32,ph15); settable(t7,4,ph17); settable(t8,4,ph18); settable(t9,4,ph19); getelem(t7, v17, v7); getelem(t8, v17, v8); getelem(t9, v17, v9); } 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); add(v2, v14, v2); add(oph, v14, oph); status(A); obspower(tpwr); decpower(pwxlvl); 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); status(B); /****** null flag starts here *****/ if (getflag("nullflg")) { rgpulse(0.5 * pw, zero, rof1, rof1); delay(2 * tau); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(2 * tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(1.5 * pw, two, rof1, rof1); zgradpulse(hsglvl, hsgt); delay(1e-3); } /*********gHSQC or gHSQC part of pure shift starts here *****/ if (getflag("cpmgflg")) { rgpulse(pw, v6, rof1, 0.0); cpmg(v6, v15); } else rgpulse(pw, v6, rof1, rof1); delay(tau); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); rgpulse(2.0 * pw, zero, rof1, rof1); delay(tau + 2 * POWER_DELAY); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(pwxlvl); rgpulse(pw, v1, rof1, rof1); zgradpulse(hsglvl, 2 * hsgt); delay(1e-3); decrgpulse(pwx, v2, rof1, 2.0e-6); delay(d2 / 2); rgpulse(2 * pw, zero, 2.0e-6, 2.0e-6); delay(d2 / 2); delay(taug - POWER_DELAY); if (mult > 0.5) { decpower(pwxlvl180r); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); rgpulse(mult * pw, zero, rof1, rof1); delay(taug - mult * pw - 2 * rof1 + POWER_DELAY - gtE - gstab - 2 * GRADIENT_DELAY+evolcorr); zgradpulse(gzlvlE, gtE); delay(gstab); decshaped_pulse(pwx180ref, pwx180r, zero, rof1, rof1); } else { decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); delay(taug + POWER_DELAY - gtE - gstab - 2 * GRADIENT_DELAY+evolcorr); zgradpulse(gzlvlE, gtE); delay(gstab); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); } decpower(pwxlvl); decrgpulse(pwx, v4, 2.0e-6, rof1); zgradpulse(ZZgsign*0.6 * hsglvl, 1.2 * hsgt); delay(1e-3); rgpulse(pw, v3, rof1, rof1); decpower(pwxlvl180); decshaped_pulse(pwx180adR, pwx180, zero, rof1, rof1); decpower(dpwr); delay(tau - (2 * pw / PI) - 2*rof1); rgpulse(2 * pw, zero, rof1, rof2); decpower(pwxlvl180); decshaped_pulse(pwx180ad, pwx180, zero, rof1, rof1); decpower(dpwr); zgradpulse(icosel * 2.0*gzlvlE/EDratio, gtE/2.0); delay(tau - gtE/2.0 - 2 * GRADIENT_DELAY); /********gHSQC part stops and BIRD Acquisition starts here*************/ // delay(tBal); //filter delay (Hoult) for inova; adjust tBal manually for the same effect //delay(1.0/(getval("fb")*1.3)) if (BIRD[0]=='y') { #ifdef NVPSG setacqmode(WACQ|NZ); //use this line only for vnmrs console; comment this out in inova #endif obsblank(); // delay(rof2); startacq(alfa); } /*---------------------------------------------------------------------------- Observe the 1st half chunk -----------------------------------------------------------------------------*/ if (BIRD[0]=='y') { status(C); acquire(npoints/2.0,1.0/sw); rcvroff(); status(B); obspower(tpwr); /*------------------------------------------------------------------------ Using hard 13C inversion pulse in BIRD --------------------------------------------------------------------------*/ if (BIRDmode[0]== 'h') { rgpulse(pw,v7,rof1,rof1); decpower(pwxlvl); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); simpulse(2.0*pw,2.0*pwx,v8,v8,rof1,rof1); decpower(dpwr); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); rgpulse(pw,v9,rof1,rof1); } /*--------------------------------------------------------------------------- Using BIP 13C inversion pulse in BIRD ----------------------------------------------------------------------------*/ if (BIRDmode[0]== 'b') { rgpulse(pw,v7,rof1,rof1); if (pwr_XBIP!=pwxlvl) decpower(pwr_XBIP); else decpower(pwxlvl); if (pwr_HBIP!=tpwr) obspower(pwr_HBIP); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); simshaped_pulse(shp_HBIP,shp_XBIP,2.0*pw,pw_XBIP,v8,v8,rof1,rof1); if (pwr_HBIP!=tpwr) obspower(tpwr); decpower(dpwr); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); rgpulse(pw,v9,rof1,rof1); } delay(tauA); rgpulse(pw*2.0,v7,rof1,rof1); // hard 180 degree refocusing pulse obsblank(); delay(tauB); rcvron(); //this includes rof3 delay(tauD); decr(v20); /*------------------------------------------------------------------------------ Loops for more chunks ------------------------------------------------------------------------------*/ starthardloop(v20); status(C); acquire(npoints,1.0/sw); rcvroff(); status(B); obspower(tpwr); /*------------------------------------------------------------------------ Using hard 13C inversion pulse in BIRD --------------------------------------------------------------------------*/ if (BIRDmode[0]== 'h') { rgpulse(pw,v7,rof1,rof1); decpower(pwxlvl); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); simpulse(2.0*pw,2.0*pwx,v8,v8,rof1,rof1); decpower(dpwr); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); rgpulse(pw,v9,rof1,rof1); } /*--------------------------------------------------------------------------- Using BIP 13C inversion pulse in BIRD ----------------------------------------------------------------------------*/ // if (BIRDmode[0]== 'b') if (BIRDmode[0]== 'b') { rgpulse(pw,v7,rof1,rof1); if (pwr_XBIP!=pwxlvl) decpower(pwr_XBIP); else decpower(pwxlvl); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); simshaped_pulse(shp_HBIP,shp_XBIP,2*pw,pw_XBIP,v8,v8,rof1,rof1); decpower(dpwr); delay(tau); zgradpulse(gzlvlcr,gtcr); delay(tau-gtcr); rgpulse(pw,v9,rof1,rof1); } delay(tauA); rgpulse(pw*2.0,v7,rof1,rof1); // hard 180 degree refocusing pulse obsblank(); delay(tauB); rcvron(); //this includes rof3 delay(tauD); endhardloop(); /*---------------------------------------------------------------- Acquisition of last half chunk ----------------------------------------------------------------*/ status(C); acquire(npoints/2.0,1.0/sw); rcvroff(); endacq(); incr(v20); } /****** BIRD ends here for all *****/ /***************** ACQ for conventional gHSQC ******************************/ else status(C); }
pulsesequence() { /* DECLARE VARIABLES */ char fscuba[MAXSTR],f1180[MAXSTR],f2180[MAXSTR],fsat[MAXSTR], shape[MAXSTR],sh_ad[MAXSTR],f3180[MAXSTR], N_flg[MAXSTR],diag_supp[MAXSTR]; int phase, phase2, phase3, t1_counter, t2_counter, t3_counter, icosel; double hscuba, /* length of 1/2 scuba delay */ pwx2, /* PW90 for X-nuc */ tsatpwr, /* low power level for presat*/ dhpwr2, /* power level for X hard pulses */ jxh, /* coupling for XH */ tauxh, /* delay = 1/(2jxh) */ tau1, /* t1/2 H */ tau2, /* t2/2 N */ tau3, /* t3/2 N */ sw1, /* spectral width in 1H dimension */ sw2, /* spectral width in 15N dimension */ sw3, /* spectral width in 15N dimension */ MIX, /* Total Mixing time for noesy portion */ pw_sl, /* selective 2ms pulse on water */ tpwrsl, /* power level for pw_sl */ ppm,nst,pws,bw,ofs, /* used by Pbox */ pwN,pwNlvl,compH,compC,pwC,pwClvl, d_ad, /* C high power for adiabatic pulses */ pwc_ad, /* C 90 pulse width */ zeta, /* Bax-Logan trick */ zeta1, /* Bax-Logan trick */ BigT, BigT1, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, gzlvl5, gzlvl6, gzlvl7, gzlvl8, gzlvl9, gzlvl10, gzlvl11, gzlvl12, gstab, gt1, gt2, gt3, gt4, gt5, gt6, gt7, gt8, gt9, gt10, gt11, gt12; /* LOAD VARIABLES */ pwNlvl=getval("pwNlvl"); pwN=getval("pwN"); compC=getval("compC"); pwC=getval("pwC"); pwClvl=getval("pwClvl"); compH=getval("compH"); jxh = getval("jxh"); dhpwr2 = getval("dhpwr2"); pwx2 = getval("pwx2"); tsatpwr = getval("tsatpwr"); hscuba = getval("hscuba"); 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"); MIX = getval("MIX"); pw_sl = getval("pw_sl"); tpwrsl = getval("tpwrsl"); pwc_ad = getval("pwc_ad"); d_ad = getval("d_ad"); ni = getval("ni"); BigT = getval("BigT"); BigT1 = getval("BigT1"); gstab = getval("gstab"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); gzlvl5 = getval("gzlvl5"); gzlvl6 = getval("gzlvl6"); gzlvl7 = getval("gzlvl7"); gzlvl8 = getval("gzlvl8"); gzlvl9 = getval("gzlvl9"); gzlvl10 = getval("gzlvl10"); gzlvl11 = getval("gzlvl11"); gzlvl12 = getval("gzlvl12"); 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"); getstr("fscuba",fscuba); getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("f3180",f3180); getstr("N_flg",N_flg); getstr("diag_supp",diag_supp); getstr("sh_ad",sh_ad); getstr("shape",shape); if(d_ad > 62) { printf("chirp power is too high \n"); psg_abort(1); } if(pwc_ad > 1.2e-3) { printf("adiabatic pulse is too long; set < 0.5 ms\n"); psg_abort(1); } setautocal(); /* activate auto-calibration flags */ if (autocal[0] != 'n') /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { strcpy(shape,"H2Osel"); strcpy(sh_ad,"C13adiab"); if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); ofs = 0.0; pws = 0.0005; /*0.5 ms pulse */ bw = 200.0*ppm; nst = 1000; /* nst - number of steps */ C13adiab = pbox_makeA("C13adiab", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); H2Osel = pbox_Rsh("H2Osel", "sinc90", pw_sl, 0.0, compH*pw, tpwr); ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } pw_sl = H2Osel.pw; tpwrsl = H2Osel.pwr-1.0; /* 1dB correction applied */ d_ad = C13adiab.pwr; pwc_ad = C13adiab.pw; pwx2=pwN; dhpwr2=pwNlvl; } /* 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( tsatpwr > 8 ) { printf("tsatpwr too large !!! "); psg_abort(1); } if( dpwr > -16 ) { printf("No C decoupling used in this expt. "); psg_abort(1); } if( dpwr2 > -16 ) { printf("No N decoupling used in this expt. "); psg_abort(1); } if(gzlvl0 > 500) { printf("gzlvl0_max is 500\n"); psg_abort(1); } if( gt1 > 3e-3 || gt2 > 3e-3 || gt3 > 3e-3 || gt4 > 3e-3 || gt5 > 3e-3 || gt6 > 3e-3 || gt7 > 3e-3 || gt8 > 3e-3 || gt9 > 3e-3 || gt10 > 3e-3 || gt11 > 3e-3 || gt12 > 3e-3) { printf("gradients are on for too long !!! "); psg_abort(1); } if(ix==1) { if(f1180[A] != 'n' || f2180[A] !='y' || f3180[A] != 'y') { printf("f1180 should be n, f2180 y, and f3180 should be y\n"); } } /* LOAD VARIABLES */ settable(t1, 4, phi1); settable(t2, 1, phi2); settable(t3, 1, phi3); settable(t4, 1, phi4); settable(t5, 1, phi5); settable(t6, 1, phi6); settable(t7, 1, phi7); settable(t8, 1, phi8); settable(t9, 2, phi9); settable(t10, 4, rec); /* INITIALIZE VARIABLES */ tauxh = 1/(4*jxh); /* Phase incrementation for hypercomplex data */ if( phase == 2 ) { tsadd(t2, 1, 4); tsadd(t3, 1, 4); } if ( phase2 == 2 ) { /* Hypercomplex in t2 */ tsadd(t1, 1, 4); } if ( phase3 == 2 ) /* Hypercomplex in t3 */ { tsadd(t6, 2, 4); tsadd(t7, 2, 4); tsadd(t8, 2, 4); tsadd(t10, 2, 4); icosel = -1; } else icosel = 1; /* calculate modifications to phases based on current t2/t3 values to achieve States-TPPI acquisition */ if(ix==1) d4_init = d4; t3_counter = (int) ( (d4-d4_init)*sw3 + 0.5); if(t3_counter %2) { tsadd(t4,2,4); tsadd(t5,2,4); tsadd(t10,2,4); } if(ix==1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5); if(t2_counter %2) { tsadd(t1,2,4); tsadd(t10,2,4); } if(ix==1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5); if(t1_counter %2) { tsadd(t2,2,4); tsadd(t3,2,4); tsadd(t10,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/(2.0*sw1); } tau1 = tau1/2.0; if(tau1 < 0.2e-6) tau1 = 0.2e-6; /* 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) - (4.0/PI)*pwx2 - 2.0*(2.0*GRADIENT_DELAY + 50.0e-6 + 5.0e-6) ); if(f2180[A] == 'n') tau2 = ( tau2 - (4.0/PI)*pwx2 - 2.0*(2.0*GRADIENT_DELAY + 50.0e-6 + 5.0e-6) ); tau2 = tau2/2.0; if(ix==1) if((tau2 + 5.0e-6 - 0.5*(WFG_START_DELAY + 4.0*pw + WFG_STOP_DELAY) < 5.0e-6) && N_flg[A] == 'n') printf("tau2 is negative; set f1180 to y\n"); /* set up so that get (-90,180) phase corrects in F3 if f3180 flag is y */ tau3 = d4; if(f3180[A] == 'y') tau3 += ( 1.0/(2.0*sw3) ); tau3 = tau3/2.0; if( tau3 < 0.2e-6) tau3 = 2.0e-7; /* Now include Bax/Logan trick */ if(ni != 1) { if(diag_supp[A] == 'n') zeta = (tauxh - gt5 - 102.0e-6 + 2.0*pwx2 - 2.0e-6); else zeta = (1.0/(8.0*93.39) - gt5 - 102.0e-6 + 2.0*pwx2 - 2.0e-6); zeta = zeta / ( (double) (ni-1) ); if(zeta < 0.0) { printf("problem with zeta\n"); psg_abort(1); } } else zeta = 0.0; if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2 - d2_init)*sw1 + 0.5 ); zeta1 = zeta*( (double)t1_counter ); tau1 = tau1 - zeta1; /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(tsatpwr); /* Set power for presaturation */ decpower(d_ad); /* Set decoupler1 power to d_ad */ dec2power(dhpwr2); /* Set decoupler2 power to dhpwr2 */ /* Presaturation Period */ if(fsat[0] == 'y') { txphase(zero); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat */ obspower(tpwr); /* Set power for hard pulses */ if (fscuba[0] == 'y') /* Scuba pulse sequence */ { hsdelay(hscuba); rgpulse(pw,zero,1.0e-6,0.0); /* 90x180y90x */ rgpulse(2*pw,one,1.0e-6,0.0); rgpulse(pw,zero,1.0e-6,0.0); txphase(zero); delay(hscuba); } } else { obspower(tpwr); /* Set power for hard pulses */ delay(d1); } status(B); obsoffset(tof); rcvroff(); delay(20.0e-6); /* eliminate all magnetization originating from 15N */ dec2rgpulse(pwx2,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl1,gt1); delay(gstab); rgpulse(pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(2.0e-6); delay(tauxh - gt2 - 4.0e-6); /* delay=1/4J(XH) */ sim3pulse(2*pw,0.0e-6,2*pwx2,zero,zero,zero,0.0,0.0); delay(tauxh - gt2 - 202.0e-6); /* delay=1/4J(XH) */ txphase(one); dec2phase(t1); delay(2.0e-6); zgradpulse(gzlvl2,gt2); delay(gstab); rgpulse(pw,one,0.0,0.0); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,two,2.0e-6,0.0); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ delay(2.0e-6); zgradpulse(gzlvl3,gt3); delay(gstab); txphase(zero); dec2rgpulse(pwx2,t1,0.0,0.0); dec2phase(zero); if(N_flg[A] == 'n') { if(tau2 + 5.0e-6 - 0.5*(WFG2_START_DELAY + pwc_ad + WFG2_STOP_DELAY) < 0.2e-6) { rgradient('z',gzlvl0); /* use rgradient since shaping takes more time */ delay(tau2 + 5.0e-6 - 0.5*(WFG_START_DELAY + 4.0*pw + WFG_STOP_DELAY)); rgradient('z',0.0); delay(50.0e-6); shaped_pulse("composite",4.0*pw,zero,0.0,0.0); /* 90x-180y-90x */ rgradient('z',-1.0*gzlvl0); delay(tau2 + 5.0e-6 - 0.5*(WFG_START_DELAY + 4.0*pw + WFG_STOP_DELAY)); rgradient('z',0.0); delay(50.0e-6); } else { rgradient('z',gzlvl0); /* use rgradient since shaping takes more time */ delay(tau2 + 5.0e-6 - 0.5*(WFG2_START_DELAY + pwc_ad + WFG2_STOP_DELAY)); rgradient('z',0.0); delay(50.0e-6); simshaped_pulse("composite",sh_ad,4.0*pw,pwc_ad,zero,zero,0.0,0.0); rgradient('z',-1.0*gzlvl0); /* use rgradient since shaping takes more time */ delay(tau2 + 5.0e-6 - 0.5*(WFG2_START_DELAY + pwc_ad + WFG2_STOP_DELAY)); rgradient('z',0.0); delay(50.0e-6); } } /* N_flg[A] == y */ else sim3pulse(2.0*pw,0.0,2.0*pwx2,zero,zero,zero,4.0e-6,4.0e-6); dec2rgpulse(pwx2,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl4,gt4); delay(gstab); if(diag_supp[A] == 'n') { /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,t3,2.0e-6,0.0); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ rgpulse(pw,t2,2.0e-6,0.0); txphase(t9); delay(tau1 + tauxh + zeta1 - gt5 - 102.0e-6); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(100.0e-6); dec2rgpulse(2.0*pwx2,zero,0.0,0.0); delay(tau1); rgpulse(2.0*pw,t9,0.0,0.0); txphase(one); delay(tauxh - zeta1 - gt5 - 102.0e-6 + 2.0*pwx2); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(100.0e-6); rgpulse(pw,one,0.0,0.0); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,one,2.0e-6,0.0); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ delay(MIX - gt6 - gstab -2.0e-6); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gt6); delay(gstab); } else { initval(1.0,v4); obsstepsize(45.0); xmtrphase(v4); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,t3,2.0e-6,0.0); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ /* xmtrphase(zero); delay(2.0e-6); initval(1.0,v4); obsstepsize(45.0); xmtrphase(v4); */ rgpulse(pw,t2,2.0e-6,0.0); xmtrphase(zero); txphase(t9); delay(tau1 + 1.0/(8.0*93.39) + zeta1 - gt5 - 102.0e-6 - SAPS_DELAY); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(100.0e-6); dec2rgpulse(2.0*pwx2,zero,0.0,0.0); delay(tau1); rgpulse(2.0*pw,t9,0.0,0.0); txphase(one); delay(1.0/(8.0*93.39) - zeta1 - gt5 - 102.0e-6 + 2.0*pwx2); delay(2.0e-6); zgradpulse(gzlvl5,gt5); delay(100.0e-6); rgpulse(pw,one,0.0,0.0); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,one,2.0e-6,0.0); delay(2.0e-6); obspower(tpwr); /* shaped pulse */ delay(2.0e-6); zgradpulse(gzlvl6,gt6/2.0); delay(gstab); delay(MIX - 1.5*gt6 - 2.0*(gstab+2.0e-6) - 2.0*pwx2); dec2rgpulse(2.0*pwx2,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl6,gt6); delay(gstab); } rgpulse(pw,two,2.0e-6,0.0); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,zero,2.0e-6,0.0); delay(2.0e-6); txphase(zero); obspower(tpwr); /* shaped pulse */ delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(2.0e-6); delay(tauxh - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pw_sl - WFG_STOP_DELAY - 2.0e-6 - POWER_DELAY - gt7 - 4.0e-6); /* delay=1/4J(XH) */ sim3pulse(2*pw,0.0e-6,2*pwx2,zero,zero,zero,0.0,0.0); delay(tauxh - gt7 - gstab -2.0e-6 - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pw_sl - WFG_STOP_DELAY - 2.0e-6 - POWER_DELAY); delay(2.0e-6); zgradpulse(gzlvl7,gt7); delay(gt7); delay(gstab); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,one,2.0e-6,0.0); obspower(tpwr); delay(2.0e-6); txphase(zero); /* shaped pulse */ rgpulse(pw,one,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl8,gt8); delay(gstab); txphase(t6); if(phase3 == 1) dec2rgpulse(pwx2,t4,4.0e-6,0.0); if(phase3 == 2) dec2rgpulse(pwx2,t5,4.0e-6,0.0); decphase(zero); if(tau3 - 0.5*(WFG_START_DELAY + pwc_ad + WFG_STOP_DELAY) < 0.2e-6) { delay(tau3); delay(tau3); } else { delay(tau3 - 0.5*(WFG_START_DELAY + pwc_ad + WFG_STOP_DELAY)); decshaped_pulse(sh_ad,pwc_ad,zero,0.0,0.0); delay(tau3 - 0.5*(WFG_START_DELAY + pwc_ad + WFG_STOP_DELAY)); } delay(2.0e-6); zgradpulse(-1.0*gzlvl11,gt11); delay(100.0e-6); delay(BigT - 4.0/PI*pwx2 + pw - 2.0*GRADIENT_DELAY - gt11 - 102.0e-6); dec2rgpulse(2.0*pwx2,zero,0.0,0.0); delay(2.0e-6); zgradpulse(gzlvl11,gt11); delay(100.0e-6); delay(BigT - 2.0*GRADIENT_DELAY - gt11 - 102.0e-6); rgpulse(pw,t6,0.0,0.0); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,t7,2.0e-6,0.0); delay(2.0e-6); txphase(zero); obspower(tpwr); /* shaped pulse */ delay(2.0e-6); zgradpulse(gzlvl9,gt9); delay(100.0e-6); delay(tauxh - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pw_sl - WFG_STOP_DELAY - 2.0e-6 - POWER_DELAY - gt9 - 102.0e-6); sim3pulse(2.0*pw,0.0,2.0*pwx2,zero,zero,zero,0.0,0.0); dec2phase(t8); delay(2.0e-6); zgradpulse(gzlvl9,gt9); delay(100.0e-6); delay(tauxh - gt9 - 102.0e-6 - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pw_sl - WFG_STOP_DELAY - 2.0e-6 - POWER_DELAY); /* shaped pulse */ obspower(tpwrsl); shaped_pulse(shape,pw_sl,zero,2.0e-6,0.0); obspower(tpwr); delay(2.0e-6); txphase(zero); /* shaped pulse */ sim3pulse(pw,0.0,pwx2,zero,zero,t8,0.0,0.0); dec2phase(zero); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(2.0e-6); delay(tauxh - gt10 - 4.0e-6); sim3pulse(2*pw,0.0e-6,2*pwx2,zero,zero,zero,2.0e-6,2.0e-6); delay(2.0e-6); zgradpulse(gzlvl10,gt10); delay(100.0e-6); delay(tauxh - gt10 - 102.0e-6 + 2.0/PI*pw - pwx2 + 0.5*(pwx2-pw)); dec2rgpulse(pwx2,zero,0.0,0.0); dec2power(dpwr2); /* Very Important */ decpower(dpwr); delay(BigT1 - 2.0*POWER_DELAY); rgpulse(2.0*pw,zero,0.0,0.0); delay(2.0e-6); zgradpulse(-1.0*icosel*gzlvl12,gt12); delay(50.0e-6); delay(BigT1 - 2.0*GRADIENT_DELAY - 52.0e-6 - gt12); /* acquire data */ status(C); setreceiver(t10); }
pulsesequence() { double mix,SSpwr,pwSS,hsdly,pwa,pwd,gt1,gzlvl1,gzlvl2; char ptable[MAXSTR],SSshape[MAXSTR]; getstr("ptable",ptable); getstr("SSshape",SSshape); mix=getval("mix"); hsdly=getval("hsdly"); loadtable(ptable); pwa=getval("pwa"); pwd=getval("pwd"); gt1=getval("gt1"); gzlvl1=getval("gzlvl1"); gzlvl2=getval("gzlvl2"); SSpwr=getval("SSpwr"); pwSS=getval("pwSS"); initval(7.0,v2); /* set up 45 degree phase shift for first pulse */ obsstepsize(45.0); getelem(t1,ct,v1); /* 1st pulse phase */ getelem(t3,ct,v3); /* read pulse phase */ getelem(t4,ct,v4); /* receiver phase */ if (phase1 > 1.5) incr(v1); /* hypercomplex phase shift */ assign(v4,oph); /*HYPERCOMPLEX MODE USES REDFIELD TRICK TO MOVE AXIAL PEAKS TO EDGE */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v6); if ((phase1==1)||(phase1==2)) {add(v1,v6,v1); add(v4,v6,oph);} assign(v3,v7); /* for steering pulses */ add(v3,one,v8); if (pwa<0.0) { pwa = -pwa; add(v7,two,v7); } if (pwd<0.0) { pwd = -pwd; add(v8,two,v8); } /* CHECK VALIDITY OF PARAMETER RANGE */ if (dm[A] == 'y' || dm[B] == 'y') { printf(" dm must be 'nny' or 'nnn' "); psg_abort(1); } if ((dm[C] == 'y' || dm2[C] == 'y') && at > 0.085) { printf(" check at time! Don't fry probe \n"); psg_abort(1); } if (dm2[A] == 'y' || dm2[B] == 'y') { printf(" dm2 must be 'nny' or 'nnn' "); psg_abort(1); } if (dpwr > 50) { printf(" dpwr must be less than 49 \n"); psg_abort(1); } if (dpwr2 > 50) { printf(" dpwr2 must be less than 46 \n"); psg_abort(1); } /* BEGIN PULSE SEQUENCE */ status(A); xmtrphase(v2); txphase(v1); obspower(tpwr); hsdelay(d1); status(B); rgpulse(pw, v1, rof1, 1.0e-6); xmtrphase(zero); txphase(t2); if (d2 > 0.001) { zgradpulse(gzlvl2,0.4*d2-SAPS_DELAY/2.0-2.0*GRADIENT_DELAY-(2.0*pw/PI)); delay(0.1*d2-rof1); zgradpulse(-gzlvl2,0.4*d2-SAPS_DELAY/2.0-2.0*GRADIENT_DELAY-(2.0*pw/PI)); delay(0.1*d2-rof1); } else delay(d2); rgpulse(pw, t2, rof1, 1.0e-6); status(C); obspower(SSpwr); delay(hsdly); zgradpulse(gzlvl1,gt1); hsdelay(mix-hsdly-gt1); shaped_pulse(SSshape,pwSS,t3,rof1,0.0); obspower(SSpwr-12.0); rgpulse(pwa,v7,2.0e-6,0.0); /* steering pulses */ rgpulse(pwd,v8,0.0e-6,0.0); delay(rof2); status(D); }
void pulsesequence() { double ss, arraydim, p1lvl, trim, mix, window, cycles, phase; int iphase; char sspul[MAXSTR]; /* LOAD AND INITIALIZE VARIABLES */ ni = getval("ni"); arraydim = getval("arraydim"); mix = getval("mix"); trim = getval("trim"); phase = getval("phase"); iphase = (int) (phase + 0.5); p1lvl = getval("p1lvl"); ss = getval("ss"); window=getval("window"); getstr("sspul", sspul); if (iphase == 3) { initval((double)((int)((ix-1)/(arraydim/ni)+1.0e-6)), v14); } else { assign(zero, v14); } /* CHECK CONDITIONS */ if ((iphase != 3) && (arrayelements > 2)) { fprintf(stdout, "PHASE=3 is required if MIX is arrayed!\n"); psg_abort(1); } if (satdly > 9.999) { fprintf(stdout, "Presaturation period is too long.\n"); psg_abort(1); } if (!newtransamp) { fprintf(stdout, "TOCSY requires linear amplifiers on transmitter.\n"); fprintf(stdout, "Use DECTOCSY with the appropriate re-cabling,\n"); psg_abort(1); } if ((p1 == 0.0) && (ix == 1)) fprintf(stdout, "Warning: P1 has a zero value.\n"); if ((rof1 < 9.9e-6) && (ix == 1)) fprintf(stdout,"Warning: ROF1 is less than 10 us\n"); if (satpwr > 40) { printf("satpwr too large - acquisition aborted./n"); psg_abort(1); } /* DETERMINE STEADY-STATE MODE */ if (ss < 0) { ss = (-1) * ss; } else { if ((ss > 0) && (ix == 1)) { ss = ss; } else { ss = 0; } } initval(ss, ssctr); initval(ss, ssval); /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ ifzero(ssctr); hlv(ct, v13); mod2(ct, v1); hlv(ct, v2); elsenz(ssctr); sub(ssval, ssctr, v12); /* v12 = 0,...,ss-1 */ hlv(v12, v13); mod2(v12, v1); hlv(v12, v2); endif(ssctr); /* CALCULATE PHASES */ /* A 2-step cycle is performed on the first pulse (90 degrees) to suppress axial peaks in the first instance. Second, the 2-step F2 quadrature image suppression subcycle is added to all pulse phases and receiver phase. Finally, a 2-step cycle is performed on the spin-lock pulses. */ mod2(v13, v13); dbl(v1, v1); incr(v1); hlv(v2, v2); mod2(v2, v2); dbl(v2, v2); incr(v2); add(v13, v2, v2); sub(v2, one, v3); add(two, v2, v4); add(two, v3, v5); add(v1, v13, v1); assign(v1, oph); if (iphase == 2) incr(v1); if (iphase == 3) add(v1, v14, v1); /*HYPERCOMPLEX MODE USES REDFIELD TRICK TO MOVE AXIAL PEAKS TO EDGE*/ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v6); if ((iphase==1)||(iphase==2)) {add(v1,v6,v1); add(oph,v6,oph);} /* CALCULATE AND INITIALIZE LOOP COUNTER */ if (pw > 0.0) { cycles = (mix - trim) / (64.66*pw+32*window); cycles = 2.0*(double) (int) (cycles/2.0); } else { cycles = 0.0; } initval(cycles, v9); /* V9 is the MIX loop count */ /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); rlpower(p1lvl, TODEV); if (sspul[0] == 'y') { rgpulse(1000*1e-6, zero, rof1, 0.0e-6); rgpulse(1000*1e-6, one, 0.0e-6, rof1); } hsdelay(d1); if (getflag("wet")) wet4(zero,one); rlpower(p1lvl, TODEV); if (satmode[A] == 'y') { rlpower(satpwr,TODEV); rgpulse(satdly,zero,rof1,rof2); rlpower(p1lvl,TODEV);} status(B); rgpulse(p1, v1, rof1, 1.0e-6); if (satmode[B] =='y') { if (d2 > 0.0) { rlpower(satpwr,TODEV); rgpulse(d2 - (2*POWER_DELAY) - 1.0e-6 - (2*p1/3.1416),zero,0.0,0.0); } } else { if (d2 > 0.0) delay(d2 - POWER_DELAY - 1.0e-6 - (2*p1/3.1416)); } rcvroff(); rlpower(tpwr,TODEV); txphase(v13); xmtron(); delay(trim); if (cycles > 1.0) { starthardloop(v9); mleva(window); mleva(window); mlevb(window); mlevb(window); mlevb(window); mleva(window); mleva(window); mlevb(window); mlevb(window); mlevb(window); mleva(window); mleva(window); mleva(window); mlevb(window); mlevb(window); mleva(window); rgpulse(.66*pw,v3,rof1,rof2); endhardloop(); } txphase(v13); xmtroff(); /* detection */ delay(rof2); rcvron(); status(C); }