This NMR pulse program is for Bruker Avance spectrometers.
; stmas3eae.gf
; z-filtered STMAS in echo/anti-echo acquisition mode
; 1D and 2D version
; reference:
; J.-P. Amoureux, L. Delevoye, G. Fink, F. Taulelle, A. Flambard,
; and L. Montagne
; Implementing SPAM into STMAS: a net sensitivity improvement
; in high-resolution NMR of quadrupolar nuclei,
; J. Magn. Reson. 175 pp.285-299 (2005)
;------------------------------------------------------------------------------
; ZGOPTNS - the zg-options are:
;
; Decoupling on the F2 channel:
; -Ddecoupling ... use cpdprg2 with power pl12
;
; Make a 1D experiment:
; -Done ... execute the first experiment of the corresponding
; complete 2D experiment
;
; Type of experiment (choose one):
; -Ddefault ... execute a classical echo/anti-echo experiment
; -DSPAMecho ... execute a 2D using SPAM with opposite phases for the
; last two pulses on the ANTI-ECHO, start with the echo
; -DSPAMantiecho... execute a 2D using SPAM with opposite phases for the
; last two pulses on the ECHO, start with the anti-echo
;
; Additional zg-options, useful for the 1D case:
; -Dantiecho ... as -Ddefault , but it starts with the anti-echo
; -DSPAMae_inv ... as -DSPAMecho , but it starts with the anti-echo
; -DSPAMe_inv ... as -DSPAMantiecho , but it starts with the echo
;------------------------------------------------------------------------------
;
;ns : number of scans [32*n], you may use [8*n] for SPAM
;ds : dummy scans
;swh : frequency window [nue_rot/n]
;aq : aquisition time
;rg : receiver gain
;dw : dwell time [tau_rot*n]
;de : deadtime before acquisition [use default setting]
;
;cnst31 : sample rotation frequency [Hz]
;d0 : 1st value for t1 [calculated to ashure rotor synchronization]
;d1 : repetition delay
;d20 : desynchronisation time [0us]
;in0 : t1 dwell time [n*tau_rot]
;l0 : rotor periods for the 1st point in t1
;zgoptns: zg-options, deciding about 1D/2D, decoupling
; and the type of experiment
;tau_rot: rotor period [calculated]
;td1_tru: true number of points in t1 [calculated]
;cnst21 : f1 pulse carrier offset [Hz]
;
;p1 : 1st hard pulse (non-selec.; try HP35)
;p3 : 2nd hard pulse (non-selec.; try HP35)
;p4 : 90-soft pulse (CT-selective; SP90)
;pl1 : high power level (nue_RF= 100kHz)
;pl3 : low power level (nue_RF= 5-10kHz)
;
;pl12 : f2 decoupling power
;cpdprg2: sequence for decoupling on f2
;
;------------------------------------------------------------------------------
; 1 fnmode : t1 acquisition mode [Echo-Antiecho]
; digmod : digitizer mode for acquisition [digital]
; fw : analog filter width [use default setting]
; nd0 : number of accurencies of "d0" in the sequence [1]
; 1 o1 : [set equal o1]
; 1 sfo1 : [set equal sfo1]
;------------------------------------------------------------------------------
#include <Avance.incl>
define delay tau_rot
"tau_rot= 1s/cnst31"
define loopcounter td1_tru
"td1_tru=td1/2"
;Synchronize 1st and 3rd pulse with the sample rotation (create rotor echoes)
"d0= l0*tau_rot -p1/2 -3u -p3/2"
1 ze
tau_rot
;Acquire the first part:
;-----------------------
#ifdef decoupling
2 d1 do:f2 ;f2 decoupling OFF
1u cpds2:f2 ;f2 decoupling ON / use cpdprg2 with power pl12
1u pl12:f2 ;set power level on f2 / PL for the decoupling
#else
2 d1 ;repetition delay
#endif
1u fq=cnst21:f1 ;f1 carrier defintion / uses cnst21 in Hertz
3u pl1:f1 ;set power level on f1 / PL for the hard pulse
(p1 ph1):f1 ;1st hard pule / excitation of +1(ST) & +1(CT)
d0 ;SQ evolution time / t1 dimension
d20 ;arbitrary desynchronisation / suppresses ST signal
3u pl1:f1
(p3 ph3):f1 ;2nd hard pule / reconversion
;ZQ evolution time / z-filter (minimized)
3u pl3:f1 ;set power level on f1 / PL for the soft pulse
(p4 ph4):f1 ;90-soft pulse / read-out
d20 ;refocusses phase
go=2 ph8 ph9:r ;acquisition / digitizer phase ph8 & receiver phase ph9
#ifdef decoupling
1u do:f2 ;f2 decoupling OFF
#endif
#ifdef one
100m wr #0 ;Write data to disk (1D data)
#else
100m wr #0 if #0 ze ;Write data to disk (2D data)
;Acquire the second part:
;------------------------
#ifdef decoupling
3 d1 do:f2
1u cpds2:f2
1u pl12:f2
#else
3 d1
#endif
1u fq=cnst21:f1 ; ... again!
3u pl1:f1
(p1 ph11):f1
d0
d20
3u pl1:f1
(p3 ph13):f1
3u pl3:f1
(p4 ph14):f1
d20
go=3 ph18 ph19:r ;acquisition / digitizer phase ph18 & receiver phase ph19
#ifdef decoupling
1u do:f2
#endif
100m wr #0 if #0 ze
1m id0 ;increment d0 by in0 / defines increment for the t1 dimension
lo to 2 times td1_tru ;loop back to the beginning
; / loop for both sequences (i.e. echo and anti-echo)
#endif
exit ;end of the pulse sequences
;Pulse and reciever phase lists:
;-------------------------------
; Type of experiment:
; -DSPAMecho ... execute a 2D using SPAM with opposite phases for
; the last two pulses on the ANTI-ECHO, start with the echo
; -DSPAMantiecho... execute a 2D using SPAM with opposite phases
; for the last two pulses on the ECHO, start with the anti-echo
; -DSPAMae_inv ... as -DSPAMecho , but it starts with the anti-echo
; -DSPAMe_inv ... as -DSPAMantiecho , but it starts with the echo
;
; -Decho ... as -Ddefault
; -Dantiecho ... as -Ddefault , but it starts with the anti-echo
; -Ddefault ... execute a classical echo/anti-echo experiment
;
#ifdef SPAMecho
; 1.echo, 2.anti-echo with ph14-inversion
;echo:
ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph8 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph9 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph14 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
ph18 = { 2 2 2 2 2 2 2 2 }^2^1^3
ph19 =(8) { 0 4 2 6 1 5 3 7 }
#else
#ifdef SPAMantiecho
; 1.anti-echo, 2.echo with ph14-inversion
;echo:
ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph14 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
ph18 = { 2 2 2 2 2 2 2 2 }^2^1^3
ph19 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph8 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph9 =(8) { 0 4 2 6 1 5 3 7 }
#else
#ifdef SPAMae_inv
; 1.anti-echo with ph4-inversion ,2.echo
;echo:
ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph18 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph19 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph4 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
ph8 = { 2 2 2 2 2 2 2 2 }^2^1^3
ph9 =(8) { 0 4 2 6 1 5 3 7 }
#else
#ifdef SPAMe_inv
; 1.echo with ph4-inversion , 2.anti-echo
;echo:
ph1 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph3 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph4 =(8) { 4 4 4 4 4 4 4 4 }^4^2^6
ph8 = { 2 2 2 2 2 2 2 2 }^2^1^3
ph9 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
ph11 =(8) { 0 4 2 6 1 5 3 7 }^4^2^6
ph13 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph18 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph19 =(8) { 0 4 2 6 1 5 3 7 }
#else
#ifdef echo
; z-filtered version: 1.echo 2.anti-echo
;echo:
ph1 =(8) { 0 4 2 6 1 5 3 7 }
ph3 =(8) { 0 0 0 0 0 0 0 0 }
ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph8 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph9 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
ph11 =(8) { 0 4 2 6 1 5 3 7 }
ph13 =(8) { 0 0 0 0 0 0 0 0 }
ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph18 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph19 =(8) { 0 4 2 6 1 5 3 7 }
#else
#ifdef antiecho
; z-filtered version: 1.anti-echo , 2.echo
;echo:
ph11 =(8) { 0 4 2 6 1 5 3 7 }
ph13 =(8) { 0 0 0 0 0 0 0 0 }
ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph18 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph19 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
ph1 =(8) { 0 4 2 6 1 5 3 7 }
ph3 =(8) { 0 0 0 0 0 0 0 0 }
ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph8 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph9 =(8) { 0 4 2 6 1 5 3 7 }
#else
; EQUAL -Decho: z-filtered version: 1.echo 2.anti-echo
;echo:
ph1 =(8) { 0 4 2 6 1 5 3 7 }
ph3 =(8) { 0 0 0 0 0 0 0 0 }
ph4 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph8 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph9 =(8) { 0 4 6 2 7 3 5 1 }
;
;anti-echo:
ph11 =(8) { 0 4 2 6 1 5 3 7 }
ph13 =(8) { 0 0 0 0 0 0 0 0 }
ph14 =(8) { 0 0 0 0 0 0 0 0 }^4^2^6
ph18 = { 0 0 0 0 0 0 0 0 }^2^1^3
ph19 =(8) { 0 4 2 6 1 5 3 7 }
#endif
#endif
#endif
#endif
#endif
#endif