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(); }
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(); }
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(); }
void pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char ch90shape[MAXSTR], ch180shape[MAXSTR], exp_mode[MAXSTR], /* flag to run 3D, or 2D time-shared 15N TROSY /13C HSQC-SE*/ decCACO[MAXSTR], caco180shape[MAXSTR], f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ f2180[MAXSTR], f3180[MAXSTR], f4180[MAXSTR]; /* do TROSY on N15 and H1 */ int icosel, max_pcyc; /* used to get n and p type */ double tpwrs, ni2=getval("ni2"), ni3=getval("ni3"), tau1, tau1p,tau2,tau3,tau3p, /*evolution times in indirect dimensions */ tauNH=getval("tauNH"), /* 1/(4Jhn)*/ tauCH=getval("tauCH"), /* 1/(4Jch) */ tauCH1= getval("tauCH1"), /* tauCH/2.0+tauNH/2.0,*/ /* 1/(8Jch) +1/(8Jnh) */ tauCH2= getval("tauCH2"), swC = getval("swC"), /* spectral widths in 13C methyls */ pwClvl = getval("pwClvl"), /* coarse power for C13 pulse */ pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ swN = getval("swN"), /* spectral widths in 15N */ pwNlvl = getval("pwNlvl"), /* power for N15 pulses */ pwN = getval("pwN"), /* N15 90 degree pulse length at pwNlvl */ ch90pwr=getval("ch90pwr"), ch90pw=getval("ch90pw"), ch90corr=getval("ch90corr"), ch90dres=getval("ch90dres"), ch90dmf=getval("ch90dmf"), ch180pw=getval("ch180pw"), ch180pwr=getval("ch180pwr"), caco180pw=getval("caco180pw"), caco180pwr=getval("caco180pwr"), mix=getval("mix"), tpwrsf_d = getval("tpwrsf_d"), /* fine power adustment for first soft pulse(down)*/ tpwrsf_u = getval("tpwrsf_u"), /* fine power adustment for second soft pulse(up) */ pwHs = getval("pwHs"), /* H1 90 degree pulse length at tpwrs */ compH =getval("compH"), gstab = getval("gstab"), gt0 = getval("gt0"), gt1 = getval("gt1"), gt2 = getval("gt2"), gt3 = getval("gt3"), gt4 = getval("gt4"), gt5 = getval("gt5"), gt6 = getval("gt6"), gt7 = getval("gt7"), gt8 = getval("gt8"), gt9 = getval("gt9"), gt10 = getval("gt10"), gzlvl0 = getval("gzlvl0"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl6 = getval("gzlvl6"), gzlvl7 = getval("gzlvl7"), gzlvl8 = getval("gzlvl8"), gzlvl9 = getval("gzlvl9"), gzlvl10 = getval("gzlvl10"), gzlvl11 = getval("gzlvl11"); getstr("f1180",f1180); getstr("f2180",f2180); getstr("ch180shape",ch180shape); getstr("ch90shape",ch90shape); getstr("decCACO",decCACO); getstr("caco180shape",caco180shape); getstr("exp_mode",exp_mode); tpwrs = tpwr - 20.0*log10(pwHs/(compH*pw*1.69)); /*needs 1.69 times more*/ tpwrs = (int) (tpwrs); /*power than a square pulse */ if (tpwrsf_d<4095.0) tpwrs=tpwrs+6.0; /* add 6dB to let tpwrsf_d control fine power ~2048*/ if( (exp_mode[A]!='2') && (exp_mode[A]!='3') && (exp_mode[A]!='4') ) {text_error("invalid exp_mode, Should be either 2D or 3D or 4D\n "); psg_abort(1); } /* LOAD PHASE TABLE */ settable(t1,1,phi1); settable(t2,4,phi2); settable(t12,4,phi2); {tsadd(t12,2,4);} settable(t3,1,phi3); settable(t4,2,phi4); settable(t5,2,phi5); settable(t6,4,phi6); settable(t7,8,phi7); settable(t8,8,phi8); /* changing sign */ if( (exp_mode[A]=='4') && (exp_mode[C]=='a') ) {tsadd(t7,2,4); tsadd(t5,2,4); } settable(t21,1,psi1); /*trosy and SE hsqc in reverse INPET */ settable(t22,1,psi2); settable(t23,1,psi2c); if(exp_mode[A]=='2') {settable(t31,2,rec);} if(exp_mode[A]=='3') {settable(t31,4,rec);} if(exp_mode[A]=='4') {settable(t31,8,rec);} if((dm2[A] == 'y') || (dm2[B] == 'y') || (dm2[C] == 'y') || (dm2[D] == 'y')) { text_error("incorrect dec2 decoupler flags! Should be 'nnnn' "); psg_abort(1); } /* special case for swapping t2 and t3 for test purposes */ if( (exp_mode[A]=='4') && (exp_mode[B]=='x') && (ni3=1) ) { text_error("Acquiring t3 axis in ni2 dimension (instead of t2), set nt to 8! "); tau3 = 0.5*(d3_index/swC+0.5/swC)-pw-rof1 -pwC*2.0/M_PI ; /* increment corresponds to 13C increment */ tau3p = 0.5*(d3_index/swN+0.5/swN) -pw-rof1 -pwC -pwN*2.0/M_PI -tau3; if(d3_index % 2) { tsadd(t7,2,4); tsadd(t8,2,4); tsadd(t31,2,4); } if (phase2 == 2) {tsadd(t7 ,1,4); tsadd(t8 ,1,4);} tau2=0.0; } else { if (phase2 == 2) {tsadd(t2 ,1,4); tsadd(t12,1,4);} if (phase3 == 2) {tsadd(t7 ,1,4); tsadd(t8 ,1,4);} if(d3_index % 2) { tsadd(t2,2,4); tsadd(t12,2,4); tsadd(t31,2,4); } tau3 = 0.5*(d4_index/swC+0.5/swC)-pw -rof1 -pwC*2.0/M_PI ; /* increment corresponds to 13C increment */ tau3p = 0.5*(d4_index/swN+0.5/swN) -pw -rof1 -pwC -pwN*2.0/M_PI -tau3; if(d4_index % 2) { tsadd(t7,2,4); tsadd(t8,2,4); tsadd(t31,2,4); } tau2 = d3; tau2 += 0.0*(-pw*4.0/M_PI-rof1*2.0); if((f2180[A] == 'y') && (ni2 > 0.0)) {tau2 += ( 1.0 / (2.0*sw2) ); } if(tau2 < 0.2e-6) {tau2 = 0.0;} tau2 = tau2/2.0; } /* simultaneous Ntrosy-ChsqcSE, last part */ /* Phase incrementation for hypercomplex 2D data, States-Haberkorn element */ if (phase1 == 1) {icosel = 1; } else { tsadd(t21,2,4); tsadd(t22,2,4); tsadd(t23,2,4); icosel = -1; } if(d2_index % 2) { tsadd(t4,2,4); tsadd(t5,2,4); tsadd(t31,2,4); } /* ECHO-ANTIECHO + STATES-TPPI t1, t1' in TROSY/HSQC last step */ tau1 = 1.0*d2_index/swC; /* increment corresponds to 13C increment */ tau1p = 1.0*d2_index*(1.0/swN-1.0/swC); /* BEGIN PULSE SEQUENCE */ status(A); obspower(tpwr); decpower(pwClvl); dec2power(pwNlvl); txphase(zero); decphase(zero); dec2phase(zero); delay(d1); /* Destroy 13C magnetization*/ decrgpulse(pwC*1.0, zero, 0.0, 0.0); zgradpulse(-gzlvl0, gt0); delay(gstab); /* NOESY */ if(exp_mode[A]!='2') { /* 3-4D */ if(exp_mode[A]=='4') { /* full 4D */ /* t3 evolution, the very first HSQC */ /* Hz -> HzXz INEPT */ rgpulse(pw,two,rof1,rof1); /* 1H pulse excitation */ zgradpulse(gzlvl7, gt0); delay(tauCH-gt0); decrgpulse(pwC*2.0, zero, 0.0, 0.0); delay(tauNH -tauCH -pwC*2.0 ); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tauNH - gt0 -gstab); zgradpulse(gzlvl7, gt0); delay(gstab); rgpulse(pw, one, rof1, rof1); /* water defoc-refoc */ delay(gstab); zgradpulse(gzlvl8, gt8); delay(gstab); /* t3 time */ if((ni3==0)) { dec2rgpulse(pwN,t7,0.0,0.0); dec2rgpulse(pwN,two,0.0,0.0); decrgpulse(pwC, t8, 0.0, 0.0); decrgpulse(pwC, two, 0.0, 0.0); rgpulse(pw*2.0, zero, rof1, rof1); delay(pwN*2.0+pwC*2.0); } else { dec2rgpulse(pwN,t7,0.0,0.0); delay(tau3p); decrgpulse(pwC, t8, 0.0, 0.0); delay(tau3); rgpulse(pw*2.0, zero, rof1, rof1); delay(tau3); decrgpulse(pwC, two, 0.0, 0.0); delay(tau3p); dec2rgpulse(pwN,two,0.0,0.0); } /* water defoc-refoc */ delay(gstab); zgradpulse(gzlvl8, gt8); delay(gstab); /* back inept, water to +Z */ rgpulse(pw,one,rof1,rof1); zgradpulse(gzlvl9, gt0); delay(tauCH-gt0); decrgpulse(pwC*2.0, zero, 0.0, 0.0); delay(tauNH -tauCH -pwC*2.0 ); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tauNH - gt0 -gstab); zgradpulse(gzlvl9, gt0); delay(gstab); rgpulse(pw, two, rof1, rof1); /* purge */ zgradpulse(gzlvl10, gt10); delay(2.0*gstab); } /*end of full 4D */ /************************* t2 evolution, 1H and NOE****************************** */ /* for the case of no flipbacks in NOE part of the experiment, shift first pulse in t2 time by 45 deg and let water bring itself back at the end of mixing time by radiation dumping */ if( (exp_mode[D]=='t') ) { initval(1.0, v10); obsstepsize(45.0); xmtrphase(v10); } else { xmtrphase(zero); obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc",pwHs,t12,rof1,rof1); obspower(tpwr); obspwrf(4095.0); } rgpulse(pw,t2,rof1,rof1); xmtrphase(zero); /* SAPS_DELAY */ delay(tau2); decrgpulse(2.0*pwC,zero,0.0,0.0); dec2rgpulse(2.0*pwN,zero,0.0,0.0); delay(tau2); rgpulse(pw*2.0,zero,rof1,rof1); delay(pwN*2.0+pwC*2.0 + SAPS_DELAY); rgpulse(pw,zero,rof1,rof1); if( (exp_mode[D]!='t') ) { obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc",pwHs,zero,rof1,rof1); obspower(tpwr); obspwrf(4095.0); } /* NOESY period */ delay(mix-gt2-4.0*gstab ); zgradpulse(gzlvl2, gt2); delay(4.0*gstab); } /* end 3-4 D acquisition */ /* N-TROSY/C-HSQCse */ /* Hz -> HzXz INEPT */ rgpulse(pw,two,rof1,rof1); /* 1H pulse excitation */ zgradpulse(gzlvl0, gt0); delay(tauCH-gt0); decrgpulse(pwC*2.0, zero, 0.0, 0.0); delay(tauNH -tauCH -pwC*2.0 ); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); delay(tauNH - gt0 -gstab); zgradpulse(gzlvl0, gt0); delay(gstab); rgpulse(pw, one, rof1, rof1); /* on HzXz now */ /* water flipback*/ obspower(tpwrs); obspwrf(tpwrsf_u); shaped_pulse("H2Osinc",pwHs,two,rof1,rof1); obspower(tpwr); obspwrf(4095.0); /* purge */ zgradpulse(gzlvl3, gt3); dec2phase(t4); delay(gstab*2.0); /* t1 (C) and t1+t1'(N) evolution */ dec2rgpulse(pwN, t4, 0.0, 0.0); delay(gt4+gstab + gt4+gstab + pwC*3.0 +2.0*(pwHs +2.0*rof1)); if(decCACO[A]=='y'){ delay(2.0*caco180pw);} dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(tau1p); /* t1 */ decrgpulse(pwC,t5,0.0,0.0); delay(tau1*0.5); if(decCACO[A]=='y') { decpower(caco180pwr); decshaped_pulse(caco180shape,caco180pw,zero, 0.0, 0.0); decpower(pwClvl); } obspower(ch180pwr); /*180 on methyls*/ shaped_pulse(ch180shape,ch180pw,zero,rof1,rof1); obspower(tpwr); delay(tau1*0.5); zgradpulse(gzlvl4, gt4); /*coding */ delay(gstab + pwHs -ch180pw -2.0*GRADIENT_DELAY -2.0*POWER_DELAY -WFG_START_DELAY- WFG_STOP_DELAY); decrgpulse(2.0*pwC,zero,0.0,0.0); if(decCACO[A]=='y') { decpower(caco180pwr); decshaped_pulse(caco180shape,caco180pw,zero, 0.0, 0.0); decpower(pwClvl); } /* delay(ch180pw+2.0*rof1);*/ zgradpulse(gzlvl5, gt4); delay(gstab - rof1 -2.0*GRADIENT_DELAY -2.0*POWER_DELAY -WFG_START_DELAY- WFG_STOP_DELAY); /*Water flipback (flipdown actually ) */ obspower(tpwrs); obspwrf(tpwrsf_d); shaped_pulse("H2Osinc",pwHs,three,rof1,rof1); obspower(tpwr); obspwrf(4095.0); /* reverse double INEPT */ sim3pulse(pw, pwC, 0.0, t21, t23, zero, rof1, rof1); /* rgpulse(pw, t21, rof1, rof1); */ zgradpulse(gzlvl11, gt1); delay(gstab); delay(tauCH1 -gt1 -gstab -2.0*pwC + (-2.0/M_PI*pwC-0.5*(pwN-pwC) +pwN)); decrgpulse(2.0*pwC,zero,0.0,0.0); delay(tauNH -tauCH1 - 0.65*(pw + pwN)-rof1 -(pwC-pw) -(-2.0/M_PI*pwC-0.5*(pwN-pwC) +pwN) ); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl11, gt1); delay(gstab); delay(tauCH1-gt1 -gstab-2.0*pwC); decrgpulse(2.0*pwC,zero,0.0,0.0); delay(tauNH -1.3*pwN -tauCH1); sim3pulse(pw, pwC, pwN, one, zero, zero, 0.0, 0.0); zgradpulse(gzlvl1, gt1); delay(gstab); delay(tauCH2-2.0*pwC-gt1-gstab); decrgpulse(2.0*pwC,zero,0.0,0.0); delay(tauNH -1.3*pwN-tauCH2); sim3pulse(2.0*pw, 0.0, 2.0*pwN, zero, zero, zero, 0.0, 0.0); zgradpulse(gzlvl1, gt1); delay(gstab); delay(tauNH-1.6*pwN -POWER_DELAY -ch90pw*ch90corr -gt1-gstab +pwN*0.5 -PRG_START_DELAY); /* delay(ch90pw*0.5); sim3pulse(0.0,0.0, pwN, one, zero, t22, 0.0, 0.0); delay(ch90pw*0.5);*/ /* sim3shaped_pulse(ch90shape,"hard","hard",ch90pw,0.0, pwN, zero,zero, t22,0.0,0.0);*/ /* ch90corr is a fraction of ch90pw to correct for a 1H phase rollcaused by shaped 90 on CH3 protons for a sinc pulse ch90corr=0.41 seems to be good. */ obspower(ch90pwr); txphase(one); obsunblank(); xmtron(); obsprgon(ch90shape,1.0/ch90dmf,ch90dres); /*PRG_START_DELAY */ delay(ch90pw*ch90corr-pwN*0.5); dec2rgpulse(pwN, t22, 0.0, 0.0); delay(ch90pw*(1.0-ch90corr)-pwN*0.5); obsprgoff(); xmtroff(); obsblank(); /*PRG_STOP_DELAY */ obspower(tpwr); /*POWER_DEALY */ delay( gstab +gt6 +2.0*GRADIENT_DELAY +2.0*POWER_DELAY -0.65*pw -POWER_DELAY +pwN*0.5 -ch90pw*(1.0-ch90corr) -PRG_STOP_DELAY); rgpulse(2.0*pw, zero, rof1, rof1); dec2power(dpwr2); decpower(dpwr); /* 2.0*POWER_DELAY */ zgradpulse(gzlvl6*icosel, gt6); /* 2.0*GRADIENT_DELAY */ delay(gstab); status(C); setreceiver(t31); }
pulsesequence() { char Cdseq[MAXSTR], refoc[MAXSTR], sspul[MAXSTR]; int mult = (0.5 + getval("mult")); double rg1 = 2.0e-6, j1xh = getval("j1xh"), gt0 = getval("gt0"), gzlvl0 = getval("gzlvl0"), pp = getval("pp"), pplvl = getval("pplvl"), compH = getval("compH"), Cdpwr = getval("Cdpwr"), Cdres = getval("Cdres"), tau1 = 0.002, tau2 = 0.002, Cdmf = getval("Cdmf"); shape hdx; /* Get new variables from parameter table */ getstr("Cdseq", Cdseq); getstr("refoc", refoc); getstr("sspul", sspul); if (j1xh < 1.0) j1xh = 150.0; hdx = pboxHT_F1i("gaus180", pp*compH, pplvl); /* HADAMARD stuff */ if (getval("htcal1") > 0.5) /* Optional fine power calibration */ hdx.pwr = getval("htpwr1"); if(j1xh > 0.0) tau1 = 0.25/j1xh; tau2 = tau1; if (mult > 2) tau2=tau1/2.5; else if ((mult == 0) || (mult == 2)) tau2=tau1/2.0; dbl(ct, v1); /* v1 = 02 */ add(two,v1,oph); mod4(oph,oph); /* oph = 02 */ /* Calculate delays */ if (dm[0] == 'y') { abort_message("decoupler must be set as dm=nny\n"); } if(refoc[A]=='n' && dm[C]=='y') { abort_message("with refoc=n decoupler must be set as dm=nnn\n"); } /* Relaxation delay */ status(A); delay(0.05); zgradpulse(gzlvl0,gt0); if (sspul[0] == 'y') { obspower(tpwr); decpower(pplvl); simpulse(pw, pp, zero, zero, rg1, rg1); /* destroy H and C magnetization */ zgradpulse(gzlvl0,gt0); } delay(d1); status(B); obspower(Cdpwr); obsunblank(); xmtron(); obsprgon(Cdseq, 1.0/Cdmf, Cdres); pbox_decpulse(&hdx, zero, rg1, rg1); obsprgoff(); xmtroff(); obsblank(); obspower(tpwr); decpower(pplvl); delay(2.0e-4); decrgpulse(pp, v1, rg1, rg1); delay(tau1 - POWER_DELAY); simpulse(2.0*pw, 2.0*pp, zero, zero, rg1, rg1); txphase(one); decphase(one); delay(tau1); simpulse(pw, pp, one, one, rg1, rg1); if(refoc[A]=='y') { txphase(zero); decphase(zero); delay(tau2); simpulse(2.0*pw, 2.0*pp, zero, zero, rg1, rg1); delay(tau2 - rof2 - POWER_DELAY); decrgpulse(pp, zero, rg1, rof2); } decpower(dpwr); status(C); }
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 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() { // 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(); }
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(); }
pulsesequence() { char CT_flg[MAXSTR], /* Constant time flag */ shname1[MAXSTR], shname2[MAXSTR], shname3[MAXSTR], f1180[MAXSTR], Cdecflg[MAXSTR], Cdecseq[MAXSTR], grad_flg[MAXSTR]; /*gradient flag */ int t1_counter, phase; double d2_init=0.0, adjust = getval("adjust"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt1 = getval("gt1"), gt2 = getval("gt2"), shlvl1 = getval("shlvl1"), shlvl2 = getval("shlvl2"), shlvl3 = getval("shlvl3"), shdmf2 = getval("shdmf2"), shpw1 = getval("shpw1"), shpw2 = getval("shpw2"), shpw3 = getval("shpw3"), pwClvl = getval("pwClvl"), pwC = getval("pwC"), dpwr = getval("dpwr"), CT_delay = getval("CT_delay"), d2 = getval("d2"), tau1 = getval("tau1"), tauch = getval("tauch"); getstr("shname1", shname1); getstr("shname2", shname2); getstr("shname3", shname3); getstr("CT_flg", CT_flg); getstr("grad_flg",grad_flg); getstr("f1180",f1180); getstr("Cdecflg",Cdecflg); getstr("Cdecseq",Cdecseq); phase = (int) (getval("phase") + 0.5); settable(t1,2,phi1); settable(t2,2,phi2); if (phase == 1) ; if (phase == 2) tsadd(t1,1,4); 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; if (f1180[0] == 'y') tau1 = tau1-pwC*4.0/3.0; if(CT_flg[0] == 'y') { if ( (ni/sw1) > (CT_delay-pwC*8.0/3.0)) { text_error( " ni is too big. Make ni equal to %d or less.\n", ((int)((CT_delay-pwC*8.0/3.0)*sw1)) ); psg_abort(1); } } if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t2,2,4); } status(A); decpower(pwClvl); decoffset(dof); obsoffset(tof); zgradpulse(gzlvl2, gt2); lk_sample(); delay(1.0e-4); delay(d1-gt2); if (ix < (int)(2.0*ni)) lk_hold(); /*force lock sampling at end of experiment*/ obspower(shlvl1); shaped_pulse(shname1,shpw1,zero,2.0e-4,2.0e-6); zgradpulse(gzlvl1, gt1); delay(1.0e-4); if (ni == 0) { delay(tauch-gt1-1.0e-4-WFG_START_DELAY+pwC*4.0-adjust); obspower(shlvl2); shaped_pulse(shname2,shpw2,zero,2.0e-6,2.0e-6); obspower(shlvl1); decrgpulse(pwC,t1,0.0,0.0); decrgpulse(pwC*2.0,zero,0.0,0.0); decrgpulse(pwC,zero,0.0,0.0); } else { delay(tauch-gt1-1.0e-4-adjust); obspower(shlvl2); status(B); if(CT_flg[0] == 'y') { /*************************************************/ /**** CT EVOLUTION **********/ /*************************************************/ decrgpulse(pwC,t1,0.0,0.0); delay((CT_delay-tau1)*0.25-pwC*2.0/3.0); decpower(shlvl3); decshaped_pulse(shname3,shpw3,zero,0.0,0.0); delay((CT_delay+tau1)*0.25-shpw2*0.5); shapedpulse(shname2,shpw2,zero,0.0,0.0); delay((CT_delay+tau1)*0.25-shpw2*0.5); decshaped_pulse(shname3,shpw3,zero,0.0,0.0); decpower(pwClvl); delay((CT_delay-tau1)*0.25-pwC*2.0/3.0); decrgpulse(pwC,zero,0.0,0.0); } else { /*************************************************/ /**** REAL-TIME EVOLUTION **********/ /*************************************************/ if ((tau1) > shpw2) { decrgpulse(pwC,t1,0.0,0.0); if(Cdecflg[0] == 'y') { decpower(getval("Cdecpwr")); decprgon(Cdecseq, 1.0/getval("Cdecdmf"), getval("Cdecres")); decon(); } delay((tau1-shpw2)*0.5); xmtrphase(zero); xmtron(); obsunblank(); obsprgon(shname2,1/shdmf2,9.0); delay(shpw2); obsprgoff(); obsblank(); xmtroff(); delay((tau1-shpw2)*0.5); if(Cdecflg[0] == 'y') { decoff(); decprgoff(); decpower(pwClvl); } decrgpulse(pwC,zero,0.0,0.0); } else { xmtrphase(zero); xmtron(); obsunblank(); obsprgon(shname2,1/shdmf2,9.0); delay((shpw2-tau1-pwC*2.0)*0.5); decrgpulse(pwC,t1,0.0,0.0); if(Cdecflg[0] == 'y') { decpower(getval("Cdecpwr")); decprgon(Cdecseq, 1.0/getval("Cdecdmf"), getval("Cdecres")); decon(); delay(tau1); decoff(); decprgoff(); decpower(pwClvl); } else delay(tau1); decrgpulse(pwC,zero,0.0,0.0); delay((shpw2-tau1-pwC*2.0)*0.5); obsprgoff(); obsblank(); xmtroff(); } } obspower(shlvl1); status(A); zgradpulse(gzlvl1, gt1); delay(1.0e-4); delay(tauch-gt1-1.0e-4-POWER_DELAY); decpower(dpwr); status(C); setreceiver(t2); } }
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() { double p1lvl, trim, mix, window, cycles; char sspul[MAXSTR]; /* LOAD AND INITIALIZE VARIABLES */ mix = getval("mix"); trim = getval("trim"); p1lvl = getval("p1lvl"); window=getval("window"); getstr("sspul", sspul); /* CHECK CONDITIONS */ if ((phase1 != 3) && (arrayelements > 2)) { fprintf(stdout, "PHASE=3 is required if MIX is arrayed!\n"); psg_abort(1); } if (satdly > 9.999) { fprintf(stdout, "Presaturation period is too long.\n"); psg_abort(1); } if (!newtransamp) { fprintf(stdout, "TOCSY requires linear amplifiers on transmitter.\n"); fprintf(stdout, "Use DECTOCSY with the appropriate re-cabling,\n"); psg_abort(1); } if ((p1 == 0.0) && (ix == 1)) fprintf(stdout, "Warning: P1 has a zero value.\n"); if ((rof1 < 9.9e-6) && (ix == 1)) fprintf(stdout,"Warning: ROF1 is less than 10 us\n"); if (satpwr > 40) { printf("satpwr too large - acquisition aborted./n"); psg_abort(1); } /* STEADY-STATE PHASECYCLING */ /* This section determines if the phase calculations trigger off of (SS - SSCTR) or off of CT */ ifzero(ssctr); hlv(ct, v13); mod2(ct, v1); hlv(ct, v2); elsenz(ssctr); sub(ssval, ssctr, v12); /* v12 = 0,...,ss-1 */ hlv(v12, v13); mod2(v12, v1); hlv(v12, v2); endif(ssctr); /* CALCULATE PHASES */ /* A 2-step cycle is performed on the first pulse (90 degrees) to suppress axial peaks in the first instance. Second, the 2-step F2 quadrature image suppression subcycle is added to all pulse phases and receiver phase. Finally, a 2-step cycle is performed on the spin-lock pulses. */ mod2(v13, v13); dbl(v1, v1); incr(v1); hlv(v2, v2); mod2(v2, v2); dbl(v2, v2); incr(v2); add(v13, v2, v2); sub(v2, one, v3); add(two, v2, v4); add(two, v3, v5); add(v1, v13, v1); assign(v1, oph); if (phase1 == 2) incr(v1); if (phase1 == 3) add(v1, id2, v1); /*HYPERCOMPLEX MODE USES REDFIELD TRICK TO MOVE AXIAL PEAKS TO EDGE*/ if ((phase1==1)||(phase1==2)) { initval(2.0*(double)(d2_index%2),v6); add(v1,v6,v1); add(oph,v6,oph); } /* CALCULATE AND INITIALIZE LOOP COUNTER */ if (pw > 0.0) { cycles = (mix - trim) / (64.66*pw+32*window); cycles = 2.0*(double) (int) (cycles/2.0); } else { cycles = 0.0; } initval(cycles, v9); /* V9 is the MIX loop count */ /* BEGIN ACTUAL PULSE SEQUENCE CODE */ status(A); obspower(p1lvl); if (sspul[0] == 'y') { rgpulse(1000*1e-6, zero, rof1, 0.0e-6); rgpulse(1000*1e-6, one, 0.0e-6, rof1); } hsdelay(d1); if (satmode[A] == 'y') { obspower(satpwr); rgpulse(satdly,zero,rof1,rof2); obspower(p1lvl);} status(B); rgpulse(p1, v1, rof1, 1.0e-6); if (satmode[B] =='y') { if (d2 > 0.0) { obspower(satpwr); rgpulse(d2 - (2*POWER_DELAY) - 1.0e-6 - (2*p1/3.1416),zero,0.0,0.0); } } else { if (d2 > 0.0) delay(d2 - POWER_DELAY - 1.0e-6 - (2*p1/3.1416)); } rcvroff(); obsunblank(); obspower(tpwr); txphase(v3); xmtron(); delay(trim); if (cycles > 1.0) { starthardloop(v9); mleva(window); mleva(window); mlevb(window); mlevb(window); mlevb(window); mleva(window); mleva(window); mlevb(window); mlevb(window); mlevb(window); mleva(window); mleva(window); mleva(window); mlevb(window); mlevb(window); mleva(window); rgpulse(.66*pw,v3,rof1,rof2); endhardloop(); } txphase(v13); xmtroff(); /* detection */ delay(rof2); rcvron(); obsblank(); status(C); }
pulsesequence() { /* DECLARE AND LOAD VARIABLES */ char f1180[MAXSTR], /* Flag to start t1 @ halfdwell */ CT[MAXSTR], refocN15[MAXSTR], refocCO[MAXSTR], COshape[MAXSTR], C180shape[MAXSTR]; int t1_counter,icosel; /* used for states tppi in t1 */ double tau1, /* t1 delay */ tauch = getval("tauch"), /* 1/4J evolution delay */ tauch1 = getval("tauch1"), /* 1/4J or 1/8JC13H evolution delay */ timeCC = getval("timeCC"), /* 13C constant-time if needed*/ corrD, corrB, /* small correction delays */ dof_dec = getval("dof_dec"), /*decoupler offset for decoupling during acq - folding */ pwClvl = getval("pwClvl"), /* power for hard C13 pulses */ pwC180lvl = getval("pwC180lvl"), /*power levels for 180 shaped pulse */ pwC180lvlF = getval("pwC180lvlF"), pwC = getval("pwC"), /* C13 90 degree pulse length at pwClvl */ pwC180 = getval("pwC180"), /* shaped 180 pulse on C13channl */ sw1 = getval("sw1"), pwNlvl = getval("pwNlvl"), pwN = getval("pwN"), pwCOlvl = getval("pwCOlvl"), pwCO = getval("pwCO"), gstab = getval("gstab"), gstab1 = getval("gstab1"), /* recovery for club sandwitch, short*/ gt0 = getval("gt0"), gt1 = getval("gt1"), gt2 = getval("gt2"), gt3 = getval("gt3"), /* other gradients */ gt4 = getval("gt4"), gt5 = getval("gt5"), gt9 = getval("gt9"), gzlvl0 = getval("gzlvl0"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gzlvl4 = getval("gzlvl4"), gzlvl5 = getval("gzlvl5"), gzlvl9 = getval("gzlvl9"); getstr("f1180",f1180); getstr("C180shape",C180shape); getstr("COshape",COshape); getstr("refocCO",refocCO); getstr("refocN15",refocN15); getstr("CT",CT); /* LOAD PHASE TABLE */ settable(t2,2,phi2); settable(t3,1,phi3); settable(t4,1,phi4); settable(t10,1,phix); settable(t11,4,rec); /* INITIALIZE VARIABLES */ /* CHECK VALIDITY OF PARAMETER RANGES */ /* like in olde good times */ if((dm[A] == 'y' || dm[B] == 'y')) { text_error("incorrect dec1 decoupler flags! Should be 'nnn' or 'nny' "); psg_abort(1); } if((dm2[A] != 'n' || dm2[B] != 'n' || dm2[C] != 'n')) { text_error("incorrect dec2 decoupler flags! Should be 'nnn' "); psg_abort(1); } if( dpwr2 > 45 ) { text_error("don't fry the probe, DPWR2 too large! "); psg_abort(1); } if( dpwr > 50 ) { text_error("don't fry the probe, DPWR too large! "); psg_abort(1); } if( (pw > 30.0e-6) ) { text_error("don't fry the probe, pw too high ! "); psg_abort(1); } if( (pwC > 200.0e-6) ) { text_error("don't fry the probe, pwC too high ! "); psg_abort(1); } /* PHASES AND INCREMENTED TIMES */ /* Phase incrementation for hypercomplex 2D data, States-TPPI-Haberkorn element */ if (phase1 == 1) { tsadd(t10,2,4); icosel = +1; } else { icosel = -1; } /* Calculate modifications to phases for States-TPPI acquisition */ if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t2,2,4); tsadd(t11,2,4); } /* Set up f1180 */ tau1 = d2; if((f1180[A] == 'y') && (ni > 0.0)) { tau1 += ( 1.0 / (2.0*sw1) ); if(tau1 < 0.2e-6) tau1 = 0.0; } tau1 = tau1/2.0; if(CT[A]=='y') { refocN15[A]='y'; refocCO[A]='y'; if ( (timeCC-ni/sw1*0.5)*0.5 -pw -pwCO*0.5 -pwN-rof1 <0.2e-6 ) { text_error("too many increments in t1 for a constant time"); psg_abort(1); } } /*temporary*/ /* correction delays */ corrB=0.0; corrD=2.0/M_PI*pwC-pw-rof1; if (corrD < 0.0) { corrB=-corrD; corrD=0.0; } /* BEGIN PULSE SEQUENCE */ status(A); obsoffset(tof); obspower(tpwr); decpower(pwClvl); decpwrf(4095.0); decoffset(dof); obspwrf(4095.0); delay(d1); txphase(zero); decphase(zero); decrgpulse(pwC, zero, rof1, rof1); zgradpulse(gzlvl0, gt0); delay(2.0*gstab); delay(5.0e-3); /************ H->C13 */ txphase(zero); decphase(zero); rgpulse(pw,zero,rof1,rof1); decpower(pwC180lvl); decpwrf(pwC180lvlF); delay(gstab); zgradpulse(gzlvl5, gt5); delay(tauch - gt5 -gstab); simshaped_pulse("hard",C180shape,2.0*pw,pwC180,zero,zero, 0.0, 0.0); decpower(pwClvl); decpwrf(4095.0); txphase(one); delay(tauch - gt5-gstab); zgradpulse(gzlvl5, gt5); delay(gstab); rgpulse(pw, one, rof1,rof1); /*** purge */ dec2power(pwNlvl); dec2pwrf(4095.0); txphase(zero); decphase(t2); delay(gstab); zgradpulse(gzlvl2, gt2); delay(3.0*gstab); /* evolution on t1 */ /* real time here */ if(CT[A]=='n') { decrgpulse(pwC, t2, 0.0, 0.0); decphase(zero); decpower(pwC180lvl); decpwrf(pwC180lvlF); delay(tau1); obsunblank(); rgpulse(pw,one,rof1,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,rof1); obsblank(); if(refocN15[A]=='y') dec2rgpulse(2.0*pwN,zero,0.0,0.0); /*n15 refocusing */ if(refocCO[A]=='y') { decpower(pwCOlvl); decshaped_pulse(COshape,pwCO,zero, 3.0e-6, 3.0e-6); decpower(pwC180lvl); } delay(tau1); /*************** CODING with CLUB sandwitches and BIPS */ zgradpulse(gzlvl3*icosel, gt3); delay(gstab1); decshaped_pulse(C180shape,pwC180,zero, 0.0, 0.0); zgradpulse(-gzlvl3*icosel, gt3); delay(gstab1 +rof1*2.0+pw*4.0 +pwC*4.0/M_PI +2.0*POWER_DELAY+2.0*PWRF_DELAY); if(refocN15[A]=='y') delay(2.0*pwN); /*n15 refocusing */ if(refocCO[A]=='y') /* ghost CO pulse */ { decpower(pwCOlvl); decshaped_pulse(COshape,pwCO,zero, 3.0e-6, 3.0e-6); decpower(pwC180lvl); } zgradpulse(-gzlvl3*icosel, gt3); delay(gstab1); decshaped_pulse(C180shape,pwC180,zero, 0.0, 0.0); zgradpulse( gzlvl3*icosel, gt3); decpower(pwClvl); decpwrf(4095.0); delay(gstab1); } /* end of if bracket for real-time */ /*^^^^^^^ end of real time */ /* CONSTANT TIME VESION: */ if(CT[A]=='y') { decrgpulse(pwC, t2, 0.0, 0.0); /* timeCC-t1 evolution */ decpower(pwC180lvl); decpwrf(pwC180lvlF); delay((timeCC-tau1)*0.5 -2.0*pw -pwCO*0.5 -pwN-rof1); obsunblank(); rgpulse(pw,one,rof1,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,rof1); obsblank(); if(refocN15[A]=='y') dec2rgpulse(2.0*pwN,zero,0.0,0.0); /*n15 refocusing */ if(refocCO[A]=='y' ) { decpower(pwCOlvl); decshaped_pulse(COshape,pwCO,zero, 3.0e-6, 3.0e-6); decpower(pwC180lvl); } delay((timeCC-tau1)*0.5 -2.0*pw -pwCO*0.5 -pwN-rof1); /* end of timeCC-t1 evolution */ /* 180 on carbons in T1 */ decshaped_pulse(C180shape,pwC180,zero, 0.0, 0.0); /* timeCC+t1 evolution + encoding */ delay((timeCC+tau1)*0.5 -2.0*pw -pwCO*0.5 -pwN -rof1); obsunblank(); rgpulse(pw,one,rof1,0.0); rgpulse(2.0*pw,zero,0.0,0.0); rgpulse(pw,one,0.0,rof1); obsblank(); if(refocN15[A]=='y') dec2rgpulse(2.0*pwN,zero,0.0,0.0); /*n15 refocusing */ if(refocCO[A]=='y' ) { decpower(pwCOlvl); decshaped_pulse(COshape,pwCO,zero, 3.0e-6, 3.0e-6); decpower(pwC180lvl); } delay((timeCC+tau1)*0.5 -2.0*pw -pwCO*0.5 -pwN -rof1); zgradpulse(-gzlvl3*icosel, gt3*2.0); /* coding */ delay(gstab +pwC*4.0/M_PI); decshaped_pulse(C180shape,pwC180,zero, 2e-6, 2e-6); /* ghost BIP pulse */ zgradpulse(gzlvl3*icosel, gt3*2.0); /* coding */ delay(gstab); } /*^^^^^^^ end of CONSTANT time bracket*/ /*reverse INPET */ simpulse(pw, pwC, zero, t10, 0.0, 0.0); delay(gstab); zgradpulse(gzlvl4,gt4); decpower(pwC180lvl); decpwrf(pwC180lvlF); delay(tauch - gt4 - gstab -corrD-pwC180 -POWER_DELAY-PWRF_DELAY); decshaped_pulse(C180shape,pwC180,zero, 0.0, 0.0); delay(corrD); rgpulse(2.0*pw,zero,rof1,rof1); zgradpulse(gzlvl4,gt4); delay(tauch - gt4 - gstab -corrB-pwC180 -POWER_DELAY-PWRF_DELAY); delay(gstab); decphase(one); txphase(one); decshaped_pulse(C180shape,pwC180,zero, 0.0, 0.0); decpower(pwClvl); decpwrf(4095.0); delay(corrB); simpulse(pw, pwC, one, one, 0.0, 0.0); decpower(pwC180lvl); decpwrf(pwC180lvlF); delay(gstab-POWER_DELAY-PWRF_DELAY -WFG_START_DELAY); zgradpulse(gzlvl5,gt5); delay(tauch1 - gt5 - gstab); simshaped_pulse("hard",C180shape,2.0*pw,pwC180,zero,zero, 0.0, 0.0); delay(tauch1- gt5 - gstab - WFG_STOP_DELAY); zgradpulse(gzlvl5,gt5); delay(gstab-rof1); rgpulse(pw, zero,rof1,rof1); /* echo and decoding */ delay(gstab+gt9-rof1+10.0e-6 + 2.0*POWER_DELAY+PWRF_DELAY +2.0*GRADIENT_DELAY); decoffset(dof_dec); rgpulse(2.0*pw, zero,rof1,rof1); delay(10.0e-6); zgradpulse(gzlvl9,gt9); decpower(dpwr); decpwrf(4095.0); decoffset(dof_dec); dec2power(dpwr2); /* POWER_DELAY EACH */ delay(gstab); status(C); setreceiver(t11); }
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() { // 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 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(); }
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(); }
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() { /* Internal variable declarations *********************/ char txphase[MAXSTR]; char rxphase[MAXSTR]; char blankmode[MAXSTR]={0}; double postDelay; double rfDuration; double acqt; int i,ret=-1; static int phs1[4] = {0,2,1,3}; /* from T1meas.c */ /*************************************************/ /* Initialize paramter **************************/ i = 0; postDelay = 0.5; acqt = 0.0; getstr("rxphase",rxphase); getstr("txphase",txphase); ret = P_getstring(GLOBAL,"blankmode",blankmode,1,MAXSTR); //getparm("blankmode","string",GLOBAL,blankmode,MAXSTR); postDelay = tr - at; //printf("blankmode=%s\n",blankmode); /*************************************************/ /* check phase setting ***************************/ if ( (txphase[0] =='n') && (rxphase[0] =='n') ) { abort_message("ERROR - Select at least one phase [Tx or Rx]\n"); } /**************************************************/ /* check pulse width *****************************/ rfDuration = shapelistpw(p1pat, p1); /* assign exitation pulse duration */ acqt = rfDuration + rof1 - alfa; if (FP_GT(acqt, at)) { abort_message("Pulse duration too long. max [%.3f] ms\n",(at-rof1+alfa)*1000.0); } if(ret==0 && blankmode[0]=='u') obsunblank(); delay(postDelay); settable(t1,4,phs1); /*from T1meas.c */ getelem(t1,ct,v11); /*from T1meas.c */ setreceiver(t1); /*==============================================*/ /* START LOOPBACK PULSE SEQUENCE */ /*==============================================*/ status(A); obsoffset(resto); /* TTL trigger to scope sequence ****************************/ sp1on(); /* Relaxation delay ***********************************/ xgate(ticks); /* RF pulse *******************************************/ obspower(tpwr); obspwrf(tpwrf); ShapedXmtNAcquire(p1pat, rfDuration, v11, rof1, OBSch); endacq(); sp1off(); if(ret==0 && blankmode[0]=='u') obsunblank(); }
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(); }
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() { // 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() { double gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gt1 = getval("gt1"), gt2 = getval("gt2"), satdly = getval("satdly"), mix = getval("mix"), pwNlvl = getval("pwNlvl"), pwN = getval("pwN"), pwClvl = getval("pwClvl"), pwC = getval("pwC"), scubad = getval("scubad"); int iphase = (int) (getval("phase") + 0.5); char sspul[MAXSTR],mfsat[MAXSTR],scuba[MAXSTR], C13refoc[MAXSTR],N15refoc[MAXSTR],CNrefoc[MAXSTR]; getstr("C13refoc",C13refoc); getstr("N15refoc",N15refoc); getstr("CNrefoc",CNrefoc); getstr("mfsat",mfsat); getstr("sspul", sspul); getstr("scuba",scuba); loadtable("tnnoesy"); sub(ct,ssctr,v12); getelem(t1,v12,v1); getelem(t2,v12,v2); getelem(t3,v12,v5); getelem(t4,v12,v8); getelem(t5,v12,v9); getelem(t6,v12,oph); assign(zero,v3); assign(one,v4); if (iphase == 2) {incr(v1); incr(v2); incr(v3); incr(v4);} /* HYPERCOMPLEX MODE USES REDFIELD TRICK TO MOVE AXIAL PEAKS TO EDGE */ initval(2.0*(double)(((int)(d2*getval("sw1")+0.5)%2)),v6); if ((iphase==1)||(iphase==2)) {add(v1,v6,v1); add(v2,v6,v2); add(oph,v6,oph); add(v3,v6,v3); add(v4,v6,v4);} /* CHECK CONDITIONS */ if ((dm[A]=='y') || (dm[B] == 'y') || (dm[C] == 'y')) { abort_message("Set dm to be nnnn or nnny"); } if ((dm2[A]=='y') || (dm2[B] == 'y') || (dm2[C] == 'y')) { abort_message("Set dm2 to be nnnn or nnny"); } /* BEGIN THE ACTUAL PULSE SEQUENCE */ decpower(pwClvl); dec2power(pwNlvl); if (CNrefoc[A] == 'y') { decpower(pwClvl-3.0); pwC=1.4*pwC; dec2power(pwNlvl-3.0); pwN=1.4*pwN; } if (sspul[A] == 'y') { zgradpulse(gzlvl1,gt1); delay(1.0e-4); rgpulse(pw,zero,rof1,rof1); zgradpulse(gzlvl1,gt1); delay(1.0e-4); } status(A); if (satmode[A] == 'y') { if (d1 > satdly) delay(d1 - satdly); if (mfsat[A] == 'y') {obsunblank(); mfpresat_on(); delay(satdly); mfpresat_off(); obsblank();} else { obspower(satpwr); rgpulse(satdly,v1,rof1,rof1); } obspower(tpwr); if (scuba[0] == 'y') { rgpulse(pw,v3,2.0e-6,0.0); rgpulse(2.0*pw,v4,2.0e-6,0.0); rgpulse(pw,v3,2.0e-6,0.0); delay(scubad/2.0); rgpulse(pw,v3,2.0e-6,0.0); rgpulse(2.0*pw,v4,2.0e-6,0.0); rgpulse(pw,v3,2.0e-6,0.0); delay(scubad/2.0); } } else delay(d1); obsstepsize(45.0); initval(7.0,v7); xmtrphase(v7); status(B); rgpulse(pw,v2,rof1,0.0); xmtrphase(zero); if (d2>0.0) { if ((C13refoc[A] == 'n') && (N15refoc[A] == 'n') && (CNrefoc[A] == 'n')) { delay(d2-4.0*pw/PI-SAPS_DELAY-rof1); } else if ((C13refoc[A] == 'n') && (N15refoc[A] == 'n') && (CNrefoc[A] == 'y')) { if (pwN > 2.0*pwC) { if (d2/2.0 > (pwN +0.64*pw+rof1)) { delay(d2/2.0-pwN-0.64*pw-SAPS_DELAY); dec2rgpulse(pwN-2.0*pwC,zero,0.0,0.0); sim3pulse(0.0,pwC,pwC, zero,zero,zero, 0.0, 0.0); sim3pulse(0.0,2.0*pwC,2.0*pwC, zero,one,zero, 0.0, 0.0); sim3pulse(0.0,pwC,pwC, zero,zero,zero, 0.0, 0.0); dec2rgpulse(pwN-2.0*pwC,zero,0.0,0.0); delay(d2/2.0-pwN-0.64*pw-rof1); } else delay(d2-4.0*pw/PI-SAPS_DELAY-rof1); } else { if (d2/2.0 > (pwN +pwC+ 0.64*pw+rof1)) { delay(d2/2.0-pwN-pwC-0.64*pw-SAPS_DELAY); decrgpulse(pwC,zero,0.0,0.0); sim3pulse(0.0,2.0*pwC,2.0*pwN, zero,one,zero, 0.0, 0.0); decrgpulse(pwC,zero,0.0,0.0); delay(d2/2.0-pwN-pwC-0.64*pw-rof1); } else delay(d2-4.0*pw/PI-SAPS_DELAY-rof1); } } else if ((C13refoc[A] == 'n') && (N15refoc[A] == 'y') && (CNrefoc[A] == 'n')) { if (d2/2.0 > (pwN + 0.64*pw+rof1)) { delay(d2/2.0-pwN-0.64*pw-SAPS_DELAY); dec2rgpulse(2.0*pwN, zero, 0.0, 0.0); delay(d2/2.0-pwN-0.64*pw-rof1); } else delay(d2-1.28*pw-SAPS_DELAY-rof1); } else if ((C13refoc[A] == 'y') && (N15refoc[A] == 'n') && (CNrefoc[A] == 'n')) { if (d2/2.0 > (2.0*pwC + 0.64*pw +rof1)) { delay(d2/2.0-2.0*pwC-0.64*pw-SAPS_DELAY); decrgpulse(pwC,zero,0.0,0.0); decrgpulse(2.0*pwC, one, 0.0, 0.0); decrgpulse(pwC,zero,0.0,0.0); delay(d2/2.0-2.0*pwC-0.64*pw-rof1); } else delay(d2-1.28*pw-SAPS_DELAY -rof1); } else { abort_message("C13refoc, N15refoc, and CNrefoc must be nnn, nny, nyn, or ynn"); } } rgpulse(pw,v5,rof1,1.0e-6); status(C); decpower(dpwr); dec2power(dpwr2); if (satmode[C] == 'y') { if (mfsat[C] == 'y') {obsunblank(); mfpresat_on(); delay(mix*0.7); mfpresat_off(); obsblank(); zgradpulse(gzlvl2,gt2); obsunblank(); mfpresat_on(); delay(mix*0.3-gt2); mfpresat_off(); obsblank();} else { obspower(satpwr); rgpulse(mix*0.7,v8,rof1,rof1); zgradpulse(gzlvl2,gt2); rgpulse(mix*0.3-gt2,v8,rof1,rof1); } obspower(tpwr); } else { delay(mix*0.7); zgradpulse(gzlvl2,gt2); delay(mix*0.3-gt2); } status(D); rgpulse(pw,v9,rof1,rof2); /* Phase cycle: .satdly(t1)..pw(t2)..d2..pw(t3)..mix(t4)..pw(t5)..at(t6) (for phase=1; for phase=2 incr t1 + t2; for TPPI add two to t1,t2,t6) t1 = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 t2 = 2 0 2 0 2 0 2 0 3 1 3 1 3 1 3 1 2 0 2 0 2 0 2 0 3 1 3 1 3 1 3 1 t3 = 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 t4 = 3 3 1 1 0 0 2 2 0 0 2 2 1 1 3 3 3 3 1 1 0 0 2 2 0 0 2 2 1 1 3 3 t5 = 0 0 2 2 1 1 3 3 1 1 3 3 2 2 0 0 0 0 2 2 1 1 3 3 1 1 3 3 2 2 0 0 t6 = 0 2 2 0 1 3 3 1 1 3 3 1 2 0 0 2 2 0 0 2 3 1 1 3 3 1 1 3 0 2 2 0 */ }
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() { char autocal[MAXSTR], shname1[MAXSTR], shname2[MAXSTR], ipap_flg[MAXSTR], ab_flg[MAXSTR], f1180[MAXSTR], SE[MAXSTR], /*Use Sensitivity Enhancement */ c13refoc[MAXSTR], refpat[MAXSTR], /* pulse shape pattern refocus. pulse*/ hetsofast_flg[MAXSTR], grad3_flg[MAXSTR]; /*gradient flag */ int t1_counter, phase; double d2_init=0.0, pwS,pwS1,pwS2, tpwrsf = getval("tpwrsf"), adjust = getval("adjust"), gzlvl1 = getval("gzlvl1"), gzlvl2 = getval("gzlvl2"), gzlvl3 = getval("gzlvl3"), gstab = getval("gstab"), gt1 = getval("gt1"), gt2 = getval("gt2"), gt3 = getval("gt3"), shlvl1 = getval("shlvl1"), shlvl2 = getval("shlvl2"), shdmf2 = getval("shdmf2"), shbw = getval("shbw"), shpw1 = getval("shpw1"), shpw2 = getval("shpw2"), shpw3 = 0.0, shofs = getval("shofs"), flipangle = getval("flipangle"), pwNlvl = getval("pwNlvl"), pwN = getval("pwN"), dpwr2 = getval("dpwr2"), d2 = getval("d2"), tau1, taunh = 1.0/(2.0*getval("JNH")); void compo_pulse(); void compo1_pulse(); void makeshape_pc9(); void makeshape_refoc(); void makeshape_ndec(); getstr("autocal",autocal); getstr("f1180",f1180); getstr("c13refoc",c13refoc); getstr("hetsofast_flg",hetsofast_flg); getstr("refpat", refpat); /* pulse pattern refocussing pulse */ getstr("ipap_flg",ipap_flg); getstr("grad3_flg",grad3_flg); getstr("ab_flg",ab_flg); getstr("SE",SE); getstr("shname1",shname1); getstr("shname2",shname2); pwS = c_shapedpw("sech",200.0,0.0,zero, 0.0, 0.0); pwS1 = hn_simshapedpw(refpat,shbw,shofs-4.8,"isnob3",50.0,0.0, zero, zero, 0.0, 0.0); pwS2 = h_shapedpw(refpat,shbw,3.5,zero, 0.0, 0.0); if (hetsofast_flg[0] == 'a') shpw3 = h_shapedpw("isnob5",4.0,-3.0,two, 2.0e-6, 2.0e-6); if (hetsofast_flg[0] == 'b') shpw3 = h_shapedpw("gaus180",0.015,0.0,two, 2.0e-6, 2.0e-6); phase = (int) (getval("phase") + 0.5); settable(t1,2,phi1); settable(t2,2,phi2); if (autocal[0] == 'y') { (void) makeshape_pc9(flipangle, shbw, shofs); /*create pc9 pulse*/ sh90 = getRsh("hn_pc9"); shpw1 = sh90.pw; shlvl1 = sh90.pwr; sprintf(shname1,"hn_pc9"); (void) makeshape_refoc(refpat, shbw, shofs); /* create refocussing pulse */ shref = getDsh("hn_refoc"); shpw2 = shref.pw; shlvl2 = shref.pwr; shdmf2 = shref.dmf; sprintf(shname2,"hn_refoc"); if (dmm2[2] == 'p') /* waveform capability present on channel 3 */ { (void) makeshape_ndec(); /* create n15 wurst decoupling */ shdec = getDsh("hncompdec"); dpwr2 = shdec.pwr; dmf2 = shdec.dmf; dres2 = shdec.dres; sprintf(dseq2,"hncompdec"); } } if (tpwrsf <4095.0) shlvl2 = shlvl2+6.0; if (phase == 1) ; if (phase == 2) tsadd(t1,1,4); 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; if (f1180[0] == 'y') tau1 = tau1-pwN*4.0/3.0; if( ix == 1) d2_init = d2; t1_counter = (int) ( (d2-d2_init)*sw1 + 0.5 ); if(t1_counter % 2) { tsadd(t1,2,4); tsadd(t2,2,4); } status(A); decoffset(dof); dec2power(pwNlvl); dec2offset(dof2); obsoffset(tof); obspower(tpwr); /**********************************************/ if (hetsofast_flg[0] != 'n') { if (hetsofast_flg[0] == 'a') h_shapedpulse("isnob5",4.0,-3.0,two, 2.0e-6, 2.0e-6); if (hetsofast_flg[0] == 'b') h_shapedpulse("gaus180",0.015,0.0,two, 2.0e-6, 2.0e-6); zgradpulse(gzlvl2, gt2); delay(gstab); delay(d1-gt2-shpw3); lk_hold(); } else { zgradpulse(gzlvl2, gt2); delay(gstab); delay(d1-gt2); lk_hold(); } obspower(shlvl1); shaped_pulse(shname1,shpw1,zero,2.0e-4,2.0e-6); if (SE[0] == 'y') { if (ipap_flg[0] == 'y') { if ((tau1+pwN*2.0) < pwS2) delay((pwS2*0.5-tau1*0.5-pwN)*0.5); if (grad3_flg[0]== 'y') delay(taunh*0.5-shpw1*0.533-pwS1*0.5+(gt3*2.0+2.0*gstab+pwN*3.0)); else delay(taunh*0.5-shpw1*0.533-pwS1*0.5+pwN); hn_simshapedpulse(refpat,shbw,shofs-4.8,"bip720_50_20",40.0,0.0, zero, zero, 0.0, 0.0); obspower(shlvl2); obspwrf(4095.0); compo1_pulse(shname2,shpw2,pwN,shdmf2,t1,tau1,c13refoc,pwS,taunh,pwS1,pwS2,gt1,gt3,gzlvl3,grad3_flg,gstab); obspower(shlvl2); obspwrf(4095.0); zgradpulse(gzlvl1, gt1); delay(gstab); h_sim3shapedpulse(refpat,shbw,shofs-4.8,0.0,2.0*pwN, one, zero, zero, 0.0, 0.0); zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh*0.5-gt1-gstab-POWER_DELAY-pwS1*0.5); if ((tau1+pwN*2.0) < pwS2) delay((pwS2*0.5-tau1*0.5-pwN)*0.5); if (ab_flg[0] == 'a') dec2rgpulse(pwN,one,0.0,0.0); else dec2rgpulse(pwN,three,0.0,0.0); if (grad3_flg[0]== 'y') { delay(gt3+gstab); dec2rgpulse(pwN*2.0,zero,0.0,0.0); zgradpulse(gzlvl3,gt3); delay(gstab); } } else { zgradpulse(gzlvl1, gt1); delay(gstab); if ((tau1+pwN*2.0) < pwS2) delay(taunh-gt1-gstab-shpw1*0.533-adjust-(pwS2*0.5-tau1*0.5-pwN)*0.5); else delay(taunh-gt1-gstab-shpw1*0.533-adjust); obspower(shlvl2); obspwrf(tpwrsf); compo_pulse(shname2,shpw2,pwN,shdmf2,t1,tau1,c13refoc,pwS); obspower(shlvl1); obspwrf(4095.0); zgradpulse(gzlvl1, gt1); delay(gstab); if ((tau1+pwN*2.0) < pwS2) delay(taunh-gt1-gstab-POWER_DELAY-(pwS2*0.5-tau1*0.5-pwN)*0.5); else delay(taunh-gt1-gstab-POWER_DELAY); } } else { if ((ni == 0) || (ni == 1)) { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-WFG_START_DELAY+pwN*4.0-shpw1*0.533-adjust); obspwrf(tpwrsf); obspower(shlvl2); xmtrphase(zero); xmtron(); obsunblank(); obsprgon(shname2,1/shdmf2,9.0); delay(shpw2); obsprgoff(); obsblank(); xmtroff(); obspower(shlvl2); obspwrf(4095.0); dec2rgpulse(pwN,t1,0.0,0.0); dec2rgpulse(pwN*2.0,zero,0.0,0.0); dec2rgpulse(pwN,zero,0.0,0.0); } else { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-shpw1*0.533-adjust); obspower(shlvl2); obspwrf(tpwrsf); compo_pulse(shname2,shpw2,pwN,shdmf2,t1,tau1,c13refoc,pwS); obspower(shlvl1); obspwrf(4095.0); } if (ipap_flg[0] == 'y') { if (ab_flg[0] == 'b') { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-pwN-POWER_DELAY); dec2rgpulse(pwN,one,0.0,0.0); } else { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh*0.5-gt1-pwN-gstab); dec2rgpulse(pwN*2.0,zero,0.0,0.0); delay(taunh*0.5-pwN-POWER_DELAY); } } else { zgradpulse(gzlvl1, gt1); delay(gstab); delay(taunh-gt1-gstab-POWER_DELAY); } } dec2power(dpwr2); lk_sample(); setreceiver(t2); status(C); }
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(); }
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(); }