Skip to content

19F off-resonance R1rho relaxation dispersion

Version: 0.2.3 • Status: 🔬 beta • Last Modified: 2025-12-04

Description

Off-resonance 19F R1rho as pseudo-3D

  • set nominal SL power (Hz) in cnst25
  • set SL durations in VPLIST
  • set SL offsets in FQ1LIST must be sfo hz
  • 4x expected scans will be acquired to cover z/-z and theta/theta-bar
  • BUG - do not use any dummy scans!
  • tested with Topspin 3.7.0

Experiment Type

r1rho 1d

Features

  • relaxation_dispersion
  • off_resonance
  • temperature_compensation

Authors

Citations

  • Overbeck (2020)

Additional Fields

Field Value
File Name 19f_offresR1p.cw
File Path sequences/19f_offresR1p.cw
Git History {hash: 46a8b452, date: 2025-12-04, author: chriswaudby, email: cwaudby@gmail.com, message: correct 1H decoupling power}
{hash: cd2a996a, date: 2025-12-04, author: Chris Waudby, email: c.waudby@ucl.ac.uk, message: FIX 19f_offresR1p.cw. Take SL strength in Hz. Tested TS37}
{hash: cf31b8b4, date: 2025-12-04, author: chriswaudby, email: cwaudby@gmail.com, message: add reference pulse for 1H decoupling}
{hash: c662d061, date: 2025-12-04, author: chriswaudby, email: cwaudby@gmail.com, message: Improve 19F off-resonance R1rho sequence with decoupling and documentation}
{hash: e23a105b, date: 2025-11-16, author: chriswaudby, email: cwaudby@gmail.com, message: rename pulse to duration for reference pulse consistency}
{hash: c5ffe16b, date: 2025-11-16, author: chriswaudby, email: cwaudby@gmail.com, message: update filename capitalisation}
{hash: c78ec494, date: 2025-11-16, author: chriswaudby, email: cwaudby@gmail.com, message: Update pulse sequence metadata and documentation}
Acquisition Order f1
r1rho.duration
r1rho.offset
Dimensions r1rho.duration
r1rho.offset
f1
R1Rho {channel: f1, power: pl25, duration: taulist, offset: fqlist, alignment: hard_pulse}
Reference Pulse {channel: f1, duration: p1, power: pl1}
{channel: f2, duration: p3, power: pl2}
Typical Nuclei 19F
1H

Created: 2020-01-01 Repository: github.com/waudbygroup/pulseprograms Schema version: 0.0.2

Source Code

View on GitHub: github.com/waudbygroup/pulseprograms/sequences/19f_offresR1p.cw

;@ schema_version: "0.0.2"
;@ sequence_version: "0.2.3"
;@ title: 19F off-resonance R1rho relaxation dispersion
;@ description: |
;@   Off-resonance 19F R1rho as pseudo-3D
;@
;@   - set nominal SL power (Hz) in cnst25
;@   - set SL durations in VPLIST
;@   - set SL offsets in FQ1LIST **must be sfo hz**
;@   - 4x expected scans will be acquired to cover z/-z and theta/theta-bar
;@   - BUG - do not use any dummy scans!
;@   - tested with Topspin 3.7.0
;@ authors:
;@   - Chris Waudby <c.waudby@ucl.ac.uk>
;@   - Jan Overbeck
;@ citation:
;@   - Overbeck (2020)
;@ created: 2020-01-01
;@ last_modified: 2025-12-04
;@ repository: github.com/waudbygroup/pulseprograms
;@ status: beta
;@ experiment_type: [r1rho, 1d]
;@ features: [relaxation_dispersion, off_resonance, temperature_compensation]
;@ typical_nuclei: [19F, 1H]
;@ dimensions: [r1rho.duration, r1rho.offset, f1]
;@ acquisition_order: [f1, r1rho.duration, r1rho.offset]
;@ reference_pulse:
;@ - {channel: f1, duration: p1, power: pl1}
;@ - {channel: f2, duration: p3, power: pl2}
;@ r1rho: {channel: f1, power: pl25, duration: taulist, offset: fqlist, alignment: hard_pulse}


#include <Avance.incl>
#include <Grad.incl>

define list<pulse> taulist = <$VPLIST>
define list<frequency> fqlist = <$FQ1LIST>

"p2=p1*2"
#ifdef HDEC
"pcpd2=62.5u"          ; pulse length for 4kHz decoupling
"plw12=plw2*pow(p3/pcpd2,2)"
#endif /* HDEC */

"d11=30m"
"l1=0"  ; z/-z and theta/theta-bar
"l2=0"  ; vplist
"l3=0"

"p25=1000000/(4*cnst25)" ; SL 90 pulse length
"plw25=plw1*pow(p1/p25,2)"
"cnst28=fqlist"
"p6 = ((cnst28)/((1/(p25*4))))"   ; spin lock offset / spin lock power
"p7 = atan(p6)*180/PI"            ; arc tan from this ratio = theta in deg
"p4 = p1*(1-p7/90)"               ; theta pulse length
"p5 = p1*(1+p7/90)"               ; 180-theta pulse length

"p30 = 1.01*taulist.max"  ; maximum SL length for T compentation

aqseq 312

1 ze

#ifdef HDEC
  d11 pl12:f2
2 30m do:f2
#else
2 30m
#endif /* HDEC */

