Rotational Echo DOble Resonance, SIMPSON 4.1.1 fitting program
This SIMPSON fitting program extracts the value of the heteronuclear dipole coupling D from redorCN,1.fid.
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 rep320
gamma_angles 18
sw spin_rate/2
variable tsw 1e6/sw
verbose 0
variable rfF1 50000
variable rfF2 50000
variable t180F1 0.5e6/rfF1
variable t180F2 0.5e6/rfF2
variable tr1 0.5e6/spin_rate-0.5*t180F1-0.5*t180F2
variable tr2 0.5e6/spin_rate-t180F2
}
proc pulseq {} {
global par
reset
delay $par(tr2)
pulse $par(t180F2) 0 x $par(rfF2) x
delay $par(tr2)
pulse $par(t180F2) 0 x $par(rfF2) y
store 1
reset
acq
delay $par(tr2)
pulse $par(t180F2) 0 x $par(rfF2) x
delay $par(tr1)
pulse $par(t180F1) $par(rfF1) x 0 x
delay $par(tr1)
pulse $par(t180F2) 0 x $par(rfF2) x
delay $par(tr2)
pulse $par(t180F2) 0 x $par(rfF2) y
store 2
acq
for {set i 2} {$i < $par(np)} {incr i} {
reset
prop 1
prop 2
prop 1
store 2
acq
}
}
proc progress {} {
global par
if ![info exists par(progress)] { set par(progress) -1 }
incr par(progress)
set str {"* " \
" * " \
" * " \
" *" \
" * " \
" * "}
return [lindex $str [expr $par(progress)%6]]
}
lappend ::auto_path ./opt
package require opt
proc rms {{save 0}} {
global par
# simulate REDOR curve
set f [fsimpson [list \
[list dipole_1_2_aniso $opt::dipole12]]]
# scale REDOR curve
fautoscale $f $par(exp) -re
set rms [frms $f $par(exp) -re]
if {$save == 1} {
puts [format " \[%s\] %10.3f" \
FINAL $rms]
# write simulated REDOR curve to disc
fsave $f $par(name),$par(index).fid
} else {
puts [format " \[%s\] %10.3f %10.3f\015" \
[progress] $opt::dipole12 $rms]
}
flush stdout
funload $f
return $rms
}
proc main {} {
global par mn
set par(exp) [fload redorCN,1.fid]
opt::function rms
puts " Progress dipole12 rms"
opt::newpar dipole12 600 20 1 1500
opt::minimize 1.0e-6
rms 1
}
