mailr23022 - /trunk/test_suite/shared_data/dispersion/Baldwin_2014/


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by tlinnet on May 06, 2014 - 17:34:
Author: tlinnet
Date: Tue May  6 17:34:04 2014
New Revision: 23022

URL: http://svn.gna.org/viewcvs/relax?rev=23022&view=rev
Log:
Added the synthetic data for B14 model whereby the simplification R20A = R20B 
is assumed.

This is used in systemtest Relax_disp.test_baldwin_synthetic.

sr #3154: (https://gna.org/support/?3154) Implementation of Baldwin (2014) 
B14 model - 2-site exact solution model for all time scales.

This follows the tutorial for adding relaxation dispersion models at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#Debugging


Added:
    trunk/test_suite/shared_data/dispersion/Baldwin_2014/Baldwin_r2a_eq_r2b.py
    trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b.out
    
trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b_w_error.out

Added: 
trunk/test_suite/shared_data/dispersion/Baldwin_2014/Baldwin_r2a_eq_r2b.py
URL: 
http://svn.gna.org/viewcvs/relax/trunk/test_suite/shared_data/dispersion/Baldwin_2014/Baldwin_r2a_eq_r2b.py?rev=23022&view=auto
==============================================================================
--- 
trunk/test_suite/shared_data/dispersion/Baldwin_2014/Baldwin_r2a_eq_r2b.py  
(added)
+++ 
trunk/test_suite/shared_data/dispersion/Baldwin_2014/Baldwin_r2a_eq_r2b.py  
Tue May  6 17:34:04 2014
@@ -0,0 +1,102 @@
+#!/usr/bin/python
+###############################################################################
+#                                                                            
 #
+# Copyright (C) 2014 Andrew Baldwin (andrew.baldwin@xxxxxxxxxxxxx),          
 #
+# University of Oxford                                                       
 #
+#                                                                            
 #
+# This file is part of the program relax (http://www.nmr-relax.com).         
 #
+#                                                                            
 #
+# This program is free software: you can redistribute it and/or modify       
 #
+# it under the terms of the GNU General Public License as published by       
 #
+# the Free Software Foundation, either version 3 of the License, or          
 #
+# (at your option) any later version.                                        
 #
+#                                                                            
 #
+# This program is distributed in the hope that it will be useful,            
 #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of             
 #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the              
 #
+# GNU General Public License for more details.                               
 #
+#                                                                            
 #
+# You should have received a copy of the GNU General Public License          
 #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.      
 #
+#                                                                            
 #
+###############################################################################
+
+######################################################################
+# Script to simulate R2eff from a CPMG experiment
+#
+# Note assumption of only inphase magnetisation and 2 site exchange
+# only. 
+#
+# Requires numpy.
+#
+#
+#
+ 
+import numpy
+from math import cos,sin,atan2
+
+############################################################################
+#Note dw is in rad s-1.
+def BaldDisp(kex,pb,dw,ncyc,Trel,R2g,R2e,outfile):
+    pa=(1-pb)
+    keg=kex*(1-pb)
+    kge=kex*pb
+    deltaR2=R2e-R2g
+    nu_cpmg=ncyc/Trel
+    tcp=Trel/(4.0*ncyc)  #time for one free precession element
+    #########################################################################
+    #get the real and imaginary components of the exchange induced shift
+    g1=2*dw*(deltaR2+keg-kge)                   #same as carver richards zeta
+    g2=(deltaR2+keg-kge)**2.0+4*keg*kge-dw**2   #same as carver richards psi
+    g3=cos(0.5*atan2(g1,g2))*(g1**2.0+g2**2.0)**(1/4.0)   #trig faster than 
square roots
+    g4=sin(0.5*atan2(g1,g2))*(g1**2.0+g2**2.0)**(1/4.0)   #trig faster than 
square roots
+    #########################################################################
+    #time independent factors
+    N=complex(kge+g3-kge,g4)            #N=oG+oE
+    NNc=(g3**2.+g4**2.)
+    f0=(dw**2.+g3**2.)/(NNc)              #f0
+    f2=(dw**2.-g4**2.)/(NNc)              #f2
+    #t1=(-dw+g4)*(complex(-dw,-g3))/(NNc) #t1
+    t2=(dw+g4)*(complex(dw,-g3))/(NNc) #t2
+    t1pt2=complex(2*dw**2.,-g1)/(NNc)     #t1+t2
+    oGt2=complex((deltaR2+keg-kge-g3),(dw-g4))*t2  #-2*oG*t2
+    Rpre=(R2g+R2e+kex)/2.0   #-1/Trel*log(LpreDyn)
+    E0= 2.0*tcp*g3  #derived from relaxation       #E0=-2.0*tcp*(f00R-f11R)
+    E2= 2.0*tcp*g4  #derived from chemical shifts  
#E2=complex(0,-2.0*tcp*(f00I-f11I))
+    E1=(complex(g3,-g4))*tcp    #mixed term (complex) (E0-iE2)/2
+    ex0b=(f0*numpy.cosh(E0)-f2*numpy.cos(E2))               #real
+    ex0c=(f0*numpy.sinh(E0)-f2*numpy.sin(E2)*complex(0,1.)) #complex
+    ex1c=(numpy.sinh(E1))                                   #complex
+    v3=numpy.sqrt(ex0b**2.-1)  #exact result for v2v3
+    y=numpy.power((ex0b-v3)/(ex0b+v3),ncyc)
+    v2pPdN=(( complex(deltaR2+kex,dw) )*ex0c+(-oGt2-kge*t1pt2)*2*ex1c)       
 #off diagonal common factor. sinh fuctions
