Hi,
I don't think you even need the pA array. What is the variable
self.spins_a? Simply try using pA directly. Here is a demo:
"""
from numpy import array, float64, ones
a = ones(3)
pA = 0.9
pA_array = pA * a
b = array([1, 2, 3], float64)
print("\nFloat times array:")
print(repr(pA * b))
print("\nArray times array:")
print(repr(pA_array * b))
"""
If you run this, you will obtain the same result for both operations.
Is there a good reason, that I cannot see, why the second option is
required in the target functions?
Cheers,
Edward
On 10 June 2014 12:09, Troels Emtekær Linnet <[email protected]> wrote:
> You are Correct !!!
>
> The final version is:
> pA_arr = pA*self.spins_a
>
> The "trick" was to make a numpy multi dimensional spin array in the
> __init__ function of the class.
>
> That is filled with 1.0 where there are dispersion points.
>
> This array essential replace the spin looping!
>
> Best
> Troels
>
>
>
>
> 2014-06-10 11:56 GMT+02:00 Edward d'Auvergne <[email protected]>:
>> Hi Troels,
>>
>> From the dispersion equations, to me it looks like that you can keep
>> pA as a single value. Why have you converted it to an array
>> structure? You will have no problems as you can multiply any numpy
>> array with a single float. This should be the same for all model
>> parameters, excluding dw and R20. If you can use single values, that
>> should be much quicker for the target functions.
>>
>> Regards,
>>
>> Edward
>>
>>
>>
>> On 8 June 2014 19:48, <[email protected]> wrote:
>>> Author: tlinnet
>>> Date: Sun Jun 8 19:48:31 2014
>>> New Revision: 23735
>>>
>>> URL: http://svn.gna.org/viewcvs/relax?rev=23735&view=rev
>>> Log:
>>> Important fix for the creation of the multi dimensional pA numpy array.
>>>
>>> It should be created as numpy.zeros([ei][si][mi][oi]) instead of
>>> numpy.ones([ei][si][mi][oi]).
>>>
>>> This allows for rapid testing of all dimensions with np.allclose(pA,
>>> numpy.ones(dw.shape)).
>>> pA can have missing filled out values, when the number of dispersion points
>>> are different
>>> per spectrometer frequency.
>>>
>>> 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=23735&r1=23734&r2=23735&view=diff
>>> ==============================================================================
>>> --- branches/disp_spin_speed/target_functions/relax_disp.py (original)
>>> +++ branches/disp_spin_speed/target_functions/relax_disp.py Sun Jun 8
>>> 19:48:31 2014
>>> @@ -411,7 +411,7 @@
>>> # The number of disp point can change per spectrometer, so we
>>> make the maximum size.
>>> self.R20A_a = np.ones(back_calc_shape +
>>> [self.max_num_disp_points])
>>> self.R20B_a = np.ones(back_calc_shape +
>>> [self.max_num_disp_points])
>>> - self.pA_a = np.ones(back_calc_shape +
>>> [self.max_num_disp_points])
>>> + self.pA_a = np.zeros(back_calc_shape +
>>> [self.max_num_disp_points])
>>> self.dw_frq_a = np.ones(back_calc_shape +
>>> [self.max_num_disp_points])
>>> self.kex_a = np.ones(back_calc_shape +
>>> [self.max_num_disp_points])
>>> self.cpmg_frqs_a = np.ones(back_calc_shape +
>>> [self.max_num_disp_points])
>>>
>>>
>>> _______________________________________________
>>> 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