SIMPSON coding examples

SIMPSON Tutorial #5: REDOR

by Thomas Vosegaard

This example deals with heteronuclear recoupling under magic-angle spinning using the REDOR pulse sequence. Try to vary the dipole coupling strength and examine the dephasing curve.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
spinsys {
  channels 13C 15N
  nuclei   13C 15N
  dipole   1 2 895 10 20 30
  shift    1 10p 100p 0.5 50 20 10
}

par {
  variable index   1

  np               32
  spin_rate        10000
  proton_frequency 400e6
  start_operator   I1x
  detect_operator  I1p
  method           direct
  crystal_file     rep66
  gamma_angles     8
  sw               spin_rate/2
  variable tsw     1e6/sw
  verbose          1101
  variable tr      1e6/spin_rate
  variable tr2     0.5e6/spin_rate
  variable rf      50000
  variable t180    0.5e6/rf
}

proc pulseq {} {
  global par

  acq
  for {set i 0} {$i < $par(np)-1} {incr i} {
    reset
    for {set j 1} {$j <= $i} {incr j} {
      delay $par(tr2)
      pulseid $par(t180) 0 0 $par(rf) x
      delay $par(tr2)
      pulseid $par(t180) 0 0 $par(rf) y
    }
    delay $par(tr2)
    pulseid $par(t180) 0 0 $par(rf) x
    delay $par(tr2)
    pulseid $par(t180) $par(rf) x 0 0
    for {set j 0} {$j <= $i} {incr j} {
      delay $par(tr2)
      pulseid $par(t180) 0 0 $par(rf) x
      delay $par(tr2)
      pulseid $par(t180) 0 0 $par(rf) y
    }
    acq    
  }
}

proc main {} {
  global par
  
  set f [fsimpson]
  fsave $f $par(name),$par(index).fid
}
Files:5_REDOR,1.fid  preview
5_REDOR.in
Add comment

REDOR reusing propagators

by Thomas Vosegaard

We can do the simulation much faster by using the repeated features of the REDOR pulse sequence. The code below reuses the different propagators and is much faster to perform the same simulation.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
proc pulseq {} {
  global par

  reset
  delay $par(tr2)
  pulseid $par(t180) 0 0 $par(rf) x
  delay $par(tr2)
  pulseid $par(t180) 0 0 $par(rf) y
  store 1

  reset
  acq
  delay $par(tr2)
  pulseid $par(t180) 0 x $par(rf) x
  delay $par(tr2)
  pulseid $par(t180) $par(rf) x 0 x
  prop 1
  store 2
  acq

  for {set i 2} {$i < $par(np)} {incr i} {
    reset
    prop 1
    prop 2
    prop 1
    store 2
    acq
  }
}
File:5_REDORp.in
Add comment

Snippets version 1.0.1