mailRe: looping the optimization in full_analysis.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by Douglas Kojetin on June 26, 2007 - 17:17:
I seemed to have tracked down the problem, and the loop appears to work now. Here is a diff of the OLD version (currently in the svn repository; 3317) vs. the NEW version I edited:

diff OLD.py NEW.py
524a525,527
>             for name_to_remove in LOCAL_TM_MODELS:
>                 if name_to_remove in self.relax.data.run_names:
>                     run.delete(name_to_remove)
526a530,532
>             for name_to_remove in MF_MODELS:
>                 if name_to_remove in self.relax.data.run_names:
>                     run.delete(name_to_remove)


The changes were made in the multi_model() definition. I would commit these changes, but I'm not sure how (or if you would like me to).

Doug



On Jun 26, 2007, at 3:58 AM, Edward d'Auvergne wrote:

Whoops, that should have been 'self.relax.data.run_names'!  It's all
fixed in the repository.

Cheers,

Edward


On 6/25/07, Douglas Kojetin <douglas.kojetin@xxxxxxxxx> wrote:
Hi Edward,

A new error, that appears before the first round of iteration starts
after executing the script:

--------------------------------------------------------------------- ---
----------------------------
Traceback (most recent call last):
   File "/home/dkojetin/bin/relax", line 454, in ?
     Relax()
   File "/home/dkojetin/bin/relax", line 166, in __init__
     self.interpreter.run()
   File "/opt/relax/1.2/prompt/interpreter.py", line 213, in run
     run_script(intro=self.relax.intro_string, local=self.local,
script_file=self.relax.script_file, quit=1)
File "/opt/relax/1.2/prompt/interpreter.py", line 388, in run_script
     console.interact(intro, local, script_file, quit)
   File "/opt/relax/1.2/prompt/interpreter.py", line 340, in
interact_script
     execfile(script_file, local)
   File "n3.py", line 578, in ?
     Main(self.relax)
   File "n3.py", line 230, in __init__
     self.load_tensor()
   File "n3.py", line 499, in load_tensor
     if 'previous' in self.relax.data.runs:
AttributeError: Data instance has no attribute 'runs'


Doug



On Jun 25, 2007, at 8:54 AM, Edward d'Auvergne wrote:

