mailr23814 - /branches/disp_spin_speed/target_functions/relax_disp.py


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

Header


Content

Posted by tlinnet on June 11, 2014 - 08:28:
Author: tlinnet
Date: Wed Jun 11 08:28:27 2014
New Revision: 23814

URL: http://svn.gna.org/viewcvs/relax?rev=23814&view=rev
Log:
Initial try to reshape dw faster.

Task #7807 (https://gna.org/task/index.php?7807): Speed-up of dispersion 
models for Clustered analysis.

Modified:
    branches/disp_spin_speed/target_functions/relax_disp.py

Modified: branches/disp_spin_speed/target_functions/relax_disp.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/disp_spin_speed/target_functions/relax_disp.py?rev=23814&r1=23813&r2=23814&view=diff
==============================================================================
--- branches/disp_spin_speed/target_functions/relax_disp.py     (original)
+++ branches/disp_spin_speed/target_functions/relax_disp.py     Wed Jun 11 
08:28:27 2014
@@ -27,7 +27,7 @@
 # Python module imports.
 from copy import deepcopy
 from math import pi
-from numpy import array, asarray, complex64, dot, float64, int16, max, ones, 
sqrt, sum, tile, zeros
+from numpy import add, array, asarray, complex64, dot, float64, int16, max, 
multiply, ones, sqrt, sum, tile, zeros
 from numpy.ma import masked_equal
 
 # relax module imports.
@@ -557,6 +557,14 @@
         @rtype:         float
         """
 
+        # Loop over the dw elements (one per spin).
+        for si in range(self.si):
+            # First multiply the spin specific dw with the spin specific 
frequency mask, using temporary storage.
+            multiply(dw[si], self.dw_mask[si], self.dw_temp[si])
+
+            # Then add to the total, using temporary storage.
+            add(self.dw_struct, self.dw_temp[si], self.dw_struct)
+
         # Reshape dw to per experiment and nr spins.
         dw_axis = asarray(dw).reshape(self.numpy_array_shape[0], 
self.numpy_array_shape[1])
 
@@ -568,6 +576,13 @@
 
         # Convert dw from ppm to rad/s.
         dw_frq_a = dw_axis*self.disp_struct*self.frqs_a
+
+        ## Show that the structure is reproduced perfectly.
+        diff = sum(self.dw_struct - dw_frq_a)
+        if diff != 0.0:
+            print "WOOOPS", diff
+            import sys
+            sys.exit()
 
         # Reshape R20A and R20B to per experiment, spin and frequency.
         R20A_axis = R20A.reshape(self.numpy_array_shape[0], 
self.numpy_array_shape[1], self.numpy_array_shape[2])




Related Messages


Powered by MHonArc, Updated Wed Jun 11 09:00:08 2014