mailr12277 - /1.3/test_suite/system_tests/scripts/model_free/opt_tm_fns.py


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

Header


Content

Posted by edward on January 13, 2011 - 10:53:
Author: bugman
Date: Thu Jan 13 10:53:38 2011
New Revision: 12277

URL: http://svn.gna.org/viewcvs/relax?rev=12277&view=rev
Log:
Abstracted opt_and_check() to handle all model-free models and parameter 
combinations.


Modified:
    1.3/test_suite/system_tests/scripts/model_free/opt_tm_fns.py

Modified: 1.3/test_suite/system_tests/scripts/model_free/opt_tm_fns.py
URL: 
http://svn.gna.org/viewcvs/relax/1.3/test_suite/system_tests/scripts/model_free/opt_tm_fns.py?rev=12277&r1=12276&r2=12277&view=diff
==============================================================================
--- 1.3/test_suite/system_tests/scripts/model_free/opt_tm_fns.py (original)
+++ 1.3/test_suite/system_tests/scripts/model_free/opt_tm_fns.py Thu Jan 13 
10:53:38 2011
@@ -23,6 +23,7 @@
 """Functions for the local tm grid optimisation tests."""
 
 # Python module imports.
+from math import pi
 from os import sep
 from re import search
 
@@ -52,18 +53,60 @@
         interpreter.spin.create(spin_num=1, spin_name='C1', res_num=i+1, 
res_name='Bisphenol_A', mol_name='Polycarbonate')
 
 
-def opt_and_check(spin=None, tm=None, tm_index=None):
+def opt_and_check(spin=None, tm=None, s2=None, s2f=None, s2s=None, te=None, 
tf=None, ts=None, rex=None):
     """Optimise the given model-free model, residue by residue.
 
     @keyword spin:      The spin container to validate.
     @type spin:         SpinContainer instance
     """
 
-    # Default values for certain parameters.
-    s2 = [1.0]
-    s2_index = 0
-    te = [0.0]
-    te_index = 0
+    # Precision for significance checking.
+    epsilon = 1e-7
+
+    # Default tm value.
+    tm_scaled = None
+    if 'local_tm' in spin.params and tm != None:
+        tm_scaled = tm * 1e9
+
+    # Default S2 value.
+    if 'S2' in spin.params and s2 == None:
+        s2 = 1.0
+
+    # Default S2f value.
+    if 'S2f' in spin.params and s2f == None:
+        s2f = 1.0
+
+    # Default S2s value.
+    if 'S2s' in spin.params and s2s == None:
+        s2s = 1.0
+
+    # Default te value.
+    if 'te' in spin.params and te == None:
+        te = 0.0
+    te_scaled = 'skip'
+    if te and abs(s2 - 1.0) > epsilon:
+        te_scaled = te * 1e9
+
+    # Default tf value.
+    if 'tf' in spin.params and tf == None:
+        tf = 0.0
+    tf_scaled = 'skip'
+    if tf and abs(s2f - 1.0) > epsilon:
+        tf_scaled = tf * 1e9
+
+    # Default ts value.
+    if 'ts' in spin.params and ts == None:
+        ts = 0.0
+    ts_scaled = 'skip'
+    if ts and abs(s2/s2f - 1.0) > epsilon:
+        ts_scaled = ts * 1e9
+
+    # Default Rex value.
+    if 'rex' in spin.params and rex == None:
+        rex = 0.0
+    rex_scaled = 'skip'
+    if rex:
+        rex_scaled = rex * (2.0 * pi * spin.frq[0])**2
 
     # Select the spin.
     spin.select = True
@@ -72,34 +115,31 @@
     if search('^m', cdp._model):
         if hasattr(cdp, 'diff_tensor'):
             interpreter.diffusion_tensor.delete()
-        interpreter.diffusion_tensor.init(tm[tm_index])
+        interpreter.diffusion_tensor.init(tm)
 
     # Set up the initial model-free parameter values (bypass the grid search 
for speed).
     if search('^t', cdp._model):
-        spin.local_tm = tm[tm_index] + 1e-11
-    if cdp._model in ['tm2', 'm1', 'm2']:
-        spin.s2 = 0.98
-    if cdp._model in ['tm2', 'm2']:
-        spin.te = 1e-12
-    if cdp._model in ['m3']:
-        spin.rex = 0.1 / (2.0 * pi * spin.frq[0])**2
+        spin.local_tm = tm + 1e-11
+    if 'S2' in spin.params:
+        spin.s2 = s2 - 0.02
+    if 'S2f' in spin.params:
+        spin.s2f = s2f - 0.02
+    if 'S2s' in spin.params:
+        spin.s2s = s2s - 0.02
+    if 'te' in spin.params:
+        spin.te = te + 1e-12
+    if 'tf' in spin.params:
+        spin.tf = tf + 1e-12
+    if 'ts' in spin.params:
+        spin.ts = ts + 1e-12
+    if 'rex' in spin.params:
+        spin.rex = rex + 0.1 / (2.0 * pi * spin.frq[0])**2
 
     # Minimise.
     interpreter.minimise('newton', 'gmw', 'back', constraints=False)
 
     # Check the values.
-    if cdp._model == 'm0':
-        cdp._value_test(spin, chi2=0.0)
-    elif cdp._model == 'm1':
-        cdp._value_test(spin, s2=s2[s2_index], chi2=0.0)
-    elif cdp._model == 'm2':
-        cdp._value_test(spin, s2=s2[s2_index], te=te[te_index]*1e12, 
chi2=0.0)
-    elif cdp._model == 'm3':
-        cdp._value_test(spin, s2=s2[s2_index], rex=0.0, chi2=0.0)
-    elif cdp._model == 'm4':
-        cdp._value_test(spin, s2=s2[s2_index], te=te[te_index]*1e12, 
rex=0.0, chi2=0.0)
-    elif cdp._model == 'tm2':
-        cdp._value_test(spin, local_tm=tm[tm_index]*1e9, s2=s2[s2_index], 
te=te[te_index]*1e12, chi2=0.0)
+    cdp._value_test(spin, local_tm=tm_scaled, s2=s2, s2f=s2f, s2s=s2s, 
te=te_scaled, tf=tf_scaled, ts=ts_scaled, rex=rex_scaled, chi2=0.0)
 
     # Deselect the spin.
     spin.select = False




Related Messages


Powered by MHonArc, Updated Thu Jan 13 11:00:02 2011