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

Reply via email to