;h2bc_one ;avance-version (2005-09-20) ; ;H2BC_ONE: Interleaved std + up-down, one piH-pulse ;Heteronuclear two-bond correlation ;Constant time experiment, ;phase sensitive using Echo/Antiecho gradient selection, ;with two/three-fold low-pass J-filters ;with multiplicity editing ; ;Nils T. Nyberg, Jens Ø. Duus, Ole W. Sørensson ;J. Am. Chem. Soc. 127, 6154-6155 (2005) ;MRC, 2005 [DOI: 10.1002/mrc.1698] ; ;Pulse Program Library ;Carlsberg Research Center ; ; DISCLAIMER ; This pulse sequence is tested and working on our spectrometers, but ; adjustments in pulse program syntax and/or parameter sets may be necessary on ; other hardware configurations or systems. Please pay attention to the ; requirements of your system, when implementing pulse sequences from this ; library. Carlsberg Laboratory or the Instrument Center does not make any ; warranties with respect to the software. In no event will Carlsberg Laboratory ; or the Instrument Center be liable for any loss, damages of any nature arising ; or relating to the use or performance of the software. ; ;Copyright (c), 2005, Carlsberg Research Center ;All rights reserved #include #include #include #define MYGRAD(x,y,z) 50u y \n p16:x \n d16 z #ifndef LPJF2 ; With third order low-pass J-filter subroutine LPJFSTD:H2BC(delay LPa, delay LPb, delay LPc, delay LPd) { MYGRAD(gp2*0.3, , ); LPa (p3 ph5):f2 MYGRAD(gp2*0.7, , ); LPb (center (p2 ph10):f1 (p3 ph5):f2) MYGRAD(gp4, ,pl12:f2); LPc LPd cpd2:f2 } subroutine LPJFUD:H2BC(delay LPa, delay LPb, delay LPc, delay LPd) { MYGRAD(gp3*0.3, , ); LPa (p3 ph5):f2 MYGRAD(gp3*0.7, , ); LPb (center (p2 ph10):f1 (p3 ph5):f2) MYGRAD(gp4, ,pl12:f2); LPc LPd cpd2:f2 } #endif #ifdef LPJF2 ; With second order low-pass J-filter subroutine LPJFSTD:H2BC(delay LPa, delay LPb, delay LPc, delay LPd) { MYGRAD(gp2, , ); LPa (center (p2 ph10):f1 (p3 ph5):f2) MYGRAD(gp4, ,pl12:f2); LPc LPd cpd2:f2 } subroutine LPJFUD:H2BC(delay LPa, delay LPb, delay LPc, delay LPd) { MYGRAD(gp3, , ); LPa (center (p2 ph10):f1 (p3 ph5):f2) MYGRAD(gp4, ,pl12:f2); LPc LPd cpd2:f2 } #endif ; Defined lists, delays and counters define list EA1 = {1.0000 -1.0000} define delay D0MAX define delay TMIN define delay DECDUR define delay LP1 define delay LP2 define delay LP3 define delay LP4 define delay TAUC1 define delay TAUC2 define delay TAUC3 define delay TAUC4 define loopcounter TD1MAX ; Default/initial settings #ifndef SUB "l31 = 0" ; row counter, first row = 0 "l1 = 2" "l3 = td1/(2*l1)" #endif #ifdef SUB "l1 = 1" "l3 = td1/(2*l1)" #endif "d0 = 3u" "d11 = 30m" "d12 = 20u" "in27 = in0" "in28 = in0" "in29 = in0" "in30 = in0" "p2 = p1*2" "p4 = p3*2" "DELTA = 50u + p16 + d16" ; gradient duration "DELTA1= 2*d0 + p2" ; with correction "TAU = (1s/(cnst6 + cnst8))" ; Tau "TAU2 = (1s/(cnst6 + cnst8))" ; Tau2 = Tau #ifndef LPJF2 "TAU1 = (1s/((cnst6 + 0.07*(cnst8 - cnst6))*2))" ; Tau1 "TAU3 = (1s/((cnst8 - 0.07*(cnst8 - cnst6))*2))" ; Tau3 "LP1 = TAU3 - DELTA" ; LPF "LP2 = TAU2 - DELTA - p3 - 0.5*larger(p2,p3)" ; LPF "LP3 = TAU1 - DELTA - 0.5*larger(p2,p3) - de" ; LPF "LP4 = TAU2 + TAU3 - TAU1 - de" ; LPF #endif #ifdef LPJF2 "TAU1 = (1s/((cnst6 + 0.146*(cnst8 - cnst6))*2))" ; Tau1 "TAU3 = (1s/((cnst8 - 0.146*(cnst8 - cnst6))*2))" ; Tau3 "LP1 = TAU1 - DELTA" ; LPF "LP2 = 0" ; not used "LP3 = TAU3 - DELTA - larger(p2,p3) - de" ; LPF "LP4 = TAU1 - TAU3 - de" ; LPF, TAU1 > TAU3 #endif "TAUC1 = TAU + p2/2 + d0" "TAUC2 = TAU - p2/2 - d0 - DELTA" "TAUC3 = TAU - DELTA" "TAUC4 = TAU/2" ; Decoupling will take place during these four delays ; STD: d27 + d28 ; UP: d29 + d30 "d27 = cnst15/2 - (TAU + p3 + p2/2 + d0)" "d28 = cnst15/2 - (TAU + 2*DELTA + p4 + p3 + p2 + p2/2 + 3*d0 + 2*d12)" "d29 = cnst15/2 - (2*TAU + p4 + p3 + p2 + 2*d0)" "d30 = cnst15/2 - (2*TAU + p3 + 2*d12)" "D0MAX = d0 + (l3-1)*in0" ; max D0 #ifndef SUB "TMIN = cnst15 - 2*(d29 - D0MAX)" ; d29 is shortest "TD1MAX = 2*l1*(1 + (d29 - d0)/in0)" ; max td1 with curr. T "DECDUR = aq + d27 + d28" ; longest dec. duration #endif #ifdef SUB ; Calc. of TMIN & TD1MAX only valid for l31%2==0 (i.e., STD-experiment) "TMIN = cnst15 - 2*(d28 - D0MAX)" ; d28 is shortest "TD1MAX = 2*l1*(1 + (d28 - d0)/in0)" ; max td1 with curr. T "DECDUR = aq + d27 + d28" ; longest dec. duration #endif ; ---------------------------------------------------------------------------------- 1 ze ; --- The following delays are included in the --- ; --- program so that they are reported during --- ; --- the ASED-dialoge --- D0MAX ; Max D0-value TMIN ; cnst15 must be >= this value DECDUR ; Total decoupler time dummy, 1u lo to dummy times TD1MAX ; Max td1 with current cnst15 ; -------------------------------------- 2 d1 BLKGRAD do:f2 d12 pl12:f2 if "l31 %2 == 0" { ; --- STD --- (p1 ph10):f1 d27 cpd2:f2 TAUC4 do:f2 TAUC4 pl2:f2 (p3 ph2):f2 d0 (p2 ph10):f1 d0 MYGRAD(gp1*EA1, UNBLKGRAD, ); (p4 ph3):f2 MYGRAD(gp1*EA1*-1, , ); DELTA1 (p3 ph1):f2 TAU pl12:f2 d28 cpd2:f2 d12 do:f2 d12 pl2:f2 (p1 ph11):f1 (p3 ph4):f2 subr LPJFSTD:H2BC(LP1, LP2, LP3, LP4) } else { ; --- UD --- (p1 ph10):f1 d29 cpd2:f2 TAUC4 do:f2 TAUC4 pl2:f2 (p3 ph2):f2 TAUC1 (p4 ph3):f2 d0 (p2 ph10):f1 d0 TAUC2 MYGRAD(gp1*EA1, UNBLKGRAD, ); (p3 ph1):f2 MYGRAD(gp1*EA1*-1, , pl12:f2); TAUC3 d30 cpd2:f2 d12 do:f2 d12 pl2:f2 (p1 ph11):f1 (p3 ph4):f2 subr LPJFUD:H2BC(LP1, LP2, LP3, LP4) } BOTH, go=2 ph31 d1 BLKGRAD do:f2 mc #0 to 2 #ifndef SUB F1I(iu31,2) #endif F1EA(igrad EA1, id0 & dd27 & dd28 & dd29 & dd30) d11 do:f2 BLKGRAD exit ; --- H phases ------------------------ ph10 = 0 ph11 = 1 ; --- X phases ------------------------ ph1 = 0 2 2 0 ph2 = 0 0 2 2 2 2 0 0 ph3 = 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 ph4 = {0}*16 {2}*16 ph5 = 0 ph6 = 1 ; --- Receiver phases ----------------- ph31 = 0 2 ;pl1 :f1 power level for pulse (default) ;pl2 :f2 power level for pulse (default) ;pl12 :f2 power level for CPD/BB decoupling ;p1 :f1 90 degree high power pulse ;p2 :f1 180 degree high power pulse ;p3 :f2 90 degree high power pulse ;p4 :f2 180 degree high power pulse ;p16 :gradient pulse ; ;d0 :increment delay (3usec) ;d1 :relaxation delay: 1-5*T1 ;d11 :delay for disk I/O [30 msec] ;d12 :delay for power switching [20 usec] ;d16 :delay for homospoil/gradient recovery [200 msec] ;d27 :First decoupling period for standard sequence ;d28 :Second decoupling period for standard sequence ;d29 :First decoupling period for up-down sequence ;d30 :Second decoupling period for up-down sequence ; ;TAU :1/(J(min) + J(max)) ;TAU1 :1/2(J(min)+k(J(max)-J(min)) ;TAU2 :1/(J(min) + J(max)) ;TAU3 :1/2(J(max)-k(J(max)-J(min)) ;DELTA :Gradient duration, p16 + d16 + 50u ;; ;cnst6 :1J(min), ~125 Hz ;cnst8 :1J(max), ~165 Hz ;cnst15 :T, ~0.018 sec ; ;l1 :No of subspectra ;l3 :EA1-loop counter, td1/l1 ;l31 :Row counter, first row = 0 ; :L31 = 0,2,4 Std ; :L31 = 1,3,5 Ud ; ;nd0 :2 ;MC2 :Echo-Antiecho ;EA1 :Echo-Antiecho gradient program, [+1 -1] ; ;pcpd2 :Pulse length for cpd on f2 [65 usec] ;cpdprg2 :Cpd-program [garp] ; ;gpnam1 :Gradient pulse 1 file name [SINE.100] ;gpnam2 :Gradient pulse 2 file name [SINE.100] ;gpnam3 :Gradient pulse 3 file name [SINE.100] ;gpnam4 :Gradient pulse 4 file name [SINE.100] ;gpz1 :Gradient strength 1 [80%] ;gpz2 :Gradient strength 2, 0.2514*gpz1 [20.11%] ;gpz3 :Gradient strength 3, 0.5028*gpz1 [40.23%] ;gpz4 :Gradient strength 4, 0.7543*gpz1 [60.34%] ; ;ns :2, 4, 8, 16, 32, .... ;ds :128 ;Processing: ;For interleaved experiment (not -DSUB as zgoption) ;Au-program splitcomb: Splits data into two, adds and subtracts ; splitil Just splits the data ; ; F2 : SSB = 2, WDW = SINE, PH_mod = pk ; F1 : SSB = 4, WDW = SINE, PH_mod = no ; FT : xfb; abs2; abs1; ; ;preprocessor-flags-start ;LPJF2 : Use a second order low-pass J-filter instead of third order (default) ; option -DLPJF2 (eda: ZGOPTNS) ;SUB : Do either Standard (l31 = 0) or Up-down (l31 = 1) experiment ; option -DSUB ;preprocessor-flags-end