Hi all, I just tried, a couple of days ago, the CONV_LOOP = 1 option in the full_analysis,py script. Strangely (as opposed to Douglas), it works well for me with different DIFF_MODEL options. Also, I get the same exact results for differents rounds of calculation/optimization (chi-squared, model convergence, etc). I used line 1.2 revision 3354. Cheers Séb Douglas Kojetin wrote: Hi Edward, I am just picking back up on my relaxation analysis, and noticed that the CONV_LOOP = 1 function is full_analysis.py does not seem to work properly. I get the following error: """ ##################### # Convergence tests # ##################### Chi-squared test: chi2 (k-1): 164.3021658998544 chi2 (k): 168.91097779838205 The chi-squared value has not converged. Identical model-free models test: Traceback (most recent call last): File "/opt/relax/1.2/relax", line 454, in ? Relax() File "/opt/relax/1.2/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 "full_analysis.py", line 574, in ? Main(self.relax) File "full_analysis.py", line 247, in __init__ converged = self.convergence(run=name) File "full_analysis.py", line 368, in convergence curr_models = curr_models + self.relax.data.res[run][i].model AttributeError: Element instance has no attribute 'model' """ Thanks, Doug On Jun 27, 2007, at 11:22 AM, Edward d'Auvergne wrote:Hi, To commit changes to the repository, you need to become a relax developer. There is detailed information in the relax manual about this long process. Alternatively if you run the command svn diff to create a patch file, I can then apply the patch and make the commit for you. In this case however I am making the changes to the 1.3 repository line and then back porting to the 1.2 line (this is the origin of the relax_data_store error you saw before). Therefore if you post what the changes are, I will manually apply them to 1.3 and then back port to 1.2. Cheers, Edward P.S. The change to line 290 was unnecessary as far as I can see (I could be wrong though). And I also replaced the looping over LOCAL_TM_MODELS and MF_MODELS with a single test within the model-free model loop which already exists - just to simplify the code. The changes have been committed to the repository. On 6/27/07, Douglas Kojetin <douglas.kojetin@xxxxxxxxx> wrote:Another update. I had to change a few more lines, but the script seems to work properly now. % diff OLD.py NEW.py 229a230,231 > if name in self.relax.data.run_names: > run.delete(name) 290a293,294 > if 'final' in self.relax.data.run_names: > run.delete('final') 524a529,531 > for name_to_remove in LOCAL_TM_MODELS: > if name_to_remove in self.relax.data.run_names: > run.delete(name_to_remove) 526a534,536 > for name_to_remove in MF_MODELS: > if name_to_remove in self.relax.data.run_names: > run.delete(name_to_remove) If you would like me to commit these changes, just let me know where I can find instructions on how to do so. Thanks, Doug On Jun 26, 2007, at 3:58 AM, Edward d'Auvergne wrote:Whoops, that should have been 'self.relax.data.run_names'! It'sallfixed 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 iterationstartsafter 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 Iforgot tochange that for the 1.2 line. The repository code should nowhavethat fixed. Cheers, Edward On 6/25/07, Douglas Kojetin <douglas.kojetin@xxxxxxxxx> wrote:Hello, Here is the error reported by the modified full_analysis.pyscript(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, inrunrun_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 repositorylines tohopefully fix this problem. Could you try again to see ifthescriptworks 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 itreportedan 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, sendthem myway 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 loopusing amodified version of the convergence() function whichreturns1 or 0depending on whether the results have converged(exactly likeyoursuggestion). I have added this looping ability to the full_analysis.py script in the relax repository (to boththe 1.2and1.3 lines). This is not activated by default thoughand thescriptsin the repository are significantly different from that intherelax1.2.10 version (all the variables which should bemodified bythe userhave been shifted to the top of the script). Would you beable totest if this automatic looping over all rounds ofoptimisationuntilconvergence actually works? There could possibly be bugslurkingthere. Thanks. The problem that you encountered with the calling of the__init__()function is because this function should not be called.Using thattype of approach, the looping should have been outsideof theMainclass 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 theoptimization ofMII toMV (self.round > 0) is done automatically by loopinguntilconvergence?Do you mean that the script will automaticallyI tried to do this by modifying the following in convergence() [near the end]: """ # Final print out. ################## print "\nConvergence:" if chi2_converged and models_converged andparams_converged:print " [ Yes ]" return 1 else: print " [ No ]" return 0 """ then modifying __init__(), at the end of the "elifDIFF_MODEL =='sphere' or DIFF_MODEL == 'prolate' or DIFF_MODEL =='oblate' orDIFF_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 hassomething todo with the call to __init__() or Main(). I'll see ifI candig upthe 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_______________________________________________ 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 -- ______________________________________ _______________________________________________ | | || Sebastien Morin || ||| Etudiant au PhD en biochimie ||| |||| Laboratoire de resonance magnetique nucleaire |||| ||||| Dr Stephane Gagne ||||| |||| CREFSIP (Universite Laval, Quebec, CANADA) |||| ||| 1-418-656-2131 #4530 ||| || || |_______________________________________________| ______________________________________ |