/*--------------------------------
; calculate hard pulse for offset
; dependent tip angle theta
; -------------------------------*/
"cnst28=fqlist"
"p6 = ((cnst28)/((1/(p25*4))))"   ; spin lock offset / spin lock power
"p7 = atan(p6)*180/PI"            ; arc tan from this ratio = theta in deg
"p4 = p1*(1-p7/90)"               ; theta pulse length
"p5 = p1*(1+p7/90)"               ; 180-theta pulse length

/* ---------------------------------
;     heating compensation
; --------------------------------*/

   d1

  "p32=taulist[l2]"
  "p31=p30-p32"
  if "p31 > 0.0"
    {
    1u fq=cnst30(bf ppm):f1
    1u pl25:f1
    (p31 ph1):f1
    }


/* ---------------------------------
;  transfer to theta and SL
; --------------------------------*/
1u fq=0:f1

if "l1 % 4 == 0"
{
  ; +z, theta
  (p44:sp30 ph1):f1
  1u
  (p44:sp30 ph10):f1
  1u pl1:f1
  p4 ph2          ; theta(y)
  1u fq=fqlist:f1
  1u pl25:f1
  (p32 ph1):f1    ; SL(x)
  1u fq=0:f1
  1u pl1:f1
  p4 ph4          ; theta(-y)
}
if "l1 % 4 == 1"
{
  ; -z, theta
  (p44:sp30 ph1):f1
  1u pl1:f1
  p4 ph4          ; theta(-y)
  1u fq=fqlist:f1
  1u pl25:f1
  (p32 ph3):f1    ; SL(-x)
  1u fq=0:f1
  1u pl1:f1
  p4 ph2          ; theta(y)
  1u
  (p44:sp30 ph10):f1
}
if "l1 % 4 == 2"
{
  ; +z, theta-bar
  (p44:sp30 ph1):f1
  1u
  (p44:sp30 ph10):f1
  1u pl1:f1
  p5 ph2          ; thetabar(y)
  1u fq=fqlist:f1
  1u pl25:f1
  (p32 ph3):f1    ; SL(-x)
  1u fq=0:f1
  1u pl1:f1
  p5 ph4          ; thetabar(-y)
}
if "l1 % 4 == 3"
{
  ; -z, theta-bar
  (p44:sp30 ph1):f1
  1u pl1:f1
  p5 ph4          ; thetabar(-y)
  1u fq=fqlist:f1
  1u pl25:f1
  (p32 ph1):f1    ; SL(x)
  1u fq=0:f1
  1u pl1:f1
  p5 ph2          ; thetabar(y)
  1u
  (p44:sp30 ph10):f1
}

/* ---------------------------------
;     anti-ringing
; --------------------------------*/
  1u pl1:f1
  p1 ph11
  d13
  p1 ph12
  d13
  p1 ph13
; ----------------------------------
#ifdef HDEC
  go=2 ph31 cpd2:f2

  10u do:f2
  10u iu1
  lo to 2 times 4

  30m mc #0 to 2
   F1QF(calclc(l2,1))
   F2QF(calclist(fqlist,1))
#else
 go=2 ph31

  10u iu1
  lo to 2 times 4

  30m mc #0 to 2
   F1QF(calclc(l2,1))
   F2QF(calclist(fqlist,1))
#endif /* HDEC */
 ; mc: F1 = r1rho.duration
 ;     F2 = r1rho.offset
exit


ph1=0
ph2=1
ph3=2
ph4=3
ph10=2
ph11=0
ph12=2 0
ph13=0 0 2 2
ph31=0 2 2 0

;pl1 : f1 channel - power level for pulse (default)
;p1 : f1 channel -  90 degree high power pulse
;p2 : f1 channel - 180 degree high power pulse
;d1 : relaxation delay; 1-5 * T1
;d11: delay for disk I/O    [30 msec]
;ns: 2 * n (actual ns will be 4x this value)
;ds: 0

;p44: f1 channel - 180 degree shaped pulse
;sp30: f1 channel - shaped pulse 180 degree (Bip720,50,20.1)
;cnst25: spin lock power in Hz
;pl25: spin lock power
;VPLIST: list of spin lock lengths
;FQ1LIST: list of spin lock offsets !sfo hz!

;p30: maximum SL length used for highest power (for T compensation)
;cnst30: offset for T compensation (in ppm) [250 ppm]

;1H decoupling:
;pl2 : f2 channel - power level for pulse (default)
;p3 : f2 channel - 90 degree high power pulse
;pl12: f2 channel - power level for CPD/BB decoupling
;cpd2: decoupling according to sequence defined by cpdprg2
;pcpd2: f2 channel - 90 degree pulse for decoupling sequence

Changelog

  • 2025-12-04 (46a8b452): correct 1H decoupling power - chriswaudby
  • 2025-12-04 (cd2a996a): FIX 19f_offresR1p.cw. Take SL strength in Hz. Tested TS37 - Chris Waudby
  • 2025-12-04 (cf31b8b4): add reference pulse for 1H decoupling - chriswaudby
  • 2025-12-04 (c662d061): Improve 19F off-resonance R1rho sequence with decoupling and documentation - chriswaudby
  • 2025-11-16 (e23a105b): rename pulse to duration for reference pulse consistency - chriswaudby
  • 2025-11-16 (c5ffe16b): update filename capitalisation - chriswaudby
  • 2025-11-16 (c78ec494): Update pulse sequence metadata and documentation - chriswaudby