Hi Edward.

I am working right now at that solution.
I will keep the structure in the __init__.

I think it will have a masked array in the target function.
This is the test, which have been annoying me!

test_hansen_cpmg_data_missing_auto_analysis

2014-06-10 14:11 GMT+02:00 Edward d'Auvergne <[email protected]>:
> 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,  <[email protected]> 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
>> [email protected]
>>
>> 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
>
> _______________________________________________
> relax (http://www.nmr-relax.com)
>
> This is the relax-devel mailing list
> [email protected]
>
> 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-devel

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

This is the relax-devel mailing list
[email protected]

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-devel

Reply via email to