Try setting "verbosity=10" in the grid_search user function call.
This might reveal the problem.

Regards,

Edward


On 6 June 2014 15:12, Troels Emtekær Linnet <[email protected]> wrote:
> I put in a print command in the target function to see R20A and R20B.
>
> This is not showing when doing grid search, but only when doing
> minimisation?
>
> Best
> Troels
>
>
> 2014-06-06 15:10 GMT+02:00 Troels Emtekær Linnet <[email protected]>:
>
>> I tried:
>>
>>         ## Experiments
>>         # Exp 1
>>         sfrq_1 = 500.0*1E6
>>         r20_key_1 = generate_r20_key(exp_type=EXP_TYPE_CPMG_SQ,
>> frq=sfrq_1)
>>         time_T2_1 = 0.05
>>         ncycs_1 = range(2,22,2)
>>         # Here you define the direct R2eff errors (rad/s), as being added
>> or subtracted for the created R2eff point in the corresponding ncyc cpmg
>> frequence.
>>         #r2eff_errs_1 = [0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05,
>> -0.05, 0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05]
>>         r2eff_errs_1 = [0.0] * len(ncycs_1)
>>         exp_1 = [sfrq_1, time_T2_1, ncycs_1, r2eff_errs_1]
>>
>>         sfrq_2 = 600.0*1E6
>>         r20_key_2 = generate_r20_key(exp_type=EXP_TYPE_CPMG_SQ,
>> frq=sfrq_2)
>>         time_T2_2 = 0.06
>>         ncycs_2 = range(2,22,2)
>>         # Here you define the direct R2eff errors (rad/s), as being added
>> or subtracted for the created R2eff point in the corresponding ncyc cpmg
>> frequence.
>>         #r2eff_errs_2 = [0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05,
>> -0.05, 0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05]
>>         r2eff_errs_2 = [0.0] * len(ncycs_2)
>>         exp_2 = [sfrq_2, time_T2_2, ncycs_2, r2eff_errs_2]
>>
>>         sfrq_3 = 700.0*1E6
>>         r20_key_3 = generate_r20_key(exp_type=EXP_TYPE_CPMG_SQ,
>> frq=sfrq_3)
>>         time_T2_3 = 0.07
>>         ncycs_3 = range(2,22,2)
>>         # Here you define the direct R2eff errors (rad/s), as being added
>> or subtracted for the created R2eff point in the corresponding ncyc cpmg
>> frequence.
>>         #r2eff_errs_2 = [0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05,
>> -0.05, 0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05, -0.05, 0.05]
>>         r2eff_errs_3 = [0.0] * len(ncycs_3)
>>         exp_3 = [sfrq_3, time_T2_3, ncycs_3, r2eff_errs_3]
>>
>>         # Collect all exps
>>         exps = [exp_1, exp_2, exp_3]
>>
>>         R20 = [10.1, 10.2, 10.3, 100.1, 100.2, 100.3, 20.1, 20.2, 20.3,
>> 200.1, 200.2, 200.3, 30.1, 30.2, 30.3, 300.1, 300.2, 300.3, 40.1, 40.2,
>> 40.3, 400.1, 400.2, 400.3]
>>         #R20 = [10.1, 10.2, 10.3, 100.1, 100.2, 100.3, 20.1, 20.2, 20.3,
>> 200.1, 200.2, 200.3]
>>         dw_arr = [1.0, 2.0, 3.0, 4.0]
>>         #dw_arr = [1.0, 2.0]
>>         pA_arr = [0.9]
>>         kex_arr = [1000.]
>>
>>         spins = [
>>                 ['Ala', 1, 'N', {'r2a': {r20_key_1: R20[0], r20_key_2:
>> R20[1], r20_key_3: R20[2]}, 'r2b': {r20_key_1: R20[3], r20_key_2: R20[4],
>> r20_key_3: R20[5]}, 'kex': kex_arr[0], 'pA': pA_arr[0], 'dw': dw_arr[0]}],
>>                 ['Ala', 2, 'N', {'r2a': {r20_key_1: R20[6], r20_key_2:
>> R20[7], r20_key_3: R20[8]}, 'r2b': {r20_key_1: R20[9], r20_key_2: R20[10],
>> r20_key_3: R20[11]}, 'kex': kex_arr[0], 'pA': pA_arr[0], 'dw': dw_arr[1]}],
>>                 ['Ala', 3, 'N', {'r2a': {r20_key_1: R20[12], r20_key_2:
>> R20[13], r20_key_3: R20[14]}, 'r2b': {r20_key_1: R20[15], r20_key_2:
>> R20[16], r20_key_3: R20[17]}, 'kex': kex_arr[0], 'pA': pA_arr[0], 'dw':
>> dw_arr[2]}],
>>                 ['Ala', 4, 'N', {'r2a': {r20_key_1: R20[18], r20_key_2:
>> R20[19], r20_key_3: R20[20]}, 'r2b': {r20_key_1: R20[21], r20_key_2:
>> R20[22], r20_key_3: R20[23]}, 'kex': kex_arr[0], 'pA': pA_arr[0], 'dw':
>> dw_arr[3]}],
>>                 ]
>>
>> ------
>>
>> ------------
>> relax> grid_search(lower=[10.1, 10.2, 10.3, 100.1, 100.2, 100.3, 20.1,
>> 20.2, 20.3, 200.1, 200.2, 200.3, 30.1, 30.2, 30.3, 300.1, 300.2, 300.3,
>> 40.1, 40.2, 40.3, 400.1, 400.2, 400.3, 1.0, 2.0, 3.0, 4.0, 0.9, 1000.0],
>> upper=[10.1, 10.2, 10.3, 100.1, 100.2, 100.3, 20.1, 20.2, 20.3, 200.1,
>> 200.2, 200.3, 30.1, 30.2, 30.3, 300.1, 300.2, 300.3, 40.1, 40.2, 40.3,
>> 400.1, 400.2, 400.3, 1.0, 2.0, 3.0, 4.0, 0.9, 1000.0], inc=1,
>> constraints=True, verbosity=1)
>>
>>
>> Fitting to the spin block [':1@N', ':2@N', ':3@N', ':4@N']
>> ----------------------------------------------------------
>>
>> Unconstrained grid search size: 1 (constraints may decrease this size).
>>
>>
>> Grid search
>> ~~~~~~~~~~~
>>
>> Searching through 1 grid nodes.
>>
>> Optimised parameter values:
>> r2a (SQ CPMG - 500.00000000 MHz)        10.100000000000000
>> r2a (SQ CPMG - 600.00000000 MHz)        10.199999999999999
>> r2a (SQ CPMG - 700.00000000 MHz)        10.300000000000001
>> r2b (SQ CPMG - 500.00000000 MHz)       100.099999999999994
>> r2b (SQ CPMG - 600.00000000 MHz)       100.199999999999989
>> r2b (SQ CPMG - 700.00000000 MHz)       100.299999999999997
>> r2a (SQ CPMG - 500.00000000 MHz)        20.100000000000001
>> r2a (SQ CPMG - 600.00000000 MHz)        20.199999999999999
>> r2a (SQ CPMG - 700.00000000 MHz)        20.300000000000004
>> r2b (SQ CPMG - 500.00000000 MHz)       200.099999999999966
>> r2b (SQ CPMG - 600.00000000 MHz)       200.199999999999989
>> r2b (SQ CPMG - 700.00000000 MHz)       200.300000000000011
>> r2a (SQ CPMG - 500.00000000 MHz)        30.100000000000001
>> r2a (SQ CPMG - 600.00000000 MHz)        30.199999999999999
>> r2a (SQ CPMG - 700.00000000 MHz)        30.300000000000004
>> r2b (SQ CPMG - 500.00000000 MHz)       300.100000000000023
>> r2b (SQ CPMG - 600.00000000 MHz)       300.199999999999989
>> r2b (SQ CPMG - 700.00000000 MHz)       300.300000000000011
>> r2a (SQ CPMG - 500.00000000 MHz)        40.099999999999994
>> r2a (SQ CPMG - 600.00000000 MHz)        40.200000000000003
>> r2a (SQ CPMG - 700.00000000 MHz)        40.299999999999997
>> r2b (SQ CPMG - 500.00000000 MHz)       400.100000000000023
>> r2b (SQ CPMG - 600.00000000 MHz)       400.199999999999932
>> r2b (SQ CPMG - 700.00000000 MHz)       400.300000000000011
>> dw                           1.000000000000000
>> dw                           2.000000000000000
>> dw                           3.000000000000000
>> dw                           4.000000000000000
>> pA                           0.900000000000000
>> kex                       1000.000000000000000
>> ('CR72 full', 'Ala', ':1@N', 'r2a', 'SQ CPMG - 600.00000000 MHz', 10.2,
>> 10.2)
>> ('CR72 full', 'Ala', ':1@N', 'r2a', 'SQ CPMG - 500.00000000 MHz', 10.1,
>> 10.1)
>> ('CR72 full', 'Ala', ':1@N', 'r2a', 'SQ CPMG - 700.00000000 MHz', 10.3,
>> 10.3)
>> ('CR72 full', 'Ala', ':1@N', 'r2b', 'SQ CPMG - 600.00000000 MHz',
>> 100.19999999999999, 100.2)
>> ('CR72 full', 'Ala', ':1@N', 'r2b', 'SQ CPMG - 500.00000000 MHz', 100.1,
>> 100.1)
>> ('CR72 full', 'Ala', ':1@N', 'r2b', 'SQ CPMG - 700.00000000 MHz', 100.3,
>> 100.3)
>> ('CR72 full', 'Ala', ':2@N', 'r2a', 'SQ CPMG - 600.00000000 MHz', 20.2,
>> 20.2)
>> ('CR72 full', 'Ala', ':2@N', 'r2a', 'SQ CPMG - 500.00000000 MHz', 20.1,
>> 20.1)
>> ('CR72 full', 'Ala', ':2@N', 'r2a', 'SQ CPMG - 700.00000000 MHz',
>> 20.300000000000004, 20.3)
>> ('CR72 full', 'Ala', ':2@N', 'r2b', 'SQ CPMG - 600.00000000 MHz', 200.2,
>> 200.2)
>> ('CR72 full', 'Ala', ':2@N', 'r2b', 'SQ CPMG - 500.00000000 MHz',
>> 200.09999999999997, 200.1)
>> ('CR72 full', 'Ala', ':2@N', 'r2b', 'SQ CPMG - 700.00000000 MHz', 200.3,
>> 200.3)
>> ('CR72 full', 'Ala', ':3@N', 'r2a', 'SQ CPMG - 600.00000000 MHz', 30.2,
>> 30.2)
>> ('CR72 full', 'Ala', ':3@N', 'r2a', 'SQ CPMG - 500.00000000 MHz', 30.1,
>> 30.1)
>> ('CR72 full', 'Ala', ':3@N', 'r2a', 'SQ CPMG - 700.00000000 MHz',
>> 30.300000000000004, 30.3)
>> ('CR72 full', 'Ala', ':3@N', 'r2b', 'SQ CPMG - 600.00000000 MHz', 300.2,
>> 300.2)
>> ('CR72 full', 'Ala', ':3@N', 'r2b', 'SQ CPMG - 500.00000000 MHz', 300.1,
>> 300.1)
>> ('CR72 full', 'Ala', ':3@N', 'r2b', 'SQ CPMG - 700.00000000 MHz', 300.3,
>> 300.3)
>> ('CR72 full', 'Ala', ':4@N', 'r2a', 'SQ CPMG - 600.00000000 MHz', 40.2,
>> 40.2)
>> ('CR72 full', 'Ala', ':4@N', 'r2a', 'SQ CPMG - 500.00000000 MHz',
>> 40.099999999999994, 40.1)
>> ('CR72 full', 'Ala', ':4@N', 'r2a', 'SQ CPMG - 700.00000000 MHz', 40.3,
>> 40.3)
>> ('CR72 full', 'Ala', ':4@N', 'r2b', 'SQ CPMG - 600.00000000 MHz',
>> 400.19999999999993, 400.2)
>> ('CR72 full', 'Ala', ':4@N', 'r2b', 'SQ CPMG - 500.00000000 MHz', 400.1,
>> 400.1)
>> ('CR72 full', 'Ala', ':4@N', 'r2b', 'SQ CPMG - 700.00000000 MHz', 400.3,
>> 400.3)
>>
>> --------
>>
>> It jumps over the target function?
>>
>> This is a little weird?
>>
>> Best
>> Troels
>>
>>
>>
>> 2014-06-06 15:02 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>
>>> Hi,
>>>
>>> Some more information is needed, as it's not possible to tell where
>>> this stopped.  A good idea would be to turn up the verbosity level to
>>> see what minfx is doing.  Did you call the grid_search user function?
>>> Or the minimise user function?  Did the grid search say something like
>>> "Searching through 1 grid nodes"?
>>>
>>> Regards,
>>>
>>> Edward
>>>
>>>
>>>
>>> On 6 June 2014 14:48, Troels Emtekær Linnet <[email protected]>
>>> wrote:
>>> > Hi Edward.
>>> >
>>> > When I try to do a grid search, it does not initalize func_CR72_full in
>>> > the
>>> > target function?
>>> >
>>> > If I make
>>> > import sys
>>> > sys.exit()
>>> >
>>> > It does not stop?
>>> > Only if I do a minimise, it stops?
>>> >
>>> > It is in
>>> > specific_analyses/relax_disp/optimisation.py
>>> > line 745
>>> >
>>> > Inserting
>>> >             print model.func.im_func.__name__
>>> > gives func_CR72_full
>>> >
>>> > How does it know how to unpack and calculate?
>>> >
>>> > Best
>>> > Troels
>>> >
>>> >
>>> > 2014-06-06 12:32 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>> >
>>> >> Hi,
>>> >>
>>> >> That sounds good.  Maybe it's best to have the number of fields and
>>> >> number of spins set to something different and not to 2?  That way the
>>> >> unpacking is stressed as much as possible and there cannot be a
>>> >> accidental swap of the field and spin dimensions being unnoticed by
>>> >> the test.  This is not likely, but I've encountered enough weird and
>>> >> supposedly impossible situations in the development of relax that it
>>> >> would not surprise me.
>>> >>
>>> >> Cheers,
>>> >>
>>> >> Edward
>>> >>
>>> >> On 6 June 2014 12:27, Troels Emtekær Linnet <[email protected]>
>>> >> wrote:
>>> >> > Check.
>>> >> >
>>> >> > I am generating R2eff data for 3 fields, and 3 spins, for full
>>> >> > model.
>>> >> > I will put the data in
>>> >> >
>>> >> > test_suite/shared_data/dispersion/bug_22146_unpacking_r2a_r2b_cluster
>>> >> >
>>> >> > Best
>>> >> > Troels
>>> >> >
>>> >> >
>>> >> > 2014-06-06 12:11 GMT+02:00 Edward d'Auvergne <[email protected]>:
>>> >> >
>>> >> >> Hi,
>>> >> >>
>>> >> >> Right, you have the 2 parameters in the self.num_spins*2 part.  And
>>> >> >> I
>>> >> >> forgot about the parameters being different for each field.  It
>>> >> >> would
>>> >> >> be good to then have a multi-field and multi-spin cluster system
>>> >> >> test
>>> >> >> to really make sure that relax operates correctly, especially with
>>> >> >> the
>>> >> >> data going into the target function and the subsequently unpacking
>>> >> >> the
>>> >> >> results into the relax data store.  For example someone might
>>> >> >> modify
>>> >> >> the loop_parameters() function - this concept could be migrated
>>> >> >> into
>>> >> >> the specific API and converted into a common mechanism for all the
>>> >> >> analysis types as it is quite powerful - and they may not know that
>>> >> >> the change they just made broke code in the
>>> >> >> target_functions.relax_disp module.
>>> >> >>
>>> >> >> Cheers,
>>> >> >>
>>> >> >> Edward
>>> >> >>
>>> >> >>
>>> >> >> On 6 June 2014 12:05, Troels Emtekær Linnet <[email protected]>
>>> >> >> wrote:
>>> >> >> > Hi Ed.
>>> >> >> >
>>> >> >> > The implementations needs:
>>> >> >> >         R20 =
>>> >> >> > params[:self.end_index[1]].reshape(self.num_spins*2,
>>> >> >> > self.num_frq)
>>> >> >> >         R20A = R20[::2].flatten()
>>> >> >> >         R20B = R20[1::2].flatten()
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> >
>>> >> >> > 2014-06-06 11:55 GMT+02:00 Edward d'Auvergne
>>> >> >> > <[email protected]>:
>>> >> >> >
>>> >> >> >> The different unpacking implementations can be tested with the
>>> >> >> >> timeit
>>> >> >> >> Python module to see which is fastest
>>> >> >> >>
>>> >> >> >>
>>> >> >> >>
>>> >> >> >> (http://thread.gmane.org/gmane.science.nmr.relax.devel/5937/focus=6010).
>>> >> >> >>
>>> >> >> >> Cheers,
>>> >> >> >>
>>> >> >> >> Edward
>>> >> >> >>
>>> >> >> >>
>>> >> >> >>
>>> >> >> >> On 6 June 2014 11:53, Edward d'Auvergne <[email protected]>
>>> >> >> >> wrote:
>>> >> >> >> > Hi,
>>> >> >> >> >
>>> >> >> >> > In this case, I think 'num_frq' should be fixed to 2.  This
>>> >> >> >> > dimension
>>> >> >> >> > corresponds to the parameters R20A and R20B so it is always
>>> >> >> >> > fixed
>>> >> >> >> > to
>>> >> >> >> > 2.
>>> >> >> >> >
>>> >> >> >> > Regards,
>>> >> >> >> >
>>> >> >> >> > Edward
>>> >> >> >> >
>>> >> >> >> >
>>> >> >> >> >
>>> >> >> >> > On 6 June 2014 11:51, Troels Emtekær Linnet
>>> >> >> >> > <[email protected]>
>>> >> >> >> > wrote:
>>> >> >> >> >> Hi.
>>> >> >> >> >>
>>> >> >> >> >> Another way is:
>>> >> >> >> >>
>>> >> >> >> >> ml = params[:end_index[1]].reshape(num_spins*2, num_frq)
>>> >> >> >> >> R20A = ml[::2].flatten()
>>> >> >> >> >> R20B = ml[1::2].flatten()
>>> >> >> >> >>
>>> >> >> >> >>
>>> >> >> >> >> Best
>>> >> >> >> >> Troels
>>> >> >> >> >>
>>> >> >> >> >>
>>> >> >> >> >>
>>> >> >> >> >> 2014-06-06 11:39 GMT+02:00 Troels Emtekær Linnet
>>> >> >> >> >> <[email protected]>:
>>> >> >> >> >>
>>> >> >> >> >>> There is no doubt that it is the unpacking of the R20A and
>>> >> >> >> >>> R20B
>>> >> >> >> >>> in
>>> >> >> >> >>> the
>>> >> >> >> >>> target function.
>>> >> >> >> >>>
>>> >> >> >> >>> I was thinking of creating a function, which do the the
>>> >> >> >> >>> unpacking.
>>> >> >> >> >>>
>>> >> >> >> >>> This unpacking function could then be tested with a unit
>>> >> >> >> >>> test?
>>> >> >> >> >>>
>>> >> >> >> >>> What do you think?
>>> >> >> >> >>> Where should I position such a function?
>>> >> >> >> >>>
>>> >> >> >> >>> Best
>>> >> >> >> >>> Troels
>>> >> >> >> >>>
>>> >> >> >> >>>
>>> >> >> >> >>>
>>> >> >> >> >>> 2014-06-06 11:26 GMT+02:00 Edward d'Auvergne
>>> >> >> >> >>> <[email protected]>:
>>> >> >> >> >>>>
>>> >> >> >> >>>> Hi Troels,
>>> >> >> >> >>>>
>>> >> >> >> >>>>
>>> >> >> >> >>>> The best way to handle this is to first create a unit test
>>> >> >> >> >>>> of
>>> >> >> >> >>>> the
>>> >> >> >> >>>>
>>> >> >> >> >>>>
>>> >> >> >> >>>> specific_analyses.relax_disp.parameters.disassemble_param_vector()
>>> >> >> >> >>>> where the problem is likely to be most easily found.  I
>>> >> >> >> >>>> don't
>>> >> >> >> >>>> understand how this could be a problem as the
>>> >> >> >> >>>> assemble_param_vector()
>>> >> >> >> >>>> and disassemble_param_vector() functions both call the same
>>> >> >> >> >>>> loop_parameters() function for the ordering of the
>>> >> >> >> >>>> parameter
>>> >> >> >> >>>> values!
>>> >> >> >> >>>> Maybe the problem is in the unpacking of the parameter
>>> >> >> >> >>>> vector
>>> >> >> >> >>>> in
>>> >> >> >> >>>> the
>>> >> >> >> >>>> target functions themselves, for example in the full B14
>>> >> >> >> >>>> model:
>>> >> >> >> >>>>
>>> >> >> >> >>>>
>>> >> >> >> >>>>     def func_B14_full(self, params):
>>> >> >> >> >>>>         """Target function for the Baldwin (2014) 2-site
>>> >> >> >> >>>> exact
>>> >> >> >> >>>> solution model for all time scales.
>>> >> >> >> >>>>
>>> >> >> >> >>>>         This assumes that pA > pB, and hence this must be
>>> >> >> >> >>>> implemented
>>> >> >> >> >>>> as a constraint.
>>> >> >> >> >>>>
>>> >> >> >> >>>>
>>> >> >> >> >>>>         @param params:  The vector of parameter values.
>>> >> >> >> >>>>         @type params:   numpy rank-1 float array
>>> >> >> >> >>>>         @return:        The chi-squared value.
>>> >> >> >> >>>>         @rtype:         float
>>> >> >> >> >>>>         """
>>> >> >> >> >>>>
>>> >> >> >> >>>>         # Scaling.
>>> >> >> >> >>>>         if self.scaling_flag:
>>> >> >> >> >>>>             params = dot(params, self.scaling_matrix)
>>> >> >> >> >>>>
>>> >> >> >> >>>>         # Unpack the parameter values.
>>> >> >> >> >>>>         R20A = params[:self.end_index[0]]
>>> >> >> >> >>>>         R20B = params[self.end_index[0]:self.end_index[1]]
>>> >> >> >> >>>>         dw = params[self.end_index[1]:self.end_index[2]]
>>> >> >> >> >>>>         pA = params[self.end_index[2]]
>>> >> >> >> >>>>         kex = params[self.end_index[2]+1]
>>> >> >> >> >>>>
>>> >> >> >> >>>>         # Calculate and return the chi-squared value.
>>> >> >> >> >>>>         return self.calc_B14_chi2(R20A=R20A, R20B=R20B,
>>> >> >> >> >>>> dw=dw,
>>> >> >> >> >>>> pA=pA,
>>> >> >> >> >>>> kex=kex)
>>> >> >> >> >>>>
>>> >> >> >> >>>>
>>> >> >> >> >>>> This R20A and R20B unpacking might be the failure point as
>>> >> >> >> >>>> this
>>> >> >> >> >>>> may
>>> >> >> >> >>>> not match the loop_parameters() function - which it must!
>>> >> >> >> >>>> In
>>> >> >> >> >>>> any
>>> >> >> >> >>>> case, having a unit or system test catch the problem would
>>> >> >> >> >>>> be
>>> >> >> >> >>>> very
>>> >> >> >> >>>> useful for the stability of the dispersion analysis in
>>> >> >> >> >>>> relax.
>>> >> >> >> >>>>
>>> >> >> >> >>>> A code example might be useful:
>>> >> >> >> >>>>
>>> >> >> >> >>>> R20_params = array([1, 2, 3, 4])
>>> >> >> >> >>>> R20A, R20B = transpose(R20_params.reshape(2, 2)
>>> >> >> >> >>>> print(R20A)
>>> >> >> >> >>>> print(R20B)
>>> >> >> >> >>>>
>>> >> >> >> >>>> You should see that R20A is [1, 3], and R20B is [2, 4].
>>> >> >> >> >>>> This
>>> >> >> >> >>>> is
>>> >> >> >> >>>> how
>>> >> >> >> >>>> the parameters are handled in the loop_parameters()
>>> >> >> >> >>>> function
>>> >> >> >> >>>> which
>>> >> >> >> >>>> defines the parameter vector in all parts of relax.  There
>>> >> >> >> >>>> might
>>> >> >> >> >>>> be a
>>> >> >> >> >>>> quicker way to unpack the parameters, but such an idea
>>> >> >> >> >>>> could be
>>> >> >> >> >>>> used
>>> >> >> >> >>>> for the target functions.
>>> >> >> >> >>>>
>>> >> >> >> >>>> Cheers,
>>> >> >> >> >>>>
>>> >> >> >> >>>> Edward
>>> >> >> >> >>>>
>>> >> >> >> >>>> On 6 June 2014 11:08, Troels E. Linnet
>>> >> >> >> >>>> <[email protected]>
>>> >> >> >> >>>> wrote:
>>> >> >> >> >>>> > URL:
>>> >> >> >> >>>> >   <http://gna.org/bugs/?22146>
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >                  Summary: Unpacking of R2A and R2B is
>>> >> >> >> >>>> > performed
>>> >> >> >> >>>> > wrong
>>> >> >> >> >>>> > for
>>> >> >> >> >>>> > clustered "full" dispersion models
>>> >> >> >> >>>> >                  Project: relax
>>> >> >> >> >>>> >             Submitted by: tlinnet
>>> >> >> >> >>>> >             Submitted on: Fri 06 Jun 2014 09:08:58 AM UTC
>>> >> >> >> >>>> >                 Category: relax's source code
>>> >> >> >> >>>> > Specific analysis category: Relaxation dispersion
>>> >> >> >> >>>> >                 Priority: 9 - Immediate
>>> >> >> >> >>>> >                 Severity: 4 - Important
>>> >> >> >> >>>> >                   Status: None
>>> >> >> >> >>>> >              Assigned to: None
>>> >> >> >> >>>> >          Originator Name:
>>> >> >> >> >>>> >         Originator Email:
>>> >> >> >> >>>> >              Open/Closed: Open
>>> >> >> >> >>>> >                  Release: Repository: trunk
>>> >> >> >> >>>> >          Discussion Lock: Any
>>> >> >> >> >>>> >         Operating System: All systems
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > _______________________________________________________
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > Details:
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > The unpacking of the R2A and R2B parameters in the "full"
>>> >> >> >> >>>> > model
>>> >> >> >> >>>> > is
>>> >> >> >> >>>> > performed
>>> >> >> >> >>>> > wrong.
>>> >> >> >> >>>> > This will happen performing a clustered analysis, using
>>> >> >> >> >>>> > one
>>> >> >> >> >>>> > of
>>> >> >> >> >>>> > the
>>> >> >> >> >>>> > "full"
>>> >> >> >> >>>> > models.
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > This bug affect all analysis performed running with a
>>> >> >> >> >>>> > "full"
>>> >> >> >> >>>> > model,
>>> >> >> >> >>>> > with
>>> >> >> >> >>>> > clustered residues.
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > The bug is located in the target function:
>>> >> >> >> >>>> > ./target_functions/relax_disp.py
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > For all the "func_MODEL_full", the unpacking of:
>>> >> >> >> >>>> > R20A = params[:self.end_index[0]]
>>> >> >> >> >>>> > R20B = params[self.end_index[0]:self.end_index[1]]
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > This is wrong, since the "params" list, is ordered:
>>> >> >> >> >>>> > [spin, spin, spin, [dw], pA, kex], where spin =
>>> >> >> >> >>>> > [nr_frq*r2a,
>>> >> >> >> >>>> > nr_frq*r2b]
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > This ordering happens in:
>>> >> >> >> >>>> > ./specific_analysis/relax_disp/parameters.py
>>> >> >> >> >>>> > in the loop_parameters.py
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > A possible solutions i shown below.
>>> >> >> >> >>>> > This alter the unpacking of the parameters.
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > An example of profiling_cr72.py is attached.
>>> >> >> >> >>>> > This can be downloaded, and run in base folder of relax:
>>> >> >> >> >>>> > ./profiling_cr72.py .
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > This is with 3 frq, and 3 spins.
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > The current implementations would unpack:
>>> >> >> >> >>>> > ('R20A', array([  2.,   2.,   2.,   4.,   4.,   4.,  12.,
>>> >> >> >> >>>> > 12.,
>>> >> >> >> >>>> > 12.]),
>>> >> >> >> >>>> > 9)
>>> >> >> >> >>>> > ('R20B', array([ 14.,  14.,  14.,  22.,  22.,  22.,  24.,
>>> >> >> >> >>>> > 24.,
>>> >> >> >> >>>> > 24.]),
>>> >> >> >> >>>> > 9)
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > R2A is 2, 12, 22 for the spins 0-3
>>> >> >> >> >>>> > R2B is, 4, 14, 24 for the spins 0-3
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > The suggested unpacking loop, unpacks to:
>>> >> >> >> >>>> > ('R20A', array([  2.,   2.,   2.,  12.,  12.,  12.,  22.,
>>> >> >> >> >>>> > 22.,
>>> >> >> >> >>>> > 22.]),
>>> >> >> >> >>>> > 9)
>>> >> >> >> >>>> > ('R20B', array([  4.,   4.,   4.,  14.,  14.,  14.,  24.,
>>> >> >> >> >>>> > 24.,
>>> >> >> >> >>>> > 24.]),
>>> >> >> >> >>>> > 9)
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > -------
>>> >> >> >> >>>> > from numpy import array, concatenate, delete, index_exp
>>> >> >> >> >>>> > import numpy
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > p = array([  1.000000000000000e+01,
>>> >> >> >> >>>> > 1.000000000000000e+01,
>>> >> >> >> >>>> > 1.100000000000000e+01
>>> >> >> >> >>>> > , 1.100000000000000e+01, 1.000000000000000e+01,
>>> >> >> >> >>>> > 1.000000000000000e+01
>>> >> >> >> >>>> > , 1.100000000000000e+01, 1.100000000000000e+01,
>>> >> >> >> >>>> > 1.000000000000000e+00
>>> >> >> >> >>>> > , 1.000000000000000e+00, 9.000000000000000e-01,
>>> >> >> >> >>>> > 1.000000000000000e+03])
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > e = [4, 8, 10]
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > # Now
>>> >> >> >> >>>> > r2a = p[:e[0]]
>>> >> >> >> >>>> > print r2a
>>> >> >> >> >>>> > r2b = p[e[0]:e[1]]
>>> >> >> >> >>>> > print r2b
>>> >> >> >> >>>> > dw = p[e[1]:e[2]]
>>> >> >> >> >>>> > print dw
>>> >> >> >> >>>> > pA = p[e[2]]
>>> >> >> >> >>>> > print pA
>>> >> >> >> >>>> > kex = p[e[2]+1]
>>> >> >> >> >>>> > print kex
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > print "new"
>>> >> >> >> >>>> > ns = 2
>>> >> >> >> >>>> > nf = 2
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > ml = p[:e[1]]
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > R20A = array([])
>>> >> >> >> >>>> > R20B = array([])
>>> >> >> >> >>>> > for i in range(0, ns):
>>> >> >> >> >>>> >     # Array sorted per [spin, spin, spin], where spin =
>>> >> >> >> >>>> > [nr_frq*r2a,
>>> >> >> >> >>>> > nr_frq*r2b]
>>> >> >> >> >>>> >     spin_AB = ml[:nf*2]
>>> >> >> >> >>>> >     ml = delete(ml, numpy.s_[:nf*2])
>>> >> >> >> >>>> >     R20A = concatenate([R20A, spin_AB[:nf] ])
>>> >> >> >> >>>> >     R20B = concatenate([R20B, spin_AB[nf:] ])
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > print R20A
>>> >> >> >> >>>> > print R20B
>>> >> >> >> >>>> > print dw
>>> >> >> >> >>>> > print pA
>>> >> >> >> >>>> > print kex
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > _______________________________________________________
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > File Attachments:
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > -------------------------------------------------------
>>> >> >> >> >>>> > Date: Fri 06 Jun 2014 09:08:58 AM UTC  Name:
>>> >> >> >> >>>> > profiling_cr72.py
>>> >> >> >> >>>> > Size:
>>> >> >> >> >>>> > 17kB
>>> >> >> >> >>>> > By: tlinnet
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > <http://gna.org/bugs/download.php?file_id=20938>
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > _______________________________________________________
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > Reply to this item at:
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >   <http://gna.org/bugs/?22146>
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > _______________________________________________
>>> >> >> >> >>>> >   Message sent via/by Gna!
>>> >> >> >> >>>> >   http://gna.org/
>>> >> >> >> >>>> >
>>> >> >> >> >>>> >
>>> >> >> >> >>>> > _______________________________________________
>>> >> >> >> >>>> > 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