mailr20404 - in /branches/relax_disp/lib/dispersion: ns_2site_3d.py ns_2site_expanded.py ns_2site_star.py


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

Header


Content

Posted by edward on July 19, 2013 - 08:18:
Author: bugman
Date: Fri Jul 19 08:18:25 2013
New Revision: 20404

URL: http://svn.gna.org/viewcvs/relax?rev=20404&view=rev
Log:
All of the numeric dispersion models are now much more robust.

The real part of the magnetization vector for the A state could, for some 
parameter combinations, be
either negative or NaN.  These situations are now caught, and the R2eff value 
set to a very large
number.


Modified:
    branches/relax_disp/lib/dispersion/ns_2site_3d.py
    branches/relax_disp/lib/dispersion/ns_2site_expanded.py
    branches/relax_disp/lib/dispersion/ns_2site_star.py

Modified: branches/relax_disp/lib/dispersion/ns_2site_3d.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/lib/dispersion/ns_2site_3d.py?rev=20404&r1=20403&r2=20404&view=diff
==============================================================================
--- branches/relax_disp/lib/dispersion/ns_2site_3d.py (original)
+++ branches/relax_disp/lib/dispersion/ns_2site_3d.py Fri Jul 19 08:18:25 2013
@@ -40,6 +40,7 @@
 
 # relax module imports.
 from lib.dispersion.ns_matrices import rcpmg_3d
+from lib.float import isNaN
 
 
 def r2eff_ns_2site_3D(r180x=None, M0=None, r10a=0.0, r10b=0.0, r20a=None, 
r20b=None, pA=None, pB=None, dw=None, k_AB=None, k_BA=None, inv_tcpmg=None, 
tcp=None, back_calc=None, num_points=None, power=None):
@@ -101,7 +102,7 @@
 
         # The next lines calculate the R2eff using a two-point 
approximation, i.e. assuming that the decay is mono-exponential.
         Mx = fabs(Mint[1] / pA)
-        if Mx == 0.0:
+        if Mx <= 0.0 or isNaN(Mx):
             back_calc[i] = 1e99
         else:
             back_calc[i]= -inv_tcpmg * log(Mx)

Modified: branches/relax_disp/lib/dispersion/ns_2site_expanded.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/lib/dispersion/ns_2site_expanded.py?rev=20404&r1=20403&r2=20404&view=diff
==============================================================================
--- branches/relax_disp/lib/dispersion/ns_2site_expanded.py (original)
+++ branches/relax_disp/lib/dispersion/ns_2site_expanded.py Fri Jul 19 
08:18:25 2013
@@ -38,6 +38,9 @@
 from numpy.linalg import matrix_power
 if dep_check.scipy_module:
     from scipy.linalg import expm
+
+# relax module imports.
+from lib.float import isNaN
 
 
 def r2eff_ns_2site_expanded(r20=None, pA=None, dw=None, k_AB=None, 
k_BA=None, relax_time=None, inv_relax_time=None, tcp=None, back_calc=None, 
num_points=None, num_cpmg=None):
@@ -136,7 +139,7 @@
 
     # Calculate the R2eff using a two-point approximation, i.e. assuming 
that the decay is mono-exponential, and store it for each dispersion point.
     for i in range(num_points):
-        if Mx[i] == 0.0:
+        if Mx[i] <= 0.0 or isNaN(Mx[i]):
             back_calc[i] = 1e99
         else:
             back_calc[i]= -inv_relax_time * log(Mx[i])

Modified: branches/relax_disp/lib/dispersion/ns_2site_star.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/lib/dispersion/ns_2site_star.py?rev=20404&r1=20403&r2=20404&view=diff
==============================================================================
--- branches/relax_disp/lib/dispersion/ns_2site_star.py (original)
+++ branches/relax_disp/lib/dispersion/ns_2site_star.py Fri Jul 19 08:18:25 
2013
@@ -38,6 +38,9 @@
 from numpy.linalg import matrix_power
 if dep_check.scipy_module:
     from scipy.linalg import expm
+
+# relax module imports.
+from lib.float import isNaN
 
 
 def r2eff_ns_2site_star(Rr=None, Rex=None, RCS=None, R=None, M0=None, 
r20a=None, r20b=None, dw=None, inv_tcpmg=None, tcp=None, back_calc=None, 
num_points=None, power=None):
@@ -104,7 +107,7 @@
 
         # The next lines calculate the R2eff using a two-point 
approximation, i.e. assuming that the decay is mono-exponential.
         Mx = Moft[0].real / M0[0]
-        if Mx == 0.0:
+        if Mx <= 0.0 or isNaN(Mx):
             back_calc[i] = 1e99
         else:
             back_calc[i]= -inv_tcpmg * log(Mx)




Related Messages


Powered by MHonArc, Updated Fri Jul 19 10:40:02 2013