+    Tog=(((1+y)/2+(1-y)/(2*v3)*(v2pPdN)/N))     
+    
Minty=Rpre-ncyc/(Trel)*numpy.arccosh((ex0b).real)-1/Trel*numpy.log((Tog.real))
  #estimate R2eff
+
+    array=[]
+    for i in range(len(ncyc)):
+        array.append((nu_cpmg[i],Minty[i]))
+    if(outfile!='Null'):
+        outy=open(outfile,'w')
+        for i in range(len(array)):
+            outy.write('%f\t%f\n' % (array[i][0],array[i][1]))
+        outy.close()
+    return array
+
+
+def ppm_to_rads(ppm,dfrq):
+    return ppm*2*numpy.pi*dfrq
+
+
+if __name__ == "__main__":  #run this if this file is run as standalone
+    #otherwise use the function form your own code.
+    outfile='test_r2a_eq_r2b.out'  #set to 'Null' if output is not required
+    kex=1000.  #exchange rate = k+ + k- (s-1)
+    pb=0.01    #fractional population of excited state k+/kex
+    dw_ppm=2.  #deltaOmega in ppm
+    dfrq=200.  #spectrometer frequency of nucleci (MHz) 
+    ncyc=numpy.array((2,4,8,10,20,40,500,)) #number of cpmg cycles (1 cycle 
= delay/180/delay/delay/180/delay)
+    R2g=2.     #relaxation rate of ground (s-1)
+    R2e=2.   #relaxation rate of excited (s-1)
+    Trelax=0.04 #total time of CPMG block
+    BaldDisp(kex,pb,ppm_to_rads(dw_ppm,dfrq),ncyc,Trelax,R2g,R2e,outfile)

Added: 
trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b.out
URL: 
http://svn.gna.org/viewcvs/relax/trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b.out?rev=23022&view=auto
==============================================================================
--- trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b.out  
  (added)
+++ trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b.out  
  Tue May  6 17:34:04 2014
@@ -0,0 +1,7 @@
+50.000000      10.367900
+100.000000     10.146849
+200.000000     9.765987
+250.000000     9.409789
+500.000000     5.829819
+1000.000000    3.191928
+12500.000000   2.008231

Added: 
trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b_w_error.out
URL: 
http://svn.gna.org/viewcvs/relax/trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b_w_error.out?rev=23022&view=auto
==============================================================================
--- 
trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b_w_error.out
    (added)
+++ 
trunk/test_suite/shared_data/dispersion/Baldwin_2014/test_r2a_eq_r2b_w_error.out
    Tue May  6 17:34:04 2014
@@ -0,0 +1,7 @@
+50.000000      10.367900 0.1
+100.000000     10.146849 0.1
+200.000000     9.765987 0.1
+250.000000     9.409789 0.1
+500.000000     5.829819 0.1
+1000.000000    3.191928 0.1
+12500.000000   2.008231 0.1




Related Messages


Powered by MHonArc, Updated Tue May 06 17:40:02 2014