mailRe: r23741 - /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:11:
Hi,

For reference, as missing data is quite common in real analyses, a
much, much faster implementation for handling missing data is
described in:

http://article.gmane.org/gmane.science.nmr.relax.devel/5726

This would be orders of magnitude faster for this component.

Regards,

Edward






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

URL: http://svn.gna.org/viewcvs/relax?rev=23741&view=rev
Log:
Added self.has_missing keyword in initialization of the Dispersion class.

This is to test once, per spin or cluster.
This saves a looping over the dipsersion points, when collection the data.

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=23741&r1=23740&r2=23741&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:24 2014
@@ -417,6 +417,7 @@
             self.cpmg_frqs_a = np.ones(back_calc_shape + 
[self.max_num_disp_points])
             self.num_disp_points_a = np.ones(back_calc_shape + 
[self.max_num_disp_points])
             self.back_calc_a = np.ones(back_calc_shape + 
[self.max_num_disp_points])
+            self.has_missing = False

             # Loop over the experiment types.
             for ei in range(self.num_exp):
@@ -433,6 +434,10 @@
                             
self.cpmg_frqs_a[ei][si][mi][oi][:num_disp_points] = 
self.cpmg_frqs[ei][mi][oi]
                             
self.num_disp_points_a[ei][si][mi][oi][:num_disp_points] = 
self.num_disp_points[ei][si][mi][oi]

+                            for di in 
range(self.num_disp_points[ei][si][mi][oi]):
+                                if self.missing[ei][si][mi][oi][di]:
+                                    self.has_missing = True
+

     def calc_B14_chi2(self, R20A=None, R20B=None, dw=None, pA=None, 
kex=None):
         """Calculate the chi-squared value of the Baldwin (2014) 2-site 
exact solution model for all time scales.
@@ -541,7 +546,6 @@
         chi2_sum = 0.0

         # Now return the values back to the structure of self.back_calc 
object.
-        ## For all missing data points, set the back-calculated value to 
the measured values so that it has no effect on the chi-squared value.
         # Loop over the spins.
         for si in range(self.num_spins):
             # Loop over the spectrometer frequencies.
@@ -551,10 +555,11 @@

                 self.back_calc[0][si][mi][0] = 
self.back_calc_a[0][si][mi][0][:num_disp_points]

-
-                for di in range(self.num_disp_points[0][si][mi][0]):
-                    if self.missing[0][si][mi][0][di]:
-                        self.back_calc[0][si][mi][0][di] = 
self.values[0][si][mi][0][di]
+                ## For all missing data points, set the back-calculated 
value to the measured values so that it has no effect on the chi-squared 
value.
+                if self.has_missing:
+                    for di in range(self.num_disp_points[0][si][mi][0]):
+                        if self.missing[0][si][mi][0][di]:
+                            self.back_calc[0][si][mi][0][di] = 
self.values[0][si][mi][0][di]

                 ## Calculate and return the chi-squared value.
                 chi2_sum += chi2(self.values[0][si][mi][0], 
self.back_calc[0][si][mi][0], self.errors[0][si][mi][0])


_______________________________________________
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 15:00:11 2014