> Hi,
>
> Sorry, that relax_data_store was 1.3 line specific and I forgot to
> change that for the 1.2 line.  The repository code should now have
> that fixed.
>
> Cheers,
>
> Edward
>
>
> On 6/25/07, Douglas Kojetin <douglas.kojetin@xxxxxxxxx> wrote:
>> Hello,
>>
>> Here is the error reported by the modified full_analysis.py script
>> (named n.py in the below Traceback):
>>
>> #--start
>> ---------------------------------------------------------------------
>> ---
>> ----------------------------
>> Traceback (most recent call last):
>>    File "/home/dkojetin/bin/relax", line 454, in ?
>>      Relax()
>>    File "/home/dkojetin/bin/relax", line 166, in __init__
>>      self.interpreter.run()
>>    File "/opt/relax/1.2/prompt/interpreter.py", line 213, in run
>>      run_script(intro=self.relax.intro_string, local=self.local,
>> script_file=self.relax.script_file, quit=1)
>>    File "/opt/relax/1.2/prompt/interpreter.py", line 388, in
>> run_script
>>      console.interact(intro, local, script_file, quit)
>>    File "/opt/relax/1.2/prompt/interpreter.py", line 340, in
>> interact_script
>>      execfile(script_file, local)
>>    File "n.py", line 577, in ?
>>      Main(self.relax)
>>    File "n.py", line 229, in __init__
>>      self.load_tensor()
>>    File "n.py", line 498, in load_tensor
>>      if relax_data_store.has_key('previous'):
>> NameError: global name 'relax_data_store' is not defined
>>
>> #--end
>>
>> Thanks,
>> Doug
>>
>>
>> On Jun 25, 2007, at 4:42 AM, Edward d'Auvergne wrote:
>> > Hi,
>> >
>> > I've just made modifications to the 1.2 and 1.3 repository lines to
>> > hopefully fix this problem.  Could you try again to see if the
>> script
>> > works this time?
>> >
>> > Cheers,
>> >
>> > Edward
>> >
>> >
>> > On 6/25/07, Douglas Kojetin <douglas.kojetin@xxxxxxxxx> wrote:
>> >> Hi Edward,
>> >>
>> >> I gave the new script a try, setting CONV_LOOP = 1, but it
>> reported
>> >> an error after optimizing the first round:
>> >>
>> >> """
>> >> Convergence:
>> >>      [ No ]
>> >>
>> >> relax> run.create(run='previous', run_type='mf')
>> >> RelaxError: The run 'previous' already exists.
>> >> """
>> >>
>> >> If you have any suggestions for changes to the script, send
>> them my
>> >> way and I'll give it a try.
>> >>
>> >> Doug
>> >>
>> >>
>> >>
>> >> On Jun 24, 2007, at 11:47 AM, Edward d'Auvergne wrote:
>> >>
>> >> > Hi,
>> >> >
>> >> > The simplest way to do this would be to use a while loop using a
>> >> > modified version of the convergence() function which returns
>> 1 or 0
>> >> > depending on whether the results have converged (exactly like
>> your
>> >> > suggestion).  I have added this looping ability to the
>> >> > full_analysis.py script in the relax repository (to both the 1.2
>> >> and
>> >> > 1.3 lines).  This is not activated by default though and the
>> >> scripts
>> >> > in the repository are significantly different from that in the
>> >> relax
>> >> > 1.2.10 version (all the variables which should be modified by
>> >> the user
>> >> > have been shifted to the top of the script).  Would you be
>> able to
>> >> > test if this automatic looping over all rounds of optimisation
>> >> until
>> >> > convergence actually works?  There could possibly be bugs
>> lurking
>> >> > there.  Thanks.
>> >> >
>> >> > The problem that you encountered with the calling of the
>> __init__()
>> >> > function is because this function should not be called.
>> Using that
>> >> > type of approach, the looping should have been outside of the
>> Main
>> >> > class to work.
>> >> >
>> >> > Cheers,
>> >> >
>> >> > Edward
>> >> >
>> >> >
>> >> > On 6/16/07, Douglas Kojetin <douglas.kojetin@xxxxxxxxx> wrote:
>> >> >> Hi All,
>> >> >>
>> >> >> Is it possible to edit full_analysis.py so the optimization of
>> >> MII to
>> >> >> MV (self.round > 0) is done automatically by looping until
>> >> >> convergence?
>> >> >
>> >> > Do you mean that the script will automatically
>> >> >
>> >> >
>> >> >>  I tried to do this by modifying the following in
>> >> >> convergence() [near the end]:
>> >> >>
>> >> >> """
>> >> >>          # Final print out.
>> >> >>          ##################
>> >> >>
>> >> >>          print "\nConvergence:"
>> >> >>          if chi2_converged and models_converged and
>> >> params_converged:
>> >> >>              print "    [ Yes ]"
>> >> >>              return 1
>> >> >>          else:
>> >> >>              print "    [ No ]"
>> >> >>              return 0
>> >> >> """
>> >> >>
>> >> >> then modifying __init__(), at the end of the "elif
>> DIFF_MODEL ==
>> >> >> 'sphere' or DIFF_MODEL == 'prolate' or DIFF_MODEL ==
>> 'oblate' or
>> >> >> DIFF_MODEL == 'ellipsoid':" statement:
>> >> >>
>> >> >> """
>> >> >>                  # Test for convergence.
>> >> >>                  test=self.convergence(run=name)
>> >> >>
>> >> >>                  if test == 0:
>> >> >>                      __init__(self.relax)
>> >> >>                      #Main(self.relax)
>> >> >> """
>> >> >>
>> >> >> but it did not work properly.  I think the problem has
>> >> something to
>> >> >> do with the call to __init__() or Main().  I'll see if I can
>> >> dig up
>> >> >> the error reported by relax.
>> >> >>
>> >> >> Thanks,
>> >> >> Doug
>> >> >>
>> >> >> _______________________________________________
>> >> >> relax (http://nmr-relax.com)
>> >> >>
>> >> >> This is the relax-users mailing list
>> >> >> relax-users@xxxxxxx
>> >> >>
>> >> >> 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-users
>> >> >>
>> >>
>> >>
>>
>>






Related Messages


Powered by MHonArc, Updated Wed Jun 27 14:40:50 2007