Author: tlinnet Date: Mon May 5 20:18:38 2014 New Revision: 22975 URL: http://svn.gna.org/viewcvs/relax?rev=22975&view=rev Log: Pretty up code, by moving comments up on line. 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 Modified: trunk/lib/dispersion/b14.py Modified: trunk/lib/dispersion/b14.py URL: http://svn.gna.org/viewcvs/relax/trunk/lib/dispersion/b14.py?rev=22975&r1=22974&r2=22975&view=diff ============================================================================== --- trunk/lib/dispersion/b14.py (original) +++ trunk/lib/dispersion/b14.py Mon May 5 20:18:38 2014 @@ -154,27 +154,62 @@ g3 = 1/sqrt(2) * sqrt(g2 + sqrt(g1**2 + g2**2)) #trig faster than square roots g4 = 1/sqrt(2) * sqrt(-g2 + sqrt(g1**2 + g2**2)) #trig faster than square roots ######################################################################### - #time independent factors - N = complex(kge + g3 - kge, g4) #N = oG + oE + #Time independent factors. + #N = oG + oE. + N = complex(kge + g3 - kge, g4) + 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 = (r20a + r20b + 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.0)) #complex - ex1c = numpy.sinh(E1) #complex - v3 = numpy.sqrt(ex0b**2 - 1) #exact result for v2v3 + + # f0. + f0 = (dw**2 + g3**2) / NNc + + # f2. + f2 = (dw**2 - g4**2) / NNc + + # t1 = (-dw + g4) * (complex(-dw, -g3)) / NNc #t1. + + # t2. + t2 = (dw + g4) * (complex(dw, -g3)) / NNc + + # t1 + t2. + t1pt2 = complex(2 * dw**2,g1)/ NNc + + # -2 * oG * t2. + oGt2 = complex((-deltaR2 + keg - kge - g3), (dw - g4)) * t2 + + # -1/Trel * log(LpreDyn). + Rpre = (r20a + r20b + kex) / 2.0 + + # Derived from relaxation. + # E0 = -2.0 * tcp * (f00R - f11R). + E0 = 2.0 * tcp * g3 + + # Derived from chemical shifts #E2 = complex(0,-2.0 * tcp * (f00I - f11I)). + E2 = 2.0 * tcp * g4 + + # Mixed term (complex) (E0 - iE2)/2. + E1 = (complex(g3, -g4)) * tcp + + # Real. + ex0b = (f0 * numpy.cosh(E0) - f2 * numpy.cos(E2)) + + # Complex. + ex0c = (f0 * numpy.sinh(E0) - f2 * numpy.sin(E2) * complex(0, 1.0)) + + # Complex. + ex1c = numpy.sinh(E1) + + # Exact result for v2v3. + v3 = numpy.sqrt(ex0b**2 - 1) + 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 + + # Off diagonal common factor. sinh fuctions. + v2pPdN = (( complex(-deltaR2 + kex, dw) ) * ex0c + (-oGt2 - kge * t1pt2) * 2 * ex1c) 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 + + # Estimate R2eff. + Minty = Rpre - ncyc/(Trel) * numpy.arccosh((ex0b).real) - 1/Trel * numpy.log((Tog.real)) # Loop over the time points, back calculating the R2eff values. for i in range(num_points):