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 }