mailRe: r23740 - /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 Edward d'Auvergne on June 10, 2014 - 14:07:
Hi Troels,

I was wondering if you could replace:

                self.R20A_a[0][si][mi][0][:num_disp_points] =
np.array( [R20A[r20_index]] * num_disp_points, float64)

with:

                self.R20A_a[0][si][mi][0][:num_disp_points] = R20A[r20_index]

As self.R20A_a is already a numpy array, you can set a single value to
all parts of an array element.  For example:

"""
from numpy import zeros

a = zeros((5, 4))
a[1] = 1
a[:,1] = 2

print(a)
"""

The result of running this is:

[[ 0.  2.  0.  0.]
 [ 1.  2.  1.  1.]
 [ 0.  2.  0.  0.]
 [ 0.  2.  0.  0.]
 [ 0.  2.  0.  0.]]

You can use such logic to avoid numpy.array() in the target functions,
as that is very undesirable.

Regards,

Edward



On 8 June 2014 22:22,  <tlinnet@xxxxxxxxxxxxx> wrote:
Author: tlinnet
Date: Sun Jun  8 22:22:22 2014
New Revision: 23740

URL: http://svn.gna.org/viewcvs/relax?rev=23740&view=rev
Log:
Critical fix for the slicing of values in target function.

This makes system test: Relax_disp.test_sod1wt_t25_to_cr72 pass.

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=23740&r1=23739&r2=23740&view=diff
==============================================================================
--- branches/disp_spin_speed/target_functions/relax_disp.py     (original)
+++ branches/disp_spin_speed/target_functions/relax_disp.py     Sun Jun  8 
22:22:22 2014
@@ -521,18 +521,18 @@
                 r20_index = mi + si*self.num_frq

                 # Store r20a and r20b values per disp point.
-                self.R20A_a[0][si][mi][0] = np.array( [R20A[r20_index]] * 
self.max_num_disp_points, float64)
-                self.R20B_a[0][si][mi][0]  = np.array( [R20B[r20_index]] * 
self.max_num_disp_points, float64)
+                self.R20A_a[0][si][mi][0][:num_disp_points] = np.array( 
[R20A[r20_index]] * num_disp_points, float64)
+                self.R20B_a[0][si][mi][0][:num_disp_points]  = np.array( 
[R20B[r20_index]] * num_disp_points, float64)

                 # Convert dw from ppm to rad/s.
                 dw_frq = dw[si] * self.frqs[0][si][mi]

                 # Store dw_frq per disp point.
-                self.dw_frq_a[0][si][mi][0] = np.array( [dw_frq] * 
self.max_num_disp_points, float64)
+                self.dw_frq_a[0][si][mi][0][:num_disp_points] = np.array( 
[dw_frq] * num_disp_points, float64)

                 # Store pA and kex per disp point.
-                self.pA_a[0][si][mi][0] = np.array( [pA] * 
self.max_num_disp_points, float64)
-                self.kex_a[0][si][mi][0] = np.array( [kex] * 
self.max_num_disp_points, float64)
+                self.pA_a[0][si][mi][0][:num_disp_points] = np.array( [pA] 
* num_disp_points, float64)
+                self.kex_a[0][si][mi][0][:num_disp_points] = np.array( 
[kex] * num_disp_points, float64)

         ## Back calculate the R2eff values.
         r2eff_CR72(r20a=self.R20A_a, r20b=self.R20B_a, pA=self.pA_a, 
dw=self.dw_frq_a, kex=self.kex_a, cpmg_frqs=self.cpmg_frqs_a, 
back_calc=self.back_calc_a, num_points=self.num_disp_points_a)


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
relax-commits@xxxxxxx

To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits



Related Messages


Powered by MHonArc, Updated Tue Jun 10 14:40:10 2014