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