pulsesequence() { // Define Variables and Objects and Get Parameter Values MPSEQ dec = getblew("blewH",0,0.0,0.0,0,1); strncpy(dec.ch,"dec",3); putCmd("chHblew='dec'\n"); 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"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHX") + getval("rd") + getval("ad") + at; d.dutyoff = d1 + 4.0e-6; 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(phRec,4,table4); 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); // Begin Acquisition _mpseqon(dec, phHhx); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _mpseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { // Define Variables and Objects and Get Parameter Values DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwX90"); d.dutyoff = d1 + 4.0e-6; d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phX90,4,table1); settable(phRec,4,table2); setreceiver(phRec); // Begin Sequence txphase(phX90); decphase(zero); obspwrf(getval("aX90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // X Direct Polarization rgpulse(getval("pwX90"),phX90,0.0,0.0); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values initval(getval("periods"),v2); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Set Phase Tables settable(phX90,4,table1); settable(phRec,4,table2); setreceiver(phRec); // Begin Sequence txphase(phX90); decphase(zero); obspwrf(getval("aX90")); obsunblank(); decunblank(); _unblank34(); delay(d1); xgate(1.0); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // Apply a Rotorsync Delay rgpulse(getval("pwX90"),phX90,0.0,0.0); rotorsync(v2); rgpulse(getval("pwX90"),phX90,0.0,0.0); xgate(getval("xperiods")); rgpulse(getval("pwX90"),phX90,0.0,0.0); delay(10.0e-6); // X Direct Polarization rgpulse(getval("pwX90"),phX90,0.0,0.0); // Begin Acquisition obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence(){ //Define Variables and Get Parameter Values double pwTune = getval("pwTune"); pwTune = pwTune*6.0; at = pwTune*2.0; char atval[MAXSTR]; sprintf(atval,"at = %f\n", at); putCmd(atval); int chTune = (int) getval("chTune"); if ((chTune < 1) || (chTune > 4)) { abort_message("chTune(%d) must be between 1 and 4\n", chTune); } //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Set Phase Tables settable(phTune,4,table1); settable(phRec,4,table2); setreceiver(t2); //Begin Sequence obspwrf(getval("aTune")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2e-6); sp1off(); delay(2.0e-6); //Begin Phase Detected Pulse set4Tune(chTune,getval("gain")); delay(1.0e-4); ShapedXmtNAcquire("phtran",pwTune,phTune,6.0e-6,chTune); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values double pw1Xstmas = getval("pw1Xstmas"); double pw2Xstmas = getval("pw2Xstmas"); double tXzfselinit = getval("tXzfsel"); double tXzfsel = tXzfselinit - 3.0e-6; if (tXzfsel < 0.0) tXzfsel = 0.0; double d2init = getval("d2"); double d2 = d2init - pw1Xstmas/2.0 - pw2Xstmas/2.0; if (d2 < 0.0) d2 = 0.0; 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("pw1Xstmas") + getval("pw2Xstmas") + getval("pwXzfsel"); 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 = d2_ + tXzfsel + 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_ + tXzfsel + getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(ph1Xstmas,4,table1); settable(ph2Xstmas,4,table2); settable(phXzfsel,8,table3); settable(phRec,8,table4); if (phase1 == 2) { tsadd(ph1Xstmas,1,4); } setreceiver(phRec); // Begin Sequence txphase(ph1Xstmas); decphase(zero); obspower(getval("tpwr")); obspwrf(getval("aXstmas")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H Decoupler on Before STMAS _dseqon(dec); // Two-Pulse STMAS rgpulse(getval("pw1Xstmas"),ph1Xstmas,0.0,0.0); txphase(ph2Xstmas); delay(d2); rgpulse(getval("pw2Xstmas"),ph2Xstmas,0.0,0.0); // Z-filter Pulse txphase(phXzfsel); obsblank(); obspower(getval("dbXzfsel")); obspwrf(getval("aXzfsel")); delay(3.0e-6); obsunblank(); delay(tXzfsel); rgpulse(getval("pwXzfsel"),phXzfsel,0.0,0.0); // Begin Acquisition obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values double aXfam2 = getval("aXfam2"); double pw1Xfam2 = getval("pw1Xfam2"); double pw2Xfam2 = getval("pw2Xfam2"); double pw3Xfam2 = getval("pw3Xfam2"); double pw4Xfam2 = getval("pw4Xfam2"); double nXfam2 = getval("nXfam2"); initval(nXfam2,v4); putCmd("pw2Xmqmas=pwXfam1"); // Sequence uses pwXfam1 and sets pw2Xmqmas double d2init = getval("d2"); // Define the Split d2 in the Pulse Sequence double ival = getval("ival"); double d20 = 1.0; double d21 = 0.0; double d22 = 0.0; if (ival == 1.5) { d20 = 9.0*d2init/16.0; d21 = 7.0*d2init/16.0; d22 = 0.0; } else if (ival == 2.5) { d20 = 12.0*d2init/31.0; d21 = 0.0*d2init/31.0; d22 = 19.0*d2init/31.0; } else { d20 = 1.0*d2init; d21 = 0.0*d2init; d22 = 0.0*d2init; } double tXechselinit = getval("tXechsel"); // Adjust the selective echo delay for the double tXechsel = tXechselinit - 3.0e-6; // attenuator switch time. if (tXechsel < 0.0) tXechsel = 0.0; 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("pw1Xmqmas") + nXfam2*(pw1Xfam2 + pw2Xfam2 + pw3Xfam2 +pw4Xfam2) + getval("pwXechsel"); 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 = d2_ + tXechselinit + 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_ + tXechselinit + getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables if (phase1 == 0) { settable(phf1Xmqmas,12,table1); settable(ph1Xfam2,6,table2); settable(ph2Xfam2,6,table3); settable(phfXechsel,96,table4); settable(phRec,48,table5); } else { settable(phf1Xmqmas,6,table6); settable(ph1Xfam2,6,table7); settable(ph2Xfam2,6,table8); settable(phfXechsel,48,table9); settable(phRec,24,table10); if (phase1 == 2) { tsadd(phf1Xmqmas,30,360); } } setreceiver(phRec); obsstepsize(1.0); // Begin Sequence xmtrphase(phf1Xmqmas); decphase(zero); obspower(getval("tpwr")); obspwrf(getval("aXmqmas")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H Decoupler on Before MQMAS _dseqon(dec); // Two-Pulse MQMAS with DFS Conversion rgpulse(getval("pw1Xmqmas"),zero,0.0,0.0); xmtrphase(zero); txphase(ph1Xfam2); obspwrf(aXfam2); delay(d20); // X FAM2 Pulse loop(v4,v5); xmtron(); delay(pw1Xfam2); xmtroff(); txphase(ph2Xfam2); delay(pw2Xfam2); xmtron(); delay(pw3Xfam2); xmtroff(); txphase(ph2Xfam2); delay(pw4Xfam2); endloop(v5); // Tau Delay and Second Selective Echo Pulse xmtrphase(phfXechsel); obsblank(); obspower(getval("dbXechsel")); obspwrf(getval("aXechsel")); delay(3.0e-6); obsunblank(); delay(d21 + tXechsel); rgpulse(getval("pwXechsel"),zero,0.0,0.0); delay(d22); // Begin Acquisition obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { /* DECLARE VARIABLES */ char fsat[MAXSTR], fscuba[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ C_flg[MAXSTR], dtt_flg[MAXSTR]; int phase, phase2, ni, ni2, t1_counter, /* used for states tppi in t1 */ t2_counter; /* used for states tppi in t2 */ double tau1, /* t1 delay */ tau2, /* t2 delay */ taua, /* ~ 1/4JHC = 1.6 ms */ taub, /* 1/6JCH = 1.1 ms */ BigTC, /* Carbon constant time period = 1/4Jcc = 7.0 ms */ BigTC1, /* Carbon constant time period2 < 1/4Jcc to account for relaxation */ pwN, /* PW90 for 15N pulse @ pwNlvl */ pwC, /* PW90 for c nucleus @ pwClvl */ pwcrb180, /* PW180 for C 180 reburp @ rfrb */ pwClvl, /* power level for 13C pulses on dec1 */ compC, compH, /* compression factors for H1 and C13 amps */ rfrb, /* power level for 13C reburp pulse */ pwNlvl, /* high dec2 pwr for 15N hard pulses */ sw1, /* sweep width in f1 */ sw2, /* sweep width in f2 */ tofps, /* tof for presat */ gt0, gt1, gt2, gt3, gt4, gstab, gzlvl0, gzlvl1, gzlvl2, gzlvl3, gzlvl4, decstep1, bw, ofs, ppm, pwd1, dpwr3_D, pwd, tpwrs, pwHs, dof_me, tof_dtt, tpwrs1, pwHs1, dpwrsed, pwsed, dressed, rfrb_cg, pwrb_cg; /* LOAD VARIABLES */ getstr("fsat",fsat); getstr("f1180",f1180); getstr("f2180",f2180); getstr("fscuba",fscuba); getstr("C_flg",C_flg); getstr("dtt_flg",dtt_flg); tofps = getval("tofps"); taua = getval("taua"); taub = getval("taub"); BigTC = getval("BigTC"); BigTC1 = getval("BigTC1"); pwC = getval("pwC"); pwcrb180 = getval("pwcrb180"); pwN = getval("pwN"); tpwr = getval("tpwr"); pwClvl = getval("pwClvl"); compC = getval("compC"); compH = getval("compH"); dpwr = getval("dpwr"); pwNlvl = getval("pwNlvl"); phase = (int) ( getval("phase") + 0.5); phase2 = (int) ( getval("phase2") + 0.5); sw1 = getval("sw1"); sw2 = getval("sw2"); ni = getval("ni"); ni2 = getval("ni2"); gt0 = getval("gt0"); gt1 = getval("gt1"); gt2 = getval("gt2"); gt3 = getval("gt3"); gt4 = getval("gt4"); gstab = getval("gstab"); gzlvl0 = getval("gzlvl0"); gzlvl1 = getval("gzlvl1"); gzlvl2 = getval("gzlvl2"); gzlvl3 = getval("gzlvl3"); gzlvl4 = getval("gzlvl4"); decstep1 = getval("decstep1"); pwd1 = getval("pwd1"); dpwr3_D = getval("dpwr3_D"); pwd = getval("pwd"); pwHs = getval("pwHs"); dof_me = getval("dof_me"); pwHs1 = pwHs; tpwrs=-16.0; tpwrs1=tpwrs; tof_dtt = getval("tof_dtt"); dpwrsed = -16; pwsed = 1000.0; dressed = 90.0; pwrb_cg = 0.0; setautocal(); /* activate auto-calibration */ if(FIRST_FID) /* make shapes */ { ppm = getval("dfrq"); bw = 80.0*ppm; rb180 = pbox_make("rb180P", "reburp", bw, 0.0, compC*pwC, pwClvl); bw = 8.125*ppm; ofs = -24.0*ppm; rb180_cg = pbox_make("rb180_cgP", "reburp", bw, ofs, compC*pwC, pwClvl); bw = 20.0*ppm; ofs = 136.0*ppm; cosed = pbox("COsedP", CODEC, CODECps, dfrq, compC*pwC, pwClvl); if(taua < (gt4+106e-6+pwHs)) printf("gt4 or pwHs may be too long! "); if(taub < rb180_cg.pw) printf("rb180_cgP pulse may be too long! "); } pwcrb180 = rb180.pw; rfrb = rb180.pwrf; /* set up parameters */ pwrb_cg = rb180_cg.pw; rfrb_cg = rb180_cg.pwrf; /* set up parameters */ tpwrs = tpwr - 20.0*log10(pwHs/((compH*pw)*1.69)); /* sinc=1.69xrect */ tpwrs = (int) (tpwrs); tpwrs1=tpwrs; dpwrsed = cosed.pwr; pwsed = 1.0/cosed.dmf; dressed = cosed.dres; /* LOAD PHASE TABLE */ settable(t1,2,phi1); settable(t2,4,phi2); settable(t3,4,phi3); settable(t4,4,phi4); settable(t5,8,phi5); settable(t6,8,phi6); settable(t7,8,phi7); settable(t8,1,phi8); settable(t9,2,rec); /* CHECK VALIDITY OF PARAMETER RANGES */ if( BigTC - 0.5*(ni2-1)*1/(sw2) - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6 < 0.2e-6 ) { printf(" ni2 is too big\n"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' || dm[C] == 'y' )) { printf("incorrect dec1 decoupler flags! "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y' || dm2[C] == 'y' || dm2[D] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnnn' "); psg_abort(1); } if( satpwr > 6 ) { printf("SATPWR too large !!! "); psg_abort(1); } if( dpwr > 48 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > -16 ) { printf("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( pw > 200.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 200.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } if( pwC > 200.0e-6 ) { printf("dont fry the probe, pwC too high ! "); psg_abort(1); } if( pwcrb180 > 500.0e-6 ) { printf("dont fry the probe, pwcrb180 too high ! "); psg_abort(1); } if(dpwr3 > 51) { printf("dpwr3 is too high; < 52\n"); psg_abort(1); } if(dpwr3_D > 49) { printf("dpwr3_D is too high; < 50\n"); psg_abort(1); } if(d1 < 1) { printf("d1 must be > 1\n"); psg_abort(1); } if(dpwrsed > 48) { printf("dpwrsed must be less than 49\n"); psg_abort(1); } if( gt0 > 5.0e-3 || gt1 > 5.0e-3 || gt2 > 5.0e-3 || gt3 > 5.0e-3 || gt4 > 5.0e-3 ) { printf(" all values of gti must be < 5.0e-3\n"); psg_abort(1); } if(ix==1) { printf("make sure that BigTC1 is set properly for your application\n"); printf("7 ms, neglecting relaxation \n"); } /* Phase incrementation for hypercomplex 2D data */ if (phase == 2) { tsadd(t1,1,4); tsadd(t2,1,4); tsadd(t3,1,4); tsadd(t4,1,4); } if (phase2 == 2) tsadd(t8,1,4); /* Set up f1180 tau1 = t1 */ tau1 = d2; tau1 = tau1 - 2.0*pw - 4.0/PI*pwC - POWER_DELAY - 2.0e-6 - PRG_START_DELAY - PRG_STOP_DELAY - POWER_DELAY - 2.0e-6; if(f1180[A] == 'y') { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.4e-6) tau1 = 4.0e-7; } tau1 = tau1/2.0; /* Set up f2180 tau2 = t2 */ tau2 = d3; if(f2180[A] == 'y') { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.4e-6) tau2 = 4.0e-7; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2 ; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t9,2,4); } if( ix == 1) d3_init = d3 ; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t8,2,4); tsadd(t9,2,4); } /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obspower(satpwr); /* Set transmitter power for 1H presaturation */ decpower(pwClvl); /* Set Dec1 power for hard 13C pulses */ dec2power(pwNlvl); /* Set Dec2 to low power */ /* Presaturation Period */ status(B); if (fsat[0] == 'y') { obsoffset(tofps); delay(2.0e-5); rgpulse(d1,zero,2.0e-6,2.0e-6); /* presat with transmitter */ obspower(tpwr); /* Set transmitter power for hard 1H pulses */ delay(2.0e-5); if(fscuba[0] == 'y') { delay(2.2e-2); rgpulse(pw,zero,2.0e-6,0.0); rgpulse(2.0*pw,one,2.0e-6,0.0); rgpulse(pw,zero,2.0e-6,0.0); delay(2.2e-2); } } else { delay(d1); } obspower(tpwr); /* Set transmitter power for hard 1H pulses */ obsoffset(tof); txphase(t1); decphase(zero); dec2phase(zero); delay(1.0e-5); /* Begin Pulses */ status(C); decoffset(dof_me); lk_hold(); rcvroff(); delay(20.0e-6); /* ensure that magnetization originates on 1H and not 13C */ if(dtt_flg[A] == 'y') { obsoffset(tof_dtt); obspower(tpwrs1); shaped_pulse("H2Osinc",pwHs1,zero,10.0e-6,0.0); obspower(tpwr); obsoffset(tof); } decrgpulse(pwC,zero,0.0,0.0); zgradpulse(gzlvl0,gt0); delay(gstab); rgpulse(pw,zero,0.0,0.0); /* 90 deg 1H pulse */ zgradpulse(gzlvl1,gt1); delay(gstab); delay(taua - gt1 -gstab); simpulse(2.0*pw,2.0*pwC,zero,zero,0.0,0.0); txphase(one); delay(taua - gt1 - gstab); zgradpulse(gzlvl1,gt1); delay(gstab); rgpulse(pw,one,0.0,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,zero,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ decoffset(dof); /* jump 13C to 40 ppm */ zgradpulse(gzlvl2,gt2); delay(gstab); decrgpulse(pwC,t1,4.0e-6,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t2); decpwrf(4095.0); delay(BigTC - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t2,0.0,0.0); decphase(zero); /* turn on 2H decoupling */ dec3phase(one); dec3power(dpwr3); dec3rgpulse(pwd1,one,4.0e-6,0.0); dec3phase(zero); dec3unblank(); dec3power(dpwr3_D); dec3prgon(dseq3,pwd,dres3); dec3on(); /* turn on 2H decoupling */ initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC1 - POWER_DELAY - 4.0e-6 - pwd1 - POWER_DELAY - PRG_START_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t3); decpwrf(4095.0); delay(BigTC1 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t3,0.0,0.0); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t4); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t4,0.0,0.0); if(C_flg[A] == 'n') { decpower(dpwrsed); decunblank(); decphase(zero); delay(2.0e-6); decprgon(cosed.name,pwsed,dressed); decon(); delay(tau1); rgpulse(2.0*pw,zero,0.0,0.0); delay(tau1); decoff(); decprgoff(); decblank(); decpower(pwClvl); } else simpulse(2.0*pw,2.0*pwC,zero,zero,4.0e-6,4.0e-6); decrgpulse(pwC,t5,2.0e-6,0.0); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(rfrb); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY - SAPS_DELAY - 2.0e-6 - WFG_START_DELAY); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decshaped_pulse(rb180.name,pwcrb180,zero,2.0e-6,0.0); dcplrphase(zero); decpwrf(rfrb_cg); decphase(zero); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - SAPS_DELAY - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180_cg.name,pwrb_cg,zero,0.0,0.0); decpwrf(4095.0); decphase(t6); if(taub > pwrb_cg) delay(taub/2.0 - pwrb_cg/2.0 - WFG_STOP_DELAY - POWER_DELAY); decrgpulse(pwC,t6,0.0,0.0); decphase(zero); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC1 - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t7); decpwrf(4095.0); delay(BigTC1 - WFG_STOP_DELAY - POWER_DELAY - PRG_STOP_DELAY - POWER_DELAY - 4.0e-6 - pwd1); /* 2H decoupling off */ dec3off(); dec3prgoff(); dec3blank(); dec3power(dpwr3); dec3rgpulse(pwd1,three,4.0e-6,0.0); /* 2H decoupling off */ decrgpulse(pwC,t7,0.0,0.0); decphase(zero); delay(tau2); rgpulse(2.0*pw,zero,0.0,0.0); initval(1.0,v3); decstepsize(decstep1); dcplrphase(v3); decpwrf(rfrb); delay(BigTC - 2.0*pw - POWER_DELAY - WFG_START_DELAY); decshaped_pulse(rb180.name,pwcrb180,zero,0.0,0.0); dcplrphase(zero); decphase(t8); decpwrf(4095.0); delay(BigTC - tau2 - WFG_STOP_DELAY - POWER_DELAY - 4.0e-6); decrgpulse(pwC,t8,4.0e-6,0.0); decoffset(dof_me); zgradpulse(gzlvl3,gt3); delay(gstab); lk_sample(); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ rgpulse(pw,zero,4.0e-6,0.0); zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - gt4 -gstab - POWER_DELAY - 2.0e-6 - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - 2.0e-6); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ simpulse(2.0*pw,2.0*pwC,zero,zero,2.0e-6,0.0); /* shaped_pulse */ obspower(tpwrs); shaped_pulse("H2Osinc",pwHs,two,2.0e-6,0.0); obspower(tpwr); /* shaped_pulse */ zgradpulse(gzlvl4,gt4); delay(gstab); delay(taua - POWER_DELAY - WFG_START_DELAY - pwHs - WFG_STOP_DELAY - POWER_DELAY - gt4 - gstab - 2.0*POWER_DELAY); decpower(dpwr); /* Set power for decoupling */ dec2power(dpwr2); /* rcvron(); */ /* Turn on receiver to warm up before acq */ /* BEGIN ACQUISITION */ status(D); setreceiver(t9); }
void pulsesequence() { //====================================================== // Define Variables and Objects and Get Parameter Values //====================================================== // -------------------------------- // Acquisition Decoupling // ------------------------------- char Xseq[MAXSTR]; getstr("Xseq",Xseq); DSEQ dec = getdseq("X"); strncpy(dec.t.ch,"dec",3); putCmd("chXtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chXspinal='dec'\n"); //------------------------------------- // Homonuclear Decoupling During Echo //------------------------------------- MPDEC homo1 = getmpdec("hdec1H",0,0.0,0.0,0,1); strncpy(homo1.mps.ch,"obs",3); putCmd("chHhdec1='obs'\n"); // -------------------- // H echo calculation // -------------------- double t1Hecho = getval("t1Hecho") - getval("pwHecho")/2.0 - ((!strcmp(homo1.dm,"y"))?getval("pwHshort1")*2.:0.0); if (t1Hecho < 0.0) t1Hecho = 0.0; double t2Hecho = getval("t2Hecho") - getval("pwHecho")/2.0 - ((!strcmp(homo1.dm,"y"))?getval("pwHshort1")*2.:0.0) - getval("rd")- getval("ad"); if (t2Hecho < 0.0) t2Hecho = 0.0; double t1H_echo = 0.0; double t2H_echo = 0.0; double t1H_left = 0.0; double t2H_left = 0.0; if (!strcmp(homo1.dm,"y")) { t2H_echo = homo1.mps.t*((int)(t2Hecho/homo1.mps.t)); t2H_left = t2Hecho - t2H_echo; t1H_echo = t2H_echo; t1H_left = t1Hecho - t1H_echo; } //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); //---------------------- // Dutycycle Protection //---------------------- DUTY d = init_dutycycle(); d.dutyon = getval("pwH90"); d.dutyoff = d1 + 4.0e-6; if (!strcmp(homo1.dm,"y")) d.dutyon += t1H_echo + t2H_echo; else d.dutyoff += t1H_echo + t2H_echo; d.c1 = d.c1 + (!strcmp(Xseq,"tppm")); d.c1 = d.c1 + ((!strcmp(Xseq,"tppm")) && (dec.t.a > 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(Xseq,"spinal")); d.c2 = d.c2 + ((!strcmp(Xseq,"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(phH90,4,table1); settable(phHecho,8,table2); settable(phRec,4,table3); setreceiver(phRec); //======================= // Begin Sequence //======================= txphase(phH90); decphase(zero); obspwrf(getval("aH90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); //------------------------ // H Direct Polarization //------------------------ rgpulse(getval("pwH90"),phH90,0.0,0.0); obsunblank(); decunblank(); _unblank34(); // ----------------------------- // H Hahn Echo // ----------------------------- if (!strcmp(homo1.dm,"y")) { delay (t1H_left); if (getval("pwHshort1") > 0.0 ) { obspwrf(getval("aHhdec1")); rgpulse(getval("pwHshort1"),three,0.0,0.0); obsunblank(); } if (!strcmp(homo1.dm,"y")) _mpseqon(homo1.mps,zero); delay(t1H_echo); if (!strcmp(homo1.dm,"y")) _mpseqoff(homo1.mps); if (getval("pwHshort1") > 0.0 ) { obspwrf(getval("aHhdec1")); txphase(one); rgpulse(getval("pwHshort1"),one,0.0,0.0); obsunblank(); } } else delay(t1Hecho); txphase(phHecho); obspwrf(getval("aHecho")); rgpulse(getval("pwHecho"),phHecho,0.0,0.0); obsunblank(); if (!strcmp(homo1.dm,"y")) { if (getval("pwHshort1") > 0.0 ) { obspwrf(getval("aHhdec1")); rgpulse(getval("pwHshort1"),three,0.0,0.0); obsunblank(); } if (!strcmp(homo1.dm,"y")) _mpseqon(homo1.mps,zero); delay(t2H_echo); if (!strcmp(homo1.dm,"y")) _mpseqoff(homo1.mps); if(getval("pwHshort1")>0 ) { obspwrf(getval("aHhdec1")); rgpulse(getval("pwHshort1"),one,0.0,0.0); obsunblank(); } delay(t2H_left); } else delay(t2Hecho); //==================== // Begin Acquisition //==================== _dseqon(dec); obsblank(); decblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
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"); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pw1Hhytrap") + getval("pw2Hhytrap") + getval("tHX"); d.dutyoff = d1 + 4.0e-6 + getval("t1HYtrap") + getval("t2HYtrap"); 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 = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(ph1Hhytrap,4,table1); settable(phYhytrap,4,table2); settable(ph2Hhytrap,4,table3); settable(phXhx,4,table4); settable(phHhx,4,table5); settable(phRec,4,table6); setreceiver(phRec); // Begin Sequence txphase(phXhx); decphase(ph1Hhytrap); dec2phase(phYhytrap); obspwrf(getval("aXhx")); decpwrf(getval("aHhytrap")); dec2pwrf(getval("aYhytrap")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // TRAPDOR on H with Y Modulation decrgpulse(getval("pw1Hhytrap"),ph1Hhytrap,0.0,0.0); decphase(ph2Hhytrap); decunblank(); dec2on(); delay(getval("t1HYtrap")); dec2off(); decrgpulse(getval("pw2Hhytrap"),ph2Hhytrap,0.0,0.0); decphase(phHhx); decunblank(); decphase(phHhx); decpwrf(getval("aHhx")); delay(getval("t2HYtrap")); // H to X Cross Polarization _cp_(hx,phHhx,phXhx); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { // Set the Maximum Dynamic Table Number settablenumber(10); setvvarnumber(30); // 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"); WMPA toss = gettoss5("tossX"); strncpy(toss.ch,"obs",3); putCmd("chXtoss='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"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHX") + 5.0*toss.pw; 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 = toss.rtau - 5.0*toss.pw + 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 = toss.rtau - 5.0*toss.pw + getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phH90,22,table1); settable(phfXhx,11,table2); settable(phXhx,44,table3); settable(phHhx,4,table4); settable(phHdec,4,table5); settable(phXtoss,44,table6); settable(phRec,44,table7); setreceiver(phRec); obsstepsize(360.0/(PSD*8192)); // Begin Sequence xmtrphase(phfXhx); 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 - Shifted by -6COG11 decrgpulse(getval("pwH90"),phH90,0.0,0.0); decphase(phHhx); _cp_(hx,phHhx,phXhx); decphase(phHdec); // TOSS5 Sideband Suppression with included // (-6,-5,-6,-5,-6)COG11 Cycle _dseqon(dec); _toss5(toss, phXtoss); // Begin Acquisition with Quadrature Phase 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 */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ RELAY[MAXSTR], /* Insert HCCH-relay delay */ ribose[MAXSTR], /* ribose CHn groups only */ aromatic[MAXSTR], /* aromatic CHn groups only */ rna_stCshape[MAXSTR], /* calls sech/tanh pulses from shapelib */ rna_stCdec[MAXSTR], /* calls STUD+ waveforms from shapelib */ mag_flg[MAXSTR], /* Flag to use magic-angle gradients */ H2O_flg[MAXSTR], sspul[MAXSTR], SHAPE[MAXSTR], STUD[MAXSTR]; /* apply automatically calculated STUD decoupling */ int t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ delta1,delta2, ni = getval("ni"), lambda = 0.94/(4*getval("JCH")), /* 1/4J H1 evolution delay */ tCH = 1/(6.0*getval("JCH")), /* 1/4J C13 evolution delay */ tCC = 1/(8*getval("JCC")), pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rfC, /* maximum fine power when using pwC pulses */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ /* temporary Pbox parameters */ bw, pws, ofs, ppm, nst, /* bandwidth, pulsewidth, offset, ppm, # steps */ /* Sech/tanh inversion pulses automatically calculated by macro "rna_cal" */ /* and string parameter rna_stCshape calls them from your shapelib. */ rfst = 0.0, /* fine power for the rna_stCshape pulse, initialised */ dofa, /* dof shifted to 80 or 120ppm for ribose or aromatic spectra */ /* string parameter stCdec calls stud decoupling waveform from your shapelib.*/ studlvl, /* coarse power for STUD+ decoupling */ stdmf = getval("dmf80"), /* dmf for 80 ppm of STUD decoupling */ rf80 = getval("rf80"), /* rf in Hz for 80ppm STUD+ */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt7 = getval("gt7"), gt8 = getval("gt8"), gt9 = getval("gt9"), gzcal = getval("gzcal"), grecov = getval("grecov"), gzlvl0 = getval("gzlvl0"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl7 = getval("gzlvl7"), /* triax option */ gzlvl8 = getval("gzlvl8"), gzlvl9 = getval("gzlvl9"); getstr("f1180",f1180); getstr("mag_flg",mag_flg); getstr("f2180",f2180); getstr("RELAY",RELAY); getstr("ribose",ribose); getstr("aromatic",aromatic); getstr("H2O_flg",H2O_flg); getstr("sspul",sspul); getstr("SHAPE",SHAPE); getstr("STUD",STUD); /* INITIALIZE VARIABLES */ /* maximum fine power for pwC pulses */ rfC = 4095.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* 50ppm sech/tanh inversion */ rfst = (compC*4095.0*pwC*4000.0*sqrt((7.5*sfrq/600+3.85)/0.41)); rfst = (int) (rfst + 0.5); } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 50.0*ppm; pws = 0.001; ofs = 0.0; nst = 500.0; stC50 = pbox_makeA("rna_stC50", "sech", bw, pws, ofs, compC*pwC, pwClvl, nst); if (dm3[B] == 'y') H2ofs = 3.2; ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } rfst = stC50.pwrf; } strcpy(rna_stCshape, "rna_stC50"); strcpy(rna_stCdec, "wurst80"); studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf80); studlvl = (int) (studlvl + 0.5); /* RIBOSE spectrum only, centered on 80ppm. */ if (ribose[A]=='y') dofa = dof - 30.0*dfrq; /* AROMATIC spectrum only, centered on 120ppm */ else dofa = dof + 10*dfrq; /* CHECK VALIDITY OF PARAMETER RANGES */ if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } if( pwC > (24.0e-6*600.0/sfrq) ) { printf("Increase pwClvl so that pwC < 24*600/sfrq"); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y' )) { printf("incorrect Dec1 decoupler flags! "); psg_abort(1);} if((dm2[A] == 'y' || dm2[B] == 'y')) { printf("incorrect Dec2 decoupler flags! "); psg_abort(1);} if((dm3[A] == 'y' || dm3[C] == 'y' )) {printf("incorrect dec1 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1); } if ((dm3[B] == 'y' && dpwr3 > 44 )) { printf("Deuterium decoupling power too high ! "); psg_abort(1);} if( dpwr > 50 ) { printf("don't fry the probe, dpwr too large! "); psg_abort(1);} if( dpwr2 > 50 ) { printf("don't fry the probe, dpwr2 too large! "); psg_abort(1); } /* CHOICE OF PULSE SEQUENCE */ if ( ((ribose[A]=='y') && (aromatic[A]=='y')) ) { text_error("Choose ONE of ribose='y' OR aromatic='y' ! "); psg_abort(1); } if ( ((aromatic[A]=='y') && (RELAY[A]=='y')) ) { text_error("No RELAY with aromatic='y' ! "); psg_abort(1); } /* LOAD VARIABLES */ settable(t1, 2, phi1); settable(t2, 4, phi2); settable(t3, 16, phi3); settable(t4, 2, phi4); settable(t11,8, rec); /* INITIALIZE VARIABLES */ /* Phase incrementation for hypercomplex data */ if ( phase1 == 2 ) /* Hypercomplex in t1 */ tsadd(t1,1,4); if ( phase2 == 2 ) tsadd(t2,1,4); /* calculate modification to phases based on current t1 values to achieve States-TPPI acquisition */ if(ix == 1) d2_init = d2; t1_counter = (int)((d2-d2_init)*sw1 + 0.5); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t11,2,4); } /* calculate modification to phases based on current t2 values to achieve States-TPPI acquisition */ if(ix == 1) d3_init = d3; t2_counter = (int)((d3-d3_init)*sw2 + 0.5); if(t2_counter % 2) { tsadd(t2,2,4); tsadd(t11,2,4); } /* set up so that get (90, -180) phase corrects in F1 if f1180 flag is y */ tau1 = d2; if(f1180[A] == 'y') { tau1 += (1.0/(2.0*sw1)); } if (tau1 < 1.0e-6) tau1 = 0.0; tau1 = tau1/2.0; /* set up so that get (90, -180) phase corrects in F2 if f2180 flag is y */ tau2 = d3; if(f2180[A] == 'y') { tau2 += (1.0/(2.0*sw2)); } if (tau2 < 1.0e-6) tau2 = 0.0; tau2 = tau2/2.0; if (ni > 1) delta1 = (double)(t1_counter*(lambda - gt5 - 0.2e-3))/((double)(ni-1)); else delta1 = 0.0; if (ni2 > 1) delta2 = (double)(t2_counter*(tCC - 0.6e-3))/((double)(ni2-1)); else delta2 = 0.0; initval(7.0, v1); obsstepsize (45.0); /* BEGIN ACTUAL PULSE SEQUENCE */ status(A); obsoffset(tof); decoffset(dofa); dec2offset(dof2); obspower(tpwr-12); decpower(pwClvl); decpwrf(rfC); dec2power(pwNlvl); decphase(zero); dec2phase(zero); if (sspul[0] == 'y') { rgpulse(200*pw, one, 10.0e-6, 0.0e-6); rgpulse(200*pw, zero, 0.0e-6, 1.0e-6); } obspower(tpwr); xmtrphase(v1); txphase(t1); if (dm3[B] == 'y') lk_sample(); delay(d1); if (dm3[B] == 'y') lk_hold(); rcvroff(); decrgpulse(pwC, zero, rof1, rof1); delay(rof1); zgradpulse(gzlvl0,0.5e-3); delay(grecov); if(dm3[B] == 'y') /*optional 2H decoupling on */ { dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } status(B); rgpulse(pw, t1, 1.0e-4, rof1); xmtrphase(zero); txphase(zero); zgradpulse(gzlvl5,gt5); /* decpwrf(rfst); delay(lambda - gt5 - rof1 - SAPS_DELAY - GRADIENT_DELAY - POWER_DELAY - WFG2_START_DELAY - 0.5e-3 + 70.0e-6 + tau1); decshaped_pulse(rna_stCshape, 1.0e-3, zero, 0.0, 0.0); delay(tau1 - delta1); rgpulse(2.0*pw, zero, 0.0, rof1); txphase(one); decpwrf(rfC); zgradpulse(gzlvl5,gt5); delay(lambda - delta1 - gt5 - rof1 - GRADIENT_DELAY - POWER_DELAY - 0.5e-3 + 70.0e-6); */ delay(lambda - gt5 - rof1 - SAPS_DELAY - GRADIENT_DELAY + tau1); decrgpulse(2*pwC, zero, 0.0, 0.0); delay(tau1 - delta1); rgpulse(2.0*pw, zero, 0.0, rof1); txphase(one); zgradpulse(gzlvl5,gt5); delay(lambda - delta1 - gt5 - rof1 - GRADIENT_DELAY); rgpulse(pw, one, 0.0, rof1); decphase(t2); txphase(zero); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl3,gt3); else zgradpulse(gzlvl3,gt3); delay(grecov); decrgpulse(pwC, t2, rof1, 0.0); decphase(zero); delay(tau2); dec2rgpulse(2.0*pwN,zero,0.0,0.0); delay(tCH - 2*pwN); rgpulse(2.0*pw, zero, 0.0, 0.0); decphase(t3); delay(tCC - tCH + tau2 - delta2 - 2.0*pw); decrgpulse(2.0*pwC, t3, 0.0, 0.0); decphase(t4); delay(tCC - delta2); decrgpulse(pwC, t4, 0.0, rof1); txphase(zero); decphase(zero); if(RELAY[A] == 'y') { zgradpulse(gzlvl4, gt4); delay(tCC - gt4 - GRADIENT_DELAY - pwC); decrgpulse(2.0*pwC, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt4); delay(tCC - gt4 - GRADIENT_DELAY - pwC); decrgpulse(pwC, zero, 0.0, 0.0); } zgradpulse(gzlvl4,gt4); delay(tCC - gt4); decrgpulse(2.0*pwC, zero, 0.0, rof1); if (H2O_flg[A] == 'y') { delay(tCC - gt4 - grecov - POWER_DELAY); zgradpulse(gzlvl4,gt4); txphase(one); decphase(one); delay(grecov); decrgpulse(pwC, one, 0.0, rof1); rgpulse(900*pw, one, 0.0, rof1); txphase(zero); rgpulse(500*pw, zero, rof1, rof1); decphase(one); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl7,gt7); else zgradpulse(gzlvl7,gt7); delay(200.0e-6); simpulse(pw, pwC, zero, one, 0.0, rof1); decphase(zero); zgradpulse(gzlvl4,gt4); delay(tCH - gt4); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, rof1); zgradpulse(gzlvl4,gt4); delay(tCH - gt4); } else { delay(tCC - tCH - 2.0*pw - POWER_DELAY); rgpulse(2.0*pw, zero, 0.0, rof1); zgradpulse(gzlvl4,gt4); delay(tCH - gt4 - rof1); } decrgpulse(pwC, zero, 0.0, rof1); txphase(zero); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl8,gt8); else zgradpulse(gzlvl8,gt8); delay(grecov); if(dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } rgpulse(pw, zero, 0.0, rof1); if (SHAPE[A] =='y') { decpwrf(rfst); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); delay(lambda - gt9 - GRADIENT_DELAY - POWER_DELAY - WFG2_START_DELAY - 0.5e-3 + 70.0e-6); simshaped_pulse("",rna_stCshape,2*pw, 1.0e-3, zero, zero, 0.0, rof1); decphase(zero); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); decpwrf(rfC); if (STUD[A]=='y') decpower(studlvl); else decpower(dpwr); delay(lambda - gt9 -rof1 -0.5*pw - 2*POWER_DELAY - GRADIENT_DELAY - 0.5e-3 + 70.0e-6); } else { if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); delay(lambda - gt9 - GRADIENT_DELAY); simpulse(2*pw, 2*pwC, zero, zero, 0.0, rof1); if(mag_flg[A] == 'y') magradpulse(gzcal*gzlvl9,gt9); else zgradpulse(gzlvl9,gt9); if (STUD[A]=='y') decpower(studlvl); else decpower(dpwr); delay(lambda - gt9 -rof1 -0.5*pw - POWER_DELAY - GRADIENT_DELAY); } rgpulse(pw, zero, rof1, rof2); rcvron(); if (dm3[B] == 'y') lk_sample(); setreceiver(t11); if ((STUD[A]=='y') && (dm[C] == 'y')) { decunblank(); decon(); decprgon(rna_stCdec,1/stdmf, 1.0); startacq(alfa); acquire(np, 1.0/sw); decprgoff(); decoff(); decblank(); } else status(C); setreceiver(t11); }
void pulsesequence() { // Define Variables and Objects and Get Parameter Values MPSEQ fh = getfslg("fslgH",0,0.0,0.0,0,1); strncpy(fh.ch,"dec",3); putCmd("chHfslg='dec'\n"); double tHXhmqc = getval("tHXhmqc"); //parameters for hmqcHX implemented double pwHhxhmqc = getval("pwHhxhmqc"); //directly in the pulse sequence double pmHhxhmqc = getval("pmHhxhmqc"); double pwXhxhmqc = getval("pwXhxhmqc"); double aXhxhmqc = getval("aXhxhmqc"); double aHhxhmqc = getval("aHhxhmqc"); double d2init = getval("d2"); d2init = d2init - pwXhxhmqc; if (d2init < 0.0) d2init = 0.0; double d22 = d2init/2.0; 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"); 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*tHXhmqc + d2_ + 4.0*pmHhxhmqc + 2.0*pwHhxhmqc; 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 = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phH90,4,table1); settable(phXhx,4,table2); settable(phHhx,4,table3); settable(ph1Hhxhmqc,4,table4); settable(ph2Hhxhmqc,4,table5); settable(ph3Hhxhmqc,4,table6); settable(ph4Hhxhmqc,4,table7); settable(ph5Hhxhmqc,4,table8); settable(phXhxhmqc,32,table9); settable(ph6Hhxhmqc,4,table10); settable(ph7Hhxhmqc,8,table11); settable(ph8Hhxhmqc,4,table12); settable(ph9Hhxhmqc,4,table13); settable(phRec,16,table14); // Add STATES TPPI (States with FAD) tsadd(ph3Hhxhmqc,2*d2_index,4); tsadd(ph4Hhxhmqc,2*d2_index,4); tsadd(ph5Hhxhmqc,2*d2_index,4); tsadd(ph6Hhxhmqc,2*d2_index,4); tsadd(phRec,2*d2_index,4); if (phase1 == 2) { tsadd(ph3Hhxhmqc,1,4); tsadd(ph4Hhxhmqc,1,4); tsadd(ph5Hhxhmqc,1,4); tsadd(ph6Hhxhmqc,1,4); } 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); // Begin hmqcHX with fh (FSLG) Between Pulses obspwrf(aXhxhmqc); _mpseqon(fh,ph1Hhxhmqc); // First "tau" period for J evolution delay(tHXhmqc); _mpseqoff(fh); decpwrf(aHhxhmqc); decrgpulse(pmHhxhmqc, ph2Hhxhmqc, 0.0, 0.0);// Create HX double-quantum coherence decrgpulse(pwHhxhmqc, ph3Hhxhmqc, 0.0, 0.0); decrgpulse(pmHhxhmqc, ph4Hhxhmqc, 0.0, 0.0); _mpseqon(fh,ph5Hhxhmqc); // Begin F1 evolution with FSLG delay(d22); rgpulse(pwXhxhmqc, phXhxhmqc, 0.0,0.0); delay(d22); _mpseqoff(fh); // End F1 evolution with FSLG decpwrf(aHhxhmqc); decrgpulse(pmHhxhmqc, ph6Hhxhmqc, 0.0, 0.0);// Refocus HX double quantum coherence decrgpulse(pwHhxhmqc, ph7Hhxhmqc, 0.0, 0.0); decrgpulse(pmHhxhmqc, ph8Hhxhmqc, 0.0, 0.0); _mpseqon(fh,ph9Hhxhmqc); // Second "tau" period for J evolution delay(tHXhmqc); _mpseqoff(fh); // Begin Acquisition decphase(phHhx); _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Set the Maximum Dynamic Table and v-var Numbers settablenumber(10); setvvarnumber(30); // Define Variables and Objects and Get Parameter Values double aXprep = getval("aXprep"); double pwXprep = getval("pwXprep"); double phvXprep = getval("phXprep"); WMPA wsam = getwsamn("wsamX"); strncpy(wsam.ch,"obs",3); putCmd("chXwsam='obs'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwXprep") + wsam.cycles1*wsam.cycles*wsam.pw; d.dutyoff = d1 + 4.0e-6 + 5.0e-6 + wsam.r1 + wsam.r2 + at - wsam.cycles1*wsam.cycles*wsam.pw; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phXprep,4,table1); settable(phXwsam,4,table2); settable(phRec,4,table3); setreceiver(phRec); // Set the Small-Angle Step double obsstep = 360.0/(PSD*8192); obsstepsize(obsstep); int phfXprep = initphase(phvXprep,obsstep); int phXzero = initphase(0.0,obsstep); // Begin Sequence xmtrphase(phfXprep); txphase(phXprep); obspwrf(aXprep); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // Standard 90-degree prepX pulse for SAM startacq(5.0e-6); rcvroff(); delay(wsam.r1); rgpulse(pwXprep, phXprep, 0.0, 0.0); xmtrphase(phXzero); delay(wsam.r2); // Apply WSAM Cycles decblank(); _blank34(); _wsamn(wsam, phXwsam); endacq(); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { // Define Variables and Objects and Get Parameter Values CP hy = getcp("HY",0.0,0.0,0,1); strncpy(hy.fr,"dec",3); strncpy(hy.to,"dec2",4); putCmd("frHY='dec'\n"); putCmd("toHY='dec2'\n"); CP yx = getcp("YX",0.0,0.0,0,1); strncpy(yx.fr,"dec2",4); strncpy(yx.to,"obs",3); putCmd("frYX='dec2'\n"); putCmd("toYX='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"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwY90") + getval("pwH90") + getval("tHY") + getval("tYX") + 2.0*getval("pwX90"); d.dutyoff = d1 + 4.0e-6; d.c1 = d.c1 + (!strcmp(dec.seq,"tppm")); d.c1 = d.c1 + ((!strcmp(dec.seq,"tppm")) && (dec.t.a > 0.0)); d.t1 = getval("rd") + getval("ad") + at; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Create Phasetables settable(phH90,4,table1); settable(phHhy,4,table2); settable(phY90,4,table3); settable(phYhy,4,table4); settable(phHyx,4,table5); settable(phYyx,4,table6); settable(phXyx,8,table7); settable(phRec,8,table8); // Begin Sequence setreceiver(phRec); txphase(phXyx); decphase(phH90); dec2phase(phY90); obspwrf(getval("aXyx")); decpwrf(getval("aH90")); dec2pwrf(getval("aY90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H to Y Cross Polarization with a Y Prepulse dec2rgpulse(getval("pwY90"),phY90,0.0,0.0); dec2phase(phYhy); dec2pwrf(getval("aYyx")); decrgpulse(getval("pwH90"),phH90,0.0,0.0); decphase(phHhy); _cp_(hy,phHhy,phYhy); // Y to X Cross Polarization decphase(phHyx); dec2phase(phYyx); decpwrf(getval("aHyx")); decunblank(); decon(); _cp_(yx,phYyx,phXyx); decphase(phHhy); dec2blank(); decoff(); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values CP hy = getcp("HY",0.0,0.0,0,1); strncpy(hy.fr,"dec",3); strncpy(hy.to,"dec2",4); putCmd("frHY='dec'\n"); putCmd("toHY='dec2'\n"); CP yx = getcp("YX",0.0,0.0,0,1); strncpy(yx.fr,"dec2",4); strncpy(yx.to,"obs",3); putCmd("frYX='dec2'\n"); putCmd("toYX='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)); // Set Constant-time Period for d3. if (d3_index == 0) d3_init = getval("d3"); double d3_ = (ni - 1)/sw1 + d3_init; putCmd("d3acqret = %f\n",roundoff(d3_,12.5e-9)); putCmd("d3dwret = %f\n",roundoff(1.0/sw2,12.5e-9)); // Set Mixing Period to N Rotor Cycles double taur,mix,srate; mix = getval("tXmix"); srate = getval("srate"); taur = 0.0; if (srate >= 500.0) taur = roundoff((1.0/srate), 0.125e-6); else { printf("ABORT: Spin Rate (srate) must be greater than 500\n"); psg_abort(1); } mix = roundoff(mix,taur); mix = mix - getval("pwX90"); if (mix < 0.0) mix = 0.0; //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwY90") + getval("pwH90") + getval("tHY") + getval("tYX") + 2.0*getval("pwX90") + mix; 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 = d2 + d3 + 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 + d3 + getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Create Phasetables settable(phH90,4,table1); settable(phHhy,4,table2); settable(phY90,4,table3); settable(phYhy,4,table4); settable(phHyx,4,table5); settable(phYyx,4,table6); settable(phXyx,8,table7); settable(phXmix1,8,table8); settable(phXmix2,8,table9); settable(phRec,8,table10); if (phase2 == 2) tsadd(phXyx,1,4); if (phase1 == 2) tsadd(phYhy,1,4); // Begin Sequence setreceiver(phRec); txphase(phXyx); decphase(phH90); dec2phase(phY90); obspwrf(getval("aXyx")); decpwrf(getval("aH90")); dec2pwrf(getval("aY90")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H to Y Cross Polarization with a Y Prepulse dec2rgpulse(getval("pwY90"),phY90,0.0,0.0); dec2phase(phYhy); dec2pwrf(getval("aYyx")); decrgpulse(getval("pwH90"),phH90,0.0,0.0); decphase(phHhy); _cp_(hy,phHhy,phYhy); // F1 Indirect Period For Y _dseqon(dec); delay(d2); _dseqoff(dec); // Y to X Cross Polarization decphase(phHyx); dec2phase(phYyx); decpwrf(getval("aHyx")); decunblank(); decon(); _cp_(yx,phYyx,phXyx); decphase(phHhy); decoff(); // F2 Indirect Period for X txphase(phXmix1); obspwrf(getval("aX90")); _dseqon(dec); delay(d3); _dseqoff(dec); // RAD(DARR) Mixing For X decpwrf(getval("aHmix")); decunblank(); decon(); rgpulse(getval("pwX90"),phXmix1,0.0,0.0); txphase(phXmix2); obsunblank(); delay(mix); rgpulse(getval("pwX90"),phXmix2,0.0,0.0); decoff(); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { // Set the Maximum Dynamic Table and v-var Numbers settablenumber(20); setvvarnumber(30); // Define Variables and Objects and Get Parameter Values MPSEQ dumbo = getdumbogen("dumboX","dcf1X",0,0.0,0.0,0,1); strncpy(dumbo.ch,"obs",3); putCmd("chXdumbo='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"); WMPA wdumbo = getwdumbogen("wdumboX","dcfX"); strncpy(wdumbo.ch,"obs",3); putCmd("chXwdumbo='obs'\n"); double tXzfinit = getval("tXzf"); //Define the Z-filter delay in the sequence double tXzf = tXzfinit - 5.0e-6 - wdumbo.r1; // 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 = c7.t + getval("pwXtilt") + d2_ + getval("pwXtilt") + c7ref.t + getval("pwX90") + + wdumbo.q*wdumbo.cycles*wdumbo.pw; d.dutyoff = 4.0e-6 + d1 + tXzfinit + wdumbo.r2 + at - wdumbo.q*wdumbo.cycles*wdumbo.pw; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(ph1Xc7,4,table1); settable(phXdumbo,4,table2); settable(ph2Xc7,4,table3); settable(phX90,16,table4); settable(phXwdumbo,4,table5); settable(phRec,16,table6); settable(ph1Xtilt,4,table7); settable(ph2Xtilt,4,table8); // Set the Small-Angle Prep Phase double obsstep = 360.0/(PSD*8192); obsstepsize(obsstep); int phfX90 = initphase(0.0, obsstep); //Add STATES Quadrature Phase if (phase1 == 2) initval((45.0/obsstep),v1); else initval(0.0,v1); initval((d2*c7.of[0]*360.0/obsstep),v2); initval(0.0,v3); obsstepsize(obsstep); setreceiver(phRec); // Begin Sequence xmtrphase(v1); txphase(ph1Xc7); obspwrf(getval("aXc7")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // C7 Recoupling of 2Q coherence _mpseq(c7, ph1Xc7); // F1 Evolution With DUMBO xmtrphase(v3); if (!getval("scXdcf1")){ obspwrf(getval("aX90")); rgpulse(getval("pwXtilt"),ph1Xtilt,0.0,0.0); } obspwrf(getval("aXdumbo")); obsunblank(); _mpseqon(dumbo,phXdumbo); delay(d2); _mpseqoff(dumbo); if (!getval("scXdcf1")){ obspwrf(getval("aX90")); rgpulse(getval("pwXtilt"),ph2Xtilt,0.0,0.0); } obspwrf(getval("aX90")); obsunblank(); // C7 Transfer to 1Q Coherence xmtrphase(v2); _mpseq(c7ref, ph2Xc7); // Z-filter Delay delay(tXzf); // Detection Pulse txphase(phX90); obspwrf(getval("aX90")); startacq(5.0e-6); rcvroff(); delay(wdumbo.r1); rgpulse(getval("pwX90"), phX90, 0.0, 0.0); obsunblank(); xmtrphase(v3); delay(wdumbo.r2); // Apply WPMLG Cycles During Acqusition decblank(); _blank34(); _wdumbo(wdumbo,phXwdumbo); endacq(); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values double aYxy8 = getval("aYxy8"); double pwYxy8 = getval("pwYxy8"); double nYxy8 = getval("nYxy8"); int cycles = (int) nYxy8/2.0; nYxy8 = 2.0*cycles; int counter = (int) (nYxy8 - 1.0); initval((nYxy8 - 1.0),v8); double onYxy8 = getval("onYxy8"); 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='mix'\n"); strncpy(mix.s.ch,"dec",3); putCmd("chHmixspinal='mix'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwX90") + 4.0*nYxy8*pwYxy8 + getval("pwX180"); 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 = 2.0*nYxy8*(1.0/srate - 2.0*pwYxy8) + 1.0/srate - getval("pwX180"); d.c4 = d.c4 + (!strcmp(mix.seq,"spinal")); d.c4 = d.c4 + ((!strcmp(mix.seq,"spinal")) && (mix.s.a > 0.0)); d.t4 = 2.0*nYxy8*(1.0/srate - 2.0*pwYxy8) + 1.0/srate - getval("pwX180"); d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phX90,4,table1); settable(ph1Yxy8,8,table2); settable(ph2Yxy8,4,table3); settable(phX180,4,table4); settable(phRec,4,table5); if (counter < 0) tsadd(phRec,2,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 Single Pulse rgpulse(getval("pwX90"),phX90,0.0,0.0); // xy8Y Period One obspwrf(getval("aX180")); txphase(phX180); if (counter >= 0) { _dseqon(mix); delay(pwYxy8/2.0); dec2pwrf(aYxy8); sub(v1,v1,v1); if (counter >= 1) { if (counter > 1) loop(v8,v9); getelem(ph1Yxy8,v1,v4); incr(v1); getelem(ph2Yxy8,ct,v2); add(v4,v2,v2); dec2phase(v2); delay(0.5/srate - pwYxy8); if (onYxy8 == 2) dec2rgpulse(pwYxy8,v2,0.0,0.0); else delay(pwYxy8); if (counter > 1) endloop(v9); } // X Refocussing Pulse delay(0.5/srate - pwYxy8/2.0 - getval("pwX180")/2.0); rgpulse(getval("pwX180"),phX180,0.0,0.0); dec2pwrf(aYxy8); delay(0.5/srate - pwYxy8/2.0 - getval("pwX180")/2.0); // xy8Y Period Two if (counter >= 1) { if (counter > 1) loop(v8,v9); if (onYxy8 == 2) dec2rgpulse(pwYxy8,v2,0.0,0.0); else delay(pwYxy8); getelem(ph1Yxy8,v1,v4); incr(v1); getelem(ph2Yxy8,ct,v2); add(v4,v2,v2); dec2phase(v2); delay(0.5/srate - pwYxy8); if (counter > 1) endloop(v9); } delay(pwYxy8/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() { // Define Variables and Objects and Get Parameter Values PBOXPULSE shp1 = getpboxpulse("sft1A",0,1); PBOXPULSE shp2 = getpboxpulse("sft2A",0,1); PBOXPULSE shp3 = getpboxpulse("sft3A",0,1); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwX90") + shp1.pw + shp2.pw + shp3.pw; 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 = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phX90,4,table1); settable(phAsft1,4,table2); settable(phAsft2,4,table3); settable(phAsft3,4,table4); settable(phRec,4,table5); 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); delay(20.0e-6); // X Shaped Pulse _pboxpulse(shp1, phAsft1); delay(20.0e-6); // X Simultaneous Shaped Pulse _pboxsimpulse(shp1,shp2,phAsft1,phAsft2); delay(20.0e-6); // X 3-channel Simultaneous Shaped Pulse delay(20.0e-6); _pboxsim3pulse(shp1,shp2,shp3,phAsft1,phAsft2,phAsft3); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { // // Set the Maximum Dynamic Table Number // settablenumber(10); setvvarnumber(30); //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"); WMPA cpmg = getcpmg("cpmgX"); strncpy(cpmg.ch,"obs",3); putCmd("chXcpmg='obs'\n"); double aXecho = getval("aXecho"); // define the echoX group in the sequence double t1Xechoinit = getval("t1Xecho"); double pwXecho = getval("pwXecho"); double t2Xechoinit = getval("t2Xecho"); double t1Xecho = t1Xechoinit - pwXecho/2.0 - getval("pwX90")/2.0; if (t1Xecho < 0.0) t1Xecho = 0.0; double t2Xecho = t2Xechoinit - pwXecho/2.0 - cpmg.r1 - cpmg.t2 - getval("ad"); if (t2Xecho < 0.0) t2Xecho = 0.0; DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHX") + pwXecho + (cpmg.cycles - 1)*cpmg.pw; 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 = t1Xecho + t2Xecho + getval("rd") + getval("ad") + at - (cpmg.cycles - 1)*cpmg.pw; d.c2 = d.c2 + (!strcmp(dec.seq,"spinal")); d.c2 = d.c2 + ((!strcmp(dec.seq,"spinal")) && (dec.s.a > 0.0)); d.t2 = t1Xecho + t2Xecho + getval("rd") + getval("ad") + at - (cpmg.cycles - 1)*cpmg.pw; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phH90,64,table1); settable(phXhx,64,table2); settable(phHhx,64,table3); settable(phXecho,64,table4); settable(phXcpmg,64,table5); settable(phRec,64,table6); 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); // H Decoupling On decphase(zero); _dseqon(dec); // X Hahn Echo txphase(phXecho); obspwrf(aXecho); delay(t1Xecho); rgpulse(pwXecho,phXecho,0.0,0.0); delay(t2Xecho); // Apply CPMG Cycles obsblank(); _blank34(); delay(cpmg.r1); startacq(getval("ad")); _cpmg(cpmg,phXcpmg); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { // Define Variables and Objects and Get Parameter Values double aXhxpto2 = getval("aXhxpto2"); double pw1Xhxpto2 = getval("pw1Xhxpto2"); double pw2Xhxpto2 = getval("pw2Xhxpto2"); double t1HXpto2init = getval("t1HXpto2"); double tau1 = t1HXpto2init - pw1Xhxpto2/2.0; double t2HXpto2init = getval("t2HXpto2"); double tau2 = t2HXpto2init - pw1Xhxpto2/2.0 - pw2Xhxpto2/2.0; double t3HXpto2init = getval("t3HXpto2"); double tau3 = t3HXpto2init - pw2Xhxpto2/2.0; MPSEQ r18 = getr1825("r18H",0,0.0,0.0,0,1); MPSEQ r18ref = getr1825("r18H",r18.iSuper,r18.phAccum,r18.phInt,1,1); strncpy(r18.ch,"dec",3); strncpy(r18ref.ch,"dec",3); putCmd("chHr18='dec'\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"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = tau1 + tau2 + pw1Xhxpto2 + tau3 + pw2Xhxpto2; 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 = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(ph1Hhxpto2,4,table1); settable(ph2Hhxpto2,4,table2); settable(ph1Xhxpto2,4,table3); settable(ph2Xhxpto2,4,table4); settable(phHdec,4,table5); settable(phRec,4,table6); setreceiver(phRec); // Begin Sequence txphase(ph1Xhxpto2); decphase(ph1Hhxpto2); obspwrf(aXhxpto2); decpwrf(r18.a); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H to X Cross Polarization with PRESTO1 _mpseqon(r18,ph1Hhxpto2); delay(tau1); rgpulse(pw1Xhxpto2/2.0,ph1Xhxpto2,0.0,0.0); _mpseqoff(r18); _mpseqon(r18ref,ph2Hhxpto2); rgpulse(pw1Xhxpto2/2.0,ph1Xhxpto2,0.0,0.0); delay(tau2); _mpseqoff(r18ref); decphase(zero); _dseqon(dec); rgpulse(pw2Xhxpto2,ph2Xhxpto2,0.0,0.0); delay(tau3); decphase(zero); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { char c1d[MAXSTR]; /* option to record only 1D C13 spectrum */ int ncyc; double tau1 = 0.002, /* t1 delay */ post_del = 0.0, pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ compC = getval("compC"), compH = getval("compH"), mixpwr = getval("mixpwr"), jCH = getval("jCH"), gt0 = getval("gt0"), gt1 = getval("gt1"), gt2 = getval("gt2"), gzlvl0 = getval("gzlvl0"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), grec = getval("grec"), phase = getval("phase"); getstr("c1d",c1d); ncyc=1; if(jCH > 0.0) tau1 = 0.25/jCH; dbl(ct, v1); /* v1 = 0 */ mod4(v1,oph); hlv(ct,v2); add(v2,v1,v2); if (phase > 1.5) incr(v1); /* hypercomplex phase increment */ initval(2.0*(double)((int)(d2*getval("sw1")+0.5)%2),v10); add(v1,v10,v1); add(oph,v10,oph); mod4(v1,v1); mod4(v2,v2); mod4(oph,oph); assign(zero,v3); if(FIRST_FID) { HHmix = pbox_mix("HHmix", "DIPSI2", mixpwr, pw*compH, tpwr); if(c1d[A] == 'n') { opx("CHdec"); setwave("WURST2 30k/1.2m"); pbox_par("steps","600"); cpx(pwC*compC, pwClvl); CHdec = getDsh("CHdec"); } } ncyc = (int) (at/HHmix.pw) + 1; post_del = ncyc*HHmix.pw - at; /* BEGIN PULSE SEQUENCE */ status(A); zgradpulse(gzlvl0, gt0); rgpulse(pw, zero, 0.0, 0.0); /* destroy H-1 magnetization*/ zgradpulse(gzlvl0, gt0); delay(1.0e-4); obspower(tpwr); txphase(v1); decphase(zero); dec2phase(zero); presat(); obspower(tpwr); delay(1.0e-5); status(B); if(c1d[A] == 'y') { rgpulse(pw,v1,0.0,0.0); /* 1H pulse excitation */ delay(d2); rgpulse(pw,two,0.0,0.0); /* 1H pulse excitation */ assign(oph,v3); } else { decunblank(); pbox_decon(&CHdec); rgpulse(pw,v1,0.0,0.0); /* 1H pulse excitation */ txphase(zero); delay(d2); pbox_decoff(); decblank(); decpower(pwClvl); decpwrf(4095.0); delay(tau1 - POWER_DELAY); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); txphase(one); decphase(one); dec2phase(one); delay(tau1); simpulse(pw, pwC, one, one, 0.0, 0.0); txphase(zero); decphase(zero); dec2phase(zero); delay(tau1); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); delay(tau1); simpulse(0.0, pwC, zero, zero, 0.0, 0.0); } zgradpulse(gzlvl1, gt1); delay(grec); simpulse(0.0, pwC, zero, v3, 0.0, rof2); txphase(v2); obsunblank(); pbox_xmtron(&HHmix); status(C); setactivercvrs("ny"); startacq(alfa); acquire(np,1.0/sw); endacq(); delay(post_del); pbox_xmtroff(); obsblank(); zgradpulse(gzlvl2, gt2); obspower(tpwr); delay(grec); rgpulse(pw,zero,0.0,rof2); /* 1H pulse excitation */ status(D); setactivercvrs("yn"); startacq(alfa); acquire(np,1.0/sw); endacq(); }
void pulsesequence() { // Set the Maximum Dynamic Table Number settablenumber(10); setvvarnumber(30); // Define Variables and Objects and Get Parameter Values WMPA xx = getxx("xxX"); strncpy(xx.ch,"obs",3); putCmd("chXxx='obs'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwXprep") + 2.0*xx.cycles*xx.pw; d.dutyoff = d1 + 4.0e-6 + 5.0e-6 + xx.r1 + xx.r2 + at - 2.0*xx.cycles*xx.pw; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phXprep,4,table1); settable(phXxx,4,table2); settable(phRec,4,table3); setreceiver(phRec); // Set the Small-Angle Prep Phase double obsstep = 360.0/(PSD*8192); obsstepsize(obsstep); int phfXprep = initphase(getval("phXprep"), obsstep); int phXzero = initphase(0.0, obsstep); // Begin Sequence xmtrphase(phfXprep); txphase(phXprep); obspwrf(getval("aXprep")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // Preparation Pulse with Initial Point startacq(5.0e-6); rcvroff(); delay(xx.r1); rgpulse(getval("pwXprep"), phXprep, 0.0, 0.0); xmtrphase(phXzero); // Apply Semi-windowless WHH4 Cycles decblank(); _blank34(); _xx(xx, phXxx); endacq(); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ rna_stCdec[MAXSTR], /* calls STUD+ waveforms from shapelib */ STUD[MAXSTR]; /* apply automatically calculated STUD decoupling */ int icosel1, /* used to get n and p type */ icosel2, t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ del = getval("del"), /* time delays for CH coupling evolution */ del1 = getval("del1"), del2 = getval("del2"), /* STUD+ waveforms automatically calculated by macro "rnacal" */ /* and string parameter rna_stCdec calls them from your shapelib.*/ stdmf, /* dmf for STUD decoupling */ studlvl, /* coarse power for STUD+ decoupling */ rf80 = getval("rf80"), /* rf in Hz for 80ppm STUD+ */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rfC, /* maximum fine power when using pwC pulses */ dofa, /* dof shifted to 80 ppm for ribose */ /* p_d is used to calculate the isotropic mixing on the Cab region */ p_d, /* 50 degree pulse for DIPSI-3 at rfd */ rfd, /* fine power for 35 ppm */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), grecov = getval("grecov"), /* Gradient recovery delay, typically 150-200us */ gt1 = getval("gt1"), /* coherence pathway gradients */ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), /* other gradients */ gt5 = getval("gt5"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("STUD",STUD); getstr("f1180",f1180); getstr("f2180",f2180); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t6,1,phi6); settable(t5,4,phi5); settable(t10,1,phi10); settable(t11,4,rec); /* INITIALIZE VARIABLES */ if( dpwrf < 4095 ) { text_error("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rfC = 4095.0; /* Center dof in RIBOSE region on 80 ppm. */ dofa = dof - 30.0*dfrq; /* dipsi-3 decoupling C-ribose */ p_d = (5.0)/(9.0*4.0*7000.0*(sfrq/800.0)); /* DIPSI-3 covers 35 ppm */ rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = (int) (ncyc + 0.5); /* 80 ppm STUD+ decoupling */ strcpy(rna_stCdec, "wurst80"); stdmf = getval("dmf80"); studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf80); studlvl = (int) (studlvl + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if( gt1 > 0.5*del - 0.5*grecov ) { text_error(" gt1 is too big. Make gt1 less than %f.\n", (0.5*del - 0.5*grecov)); psg_abort(1);} if((dm3[A] == 'y' || dm3[C] == 'y' )) { text_error("incorrect dec1 decoupler flags! Should be 'nyn' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[B] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' or 'nny' "); psg_abort(1); } if((dm[A] == 'y' || dm[B] == 'y')) { text_error("incorrect dec1 decoupler flags! Should be 'nny' "); psg_abort(1); } if( (((dm[C] == 'y') && (dm2[C] == 'y')) && (STUD[A] == 'y')) ) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' if STUD='y'"); psg_abort(1); } if( dpwr > 50 ) { text_error("don't fry the probe, DPWR too large! "); psg_abort(1); } if( dpwr2 > 50 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( (pw > 20.0e-6) && (tpwr > 56) ) { text_error("don't fry the probe, pw too high ! "); psg_abort(1); } if( (pwC > 40.0e-6) && (pwClvl > 56) ) { text_error("don't fry the probe, pwN too high ! "); psg_abort(1); } if( (pwN > 100.0e-6) && (pwNlvl > 56) ) { text_error("don't fry the probe, pwN too high ! "); psg_abort(1); } if ((dm3[B] == 'y' && dpwr3 > 44 )) { text_error ("Deuterium decoupling power too high ! "); psg_abort(1); } if ((ncyc > 1 ) && (ix == 1)) { text_error("mixing time is %f ms.\n",(ncyc*97.8*4*p_d)); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ icosel1 = -1; icosel2 = -1; if (phase1 == 2) { tsadd(t6,2,4); icosel1 = -1*icosel1; } if (phase2 == 2) { tsadd(t10,2,4); icosel2 = -1*icosel2; tsadd(t6,2,4); } /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t5,2,4); tsadd(t11,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); if (dm3[B]=='y') lk_sample(); delay(d1); if (dm3[B]=='y') lk_hold(); rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rfC); obsoffset(tof); decoffset(dofa); dec2offset(dof2); txphase(t3); delay(1.0e-5); decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl1, 0.5e-3); delay(grecov/2); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl1, 0.5e-3); delay(5.0e-4); if(dm3[B] == 'y') /*optional 2H decoupling on */ { dec3unblank(); dec3rgpulse(1/dmf3, one, 0.0, 0.0); dec3unblank(); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pw, t3, 0.0, 0.0); /* 1H pulse excitation */ decphase(zero); delay(0.5*del + tau1 - 2.0*pwC); decrgpulse(2.0*pwC, zero, 0.0, 0.0); txphase(zero); delay(tau1); rgpulse(2.0*pw, zero, 0.0, 0.0); zgradpulse(icosel1*gzlvl1, 0.1*gt1); decphase(t5); delay(0.5*del - 0.1*gt1); simpulse(pw, pwC, zero, t5, 0.0, 0.0); zgradpulse(gzlvl3, gt3); decphase(zero); delay(0.5*del2 - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); txphase(t6); decphase(one); delay(0.5*del2 - gt3); simpulse(pw, pwC, t6, one, 0.0, 0.0); zgradpulse(gzlvl4, gt3); txphase(zero); decphase(zero); delay(0.5*del1 - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt3); delay(0.5*del1 - gt3); decrgpulse(pwC, zero, 0.0, 0.0); decpwrf(rfd); delay(2.0e-6); initval(ncyc, v2); starthardloop(v2); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(5.0*p_d,zero,0.0,0.0); decrgpulse(5.5*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.6*p_d,two,0.0,0.0); decrgpulse(7.2*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.8*p_d,two,0.0,0.0); decrgpulse(7.0*p_d,zero,0.0,0.0); decrgpulse(5.2*p_d,two,0.0,0.0); decrgpulse(5.4*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.5*p_d,zero,0.0,0.0); decrgpulse(7.3*p_d,two,0.0,0.0); decrgpulse(5.1*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(5.0*p_d,two,0.0,0.0); decrgpulse(5.5*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.6*p_d,zero,0.0,0.0); decrgpulse(7.2*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.8*p_d,zero,0.0,0.0); decrgpulse(7.0*p_d,two,0.0,0.0); decrgpulse(5.2*p_d,zero,0.0,0.0); decrgpulse(5.4*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.5*p_d,two,0.0,0.0); decrgpulse(7.3*p_d,zero,0.0,0.0); decrgpulse(5.1*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(5.0*p_d,two,0.0,0.0); decrgpulse(5.5*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.6*p_d,zero,0.0,0.0); decrgpulse(7.2*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.8*p_d,zero,0.0,0.0); decrgpulse(7.0*p_d,two,0.0,0.0); decrgpulse(5.2*p_d,zero,0.0,0.0); decrgpulse(5.4*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.5*p_d,two,0.0,0.0); decrgpulse(7.3*p_d,zero,0.0,0.0); decrgpulse(5.1*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(5.0*p_d,zero,0.0,0.0); decrgpulse(5.5*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.6*p_d,two,0.0,0.0); decrgpulse(7.2*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.8*p_d,two,0.0,0.0); decrgpulse(7.0*p_d,zero,0.0,0.0); decrgpulse(5.2*p_d,two,0.0,0.0); decrgpulse(5.4*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.5*p_d,zero,0.0,0.0); decrgpulse(7.3*p_d,two,0.0,0.0); decrgpulse(5.1*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); endhardloop(); dec2phase(zero); decphase(zero); txphase(zero); decpwrf(rfC); delay(tau2); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tau2); decpwrf(rfC); zgradpulse(-icosel2*gzlvl2, 1.8*gt1); delay(grecov+2.0e-6); decrgpulse(2.0*pwC, zero, 0.0, 0.0); decpwrf(rfC); zgradpulse(icosel2*gzlvl2, 1.8*gt1); delay(grecov + pwN); decrgpulse(pwC, zero, 0.0, 0.0); decpwrf(rfC); decrgpulse(pwC, zero, 2.0e-6, 0.0); zgradpulse(gzlvl5, gt5); delay(0.5*del1 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); decphase(t10); delay(0.5*del1 - gt5); simpulse(pw, pwC, one, t10, 0.0, 0.0); zgradpulse(gzlvl6, gt5); txphase(zero); decphase(zero); delay(0.5*del2 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(0.5*del2 - gt5); simpulse(pw, pwC, zero, zero, 0.0, 0.0); delay(0.5*del - 0.5*pwC); simpulse(2.0*pw,2.0*pwC, zero, zero, 0.0, 0.0); if (STUD[A]=='y') decpower(studlvl); else { decpower(dpwr); dec2power(dpwr2); } zgradpulse(gzlvl1, gt1); /* 2.0*GRADIENT_DELAY */ if(dm3[B] == 'y') delay(0.5*del - gt1 -1/dmf3 - 2.0*GRADIENT_DELAY - POWER_DELAY); else delay(0.5*del - gt1 - 2.0*GRADIENT_DELAY - POWER_DELAY); if(dm3[B] == 'y') /*optional 2H decoupling off */ { dec3rgpulse(1/dmf3, three, 0.0, 0.0); dec3blank(); setstatus(DEC3ch, FALSE, 'w', FALSE, dmf3); dec3blank(); } decpower(dpwr); /* POWER_DELAY */ if (dm3[B]=='y') lk_sample(); if ((STUD[A]=='y') && (dm[C] == 'y')) {decpower(studlvl); decunblank(); decon(); decprgon(rna_stCdec,1/stdmf, 1.0); startacq(alfa); acquire(np, 1.0/sw); decprgoff(); decoff(); decblank(); } else status(C); setreceiver(t11); }
pulsesequence() { // 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"); 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 xdec = getdseq("X"); strncpy(xdec.t.ch,"obs",3); // These four statements assure strncpy(xdec.s.ch,"obs",3); // that the X decoupling will putCmd("chXtppm='obs'\n"); // be on X for either TPPM or putCmd("chXspinal='obs'\n"); // SPINAL. // 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 = 3.0*getval("pwH90") + getval("pwHtilt") + getval("tHX"); d.dutyoff = d1 + 4.0e-6 + getval("tHmix"); 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(xdec.seq,"tppm")); d.c3 = d.c3 + ((!strcmp(xdec.seq,"tppm")) && (xdec.t.a > 0.0)); d.t3 = d2_; d.c4 = d.c4 + (!strcmp(xdec.seq,"spinal")); d.c4 = d.c4 + ((!strcmp(xdec.seq,"spinal")) && (xdec.s.a > 0.0)); d.t4 = d2_; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phH90,16,table1); settable(phHmix1,16,table2); settable(phHmix2,4,table3); settable(phHtilt,4,table4); settable(phXhx,4,table5); settable(phHhx,4,table6); settable(phRec,4,table7); if (phase1 == 2) tsadd(phH90,1,4); 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 Preparation and tilt decrgpulse(getval("pwH90"),phH90,0.0,0.0); decunblank(); // Delay for 1H Wideline T2 _dseqon(xdec); delay(d2); _dseqoff(xdec); // Mix period for Spin Diffison decrgpulse(getval("pwH90"),phHmix1,0.0,0.0); delay(getval("tHmix")); decrgpulse(getval("pwH90"),phHmix2,0.0,0.0); // Tilt Pulse and Ramped H to X Cross Polarization with LG Offset decrgpulse(getval("pwHtilt"),phHtilt,0.0,0.0); decphase(phHhx); _cp_(hx,phHhx,phXhx); // Begin Acquisition obsblank(); _blank34(); _dseqon(dec); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Set the Maximum Dynamic Table and v-var Numbers settablenumber(10); setvvarnumber(30); // Define Variables and Objects and Get Parameter Values double aXprep1 = getval("aXprep1"); // Define Tilted Pulses using "prep1X". double pw1Xprep1 = getval("pw1Xprep1"); double pw2Xprep1 = getval("pw2Xprep1"); double phXprep1 = getval("phXprep1"); WMPA wpmlg = getwpmlg("wpmlgX"); strncpy(wpmlg.ch,"obs",3); putCmd("chXwpmlg='obs'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pw1Xprep1") + getval("pw2Xprep1") + 2.0*wpmlg.q*wpmlg.cycles*wpmlg.pw; d.dutyoff = d1 + 4.0e-6 + 5.0e-6 + wpmlg.r1 + wpmlg.r2 + at - 2.0*wpmlg.q*wpmlg.cycles*wpmlg.pw; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(ph1Xprep1,4,table1); settable(ph2Xprep1,4,table2); settable(phXwpmlg,4,table3); settable(phRec,4,table4); setreceiver(phRec); // Set the Small-Angle Step double obsstep = 360.0/(PSD*8192); obsstepsize(obsstep); int phfXprep1 = initphase(phXprep1, obsstep); int phXzero = initphase(0.0, obsstep); // Begin Sequence xmtrphase(phfXprep1); txphase(ph1Xprep1); obspwrf(aXprep1); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // Tilted Preparation Pulse for FSLG or PMLG "prep1X" startacq(5.0e-6); rcvroff(); delay(wpmlg.r1); rgpulse(pw1Xprep1, ph1Xprep1, 0.0, 0.0); rgpulse(pw2Xprep1, ph2Xprep1, 0.0, 0.0); xmtrphase(phXzero); delay(wpmlg.r2); // Apply WPMLG Cycles decblank(); _blank34(); _wpmlg(wpmlg, phXwpmlg); endacq(); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values double aXecho = getval("aXecho"); double t1Xechoinit = getval("t1Xecho"); double pwXecho = getval("pwXecho"); double t2Xechoinit = getval("t2Xecho"); double t1Xecho = t1Xechoinit - pwXecho/2.0; if (t1Xecho < 0.0) t1Xecho = 0.0; double t2Xecho = t2Xechoinit - pwXecho/2.0 - getval("rd"); if (t2Xecho < 0.0) t2Xecho = 0.0; 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"); DSEQ dec = getdseq("H"); strncpy(dec.t.ch,"dec",3); putCmd("chHtppm='dec'\n"); strncpy(dec.s.ch,"dec",3); putCmd("chHspinal='dec'\n"); //-------------------------------------- // Copy Current Parameters to Processed //------------------------------------- putCmd("groupcopy('current','processed','acquisition')"); // Dutycycle Protection DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHX") + pwXecho; 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 = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phH90,4,table1); settable(phXhx,4,table2); settable(phHhx,4,table3); settable(phXecho,16,table4); settable(phRec,8,table5); 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); sp1on(); _cp_(hx,phHhx,phXhx); sp1off(); // Begin Decoupling _dseqon(dec); // X Hahn Echo txphase(phXecho); obspwrf(aXecho); delay(t1Xecho); rgpulse(pwXecho,phXecho,0.0,0.0); delay(t2Xecho); // Begin Acquisition obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ mag_flg[MAXSTR], /*magic angle gradient*/ f2180[MAXSTR], /* Flag to start t2 @ halfdwell */ stCdec[MAXSTR], /* calls STUD+ waveforms from shapelib */ STUD[MAXSTR]; /* apply automatically calculated STUD decoupling */ int icosel1, /* used to get n and p type */ icosel2, t1_counter, /* used for states tppi in t1 */ t2_counter, /* used for states tppi in t2 */ ni2 = getval("ni2"); double tau1, /* t1 delay */ tau2, /* t2 delay */ del = getval("del"), /* time delays for CH coupling evolution */ BPdpwrspinlock, /* user-defined upper limit for spinlock(Hz) */ BPpwrlimits, /* =0 for no limit, =1 for limit */ del1 = getval("del1"), del2 = getval("del2"), /* STUD+ waveforms automatically calculated by macro "biocal" */ /* and string parameter stCdec calls them from your shapelib. */ stdmf, /* dmf for STUD decoupling */ studlvl, /* coarse power for STUD+ decoupling */ rf80 = getval("rf80"), /* rf in Hz for 80ppm STUD+ */ bw, ofs, ppm, /* temporary Pbox parameters */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ rf0, /* maximum fine power when using pwC pulses */ /* p_d is used to calculate the isotropic mixing on the Cab region */ spinlock = getval("spinlock"), /* DIPSI-3 spinlock field strength in Hz */ p_d, /* 50 degree pulse for DIPSI-2 at rfd */ rfd, /* fine power for 7 kHz rf for 500MHz magnet */ ncyc = getval("ncyc"), /* no. of cycles of DIPSI-3 */ /* the following pulse lengths for SLP pulses are automatically calculated */ /* by the macro "ghcch_tocsy" . SLP pulse shapes, "offC10" etc are called */ /* directly from your shapelib. */ pwC10, /* 180 degree selective sinc pulse on CO(174ppm) */ pwZ, /* the largest of pwC10 and 2.0*pwN */ rf10, /* fine power for the pwC10 ("offC10") pulse */ compC = getval("compC"), /* adjustment for C13 amplifier compression */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ sw1 = getval("sw1"), sw2 = getval("sw2"), gt1 = getval("gt1"), /* coherence pathway gradients */ gzcal = getval("gzcal"), /* G/cm to DAC coversion factor*/ gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt3 = getval("gt3"), /* other gradients */ gt5 = getval("gt5"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"); getstr("STUD",STUD); getstr("mag_flg",mag_flg); getstr("f1180",f1180); getstr("f2180",f2180); strcpy(stCdec, "stCdec80"); stdmf = getval("dmf80"); studlvl = pwClvl + 20.0*log10(compC*pwC*4.0*rf80); studlvl = (int) (studlvl + 0.5); P_getreal(GLOBAL,"BPpwrlimits",&BPpwrlimits,1); P_getreal(GLOBAL,"BPdpwrspinlock",&BPdpwrspinlock,1); /* LOAD PHASE TABLE */ settable(t3,2,phi3); settable(t6,1,phi6); settable(t5,4,phi5); settable(t10,1,phi10); settable(t11,4,rec); /* INITIALIZE VARIABLES */ if (BPpwrlimits > 0.5) { if (spinlock > BPdpwrspinlock) { spinlock = BPdpwrspinlock; printf("spinlock too large, reset to user-defined limit (BPdpwrspinlock)"); psg_abort(1); } } if( dpwrf < 4095 ) { printf("reset dpwrf=4095 and recalibrate C13 90 degree pulse"); psg_abort(1); } /* maximum fine power for pwC pulses */ rf0 = 4095.0; setautocal(); /* activate auto-calibration flags */ if (autocal[0] == 'n') { /* "offC10": 180 degree one-lobe sinc pulse on CO, null at Ca 139ppm away */ pwC10 = getval("pwC10"); rf10 = (compC*4095.0*pwC*2.0*1.65)/pwC10; /* needs 1.65 times more */ rf10 = (int) (rf10 + 0.5); /* power than a square pulse */ if( pwC > (24.0e-6*600.0/sfrq) ) { printf("Increase pwClvl so that pwC < 24*600/sfrq"); psg_abort(1); } } else /* if autocal = 'y'(yes), 'q'(quiet), r(read), or 's'(semi) */ { if(FIRST_FID) /* call Pbox */ { ppm = getval("dfrq"); bw = 118.0*ppm; ofs = 139.0*ppm; offC10 = pbox_make("offC10", "sinc180n", bw, ofs, compC*pwC, pwClvl); if(dm3[B] == 'y') H2ofs = 3.2; ofs_check(H1ofs, C13ofs, N15ofs, H2ofs); } rf10 = offC10.pwrf; pwC10 = offC10.pw; } /* dipsi-3 decoupling on CbCa */ p_d = (5.0)/(9.0*4.0*spinlock); /* DIPSI-3 Field Strength */ rfd = (compC*4095.0*pwC*5.0)/(p_d*9.0); rfd = (int) (rfd + 0.5); ncyc = (int) (ncyc + 0.5); /* CHECK VALIDITY OF PARAMETER RANGES */ if( gt1 > 0.5*del - 1.0e-4) { printf(" gt1 is too big. Make gt1 less than %f.\n", (0.5*del - 1.0e-4)); psg_abort(1); } if( dm[A] == 'y' ) { printf("incorrect dec1 decoupler flag! Should be 'nny' or 'nnn' "); psg_abort(1); } if((dm2[A] == 'y' || dm2[C] == 'y')) { printf("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if((dm3[A] == 'y' || dm3[C] == 'y')) { printf("incorrect dec3 decoupler flags! Should be 'nnn' or 'nyn' "); psg_abort(1); } if( dpwr > 52 ) { printf("don't fry the probe, DPWR too large! "); psg_abort(1); } if( pw > 50.0e-6 ) { printf("dont fry the probe, pw too high ! "); psg_abort(1); } if( pwN > 100.0e-6 ) { printf("dont fry the probe, pwN too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ icosel1 = -1; icosel2 = -1; if (phase1 == 2) { tsadd(t6,2,4); icosel1 = -1*icosel1; } if (phase2 == 2) { tsadd(t10,2,4); icosel2 = -1*icosel2; tsadd(t6,2,4); } /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 1.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; /* Set up f2180 */ tau2 = d3; if((f2180[A] == 'y') && (ni2 > 1.0)) { tau2 += ( 1.0 / (2.0*sw2) ); if(tau2 < 0.2e-6) tau2 = 0.0; } tau2 = tau2/2.0; /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t3,2,4); tsadd(t11,2,4); } if( ix == 1) d3_init = d3; t2_counter = (int) ( (d3-d3_init)*sw2 + 0.5 ); if(t2_counter % 2) { tsadd(t5,2,4); tsadd(t11,2,4); } /* BEGIN PULSE SEQUENCE */ status(A); if ( dm3[B] == 'y' ) lk_sample(); if ((ni/sw1-d2)>0) delay(ni/sw1-d2); /*decreases as t1 increases for const.heating*/ if ((ni2/sw2-d3)>0) delay(ni2/sw2-d3); /*decreases as t2 increases for const.heating*/ delay(d1); if ( dm3[B] == 'y' ) { lk_hold(); lk_sampling_off();} /*freezes z0 correction, stops lock pulsing*/ rcvroff(); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); decpwrf(rf0); obsoffset(tof); txphase(t3); delay(1.0e-5); decrgpulse(pwC, zero, 0.0, 0.0); /*destroy C13 magnetization*/ zgradpulse(gzlvl1, 0.5e-3); delay(1.0e-4); decrgpulse(pwC, one, 0.0, 0.0); zgradpulse(0.7*gzlvl1, 0.5e-3); delay(5.0e-4); if ( dm3[B] == 'y' ) /* begins optional 2H decoupling */ { dec3rgpulse(1/dmf3,one,10.0e-6,2.0e-6); dec3unblank(); dec3phase(zero); delay(2.0e-6); setstatus(DEC3ch, TRUE, 'w', FALSE, dmf3); } rgpulse(pw, t3, 0.0, 0.0); /* 1H pulse excitation */ decphase(zero); delay(0.5*del + tau1 - 2.0*pwC); decrgpulse(2.0*pwC, zero, 0.0, 0.0); txphase(zero); delay(tau1); rgpulse(2.0*pw, zero, 0.0, 0.0); if (mag_flg[A] == 'y') { magradpulse(icosel1*gzcal*gzlvl1,0.1*gt1); } else { zgradpulse(icosel1*gzlvl1, 0.1*gt1); } decphase(t5); delay(0.5*del - 0.1*gt1); simpulse(pw, pwC, zero, t5, 0.0, 0.0); zgradpulse(gzlvl3, gt3); decphase(zero); delay(0.5*del2 - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl3, gt3); txphase(t6); decphase(one); delay(0.5*del2 - gt3); simpulse(pw, pwC, t6, one, 0.0, 0.0); zgradpulse(gzlvl4, gt3); txphase(zero); decphase(zero); delay(0.5*del1 - gt3); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl4, gt3); delay(0.5*del1 - gt3); decrgpulse(pwC, zero, 0.0, 0.0); decpwrf(rfd); delay(2.0e-6); initval(ncyc, v2); starthardloop(v2); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(5.0*p_d,zero,0.0,0.0); decrgpulse(5.5*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.6*p_d,two,0.0,0.0); decrgpulse(7.2*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.8*p_d,two,0.0,0.0); decrgpulse(7.0*p_d,zero,0.0,0.0); decrgpulse(5.2*p_d,two,0.0,0.0); decrgpulse(5.4*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.5*p_d,zero,0.0,0.0); decrgpulse(7.3*p_d,two,0.0,0.0); decrgpulse(5.1*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(5.0*p_d,two,0.0,0.0); decrgpulse(5.5*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.6*p_d,zero,0.0,0.0); decrgpulse(7.2*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.8*p_d,zero,0.0,0.0); decrgpulse(7.0*p_d,two,0.0,0.0); decrgpulse(5.2*p_d,zero,0.0,0.0); decrgpulse(5.4*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.5*p_d,two,0.0,0.0); decrgpulse(7.3*p_d,zero,0.0,0.0); decrgpulse(5.1*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(5.0*p_d,two,0.0,0.0); decrgpulse(5.5*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.6*p_d,zero,0.0,0.0); decrgpulse(7.2*p_d,two,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.4*p_d,two,0.0,0.0); decrgpulse(6.8*p_d,zero,0.0,0.0); decrgpulse(7.0*p_d,two,0.0,0.0); decrgpulse(5.2*p_d,zero,0.0,0.0); decrgpulse(5.4*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.5*p_d,two,0.0,0.0); decrgpulse(7.3*p_d,zero,0.0,0.0); decrgpulse(5.1*p_d,two,0.0,0.0); decrgpulse(7.9*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); decrgpulse(5.0*p_d,zero,0.0,0.0); decrgpulse(5.5*p_d,two,0.0,0.0); decrgpulse(0.6*p_d,zero,0.0,0.0); decrgpulse(4.6*p_d,two,0.0,0.0); decrgpulse(7.2*p_d,zero,0.0,0.0); decrgpulse(4.9*p_d,two,0.0,0.0); decrgpulse(7.4*p_d,zero,0.0,0.0); decrgpulse(6.8*p_d,two,0.0,0.0); decrgpulse(7.0*p_d,zero,0.0,0.0); decrgpulse(5.2*p_d,two,0.0,0.0); decrgpulse(5.4*p_d,zero,0.0,0.0); decrgpulse(0.6*p_d,two,0.0,0.0); decrgpulse(4.5*p_d,zero,0.0,0.0); decrgpulse(7.3*p_d,two,0.0,0.0); decrgpulse(5.1*p_d,zero,0.0,0.0); decrgpulse(7.9*p_d,two,0.0,0.0); endhardloop(); dec2phase(zero); decphase(zero); txphase(zero); decpwrf(rf10); delay(tau2); /* WFG3_START_DELAY */ sim3shaped_pulse("", "offC10", "", 2.0*pw, pwC10, 2.0*pwN, zero, zero, zero, 0.0, 0.0); if(pwC10>2.0*pwN) pwZ=0.0; else pwZ=2.0*pwN - pwC10; delay(tau2); decpwrf(rf0); if (mag_flg[A] == 'y') { magradpulse(-icosel2*gzcal*gzlvl2, 1.8*gt1); } else { zgradpulse(-icosel2*gzlvl2, 1.8*gt1); } delay(2.02e-4); decrgpulse(2.0*pwC, zero, 0.0, 0.0); decpwrf(rf10); if (mag_flg[A] == 'y') { magradpulse(icosel2*gzcal*gzlvl2, 1.8*gt1); } else { zgradpulse(icosel2*gzlvl2, 1.8*gt1); } delay(2.0e-4 + WFG3_START_DELAY + pwZ); decshaped_pulse("offC10", pwC10, zero, 0.0, 0.0); decpwrf(rf0); decrgpulse(pwC, zero, 2.0e-6, 0.0); zgradpulse(gzlvl5, gt5); delay(0.5*del1 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl5, gt5); txphase(one); decphase(t10); delay(0.5*del1 - gt5); simpulse(pw, pwC, one, t10, 0.0, 0.0); zgradpulse(gzlvl6, gt5); txphase(zero); decphase(zero); delay(0.5*del2 - gt5); simpulse(2.0*pw, 2.0*pwC, zero, zero, 0.0, 0.0); zgradpulse(gzlvl6, gt5); delay(0.5*del2 - gt5); simpulse(pw, pwC, zero, zero, 0.0, 0.0); delay(0.5*del - 0.5*pwC); simpulse(2.0*pw,2.0*pwC, zero, zero, 0.0, 0.0); if (mag_flg[A] == 'y') magradpulse(gzcal*gzlvl1, gt1); else zgradpulse(gzlvl1, gt1); rcvron(); if ((STUD[A]=='n') && (dm[C] == 'y')) decpower(dpwr); if ( dm3[B] == 'y' ) /* turns off 2H decoupling */ { delay(0.5*del-40.0e-6 -gt1 -1/dmf3); setstatus(DEC3ch, FALSE, 'c', FALSE, dmf3); dec3rgpulse(1/dmf3,three,2.0e-6,2.0e-6); dec3blank(); lk_autotrig(); /* resumes lock pulsing */ lk_sample(); if (mag_flg[A] == 'y') statusdelay(C,40.0e-6 - 2.0*VAGRADIENT_DELAY - POWER_DELAY); else statusdelay(C,40.0e-6 - 2.0*GRADIENT_DELAY - POWER_DELAY); } else { delay(0.5*del-40.0e-6 -gt1); if (mag_flg[A] == 'y') statusdelay(C,40.0e-6 - 2.0*VAGRADIENT_DELAY - POWER_DELAY); else statusdelay(C,40.0e-6 - 2.0*GRADIENT_DELAY - POWER_DELAY); } if ((STUD[A]=='y') && (dm[C] == 'y')) {decpower(studlvl); decunblank(); decon(); decprgon(stCdec,1/stdmf, 1.0); startacq(alfa); acquire(np, 1.0/sw); decprgoff(); decoff(); decblank(); } setreceiver(t11); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values SHAPE p1 = getpulse("90H",0.0,0.0,1,0); strncpy(p1.pars.ch,"dec",3); putCmd("chH90='dec'\n"); p1.pars.array = disarry("xx", p1.pars.array); p1 = update_shape(p1,0.0,0.0,1); MPSEQ ph = getpmlgxmx("pmlgH",0,0.0,0.0,1,0); strncpy(ph.ch,"dec",3); putCmd("chHpmlg='dec'\n"); double pwHpmlg = getval("pwHpmlg"); ph.nelem = (int) (d2/(2.0*pwHpmlg) + 0.1); ph.array = disarry("xx", ph.array); ph = update_mpseq(ph,0,p1.pars.phAccum,p1.pars.phInt,1); SHAPE p2 = getpulse("90H",0.0,0.0,2,0); strncpy(p2.pars.ch,"dec",3); putCmd("chH90='dec'\n"); p2.pars.array = disarry("xx", p2.pars.array); p2 = update_shape(p2,ph.phAccum,ph.phInt,2); double pwX180 = getval("pwX180"); double d22 = ph.t/2.0 - pwX180/2.0; if (d22 < 0.0) d22 = 0.0; // CP hx and DSEQ dec Return to the Reference Phase 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"); 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 = p1.pars.t + d2_ + p2.pars.t + getval("pwH90") + getval("pwHtilt") + getval("tHX"); d.dutyoff = d1 + 4.0e-6 + getval("tHmix"); 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 = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(ph1H90,4,table1); settable(phHpmlg,4,table2); settable(ph2H90,4,table3); settable(ph3H90,4,table4); settable(phHtilt,4,table5); settable(phXhx,4,table6); settable(phHhx,4,table7); settable(phRec,4,table8); //Add STATES TPPI ("States with "FAD") tsadd(phRec,2*d2_index,4); if (phase1 == 2) { tsadd(ph2H90,2*d2_index+3,4); } else { tsadd(ph2H90,2*d2_index,4); } setreceiver(phRec); // Begin Sequence txphase(phXhx); decphase(ph1H90); obspwrf(getval("aX180")); decpwrf(getval("aH90")); obsunblank();decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // Offset H Preparation with a Tilt Pulse _shape(p1,ph1H90); // Offset SAMn Spinlock on H During F1 with Optional pwX180 _mpseqon(ph,phHpmlg); delay(d22); rgpulse(pwX180,zero,0.0,0.0); obspwrf(getval("aX90")); txphase(phXhx); delay(d22); _mpseqoff(ph); // Offset 90-degree Pulse to Zed and Spin-Diffusion Mix _shape(p2,ph2H90); decpwrf(getval("aH90")); delay(getval("tHmix")); // H90, 35-degree Tilt and H-to-X Cross Polarization with LG Offset decrgpulse(getval("pwH90"),ph3H90,0.0,0.0); decunblank(); decrgpulse(getval("pwHtilt"),phHtilt,0.0,0.0); decphase(phHhx); _cp_(hx,phHhx,phXhx); // Begin Acquisition obsblank(); _blank34(); _dseqon(dec); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
pulsesequence() { // Define Variables and Objects and Get Parameter Values CP hy = getcp("HY",0.0,0.0,0,1); strncpy(hy.fr,"dec",3); strncpy(hy.to,"dec2",4); putCmd("frHY='dec'\n"); putCmd("toHY='dec2'\n"); GP inept = getinept("ineptYX"); strncpy(inept.ch1,"dec2",4); strncpy(inept.ch2,"obs",3); putCmd("ch1YXinept='dec2'\n"); putCmd("ch2YXinept='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"); DSEQ mix = getdseq("Hmix"); strncpy(mix.t.ch,"dec",3); putCmd("chHmixtppm='dec'\n"); strncpy(mix.s.ch,"dec",3); putCmd("chHmixspinal='dec'\n"); // Dutycycle Protection double simpw1 = inept.pw1; if (inept.pw2 > inept.pw1) simpw1 = inept.pw2; double simpw2 = inept.pw3; if (inept.pw4 > inept.pw3) simpw2 = inept.pw4; DUTY d = init_dutycycle(); d.dutyon = getval("pwH90") + getval("tHY") + 2.0*simpw1 + 2.0*simpw2; 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 = inept.t1 + inept.t2 + inept.t3 + inept.t4 + 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 = inept.t1 + inept.t2 + inept.t3 + inept.t4 + getval("rd") + getval("ad") + at; d = update_dutycycle(d); abort_dutycycle(d,10.0); // Set Phase Tables settable(phH90,16,table1); settable(phHhy,4,table2); settable(phYhy,4,table3); settable(ph1Yyxinept,4,table4); settable(ph1Xyxinept,4,table5); settable(ph2Yyxinept,4,table6); settable(ph2Xyxinept,16,table7); settable(ph3Yyxinept,8,table8); settable(ph3Xyxinept,4,table9); settable(phRec,8,table10); setreceiver(phRec); // Begin Sequence txphase(ph1Xyxinept); decphase(phH90); dec2phase(phYhy); obspwrf(getval("aXyxinept")); decpwrf(getval("aH90")); dec2pwrf(getval("aYhy")); obsunblank(); decunblank(); _unblank34(); delay(d1); sp1on(); delay(2.0e-6); sp1off(); delay(2.0e-6); // H to Y Cross Polarization decrgpulse(getval("pwH90"),phH90,0.0,0.0); decphase(phHhy); _cp_(hy,phHhy,phYhy); decphase(zero); // INEPT Transfer from Y to X _dseqon(mix); _ineptref(inept,ph1Yyxinept,ph1Xyxinept,ph2Yyxinept,ph2Xyxinept,ph3Yyxinept,ph3Xyxinept); _dseqoff(mix); // Begin Acquisition _dseqon(dec); obsblank(); _blank34(); delay(getval("rd")); startacq(getval("ad")); acquire(np, 1/sw); endacq(); _dseqoff(dec); obsunblank(); decunblank(); _unblank34(); }
void 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 spc5 = getspc5("spc5X",0,0.0,0.0,0,1); MPSEQ spc5ref = getspc5("spc5X",spc5.iSuper,spc5.phAccum,spc5.phInt,1,1); strncpy(spc5.ch,"obs",3); putCmd("chXspc5='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") + getval("pwX90") + spc5.t + spc5ref.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); // Create Phasetables settable(phH90,4,table1); settable(phHhx,4,table2); settable(phXhx,4,table3); settable(phXmix1,4,table4); settable(phXmix2,4,table5); settable(phRec,4,table6); setreceiver(phRec); if (phase1 == 2) tsadd(phXhx,1,4); // 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); // F2 Indirect Period for X obspwrf(getval("aX90")); _dseqon(dec); delay(d2); _dseqoff(dec); // Mixing with SPC5 Recoupling rgpulse(getval("pwX90"),phXmix1,0.0,0.0); obspwrf(getval("aXspc5")); xmtrphase(v1); txphase(phXmix1); delay(getval("tZF")); decpwrf(getval("aHmix")); decon(); _mpseq(spc5, phXmix1); xmtrphase(v2); txphase(phXmix2); _mpseq(spc5ref, 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(); }