Maybe the masking logic does not work within the experiment index
loop.  But I don't know the exact reason why this fixes the bug.

Regards,

Edward

On 17 June 2014 11:36, Edward d'Auvergne <edw...@nmr-relax.com> wrote:
> Actually, if you deindent the lines after the self.r2eff_ns_mmq[ei]()
> function call, the bug goes away!!!  So, here is the fix which applies
> to the 'MMQ CR72' model as well:
>
> """
> Index: target_functions/relax_disp.py
> ===================================================================
> --- target_functions/relax_disp.py      (revision 24016)
> +++ target_functions/relax_disp.py      (working copy)
> @@ -1309,22 +1309,19 @@
>              # Back calculate the R2eff values.
>              r2eff_mmq_cr72(r20=r20, pA=pA, pB=pB, dw=aliased_dw,
> dwH=aliased_dwH, kex=kex, k_AB=k_AB, k_BA=k_BA,
> cpmg_frqs=self.cpmg_frqs[ei], inv_tcpmg=self.inv_relax_times[ei],
> tcp=self.tau_cpmg[ei], back_calc=self.back_calc[ei])
>
> -            # Clean the data for all values, which is left over at
> the end of arrays.
> -            self.back_calc[ei] = self.back_calc[ei]*self.disp_struct[ei]
> +        # Clean the data for all values, which is left over at the
> end of arrays.
> +        self.back_calc = self.back_calc*self.disp_struct
>
> -            # 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:
> -                # Replace with values.
> -                mask_replace_blank_ei = masked_equal(self.missing[ei], 1.0)
> -                self.back_calc[ei][mask_replace_blank_ei.mask] =
> self.values[ei][mask_replace_blank_ei.mask]
> +        # 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:
> +            # Replace with values.
> +            mask_replace_blank = masked_equal(self.missing, 1.0)
> +            self.back_calc[mask_replace_blank.mask] =
> self.values[mask_replace_blank.mask]
>
> -            # Calculate and return the chi-squared value.
> -            chi2_sum += chi2_rankN(self.values[ei],
> self.back_calc[ei], self.errors[ei])
> +        # Calculate and return the chi-squared value.
> +        return chi2_rankN(self.values, self.back_calc, self.errors)
>
> -        # Return the total chi-squared value.
> -        return chi2_sum
>
> -
>      def func_NOREX(self, params):
>          """Target function for no exchange.
>
> @@ -1560,22 +1557,19 @@
>              # Back calculate the R2eff values for each experiment type.
>              self.r2eff_ns_mmq[ei](M0=self.M0, m1=self.m1, m2=self.m2,
> R20A=r20, R20B=r20, pA=pA, pB=pB, dw=aliased_dw, dwH=aliased_dwH,
> k_AB=k_AB, k_BA=k_BA, inv_tcpmg=self.inv_relax_times[ei],
> tcp=self.tau_cpmg[ei], back_calc=self.back_calc[ei],
> num_points=self.num_disp_points[ei], power=self.power[ei])
>
> -            # Clean the data for all values, which is left over at
> the end of arrays.
> -            self.back_calc[ei] = self.back_calc[ei]*self.disp_struct[ei]
> +        # Clean the data for all values, which is left over at the
> end of arrays.
> +        self.back_calc = self.back_calc*self.disp_struct
>
> -            # 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:
> -                # Replace with values.
> -                mask_replace_blank_ei = masked_equal(self.missing[ei], 1.0)
> -                self.back_calc[ei][mask_replace_blank_ei.mask] =
> self.values[ei][mask_replace_blank_ei.mask]
> +        # 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:
> +            # Replace with values.
> +            mask_replace_blank = masked_equal(self.missing, 1.0)
> +            self.back_calc[mask_replace_blank.mask] =
> self.values[mask_replace_blank.mask]
>
> -            # Calculate and return the chi-squared value.
> -            chi2_sum += chi2_rankN(self.values[ei],
> self.back_calc[ei], self.errors[ei])
> +        # Calculate and return the chi-squared value.
> +        return chi2_rankN(self.values, self.back_calc, self.errors)
>
> -        # Return the total chi-squared value.
> -        return chi2_sum
>
> -
>      def func_ns_mmq_3site(self, params):
>          """Target function for the combined SQ, ZQ, DQ and MQ 3-site
> MMQ CPMG numeric solution.
> """
>
> You could just manually fix this rather than trying to use this patch.
>
> Regards,
>
> Edward
>
>
> On 17 June 2014 11:31, Edward d'Auvergne <edw...@nmr-relax.com> wrote:
>> Because this is real measured and published data :)
>>
>> On 17 June 2014 11:26, Troels Emtekær Linnet <tlin...@nmr-relax.com> wrote:
>>> This is easier:
>>>
>>>                         # Loop over dispersion points.
>>>                         for di in range(num_disp_points):
>>>                             if missing[ei][si][mi][oi][di]:
>>>                                 self.has_missing = True
>>>                                 self.missing[ei][si][mi][oi][di] = 1.0
>>>                                 print "ei, si, mi, oi, di", ei, si, mi, oi,
>>> di
>>>
>>> ei, si, mi, oi, di 1 0 0 0 8
>>> ei, si, mi, oi, di 1 0 1 0 8
>>> ei, si, mi, oi, di 1 0 1 0 11
>>> ei, si, mi, oi, di 1 0 1 0 13
>>> ei, si, mi, oi, di 2 0 0 0 12
>>> ei, si, mi, oi, di 2 0 1 0 12
>>> ei, si, mi, oi, di 3 0 0 0 12
>>> ei, si, mi, oi, di 3 0 1 0 12
>>>
>>> The question is now, how can there be missing data points?
>>>
>>>
>>>
>>> 2014-06-17 11:10 GMT+02:00 Troels Emtekær Linnet <tlin...@nmr-relax.com>:
>>>
>>>>                     if self.has_missing:
>>>>                         itemindex = where(self.missing==1.0)
>>>>                         #print self.missing
>>>>                         print "ei,si,mi", ei,si,mi, "index", itemindex[ei]
>>>>
>>>> gives
>>>>
>>>> ei,si,mi 0 0 0 index [1 1 1 1 2 2 3 3]
>>>> ei,si,mi 0 0 1 index [1 1 1 1 2 2 3 3]
>>>> ei,si,mi 0 0 2 index [1 1 1 1 2 2 3 3]
>>>> ei,si,mi 1 0 0 index [0 0 0 0 0 0 0 0]
>>>> ei,si,mi 1 0 1 index [0 0 0 0 0 0 0 0]
>>>> ei,si,mi 1 0 2 index [0 0 0 0 0 0 0 0]
>>>> ei,si,mi 2 0 0 index [0 1 1 1 0 1 0 1]
>>>> ei,si,mi 2 0 1 index [0 1 1 1 0 1 0 1]
>>>> ei,si,mi 2 0 2 index [0 1 1 1 0 1 0 1]
>>>> ei,si,mi 3 0 0 index [0 0 0 0 0 0 0 0]
>>>> ei,si,mi 3 0 1 index [0 0 0 0 0 0 0 0]
>>>> ei,si,mi 3 0 2 index [0 0 0 0 0 0 0 0]
>>>> ei,si,mi 4 0 0 index [ 8  8 11 13 12 12 12 12]
>>>> ei,si,mi 4 0 1 index [ 8  8 11 13 12 12 12 12]
>>>> ei,si,mi 4 0 2 index [ 8  8 11 13 12 12 12 12]
>>>> ei,si,mi 5 0 0 indexE
>>>>
>>>>
>>>>
>>>> 2014-06-17 11:03 GMT+02:00 Troels Emtekær Linnet <tlin...@nmr-relax.com>:
>>>>
>>>>> The missing flag is on.
>>>>>
>>>>> So, it is probably something with this.
>>>>>
>>>>>
>>>>>
>>>>> 2014-06-17 11:01 GMT+02:00 Troels Emtekær Linnet <tlin...@nmr-relax.com>:
>>>>>
>>>>>> Yeah.
>>>>>>
>>>>>> It is weird.
>>>>>>
>>>>>> I am working at a earlier state, and trying to figure it out.
>>>>>> Right now I am looking at the missing flag.
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2014-06-17 10:49 GMT+02:00 Edward d'Auvergne <edw...@nmr-relax.com>:
>>>>>>
>>>>>>> This is very strange.  It only affects that single spin.r2[r20_key3]
>>>>>>> parameter and the chi-squared value.  Hmmmm, what is happening?
>>>>>>>
>>>>>>> Regards,
>>>>>>>
>>>>>>> Edward
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On 16 June 2014 23:29, Troels Emtekær Linnet <tlin...@nmr-relax.com>
>>>>>>> wrote:
>>>>>>> > This is weird.
>>>>>>> >
>>>>>>> > It has found a lower chi2 value?
>>>>>>> >
>>>>>>> >         # Checks for residue :9.
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key1],  6.67288025927458,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key2],  6.98951408255098,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key3],  5.52959273852704,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key4],  8.39471048876782,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key5],  8.89290699178799,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key6],  10.4077068723693,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key7],  5.93611174376373,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key8],  6.71735669582514,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key9],  6.83835225518265,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key10], 8.59615074668922,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key11], 10.6512137889291,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key12], 12.5710822919109,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key13], 7.85956711501608,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key14], 8.41891642907918,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key15], 11.2362089223038,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key16], 9.1965486378935,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key17], 9.86031627358462,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.r2[r20_key18], 11.9752375592575,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.pA, 0.943129019477673, 4)
>>>>>>> >         self.assertAlmostEqual(spin.dw, 4.42209952545181, 4)
>>>>>>> >         self.assertAlmostEqual(spin.dwH, -0.27258970590969, 4)
>>>>>>> >         self.assertAlmostEqual(spin.kex/1000, 360.516132791038/1000,
>>>>>>> > 4)
>>>>>>> >         self.assertAlmostEqual(spin.chi2/1000, 162.511988511609/1000,
>>>>>>> > 3)
>>>>>>> >
>>>>>>> >
>>>>>>> >
>>>>>>> > 2014-06-16 22:42 GMT+02:00 Troels Emtekær Linnet
>>>>>>> > <tlin...@nmr-relax.com>:
>>>>>>> >
>>>>>>> >> Correction:
>>>>>>> >>
>>>>>>> >> test_korzhnev_2005_all_data
>>>>>>> >>
>>>>>>> >>
>>>>>>> >> 2014-06-16 22:40 GMT+02:00 Troels Emtekær Linnet
>>>>>>> >> <tlin...@nmr-relax.com>:
>>>>>>> >>
>>>>>>> >> Following system test fails:
>>>>>>> >>> test_korzhnev_2005_15n_zq_data
>>>>>>> >>>
>>>>>>> >>> This is a little weird.
>>>>>>> >>>
>>>>>>> >>> Parameter            Value (:9)
>>>>>>> >>> R2 (1H SQ - 500 MHz)     6.67288025927458
>>>>>>> >>> R2 (1H SQ - 600 MHz)     6.98951408255098
>>>>>>> >>> R2 (1H SQ - 800 MHz)     5.80607237545339
>>>>>>> >>> R2 (SQ - 500 MHz)        8.39471048876782
>>>>>>> >>> R2 (SQ - 600 MHz)        8.89290699178799
>>>>>>> >>> R2 (SQ - 800 MHz)        10.4077068723693
>>>>>>> >>> R2 (ZQ - 500 MHz)        5.93611174376373
>>>>>>> >>> R2 (ZQ - 600 MHz)        6.71735669582514
>>>>>>> >>> R2 (ZQ - 800 MHz)        6.83835225518265
>>>>>>> >>> R2 (DQ - 500 MHz)        8.59615074668922
>>>>>>> >>> R2 (DQ - 600 MHz)        10.6512137889291
>>>>>>> >>> R2 (DQ - 800 MHz)        12.5710822919109
>>>>>>> >>> R2 (1H MQ - 500 MHz)     7.85956711501608
>>>>>>> >>> R2 (1H MQ - 600 MHz)     8.41891642907918
>>>>>>> >>> R2 (1H MQ - 800 MHz)     11.2362089223038
>>>>>>> >>> R2 (MQ - 500 MHz)         9.1965486378935
>>>>>>> >>> R2 (MQ - 600 MHz)        9.86031627358462
>>>>>>> >>> R2 (MQ - 800 MHz)        11.9752375592575
>>>>>>> >>> pA                      0.943129019477673
>>>>>>> >>> dw                       4.42209952545181
>>>>>>> >>> dwH                     -0.27258970590969
>>>>>>> >>> kex                      360.516132791038
>>>>>>> >>> chi2                     74.7104450897413
>>>>>>> >>>
>>>>>>> >>> Traceback (most recent call last):
>>>>>>> >>>   File
>>>>>>> >>>
>>>>>>> >>> "/Users/tlinnet/software/disp_spin_speed/test_suite/system_tests/relax_disp.py",
>>>>>>> >>> line 3474, in test_korzhnev_2005_all_data
>>>>>>> >>>     self.assertAlmostEqual(spin.r2[r20_key3],  5.52959273852704, 4)
>>>>>>> >>> AssertionError: 5.8060723754533914 != 5.52959273852704 within 4
>>>>>>> >>> places
>>>>>>> >>>
>>>>>>> >>> ---------- Forwarded message ----------
>>>>>>> >>> From: <tlin...@nmr-relax.com>
>>>>>>> >>> Date: 2014-06-16 22:11 GMT+02:00
>>>>>>> >>> Subject: r24006 -
>>>>>>> >>> /branches/disp_spin_speed/target_functions/relax_disp.py
>>>>>>> >>> To: relax-comm...@gna.org
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> >>> Author: tlinnet
>>>>>>> >>> Date: Mon Jun 16 22:11:49 2014
>>>>>>> >>> New Revision: 24006
>>>>>>> >>>
>>>>>>> >>> URL: http://svn.gna.org/viewcvs/relax?rev=24006&view=rev
>>>>>>> >>> Log:
>>>>>>> >>> Changed the reshaping of dw and dwH, since it is not dependent on
>>>>>>> >>> experiment.
>>>>>>> >>>
>>>>>>> >>> 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=24006&r1=24005&r2=24006&view=diff
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> >>> ==============================================================================
>>>>>>> >>> --- branches/disp_spin_speed/target_functions/relax_disp.py
>>>>>>> >>> (original)
>>>>>>> >>> +++ branches/disp_spin_speed/target_functions/relax_disp.py     Mon
>>>>>>> >>> Jun
>>>>>>> >>> 16 22:11:49 2014
>>>>>>> >>> @@ -496,7 +496,7 @@
>>>>>>> >>>          """
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20A and R20B to per experiment, spin and
>>>>>>> >>> frequency.
>>>>>>> >>>          self.r20a_struct[:] = multiply.outer(
>>>>>>> >>> R20A.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -535,7 +535,7 @@
>>>>>>> >>>          """
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20A and R20B to per experiment, spin and
>>>>>>> >>> frequency.
>>>>>>> >>>          self.r20a_struct[:] = multiply.outer(
>>>>>>> >>> R20A.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -574,7 +574,7 @@
>>>>>>> >>>          """
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20A and R20B to per experiment, spin and
>>>>>>> >>> frequency.
>>>>>>> >>>          self.r20a_struct[:] = multiply.outer(
>>>>>>> >>> R20A.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -613,7 +613,7 @@
>>>>>>> >>>          """
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20A and R20B to per experiment, spin and
>>>>>>> >>> frequency.
>>>>>>> >>>          self.r20a_struct[:] = multiply.outer(
>>>>>>> >>> R20A.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -974,7 +974,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]]
>>>>>>> >>>
>>>>>>> >>>          # Convert phi_ex from ppm^2 to (rad/s)^2. Use the out
>>>>>>> >>> argument,
>>>>>>> >>> to pass directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( phi_ex.reshape(self.NE,
>>>>>>> >>> self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct )
>>>>>>> >>> +        multiply( multiply.outer( phi_ex.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1014,7 +1014,7 @@
>>>>>>> >>>          tex = params[self.end_index[2]]
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1108,7 +1108,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]]
>>>>>>> >>>
>>>>>>> >>>          # Convert phi_ex from ppm^2 to (rad/s)^2. Use the out
>>>>>>> >>> argument,
>>>>>>> >>> to pass directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( phi_ex.reshape(self.NE,
>>>>>>> >>> self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct )
>>>>>>> >>> +        multiply( multiply.outer( phi_ex.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1147,7 +1147,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]]
>>>>>>> >>>
>>>>>>> >>>          # Convert phi_ex from ppm^2 to (rad/s)^2. Use the out
>>>>>>> >>> argument,
>>>>>>> >>> to pass directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( phi_ex.reshape(self.NE,
>>>>>>> >>> self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct )
>>>>>>> >>> +        multiply( multiply.outer( phi_ex.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_squared, out=self.phi_ex_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1187,7 +1187,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]+1]
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1227,7 +1227,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]+1]
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1273,8 +1273,8 @@
>>>>>>> >>>          k_AB = pB * kex
>>>>>>> >>>
>>>>>>> >>>          # Convert dw and dwH from ppm to rad/s. Use the out
>>>>>>> >>> argument, to
>>>>>>> >>> pass directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> -        multiply( multiply.outer( dwH.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_H, out=self.dwH_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dwH.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_H, out=self.dwH_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1418,7 +1418,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]+1]
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20A and R20B to per experiment, spin and
>>>>>>> >>> frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1514,9 +1514,8 @@
>>>>>>> >>>          k_BA = pA * kex
>>>>>>> >>>          k_AB = pB * kex
>>>>>>> >>>
>>>>>>> >>> -        # Convert dw and dwH from ppm to rad/s. Use the out
>>>>>>> >>> argument, to
>>>>>>> >>> pass directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> -        multiply( multiply.outer( dwH.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_H, out=self.dwH_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dwH.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs_H, out=self.dwH_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1752,7 +1751,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]+1]
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1792,7 +1791,7 @@
>>>>>>> >>>          kex = params[self.end_index[1]+1]
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20 to per experiment, spin and frequency.
>>>>>>> >>>          self.r20_struct[:] = multiply.outer( R20.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>> @@ -1832,7 +1831,7 @@
>>>>>>> >>>          k_AB = params[self.end_index[1]]
>>>>>>> >>>
>>>>>>> >>>          # Convert dw from ppm to rad/s. Use the out argument, to
>>>>>>> >>> pass
>>>>>>> >>> directly to structure.
>>>>>>> >>> -        multiply( multiply.outer( dw.reshape(self.NE, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>> +        multiply( multiply.outer( dw.reshape(1, self.NS),
>>>>>>> >>> self.nm_no_nd_ones ), self.frqs, out=self.dw_struct )
>>>>>>> >>>
>>>>>>> >>>          # Reshape R20A and R20B to per experiment, spin and
>>>>>>> >>> frequency.
>>>>>>> >>>          self.r20a_struct[:] = multiply.outer(
>>>>>>> >>> R20A.reshape(self.NE,
>>>>>>> >>> self.NS, self.NM), self.no_nd_ones )
>>>>>>> >>>
>>>>>>> >>>
>>>>>>> >>> _______________________________________________
>>>>>>> >>> relax (http://www.nmr-relax.com)
>>>>>>> >>>
>>>>>>> >>> This is the relax-commits mailing list
>>>>>>> >>> relax-comm...@gna.org
>>>>>>> >>>
>>>>>>> >>> 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
>>>>>>> > relax-devel@gna.org
>>>>>>> >
>>>>>>> > 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
relax-devel@gna.org

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