This all sounds good. I also like the idea that users can add more 
iterations. I will recode this. Why do you want to get rid of the BIC 
selection mode? Even recent papers are still using it and as relax can 
handle it, I would suggest not to force users too much to use AIC. What 
do you think?


Edward d'Auvergne wrote:
> The local tm model for a peptide is highly probable because of high
> internal mobility being coupled to the external diffusion.  I would
> guess that in this case the protocol was circling endlessly around the
> solution.  We should store all the information (already converted for
> comparison to save a little computation time) for each iteration
> within lists from the convergence() method.  For a maximum number, I
> would suggest 30.  Each iteration is much quicker to complete than the
> previous, so 20 vs. 30 is much quicker than the first or second 10.
> It would be better to be on the safe side and have a max of 30 - it is
> too difficult for us to predict how a difficult, yet solvable case
> will look like.  In this case, I think we should add an new list
> called self.max_iterations which starts as false for all.  If 30
> iterations is hit, then the position for that model should be set to
> True.  I would also recommend removing the unused AIC vs. BIC GUI
> element and maybe replacing it with a text box where the user can
> change this number (and we only allow it to be bigger than 30 ;).
>
> The self.max_iterations list is then used in the model_selection()
> method to eliminate that global model prior to model selection.  For
> the progress bar, it would be good to have the iteration number also
> displayed.  That way it is better communicated that the bar is
> counting iterations and not a percentage of being complete.  We
> shouldn't give to the user the impression that they have to wait until
> the progress bar hits the end. What kindm of granularity do you have
> here?  Can we have a movement for the completion of each iteration?
>
> Regards,
>
> Edward
>
>
>
>
> On 13 April 2010 00:20, Michael Bieri <[email protected]> wrote:
>   
>> It would be the best to store results of each iterations in
>> convergence(). I already had a couple of cases / models that never
>> converged. Predominately, these were molecules with a high degree o
>> motion. For example there was a peptide (40 residues), where none of the
>> models converged after 20 iterations, so I aborted them. The diffusion
>> tensor fits well so I thought that's alright. I heard from other people
>> that they also stop their calculation after 20 iterations. Nevertheless
>> and surprisingly, the model wich was selected for S2 (And the rest) was
>> local tm - possible?
>>
>> But in general I like the idea to compare the minimization of all the
>> iterations, as you suggested. I still would set a maximum of 20 (or 30)
>> iterations to avoid calculations over several days. Another benefit is
>> that we are able to update the progress bar.
>>
>>
>> Edward d'Auvergne wrote:
>>     
>>> Hi Michael,
>>>
>>> We could add an arg to limit the number of iterations, but I think
>>> there is a much better way.  The problem of iterating forever is
>>> because of circling around the minimum (not the optimisation minimum
>>> but Occam's razor, as described in equation (14) of my 2007 paper
>>> http://www.nmr-relax.com/refs.html).  Currently only the current to
>>> previous iterations are compared, but some people have encountered a 3
>>> iteration cycle.  Even larger looping might occur.  Note that the
>>> repeated position in this cycle is identical to one of the previous.
>>> So we should really store all of the required info in the
>>> convergence() method of auto_analyses/dauvergne_protocol.py and check
>>> the current against all iterations.
>>>
>>> If one of these converged loops has not been reached after 20
>>> iterations, then either the system is complex but will still soon
>>> converge, or something is seriously, very seriously wrong.  The model
>>> should be deselected and the user told of its total failure.  My
>>> experience is that after 20, convergence has been reached.  But I
>>> think we should allow more before termination, as the termination is a
>>> sign that something is sick.
>>>
>>> If we catch the large iteration circling about Occam's razor and
>>> terminate, do you think we would need a maximum iteration termination
>>> point and subsequent global model elimination?  Have you encountered
>>> such a non-cycling, infinite looping?
>>>
>>> Regards,
>>>
>>> Edward
>>>
>>>
>>>
>>>
>>> On 12 April 2010 03:02,  <[email protected]> wrote:
>>>
>>>       
>>>> Author: michaelbieri
>>>> Date: Mon Apr 12 03:02:19 2010
>>>> New Revision: 11061
>>>>
>>>> URL: http://svn.gna.org/viewcvs/relax?rev=11061&view=rev
>>>> Log:
>>>> The relaxGUI controller updates its progress bar using informations from 
>>>> the status singleton during model-free analysis.
>>>>
>>>> Currently, there is a maximum of iterations set for models 1 - 5. This 
>>>> also has to be set in the dauvergne_protocol.py script. Edward, what do 
>>>> you think about limiting to 20 iterations?
>>>>
>>>> Modified:
>>>>    branches/bieri_gui/gui_bieri/controller.py
>>>>
>>>> Modified: branches/bieri_gui/gui_bieri/controller.py
>>>> URL: 
>>>> http://svn.gna.org/viewcvs/relax/branches/bieri_gui/gui_bieri/controller.py?rev=11061&r1=11060&r2=11061&view=diff
>>>> ==============================================================================
>>>> --- branches/bieri_gui/gui_bieri/controller.py (original)
>>>> +++ branches/bieri_gui/gui_bieri/controller.py Mon Apr 12 03:02:19 2010
>>>> @@ -142,13 +142,50 @@
>>>>
>>>>     def __init__(self,aWxTextCtrl):
>>>>         self.out=aWxTextCtrl
>>>> +        self.status = Status()
>>>>
>>>> +    def limit_entries(self):
>>>> +        """ Function to overcome feedback problem of wx.CallAfter() 
>>>> command"""
>>>> +
>>>> +        # Maximum allowed number of lines in log window.
>>>> +        max_entries = 10000
>>>> +
>>>> +        # read number of lines in log window.
>>>> +        total_entries = self.out.log_panel.GetNumberOfLines()
>>>> +
>>>> +        # Shift entries backwards if maximum of line exeeded.
>>>> +        if total_entries > max_entries:
>>>> +            # Reset log window entries
>>>> +            new_entries = 'Refreshing log window...\n\n'
>>>> +            self.out.log_panel.SetValue(new_entries)
>>>>
>>>>     def write(self,string):
>>>> -        global progress
>>>>
>>>>         # Limit panle entries to max_entries Lines.
>>>>         wx.CallAfter(self.limit_entries)
>>>> +
>>>> +        # Update Gauge (Progress bar).
>>>> +        # Local tm model:
>>>> +        if self.status.dAuvergne_protocol.diff_model == 'local_tm':
>>>> +            # Current model.
>>>> +            no = self.status.dAuvergne_protocol.current_model[2:]
>>>> +            no = int(no)
>>>> +
>>>> +            # Total selected models.
>>>> +            total_models = 
>>>> len(self.status.dAuvergne_protocol.local_mf_models)
>>>> +
>>>> +            # update Progress bar.
>>>> +            wx.CallAfter(self.out.progress_bar.SetValue, 
>>>> (100*no/total_models))
>>>> +
>>>> +        # Sphere to Ellipsoid Models.
>>>> +        if self.status.dAuvergne_protocol.diff_model in ['sphere', 
>>>> 'prolate', 'oblate', 'ellipsoid']:
>>>> +            # Determine actual round (maximum is 20).
>>>> +            wx.CallAfter(self.out.progress_bar.SetValue, 
>>>> (100*(self.status.dAuvergne_protocol.round-1)/20))
>>>> +
>>>> +        # Final analysis.
>>>> +        if self.status.dAuvergne_protocol.diff_model == 'final':
>>>> +            mc_simulation = self.status.mc_number
>>>> +
>>>>
>>>>         # Add new output.
>>>>         wx.CallAfter(self.out.log_panel.AppendText, string)
>>>>
>>>>
>>>> _______________________________________________
>>>> relax (http://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://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://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://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