1   
   2   
   3   
   4   
   5   
   6   
   7   
   8   
   9   
  10   
  11   
  12   
  13   
  14   
  15   
  16   
  17   
  18   
  19   
  20   
  21   
  22   
  23  from math import pi 
  24  import platform 
  25  import numpy 
  26  from os import path, sep, walk 
  27  from re import search 
  28  import sys 
  29  from tempfile import mkdtemp 
  30   
  31   
  32  from auto_analyses.dauvergne_protocol import dAuvergne_protocol 
  33  from data_store import Relax_data_store; ds = Relax_data_store() 
  34  import dep_check 
  35  from pipe_control import pipes 
  36  from pipe_control.interatomic import interatomic_loop 
  37  from pipe_control.mol_res_spin import spin_loop 
  38  from lib.physical_constants import N15_CSA 
  39  from lib.io import DummyFileObject, open_read_file 
  40  from status import Status; status = Status() 
  41  from test_suite.system_tests.base_classes import SystemTestCase 
  42   
  43   
  44   
  45  SYSTEM = platform.system() 
  46  RELEASE = platform.release() 
  47  VERSION = platform.version() 
  48  WIN32_VER = platform.win32_ver() 
  49  DIST = platform.dist() 
  50  ARCH = platform.architecture() 
  51  MACH = platform.machine() 
  52  PROC = platform.processor() 
  53  PY_VER = platform.python_version() 
  54  NUMPY_VER = numpy.__version__ 
  55  LIBC_VER = platform.libc_ver() 
  56   
  57   
  58  if SYSTEM == 'Windows' or SYSTEM == 'Microsoft': 
  59       
  60      SYSTEM = 'Windows' 
  61   
  62   
  63   
  64 -class Mf(SystemTestCase): 
   65      """TestCase class for the functional tests of model-free analysis.""" 
  66   
  72   
  73   
  75          """Common code for the test_read_results_1_3*() tests.""" 
  76   
  77           
  78          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'OMP' 
  79   
  80           
  81          self.interpreter.pipe.create('1.2', 'mf') 
  82          self.interpreter.results.read(file='final_results_trunc2_1.2', dir=path) 
  83   
  84           
  85          pipe_12 = pipes.get_pipe('1.2') 
  86          pipe_13 = pipes.get_pipe('1.3') 
  87   
  88           
  89          print("Comparison of the objects of the base data pipe:") 
  90          self.object_comparison(obj1=pipe_12, obj2=pipe_13, skip=['mol', 'interatomic', 'diff_tensor']) 
  91   
  92           
  93          print("Comparison of the objects of the diffusion tensor:") 
  94          self.object_comparison(obj1=pipe_12.diff_tensor, obj2=pipe_13.diff_tensor) 
  95   
  96           
  97          self.assertEqual(len(pipe_12.mol), len(pipe_13.mol)) 
  98   
  99           
 100          for i in range(len(pipe_12.mol)): 
 101               
 102              print("Comparison of the objects of the molecule:") 
 103              self.object_comparison(obj1=pipe_12.mol[i], obj2=pipe_13.mol[i], skip=['res']) 
 104   
 105               
 106              self.assertEqual(len(pipe_12.mol[i].res), len(pipe_13.mol[i].res)) 
 107   
 108               
 109              for j in range(len(pipe_12.mol[i].res)): 
 110                   
 111                  if j > 10: 
 112                      break 
 113   
 114                   
 115                  print("Comparison of the objects of the residue:") 
 116                  self.object_comparison(obj1=pipe_12.mol[i].res[j], obj2=pipe_13.mol[i].res[j], skip=['spin']) 
 117   
 118                   
 119                  self.assertEqual(len(pipe_12.mol[i].res[j].spin), len(pipe_13.mol[i].res[j].spin)) 
 120   
 121                   
 122                  for k in range(len(pipe_12.mol[i].res[j].spin)): 
 123                       
 124                      print("Comparison of the objects of the spin:") 
 125                      self.object_comparison(obj1=pipe_12.mol[i].res[j].spin[k], obj2=pipe_13.mol[i].res[j].spin[k]) 
 126   
 127           
 128          for i in range(len(pipe_12.interatomic)): 
 129               
 130              print("Comparison of the objects of the molecule:") 
 131              self.object_comparison(obj1=pipe_12.interatomic[i], obj2=pipe_13.interatomic[i]) 
  132   
 133   
 135          """Method for returning a string to help debug the minimisation. 
 136   
 137          @param spin:    The SpinContainer of the optimised spin. 
 138          @type spin:     SpinContainer instance 
 139          @return:        The debugging string. 
 140          @rtype:         str 
 141          """ 
 142   
 143           
 144          string = 'Optimisation failure.\n\n' 
 145   
 146           
 147          string = string + "%-18s%-25s\n" % ("System: ", SYSTEM) 
 148          string = string + "%-18s%-25s\n" % ("Release: ", RELEASE) 
 149          string = string + "%-18s%-25s\n" % ("Version: ", VERSION) 
 150          string = string + "%-18s%-25s\n" % ("Win32 version: ", (WIN32_VER[0] + " " + WIN32_VER[1] + " " + WIN32_VER[2] + " " + WIN32_VER[3])) 
 151          string = string + "%-18s%-25s\n" % ("Distribution: ", (DIST[0] + " " + DIST[1] + " " + DIST[2])) 
 152          string = string + "%-18s%-25s\n" % ("Architecture: ", (ARCH[0] + " " + ARCH[1])) 
 153          string = string + "%-18s%-25s\n" % ("Machine: ", MACH) 
 154          string = string + "%-18s%-25s\n" % ("Processor: ", PROC) 
 155          string = string + "%-18s%-25s\n" % ("Python version: ", PY_VER) 
 156          string = string + "%-18s%-25s\n" % ("Numpy version: ", NUMPY_VER) 
 157          string = string + "%-18s%-25s\n" % ("Libc version: ", (LIBC_VER[0] + " " + LIBC_VER[1])) 
 158   
 159   
 160           
 161          string = string + '\n' 
 162          if spin.local_tm != None: 
 163              string = string + "%-15s %30.16g\n" % ('local_tm (ns):',    spin.local_tm * 1e9) 
 164          if spin.s2 != None: 
 165              string = string + "%-15s %30.16g\n" % ('s2:',               spin.s2) 
 166          if spin.s2f != None: 
 167              string = string + "%-15s %30.16g\n" % ('s2f:',              spin.s2f) 
 168          if spin.s2s != None: 
 169              string = string + "%-15s %30.16g\n" % ('s2s:',              spin.s2s) 
 170          if spin.te != None: 
 171              string = string + "%-15s %30.13g\n" % ('te (ps):',          spin.te * 1e12) 
 172          if spin.tf != None: 
 173              string = string + "%-15s %30.13g\n" % ('tf (ps):',          spin.tf * 1e12) 
 174          if spin.ts != None: 
 175              string = string + "%-15s %30.13g\n" % ('ts (ps):',          spin.ts * 1e12) 
 176          if spin.rex != None: 
 177              string = string + "%-15s %30.17g\n" % ('rex:',      spin.rex * (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2) 
 178          string = string +   "%-15s %30.17g\n" % ('chi2:',   spin.chi2) 
 179          string = string +   "%-15s %30i\n"   % ('iter:',    spin.iter) 
 180          string = string +   "%-15s %30i\n"   % ('f_count:', spin.f_count) 
 181          string = string +   "%-15s %30i\n"   % ('g_count:', spin.g_count) 
 182          string = string +   "%-15s %30i\n"   % ('h_count:', spin.h_count) 
 183          string = string +   "%-15s %30s\n"   % ('warning:', spin.warning) 
 184   
 185           
 186          return string 
  187   
 188   
 199   
 200   
 202          """Check if the contents of 2 objects are the same.""" 
 203   
 204           
 205          print("dir(obj1):  %s" % dir(obj1)) 
 206          print("dir(obj2):  %s" % dir(obj2)) 
 207          self.assertEqual(dir(obj1), dir(obj2)) 
 208   
 209           
 210          for name in dir(obj1): 
 211               
 212              if skip and name in skip: 
 213                  continue 
 214   
 215               
 216              if search('^_', name): 
 217                  continue 
 218   
 219               
 220              if name in obj1.__class__.__dict__: 
 221                  continue 
 222   
 223               
 224              print("\t" + name) 
 225   
 226               
 227              sub_obj1 = getattr(obj1, name) 
 228              sub_obj2 = getattr(obj2, name) 
 229   
 230               
 231              self.assertEqual(type(sub_obj1), type(sub_obj2)) 
 232   
 233               
 234              if isinstance(sub_obj1, dict): 
 235                  self.assertEqual(sub_obj1, sub_obj2) 
 236              else: 
 237                  self.assertEqual(str(sub_obj1), str(sub_obj2)) 
  238   
 239   
 241          """Test catching U{bug #14872<https://web.archive.org/web/https://gna.org/bugs/?14872>}, the unicode string selection failure as submitted by Olivier Serve.""" 
 242   
 243           
 244          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_14872_unicode_selection.py') 
  245   
 246   
 248          """Test catching U{bug #14941<https://web.archive.org/web/https://gna.org/bugs/?14941>}, the local tm global model selection problem as submitted by Mikaela Stewart (mikaela dot stewart att gmail dot com).""" 
 249   
 250           
 251          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_14941_local_tm_global_selection.py') 
  252   
 253   
 255          """Test catching U{bug #15050<https://web.archive.org/web/https://gna.org/bugs/?15050>}, 'PipeContainer' object has no attribute 'diff_tensor' error as submitted by U{Tiago Pais<https://web.archive.org/web/https://gna.org/users/tpais>}.""" 
 256   
 257           
 258          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_15050.py') 
  259   
 260   
 262          """Test catching bugs U{#12582<https://web.archive.org/web/https://gna.org/bugs/?12582>}, U{#12591<https://web.archive.org/web/https://gna.org/bugs/?12591>} and U{#12607<https://web.archive.org/web/https://gna.org/bugs/?12607>} as submitted by Chris Brosey.""" 
 263   
 264           
 265          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bugs_12582_12591_12607.py') 
 266   
 267           
 268          self.assertNotEqual(cdp.mol[0].res[1].spin[0].s2, 1.0) 
  269   
 270   
 272          """Test catching U{bug #18790<https://web.archive.org/web/https://gna.org/bugs/?18790>}, the negative relaxation data RelaxError reported by Vitaly Vostrikov.""" 
 273   
 274           
 275          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_18790_negative_error.py') 
  276   
 277   
 279          """U{Bug #20213<https://web.archive.org/web/https://gna.org/bugs/?20213>} catch, the model selection failure due to the presence of Asp and Gln sidechain N spins.""" 
 280   
 281           
 282          ds.tmpdir = mkdtemp() 
 283   
 284           
 285          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_20213_asn_sidechain.py') 
  286   
 287   
 289          """U{Bug #20464<https://web.archive.org/web/https://gna.org/bugs/?20464>} catch, the failure due to missing relaxation data.""" 
 290   
 291           
 292          self.interpreter.reset() 
 293   
 294           
 295          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_20464_missing_ri_data.py') 
  296   
 297   
 299          """U{Bug #20563<https://web.archive.org/web/https://gna.org/bugs/?20563>} catch, the failure due to missing relaxation data errors.""" 
 300   
 301           
 302          self.interpreter.reset() 
 303   
 304           
 305          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_20563_missing_ri_error.py') 
  306   
 307   
 309          """U{Bug #20531<https://web.archive.org/web/https://gna.org/bugs/?20531>} catch, the RelaxFault when creating the Molmol macros.""" 
 310   
 311           
 312          self.interpreter.reset() 
 313   
 314           
 315          state = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'saved_states'+sep+'bug_20531_mf_relaxfault.bz2' 
 316          self.interpreter.state.load(state, force=True) 
 317   
 318           
 319          ds.tmpdir = mkdtemp() 
 320   
 321           
 322          self.interpreter.molmol.macro_write(data_type='s2',        dir=ds.tmpdir, force=True) 
 323          self.interpreter.molmol.macro_write(data_type='s2f',       dir=ds.tmpdir, force=True) 
 324          self.interpreter.molmol.macro_write(data_type='s2s',       dir=ds.tmpdir, force=True) 
 325          self.interpreter.molmol.macro_write(data_type='amp_fast',  dir=ds.tmpdir, force=True) 
 326          self.interpreter.molmol.macro_write(data_type='amp_slow',  dir=ds.tmpdir, force=True) 
 327          self.interpreter.molmol.macro_write(data_type='te',        dir=ds.tmpdir, force=True) 
 328          self.interpreter.molmol.macro_write(data_type='tf',        dir=ds.tmpdir, force=True) 
 329          self.interpreter.molmol.macro_write(data_type='ts',        dir=ds.tmpdir, force=True) 
 330          self.interpreter.molmol.macro_write(data_type='time_fast', dir=ds.tmpdir, force=True) 
 331          self.interpreter.molmol.macro_write(data_type='time_slow', dir=ds.tmpdir, force=True) 
 332          self.interpreter.molmol.macro_write(data_type='rex',       dir=ds.tmpdir, force=True) 
 333   
 334           
 335          self.interpreter.pymol.macro_write(data_type='s2',        dir=ds.tmpdir, force=True) 
 336          self.interpreter.pymol.macro_write(data_type='s2f',       dir=ds.tmpdir, force=True) 
 337          self.interpreter.pymol.macro_write(data_type='s2s',       dir=ds.tmpdir, force=True) 
 338          self.interpreter.pymol.macro_write(data_type='amp_fast',  dir=ds.tmpdir, force=True) 
 339          self.interpreter.pymol.macro_write(data_type='amp_slow',  dir=ds.tmpdir, force=True) 
 340          self.interpreter.pymol.macro_write(data_type='te',        dir=ds.tmpdir, force=True) 
 341          self.interpreter.pymol.macro_write(data_type='tf',        dir=ds.tmpdir, force=True) 
 342          self.interpreter.pymol.macro_write(data_type='ts',        dir=ds.tmpdir, force=True) 
 343          self.interpreter.pymol.macro_write(data_type='time_fast', dir=ds.tmpdir, force=True) 
 344          self.interpreter.pymol.macro_write(data_type='time_slow', dir=ds.tmpdir, force=True) 
 345          self.interpreter.pymol.macro_write(data_type='rex',       dir=ds.tmpdir, force=True) 
 346   
 347           
 348          self.interpreter.grace.write(x_data_type='res_num', y_data_type='s2',  file='s2.agr',        dir=ds.tmpdir, force=True) 
 349          self.interpreter.grace.write(x_data_type='res_num', y_data_type='s2f', file='s2f.agr',       dir=ds.tmpdir, force=True) 
 350          self.interpreter.grace.write(x_data_type='res_num', y_data_type='s2s', file='s2s.agr',       dir=ds.tmpdir, force=True) 
 351          self.interpreter.grace.write(x_data_type='res_num', y_data_type='te',  file='te.agr',        dir=ds.tmpdir, force=True) 
 352          self.interpreter.grace.write(x_data_type='res_num', y_data_type='tf',  file='tf.agr',        dir=ds.tmpdir, force=True) 
 353          self.interpreter.grace.write(x_data_type='res_num', y_data_type='ts',  file='ts.agr',        dir=ds.tmpdir, force=True) 
 354          self.interpreter.grace.write(x_data_type='res_num', y_data_type='rex', file='rex.agr',       dir=ds.tmpdir, force=True) 
 355          self.interpreter.grace.write(x_data_type='s2',      y_data_type='te',  file='s2_vs_te.agr',  dir=ds.tmpdir, force=True) 
 356          self.interpreter.grace.write(x_data_type='s2',      y_data_type='rex', file='s2_vs_rex.agr', dir=ds.tmpdir, force=True) 
 357          self.interpreter.grace.write(x_data_type='te',      y_data_type='rex', file='te_vs_rex.agr', dir=ds.tmpdir, force=True) 
 358   
 359           
 360          self.interpreter.value.write(param='s2',       file='s2.txt',       dir=ds.tmpdir, force=True) 
 361          self.interpreter.value.write(param='s2f',      file='s2f.txt',      dir=ds.tmpdir, force=True) 
 362          self.interpreter.value.write(param='s2s',      file='s2s.txt',      dir=ds.tmpdir, force=True) 
 363          self.interpreter.value.write(param='te',       file='te.txt',       dir=ds.tmpdir, force=True) 
 364          self.interpreter.value.write(param='tf',       file='tf.txt',       dir=ds.tmpdir, force=True) 
 365          self.interpreter.value.write(param='ts',       file='ts.txt',       dir=ds.tmpdir, force=True) 
 366          self.interpreter.value.write(param='rex',      file='rex.txt',      dir=ds.tmpdir, force=True) 
 367          self.interpreter.value.write(param='local_tm', file='local_tm.txt', dir=ds.tmpdir, force=True) 
  368   
 369   
 371          """U{Bug #20531<https://web.archive.org/web/https://gna.org/bugs/?20531>} catch, the RelaxFault when creating the Molmol macros. 
 372   
 373          This was the first attempt at catching the bug, but it failed.  However the code paths tested here are not tested in any other tests, so this system test will remain. 
 374          """ 
 375   
 376           
 377          self.interpreter.sequence.read(file='Ap4Aase.seq', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep, res_num_col=1, res_name_col=2) 
 378   
 379           
 380          self.interpreter.spin.name('N') 
 381          self.interpreter.spin.element('N') 
 382          self.interpreter.spin.isotope('15N') 
 383   
 384           
 385          models = ['m0', 'm1', 'm2', 'm3', 'm4', 'm5', 'm6', 'm7', 'm8', 'm9'] + ['tm0', 'tm1', 'tm2', 'tm3', 'tm4', 'tm5', 'tm6', 'tm7', 'tm8', 'tm9'] 
 386   
 387           
 388          self.interpreter.spectrometer.frequency(id='600', frq=600000000.1) 
 389   
 390           
 391          for i in range(len(models)): 
 392              self.interpreter.model_free.select_model(model=models[i], spin_id=':%s'%(i+1)) 
 393   
 394           
 395          self.interpreter.value.set(param='s2', val=0.8) 
 396          self.interpreter.value.set(param='s2f', val=0.85) 
 397          self.interpreter.value.set(param='s2s', val=0.7) 
 398          self.interpreter.value.set(param='local_tm', val=8000e-12) 
 399          self.interpreter.value.set(param='te', val=20e-12) 
 400          self.interpreter.value.set(param='tf', val=40e-12) 
 401          self.interpreter.value.set(param='ts', val=2000e-12) 
 402          self.interpreter.value.set(param='rex', val=1.5e-18) 
 403   
 404           
 405          ds.tmpdir = mkdtemp() 
 406   
 407           
 408          self.interpreter.molmol.macro_write(data_type='s2',        dir=ds.tmpdir, force=True) 
 409          self.interpreter.molmol.macro_write(data_type='s2f',       dir=ds.tmpdir, force=True) 
 410          self.interpreter.molmol.macro_write(data_type='s2s',       dir=ds.tmpdir, force=True) 
 411          self.interpreter.molmol.macro_write(data_type='amp_fast',  dir=ds.tmpdir, force=True) 
 412          self.interpreter.molmol.macro_write(data_type='amp_slow',  dir=ds.tmpdir, force=True) 
 413          self.interpreter.molmol.macro_write(data_type='te',        dir=ds.tmpdir, force=True) 
 414          self.interpreter.molmol.macro_write(data_type='tf',        dir=ds.tmpdir, force=True) 
 415          self.interpreter.molmol.macro_write(data_type='ts',        dir=ds.tmpdir, force=True) 
 416          self.interpreter.molmol.macro_write(data_type='time_fast', dir=ds.tmpdir, force=True) 
 417          self.interpreter.molmol.macro_write(data_type='time_slow', dir=ds.tmpdir, force=True) 
 418          self.interpreter.molmol.macro_write(data_type='rex',       dir=ds.tmpdir, force=True) 
 419   
 420           
 421          self.interpreter.pymol.macro_write(data_type='s2',        dir=ds.tmpdir, force=True) 
 422          self.interpreter.pymol.macro_write(data_type='s2f',       dir=ds.tmpdir, force=True) 
 423          self.interpreter.pymol.macro_write(data_type='s2s',       dir=ds.tmpdir, force=True) 
 424          self.interpreter.pymol.macro_write(data_type='amp_fast',  dir=ds.tmpdir, force=True) 
 425          self.interpreter.pymol.macro_write(data_type='amp_slow',  dir=ds.tmpdir, force=True) 
 426          self.interpreter.pymol.macro_write(data_type='te',        dir=ds.tmpdir, force=True) 
 427          self.interpreter.pymol.macro_write(data_type='tf',        dir=ds.tmpdir, force=True) 
 428          self.interpreter.pymol.macro_write(data_type='ts',        dir=ds.tmpdir, force=True) 
 429          self.interpreter.pymol.macro_write(data_type='time_fast', dir=ds.tmpdir, force=True) 
 430          self.interpreter.pymol.macro_write(data_type='time_slow', dir=ds.tmpdir, force=True) 
 431          self.interpreter.pymol.macro_write(data_type='rex',       dir=ds.tmpdir, force=True) 
 432   
 433           
 434          self.interpreter.grace.write(x_data_type='res_num', y_data_type='s2',  file='s2.agr',        dir=ds.tmpdir, force=True) 
 435          self.interpreter.grace.write(x_data_type='res_num', y_data_type='s2f', file='s2f.agr',       dir=ds.tmpdir, force=True) 
 436          self.interpreter.grace.write(x_data_type='res_num', y_data_type='s2s', file='s2s.agr',       dir=ds.tmpdir, force=True) 
 437          self.interpreter.grace.write(x_data_type='res_num', y_data_type='te',  file='te.agr',        dir=ds.tmpdir, force=True) 
 438          self.interpreter.grace.write(x_data_type='res_num', y_data_type='tf',  file='tf.agr',        dir=ds.tmpdir, force=True) 
 439          self.interpreter.grace.write(x_data_type='res_num', y_data_type='ts',  file='ts.agr',        dir=ds.tmpdir, force=True) 
 440          self.interpreter.grace.write(x_data_type='res_num', y_data_type='rex', file='rex.agr',       dir=ds.tmpdir, force=True) 
 441          self.interpreter.grace.write(x_data_type='s2',      y_data_type='te',  file='s2_vs_te.agr',  dir=ds.tmpdir, force=True) 
 442          self.interpreter.grace.write(x_data_type='s2',      y_data_type='rex', file='s2_vs_rex.agr', dir=ds.tmpdir, force=True) 
 443          self.interpreter.grace.write(x_data_type='te',      y_data_type='rex', file='te_vs_rex.agr', dir=ds.tmpdir, force=True) 
 444   
 445           
 446          self.interpreter.value.write(param='s2',       file='s2.txt',       dir=ds.tmpdir, force=True) 
 447          self.interpreter.value.write(param='s2f',      file='s2f.txt',      dir=ds.tmpdir, force=True) 
 448          self.interpreter.value.write(param='s2s',      file='s2s.txt',      dir=ds.tmpdir, force=True) 
 449          self.interpreter.value.write(param='te',       file='te.txt',       dir=ds.tmpdir, force=True) 
 450          self.interpreter.value.write(param='tf',       file='tf.txt',       dir=ds.tmpdir, force=True) 
 451          self.interpreter.value.write(param='ts',       file='ts.txt',       dir=ds.tmpdir, force=True) 
 452          self.interpreter.value.write(param='rex',      file='rex.txt',      dir=ds.tmpdir, force=True) 
 453          self.interpreter.value.write(param='local_tm', file='local_tm.txt', dir=ds.tmpdir, force=True) 
  454   
 455   
 457          """U{Bug #20613<https://web.archive.org/web/https://gna.org/bugs/?20613>} catch, the failure of the auto-analysis due to diffusion tensor PDB creation for the local tm global model.""" 
 458   
 459           
 460          self.interpreter.reset() 
 461   
 462           
 463          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_20613_auto_mf_diff_tensor_pdb.py') 
  464   
 465   
 467          """Catch U{bug #20683<https://web.archive.org/web/https://gna.org/bugs/?20683>}, the model-free analysis failure due to infinite values in the Bruker Dynamics Centre files.""" 
 468   
 469           
 470          self.interpreter.reset() 
 471   
 472           
 473          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_20683_bdc_inf_values.py') 
  474   
 475   
 477          """Test catching U{bug #21079<https://web.archive.org/web/https://gna.org/bugs/?21079>}, the local tm global model selection.""" 
 478   
 479           
 480          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'bug_21079_local_tm_global_selection.py') 
  481   
 482   
 484          """Creating model m4 with parameters {S2, te, Rex} using model_free.create_model().""" 
 485   
 486           
 487          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'create_m4.py') 
 488   
 489           
 490          self.assertEqual(cdp.mol[0].res[1].spin[0].model, 'm4') 
 491          self.assertEqual(cdp.mol[0].res[1].spin[0].params, ['s2', 'te', 'rex']) 
  492   
 493   
 495          """Catch a failure when loading relaxation data.""" 
 496   
 497           
 498          dir = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'sphere' 
 499   
 500           
 501          self.interpreter.sequence.read(file='noe.500.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, sep=None, spin_id=None) 
 502   
 503           
 504          self.interpreter.relax_data.read(ri_id='noe500', ri_type='NOE', frq=500000000.0, file='noe.500.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7, sep=None, spin_id='@N') 
  505   
 506   
 508          """Check the execution of auto_analyses.dauvergne_protocol.""" 
 509   
 510           
 511          ds.tmpdir = mkdtemp() 
 512   
 513           
 514          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'dauvergne_protocol.py') 
 515   
 516           
 517          self.assertEqual(cdp.diff_tensor.type, 'sphere') 
 518          self.assertAlmostEqual(cdp.diff_tensor.tm, 1e-8) 
 519          self.assertEqual(cdp.diff_tensor.fixed, True) 
 520   
 521           
 522          self.assertAlmostEqual(cdp.chi2, 4e-19) 
 523   
 524           
 525          mol_names = ["sphere_mol1"] * 20 
 526          res_names = ["GLY"] * 20 
 527          res_nums = [] 
 528          for i in range(1, 10): 
 529              res_nums.append(i) 
 530              res_nums.append(i) 
 531          res_nums.append(i) 
 532          res_nums.append(i) 
 533          spin_names = ["N", "H"] * 9 + ["NE1", "HE1"] 
 534          spin_nums = list(range(1, 21)) 
 535          isotopes = ["15N", "1H"] * 10 
 536          csa = [-172e-6, None] * 10 
 537          select = [True, False] * 10 
 538          fixed = [False, False] * 10 
 539          s2 = [0.8, None] * 10 
 540          te = [20e-12, None] * 10 
 541   
 542           
 543          i = 0 
 544          for spin, mol_name, res_num, res_name in spin_loop(full_info=True): 
 545               
 546              self.assertEqual(mol_name, mol_names[i]) 
 547              self.assertEqual(res_name, res_names[i]) 
 548              self.assertEqual(res_num,  res_nums[i]) 
 549              self.assertEqual(spin.name, spin_names[i]) 
 550              self.assertEqual(spin.num,  spin_nums[i]) 
 551   
 552               
 553              self.assertEqual(spin.select, select[i]) 
 554              self.assertEqual(spin.fixed, fixed[i]) 
 555              self.assertEqual(spin.isotope, isotopes[i]) 
 556              if csa[i] == None: 
 557                  self.assertEqual(spin.csa, None) 
 558              else: 
 559                  self.assertAlmostEqual(spin.csa, csa[i]) 
 560   
 561               
 562              self.assertEqual(spin.model, 'm2') 
 563              self.assertEqual(spin.equation, 'mf_orig') 
 564              self.assertEqual(len(spin.params), 2) 
 565              self.assertEqual(spin.params[0], 's2') 
 566              self.assertEqual(spin.params[1], 'te') 
 567              if s2[i] == None: 
 568                  self.assertEqual(spin.s2, None) 
 569              else: 
 570                  self.assertAlmostEqual(spin.s2, 0.8) 
 571              self.assertEqual(spin.s2f, None) 
 572              self.assertEqual(spin.s2s, None) 
 573              self.assertEqual(spin.local_tm, None) 
 574              if te[i] == None: 
 575                  self.assertEqual(spin.te, None) 
 576              else: 
 577                  self.assertAlmostEqual(spin.te, 20e-12) 
 578              self.assertEqual(spin.tf, None) 
 579              self.assertEqual(spin.ts, None) 
 580              self.assertEqual(spin.rex, None) 
 581   
 582               
 583              self.assertEqual(spin.chi2, None) 
 584              self.assertEqual(spin.iter, None) 
 585              self.assertEqual(spin.f_count, None) 
 586              self.assertEqual(spin.g_count, None) 
 587              self.assertEqual(spin.h_count, None) 
 588              self.assertEqual(spin.warning, None) 
 589   
 590               
 591              i += 1 
 592   
 593           
 594          i = 0 
 595          for interatom in interatomic_loop(): 
 596              self.assertAlmostEqual(interatom.r, 1.02 * 1e-10) 
 597   
 598           
 599          format1 = "%s%s%s" % (ds.tmpdir, sep, '%s') 
 600          format2 = "%s%s%s%s%s" % (ds.tmpdir, sep, '%s', sep, '%s') 
 601          format3 = "%s%s%s%s%s%s%s" % (ds.tmpdir, sep, '%s', sep, '%s', sep, '%s') 
 602          format4 = "%s%s%s%s%s%s%s%s%s" % (ds.tmpdir, sep, '%s', sep, '%s', sep, '%s', sep, '%s') 
 603   
 604           
 605          dirs = [ 
 606              format1 % ("local_tm"), 
 607              format2 % ("local_tm", "tm1"), 
 608              format2 % ("local_tm", "tm0"), 
 609              format2 % ("local_tm", "aic"), 
 610              format1 % ("sphere"), 
 611              format2 % ("sphere", "init"), 
 612              format2 % ("sphere", "round_1"), 
 613              format3 % ("sphere", "round_1", "m1"), 
 614              format3 % ("sphere", "round_1", "m2"), 
 615              format3 % ("sphere", "round_1", "aic"), 
 616              format3 % ("sphere", "round_1", "opt"), 
 617              format2 % ("sphere", "round_2"), 
 618              format3 % ("sphere", "round_2", "m1"), 
 619              format3 % ("sphere", "round_2", "m2"), 
 620              format3 % ("sphere", "round_2", "aic"), 
 621              format3 % ("sphere", "round_2", "opt"), 
 622              format1 % ("prolate"), 
 623              format2 % ("prolate", "init"), 
 624              format2 % ("prolate", "round_1"), 
 625              format3 % ("prolate", "round_1", "m1"), 
 626              format3 % ("prolate", "round_1", "m2"), 
 627              format3 % ("prolate", "round_1", "aic"), 
 628              format3 % ("prolate", "round_1", "opt"), 
 629              format2 % ("prolate", "round_2"), 
 630              format3 % ("prolate", "round_2", "m1"), 
 631              format3 % ("prolate", "round_2", "m2"), 
 632              format3 % ("prolate", "round_2", "aic"), 
 633              format3 % ("prolate", "round_2", "opt"), 
 634              format1 % ("oblate"), 
 635              format2 % ("oblate", "init"), 
 636              format2 % ("oblate", "round_1"), 
 637              format3 % ("oblate", "round_1", "m1"), 
 638              format3 % ("oblate", "round_1", "m2"), 
 639              format3 % ("oblate", "round_1", "aic"), 
 640              format3 % ("oblate", "round_1", "opt"), 
 641              format2 % ("oblate", "round_2"), 
 642              format3 % ("oblate", "round_2", "m1"), 
 643              format3 % ("oblate", "round_2", "m2"), 
 644              format3 % ("oblate", "round_2", "aic"), 
 645              format3 % ("oblate", "round_2", "opt"), 
 646              format1 % ("ellipsoid"), 
 647              format2 % ("ellipsoid", "init"), 
 648              format2 % ("ellipsoid", "round_1"), 
 649              format3 % ("ellipsoid", "round_1", "m1"), 
 650              format3 % ("ellipsoid", "round_1", "m2"), 
 651              format3 % ("ellipsoid", "round_1", "aic"), 
 652              format3 % ("ellipsoid", "round_1", "opt"), 
 653              format2 % ("ellipsoid", "round_2"), 
 654              format3 % ("ellipsoid", "round_2", "m1"), 
 655              format3 % ("ellipsoid", "round_2", "m2"), 
 656              format3 % ("ellipsoid", "round_2", "aic"), 
 657              format3 % ("ellipsoid", "round_2", "opt"), 
 658              format1 % ("final"), 
 659              format2 % ("final", "grace"), 
 660              format2 % ("final", "pymol"), 
 661              format2 % ("final", "molmol") 
 662          ] 
 663          for root, dirs, files in walk(ds.tmpdir): 
 664              for dir in dirs: 
 665                  dir_path = "%s%s%s" % (root, sep, dir) 
 666                  print("Checking for the directory '%s'." % dir_path) 
 667                  self.assert_(path.isdir(dir_path)) 
 668   
 669           
 670          files = [ 
 671              format3 % ("local_tm", "tm0", "results.bz2"), 
 672              format3 % ("local_tm", "tm1", "results.bz2"), 
 673              format3 % ("local_tm", "aic", "results.bz2"), 
 674              format3 % ("sphere", "init", "results.bz2"), 
 675              format4 % ("sphere", "round_1", "m1", "results.bz2"), 
 676              format4 % ("sphere", "round_1", "m2", "results.bz2"), 
 677              format4 % ("sphere", "round_1", "aic", "results.bz2"), 
 678              format4 % ("sphere", "round_1", "opt", "results.bz2"), 
 679              format4 % ("sphere", "round_2", "m1", "results.bz2"), 
 680              format4 % ("sphere", "round_2", "m2", "results.bz2"), 
 681              format4 % ("sphere", "round_2", "aic", "results.bz2"), 
 682              format4 % ("sphere", "round_2", "opt", "results.bz2"), 
 683              format3 % ("prolate", "init", "results.bz2"), 
 684              format4 % ("prolate", "round_1", "m1", "results.bz2"), 
 685              format4 % ("prolate", "round_1", "m2", "results.bz2"), 
 686              format4 % ("prolate", "round_1", "aic", "results.bz2"), 
 687              format4 % ("prolate", "round_1", "opt", "results.bz2"), 
 688              format4 % ("prolate", "round_2", "m1", "results.bz2"), 
 689              format4 % ("prolate", "round_2", "m2", "results.bz2"), 
 690              format4 % ("prolate", "round_2", "aic", "results.bz2"), 
 691              format4 % ("prolate", "round_2", "opt", "results.bz2"), 
 692              format3 % ("oblate", "init", "results.bz2"), 
 693              format4 % ("oblate", "round_1", "m1", "results.bz2"), 
 694              format4 % ("oblate", "round_1", "m2", "results.bz2"), 
 695              format4 % ("oblate", "round_1", "aic", "results.bz2"), 
 696              format4 % ("oblate", "round_1", "opt", "results.bz2"), 
 697              format4 % ("oblate", "round_2", "m1", "results.bz2"), 
 698              format4 % ("oblate", "round_2", "m2", "results.bz2"), 
 699              format4 % ("oblate", "round_2", "aic", "results.bz2"), 
 700              format4 % ("oblate", "round_2", "opt", "results.bz2"), 
 701              format3 % ("ellipsoid", "init", "results.bz2"), 
 702              format4 % ("ellipsoid", "round_1", "m1", "results.bz2"), 
 703              format4 % ("ellipsoid", "round_1", "m2", "results.bz2"), 
 704              format4 % ("ellipsoid", "round_1", "aic", "results.bz2"), 
 705              format4 % ("ellipsoid", "round_1", "opt", "results.bz2"), 
 706              format4 % ("ellipsoid", "round_2", "m1", "results.bz2"), 
 707              format4 % ("ellipsoid", "round_2", "m2", "results.bz2"), 
 708              format4 % ("ellipsoid", "round_2", "aic", "results.bz2"), 
 709              format4 % ("ellipsoid", "round_2", "opt", "results.bz2"), 
 710              format2 % ("final", "results.bz2"), 
 711              format2 % ("final", "s2.txt"), 
 712              format2 % ("final", "s2f.txt"), 
 713              format2 % ("final", "s2s.txt"), 
 714              format2 % ("final", "local_tm.txt"), 
 715              format2 % ("final", "te.txt"), 
 716              format2 % ("final", "tf.txt"), 
 717              format2 % ("final", "ts.txt"), 
 718              format2 % ("final", "rex.txt"), 
 719              format2 % ("final", "rex_500.txt"), 
 720              format2 % ("final", "rex_900.txt"), 
 721              format2 % ("final", "tensor.pdb"), 
 722              format3 % ("final", "grace", "s2.agr"), 
 723              format3 % ("final", "grace", "s2f.agr"), 
 724              format3 % ("final", "grace", "s2s.agr"), 
 725              format3 % ("final", "grace", "te.agr"), 
 726              format3 % ("final", "grace", "tf.agr"), 
 727              format3 % ("final", "grace", "ts.agr"), 
 728              format3 % ("final", "grace", "rex.agr"), 
 729              format3 % ("final", "grace", "s2_vs_rex.agr"), 
 730              format3 % ("final", "grace", "s2_vs_te.agr"), 
 731              format3 % ("final", "grace", "te_vs_rex.agr"), 
 732              format3 % ("final", "pymol", "s2.pml"), 
 733              format3 % ("final", "pymol", "s2f.pml"), 
 734              format3 % ("final", "pymol", "s2s.pml"), 
 735              format3 % ("final", "pymol", "amp_fast.pml"), 
 736              format3 % ("final", "pymol", "amp_slow.pml"), 
 737              format3 % ("final", "pymol", "te.pml"), 
 738              format3 % ("final", "pymol", "tf.pml"), 
 739              format3 % ("final", "pymol", "ts.pml"), 
 740              format3 % ("final", "pymol", "time_fast.pml"), 
 741              format3 % ("final", "pymol", "time_slow.pml"), 
 742              format3 % ("final", "pymol", "rex.pml"), 
 743              format3 % ("final", "molmol", "s2.mac"), 
 744              format3 % ("final", "molmol", "s2f.mac"), 
 745              format3 % ("final", "molmol", "s2s.mac"), 
 746              format3 % ("final", "molmol", "amp_fast.mac"), 
 747              format3 % ("final", "molmol", "amp_slow.mac"), 
 748              format3 % ("final", "molmol", "te.mac"), 
 749              format3 % ("final", "molmol", "tf.mac"), 
 750              format3 % ("final", "molmol", "ts.mac"), 
 751              format3 % ("final", "molmol", "time_fast.mac"), 
 752              format3 % ("final", "molmol", "time_slow.mac"), 
 753              format3 % ("final", "molmol", "rex.mac"), 
 754          ] 
 755          for root, dirs, files in walk(ds.tmpdir): 
 756              for file in files: 
 757                  file_path = "%s%s%s" % (root, sep, file) 
 758                  print("Checking for the file '%s'." % file_path) 
 759                  self.assert_(path.isfile(file_path)) 
  760   
 761   
 763          """Catch a failure when loading relaxation data.""" 
 764   
 765           
 766          dir = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'sphere' 
 767   
 768           
 769          self.interpreter.reset() 
 770   
 771           
 772          self.interpreter.pipe.create('sphere test', 'mf', bundle='sphere test') 
 773   
 774           
 775          self.interpreter.sequence.read(file='noe.500.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, sep=None, spin_id=None) 
 776   
 777           
 778          self.interpreter.relax_data.read(ri_id='r1.500', ri_type='R1', frq=500000000.0, file='r1.500.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7, sep=None, spin_id=None) 
 779          self.interpreter.relax_data.read(ri_id='r2.500', ri_type='R2', frq=500000000.0, file='r2.500.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7, sep=None, spin_id=None) 
 780          self.interpreter.relax_data.read(ri_id='noe.500', ri_type='NOE', frq=500000000.0, file='noe.500.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7, sep=None, spin_id=None) 
 781          self.interpreter.relax_data.read(ri_id='r1.900', ri_type='R1', frq=900000000.0, file='r1.900.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7, sep=None, spin_id=None) 
 782          self.interpreter.relax_data.read(ri_id='r2.900', ri_type='R2', frq=900000000.0, file='r2.900.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7, sep=None, spin_id=None) 
 783          self.interpreter.relax_data.read(ri_id='noe.900', ri_type='NOE', frq=900000000.0, file='noe.900.out', dir=dir, spin_id_col=None, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7, sep=None, spin_id=None) 
 784          self.interpreter.relax_data.peak_intensity_type(ri_id='noe.900', type='height') 
 785          self.interpreter.relax_data.peak_intensity_type(ri_id='r2.900', type='height') 
 786          self.interpreter.relax_data.peak_intensity_type(ri_id='r1.900', type='height') 
 787          self.interpreter.relax_data.peak_intensity_type(ri_id='noe.500', type='height') 
 788          self.interpreter.relax_data.peak_intensity_type(ri_id='r2.500', type='height') 
 789          self.interpreter.relax_data.peak_intensity_type(ri_id='r1.500', type='height') 
 790          self.interpreter.relax_data.peak_intensity_type(ri_id='r1.500', type='height') 
 791   
 792           
 793          self.interpreter.structure.read_pdb(file='sphere.pdb', dir=dir, read_mol=None, set_mol_name=None, read_model=None, set_model_num=None, alt_loc=None, verbosity=1, merge=False) 
 794          self.interpreter.structure.get_pos(spin_id=None, ave_pos=True) 
 795          self.interpreter.interatom.define(spin_id1='@N*', spin_id2='@H*', direct_bond=True, spin_selection=True, pipe=None) 
 796          self.interpreter.interatom.set_dist(spin_id1='@N*', spin_id2='@H*', ave_dist=1.02e-10, unit='meter') 
 797          self.interpreter.interatom.unit_vectors(ave=True) 
 798   
 799           
 800          self.interpreter.value.set(val=-0.000172, param='csa', index=0, spin_id='@N*', error=False, force=True) 
 801   
 802           
 803          self.interpreter.spin.isotope(isotope='15N', spin_id='@N*', force=True) 
 804          self.interpreter.spin.isotope(isotope='1H', spin_id='@H*', force=True) 
 805   
 806           
 807          ds.tmpdir = mkdtemp() 
 808   
 809           
 810          dAuvergne_protocol(pipe_name='sphere test', pipe_bundle='sphere test', results_dir=ds.tmpdir, diff_model=['local_tm', 'sphere'], mf_models=['m1', 'm2'], local_tm_models=['tm0', 'tm1'], grid_inc=3, diff_tensor_grid_inc={'sphere': 5, 'prolate': 5, 'oblate': 5, 'ellipsoid': 3}, min_algor='newton', mc_sim_num=2, max_iter=1, conv_loop=True) 
  811   
 812   
 814          """Back-calculate relaxation data.""" 
 815   
 816           
 817          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'generate_ri.py') 
  818   
 819   
 821          """Test the creation of a LaTeX table of model-free results, mimicking the latex_mf_table.py sample script.""" 
 822   
 823           
 824          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'latex_mf_table.py') 
  825   
 826   
 828          """Test the optimisation of the test set {tm=10, S2=0.8, te=40}.""" 
 829   
 830           
 831          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_local_tm_10_S2_0_8_te_40.py') 
 832   
 833           
 834          frq = ['400', '500', '600', '700', '800', '900', '1000'] 
 835   
 836           
 837          for i in range(len(frq)): 
 838              self.interpreter.relax_data.read('NOE_%s'%frq[i], 'NOE', float(frq[i])*1e6, 'noe.%s.out' % frq[i], dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 839              self.interpreter.relax_data.read('R1_%s'%frq[i],  'R1',  float(frq[i])*1e6, 'r1.%s.out' % frq[i],  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 840              self.interpreter.relax_data.read('R2_%s'%frq[i],  'R2',  float(frq[i])*1e6, 'r2.%s.out' % frq[i],  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 841   
 842           
 843          self.interpreter.value.set([15.0e-9, 1.0, 0.0], ['local_tm', 's2', 'te']) 
 844   
 845           
 846          self.interpreter.minimise.execute('newton', 'gmw', 'back') 
 847   
 848           
 849          spin = cdp.mol[0].res[0].spin[0] 
 850   
 851           
 852          self.value_test(spin, local_tm=10, s2=0.8, te=40, chi2=0.0) 
  853   
 854   
 856          """Test the optimisation of the test set {tm=10, S2=0.8, te=40}.""" 
 857   
 858           
 859          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_local_tm_10_S2_0_8_te_40.py') 
 860   
 861           
 862          frq = ['400', '500', '600', '700', '800', '900', '1000'] 
 863   
 864           
 865          for i in range(len(frq)): 
 866              self.interpreter.relax_data.read('NOE_%s'%frq[i], 'NOE', float(frq[i])*1e6, 'noe.%s.out' % frq[i], dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 867              self.interpreter.relax_data.read('R1_%s'%frq[i],  'R1',  float(frq[i])*1e6, 'r1.%s.out' % frq[i],  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 868              self.interpreter.relax_data.read('R2_%s'%frq[i],  'R2',  float(frq[i])*1e6, 'r2.%s.out' % frq[i],  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 869   
 870           
 871          self.interpreter.value.set([15.0e-9, 1.0, 0.0], ['local_tm', 's2', 'te']) 
 872   
 873           
 874          self.interpreter.minimise.execute('newton', 'gmw', 'back') 
 875   
 876           
 877          spin = cdp.mol[0].res[0].spin[0] 
 878   
 879           
 880          self.value_test(spin, local_tm=10, s2=0.8, te=40, chi2=0.0) 
  881   
 882   
 884          """Test the optimisation of the test set {tm=10, S2=0.8, te=40}.""" 
 885   
 886           
 887          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_local_tm_10_S2_0_8_te_40.py') 
 888   
 889           
 890          self.interpreter.relax_data.read('R2_700',  'R2',  700*1e6, 'r2.700.out',  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 891          self.interpreter.relax_data.read('NOE_500', 'NOE', 500*1e6, 'noe.500.out', dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 892          self.interpreter.relax_data.read('R1_500',  'R1',  500*1e6, 'r1.500.out',  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 893          self.interpreter.relax_data.read('R1_900',  'R1',  900*1e6, 'r1.900.out',  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 894          self.interpreter.relax_data.read('NOE_900', 'NOE', 900*1e6, 'noe.900.out', dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 895          self.interpreter.relax_data.read('R2_900',  'R2',  900*1e6, 'r2.900.out',  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 896          self.interpreter.relax_data.read('R1_700',  'R1',  700*1e6, 'r1.700.out',  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 897          self.interpreter.relax_data.read('NOE_700', 'NOE', 700*1e6, 'noe.700.out', dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 898          self.interpreter.relax_data.read('R2_500',  'R2',  500*1e6, 'r2.500.out',  dir=cdp.path, res_num_col=1, res_name_col=2, data_col=3, error_col=4, spin_id='@N') 
 899   
 900           
 901          self.interpreter.value.set([15.0e-9, 1.0, 0.0], ['local_tm', 's2', 'te']) 
 902   
 903           
 904          self.interpreter.minimise.execute('newton', 'gmw', 'back') 
 905   
 906           
 907          spin = cdp.mol[0].res[0].spin[0] 
 908   
 909           
 910          self.value_test(spin, local_tm=10, s2=0.8, te=40, chi2=0.0) 
  911   
 912   
 914          """Test the optimisation of the m0 model-free model against the tm0 parameter grid.""" 
 915   
 916           
 917          cdp._model = 'm0' 
 918          cdp._value_test = self.value_test 
 919   
 920           
 921          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
  922   
 923   
 925          """Test the optimisation of the m0 model-free model against the tm0 parameter grid, testing the grid search.""" 
 926   
 927           
 928          cdp._model = 'm0' 
 929          cdp._value_test = self.value_test 
 930          cdp._grid_search = True 
 931   
 932           
 933          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
  934   
 935   
 937          """Test the optimisation of the m1 model-free model against the tm0 parameter grid.""" 
 938   
 939           
 940          cdp._model = 'm1' 
 941          cdp._value_test = self.value_test 
 942   
 943           
 944          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
  945   
 946   
 948          """Test the optimisation of the m1 model-free model against the tm0 parameter grid.""" 
 949   
 950           
 951          cdp._model = 'm1' 
 952          cdp._value_test = self.value_test 
 953          cdp._grid_search = True 
 954   
 955           
 956          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
  957   
 958   
 960          """Test the optimisation of the m2 model-free model against the tm0 parameter grid.""" 
 961   
 962           
 963          cdp._model = 'm2' 
 964          cdp._value_test = self.value_test 
 965   
 966           
 967          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
  968   
 969   
 971          """Test the optimisation of the m3 model-free model against the tm0 parameter grid.""" 
 972   
 973           
 974          cdp._model = 'm3' 
 975          cdp._value_test = self.value_test 
 976   
 977           
 978          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
  979   
 980   
 982          """Test the optimisation of the m4 model-free model against the tm0 parameter grid.""" 
 983   
 984           
 985          cdp._model = 'm4' 
 986          cdp._value_test = self.value_test 
 987   
 988           
 989          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
  990   
 991   
 993          """Test the optimisation of the m1 model-free model against the tm1 parameter grid.""" 
 994   
 995           
 996          cdp._model = 'm1' 
 997          cdp._value_test = self.value_test 
 998   
 999           
1000          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm1_grid.py') 
 1001   
1002   
1004          """Test the optimisation of the m2 model-free model against the tm2 parameter grid.""" 
1005   
1006           
1007          cdp._model = 'm2' 
1008          cdp._value_test = self.value_test 
1009   
1010           
1011          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm2_grid.py') 
 1012   
1013   
1015          """Test the optimisation of the m4 model-free model against the tm2 parameter grid.""" 
1016   
1017           
1018          cdp._model = 'm4' 
1019          cdp._value_test = self.value_test 
1020   
1021           
1022          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm2_grid.py') 
 1023   
1024   
1026          """Test the optimisation of the m3 model-free model against the tm3 parameter grid.""" 
1027   
1028           
1029          cdp._model = 'm3' 
1030          cdp._value_test = self.value_test 
1031   
1032           
1033          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm3_grid.py') 
 1034   
1035   
1037          """Test the optimisation of the m4 model-free model against the tm4 parameter grid.""" 
1038   
1039           
1040          cdp._model = 'm4' 
1041          cdp._value_test = self.value_test 
1042   
1043           
1044          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm4_grid.py') 
 1045   
1046   
1048          """Test the optimisation of the m5 model-free model against the tm5 parameter grid.""" 
1049   
1050           
1051          cdp._model = 'm5' 
1052          cdp._value_test = self.value_test 
1053   
1054           
1055          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm5_grid.py') 
 1056   
1057   
1059          """Test the optimisation of the m6 model-free model against the tm6 parameter grid.""" 
1060   
1061           
1062          cdp._model = 'm6' 
1063          cdp._value_test = self.value_test 
1064   
1065           
1066          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm6_grid.py') 
 1067   
1068   
1070          """Test the optimisation of the m7 model-free model against the tm7 parameter grid.""" 
1071   
1072           
1073          cdp._model = 'm7' 
1074          cdp._value_test = self.value_test 
1075   
1076           
1077          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm7_grid.py') 
 1078   
1079   
1081          """Test the optimisation of the m8 model-free model against the tm8 parameter grid.""" 
1082   
1083           
1084          cdp._model = 'm8' 
1085          cdp._value_test = self.value_test 
1086   
1087           
1088          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm8_grid.py') 
 1089   
1090   
1092          """Test the optimisation of the m9 model-free model against the tm9 parameter grid.""" 
1093   
1094           
1095          cdp._model = 'm9' 
1096          cdp._value_test = self.value_test 
1097   
1098           
1099          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm9_grid.py') 
 1100   
1101   
1103          """Try a very minimal model-free analysis on the OMP relaxation data.""" 
1104   
1105           
1106          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'omp_model_free.py') 
1107   
1108           
1109          dp = pipes.get_pipe('final') 
1110   
1111           
1112          self.assertEqual(dp.mol[0].res[0].spin[0].select_sim, [True, False, True]) 
1113          self.assertEqual(dp.mol[0].res[1].spin[0].select_sim, [True, True, False]) 
1114          self.assertEqual(dp.mol[0].res[2].spin[0].select_sim, [True, True, True]) 
1115          self.assert_(not hasattr(dp.mol[0].res[3].spin[0], 'select_sim')) 
 1116   
1117   
1119          """Mapping the {S2, te, Rex} chi2 space through the OpenDX user function dx.map().""" 
1120   
1121           
1122          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opendx_s2_te_rex.py') 
 1123   
1124   
1126          """Mapping the {theta, phi, Da} chi2 space through the OpenDX user function dx.map().""" 
1127   
1128           
1129          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'S2_0.970_te_2048_Rex_0.149' 
1130   
1131           
1132          self.interpreter.structure.read_pdb(file='pdb', dir=path, read_model=1) 
1133   
1134           
1135          self.interpreter.structure.load_spins('@N') 
1136   
1137           
1138          self.interpreter.relax_data.read('R1_600',  'R1',  600.0*1e6, 'r1.600.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1139          self.interpreter.relax_data.read('R2_600',  'R2',  600.0*1e6, 'r2.600.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1140          self.interpreter.relax_data.read('NOE_600', 'NOE', 600.0*1e6, 'noe.600.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1141          self.interpreter.relax_data.read('R1_500',  'R1',  500.0*1e6, 'r1.500.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1142          self.interpreter.relax_data.read('R2_500',  'R2',  500.0*1e6, 'r2.500.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1143          self.interpreter.relax_data.read('NOE_500', 'NOE', 500.0*1e6, 'noe.500.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1144   
1145           
1146          self.interpreter.diffusion_tensor.init((1.601 * 1e7, 1.34, 72.4, 90-77.9), param_types=4) 
1147   
1148           
1149          self.interpreter.structure.load_spins('@H') 
1150          self.interpreter.interatom.define(spin_id1='@N', spin_id2='@H', direct_bond=True) 
1151          self.interpreter.interatom.set_dist(spin_id1='@N', spin_id2='@H', ave_dist=1.02 * 1e-10) 
1152          self.interpreter.interatom.unit_vectors() 
1153   
1154           
1155          self.interpreter.value.set(N15_CSA, 'csa') 
1156          self.interpreter.value.set([0.8, 50 * 1e-12, 0.0], ['s2', 'te', 'rex']) 
1157   
1158           
1159          self.interpreter.spin.isotope('15N', spin_id='@N') 
1160          self.interpreter.spin.isotope('1H', spin_id='@H') 
1161   
1162           
1163          self.interpreter.model_free.select_model(model='m4') 
1164   
1165           
1166          self.interpreter.dx.map(params=['theta', 'phi', 'Da'], spin_id='#pdb_mol1:2@N', inc=2, lower=[0, 0, -0.5*1e7], upper=[pi, 2.0*pi, 1.0*1e7], file_prefix='devnull') 
 1167   
1168   
1170          """Mapping the {local_tm, S2, te} chi2 space through the OpenDX user function dx.map().""" 
1171   
1172           
1173          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'S2_0.970_te_2048_Rex_0.149' 
1174   
1175           
1176          self.interpreter.sequence.read(file='noe.500.out', dir=path, res_num_col=1, res_name_col=2) 
1177   
1178           
1179          self.interpreter.relax_data.read('R1_600',  'R1',  600.0*1e6, 'r1.600.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1180          self.interpreter.relax_data.read('R2_600',  'R2',  600.0*1e6, 'r2.600.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1181          self.interpreter.relax_data.read('NOE_600', 'NOE', 600.0*1e6, 'noe.600.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1182          self.interpreter.relax_data.read('R1_500',  'R1',  500.0*1e6, 'r1.500.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1183          self.interpreter.relax_data.read('R2_500',  'R2',  500.0*1e6, 'r2.500.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1184          self.interpreter.relax_data.read('NOE_500', 'NOE', 500.0*1e6, 'noe.500.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
1185   
1186           
1187          self.interpreter.spin.name('N') 
1188          self.interpreter.spin.element('N') 
1189   
1190           
1191          self.interpreter.sequence.attach_protons() 
1192   
1193           
1194          self.interpreter.interatom.define(spin_id1='@N', spin_id2='@H', direct_bond=True) 
1195          self.interpreter.interatom.set_dist(spin_id1='@N', spin_id2='@H', ave_dist=1.02 * 1e-10) 
1196   
1197           
1198          self.interpreter.value.set(N15_CSA, 'csa') 
1199   
1200           
1201          self.interpreter.spin.isotope('15N', spin_id='@N') 
1202          self.interpreter.spin.isotope('1H', spin_id='@H') 
1203   
1204           
1205          self.interpreter.model_free.select_model(model='tm2') 
1206   
1207           
1208          self.interpreter.dx.map(params=['local_tm', 's2', 'te'], spin_id=':2@N', inc=2, lower=[5e-9, 0.0, 0.0], file_prefix='devnull') 
 1209   
1210   
1212          """Constrained BFGS opt, backtracking line search {S2=0.970, te=2048, Rex=0.149} 
1213   
1214          The optimisation options are: 
1215              - BFGS optimisation. 
1216              - Backtracking line search. 
1217              - Constrained. 
1218   
1219          The true data set is: 
1220              - S2  = 0.970 
1221              - te  = 2048 ps 
1222              - Rex = 0.149 s^-1 
1223   
1224          Relevant links for this test are: 
1225              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-devel/2009-05/msg00003.html} 
1226              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-users/2011-01/msg00029.html} 
1227              - U{https://web.archive.org/web/https://gna.org/bugs/?12573} 
1228              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-users/2008-10/msg00089.html} 
1229              - U{https://web.archive.org/web/https://gna.org/bugs/?14173} 
1230          """ 
1231   
1232           
1233          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
1234   
1235           
1236          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
1237   
1238           
1239          self.interpreter.minimise.execute('bfgs', 'back') 
1240   
1241           
1242          spin = cdp.mol[0].res[1].spin[0] 
1243   
1244           
1245           
1246   
1247           
1248           
1249           
1250           
1251   
1252           
1253           
1254           
1255           
1256           
1257           
1258           
1259           
1260           
1261           
1262           
1263           
1264           
1265           
1266           
1267           
1268           
1269           
1270           
1271           
1272           
1273   
1274           
1275           
1276           
1277           
1278           
1279           
1280           
1281           
1282           
1283           
1284           
1285           
1286           
1287           
1288           
1289           
1290           
1291           
1292           
1293           
1294           
1295           
1296   
1297           
1298           
1299           
1300           
1301           
1302           
1303           
1304           
1305           
1306           
1307           
1308           
1309           
1310           
1311           
1312           
1313           
1314           
1315           
1316           
1317           
1318           
1319   
1320           
1321           
1322           
1323           
1324           
1325           
1326           
1327           
1328           
1329           
1330           
1331           
1332           
1333           
1334           
1335           
1336           
1337           
1338           
1339           
1340           
1341           
1342   
1343           
1344           
1345           
1346           
1347           
1348           
1349           
1350           
1351           
1352           
1353           
1354           
1355           
1356           
1357           
1358           
1359           
1360           
1361           
1362           
1363           
1364           
1365   
1366           
1367           
1368           
1369           
1370   
1371           
1372           
1373           
1374           
1375           
1376           
1377           
1378           
1379           
1380           
1381           
1382           
1383           
1384           
1385           
1386           
1387           
1388           
1389           
1390           
1391           
1392   
1393           
1394           
1395           
1396           
1397           
1398           
1399           
1400           
1401           
1402           
1403           
1404           
1405           
1406           
1407           
1408           
1409           
1410           
1411           
1412           
1413           
1414   
1415           
1416           
1417           
1418           
1419           
1420           
1421           
1422           
1423           
1424           
1425           
1426           
1427           
1428           
1429           
1430           
1431           
1432           
1433           
1434           
1435           
1436   
1437           
1438          select = True 
1439          s2 = 0.9699999999999995 
1440          te = 2048.000000000022283 
1441          rex = 0.14900000000000566 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
1442          chi2 = 3.1024517431117421e-27 
1443          iter = [154, 156, 157, 158, 162, 175, 203] 
1444          f_count = [598, 695, 701, 722, 735, 744, 758, 955] 
1445          g_count = [161, 162, 163, 164, 165, 169, 182, 209] 
1446          h_count = 0 
1447          warning = None 
1448   
1449           
1450          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
1451          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 1452   
1453   
1455          """Constrained BFGS opt, More and Thuente line search {S2=0.970, te=2048, Rex=0.149} 
1456   
1457          The optimisation options are: 
1458              - BFGS optimisation. 
1459              - More and Thuente line search. 
1460              - Constrained. 
1461   
1462          The true data set is: 
1463              - S2  = 0.970 
1464              - te  = 2048 ps 
1465              - Rex = 0.149 s^-1 
1466   
1467          Relevant links for this test are: 
1468              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-devel/2009-05/msg00003.html} 
1469              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-users/2011-01/msg00029.html} 
1470              - U{https://web.archive.org/web/https://gna.org/bugs/?12573} 
1471              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-users/2008-10/msg00089.html} 
1472              - U{https://web.archive.org/web/https://gna.org/bugs/?14174} 
1473          """ 
1474   
1475           
1476          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
1477   
1478           
1479          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
1480   
1481           
1482          self.interpreter.minimise.execute('bfgs', 'mt') 
1483   
1484           
1485          spin = cdp.mol[0].res[1].spin[0] 
1486   
1487           
1488           
1489   
1490           
1491           
1492           
1493   
1494           
1495           
1496           
1497           
1498           
1499           
1500           
1501           
1502           
1503           
1504           
1505           
1506           
1507           
1508           
1509           
1510           
1511           
1512           
1513           
1514           
1515   
1516           
1517           
1518           
1519           
1520           
1521           
1522           
1523           
1524           
1525           
1526           
1527           
1528           
1529           
1530           
1531           
1532           
1533           
1534           
1535           
1536           
1537           
1538   
1539           
1540           
1541           
1542           
1543           
1544           
1545           
1546           
1547           
1548           
1549           
1550           
1551           
1552           
1553           
1554           
1555           
1556           
1557           
1558           
1559           
1560           
1561   
1562           
1563           
1564           
1565           
1566           
1567           
1568           
1569           
1570           
1571           
1572           
1573           
1574           
1575           
1576           
1577           
1578           
1579           
1580           
1581           
1582           
1583           
1584   
1585           
1586           
1587           
1588           
1589           
1590           
1591           
1592           
1593           
1594           
1595           
1596           
1597           
1598           
1599           
1600           
1601           
1602           
1603           
1604           
1605           
1606   
1607           
1608           
1609           
1610           
1611           
1612           
1613           
1614           
1615           
1616           
1617           
1618           
1619           
1620           
1621           
1622           
1623           
1624           
1625           
1626           
1627           
1628   
1629           
1630          select = True 
1631          s2 = 0.9700000000000580 
1632          te = 2048.000000011044449 
1633          rex = 0.148999999998904 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
1634          chi2 = 4.3978813282102374e-23 
1635          iter = 120 
1636          f_count = [377, 381, 384, 386, 388] 
1637          g_count = [377, 381, 384, 386, 388] 
1638          h_count = 0 
1639          warning = None 
1640   
1641           
1642          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
1643          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 1644   
1645   
1647          """Constrained coordinate descent opt, backtracking line search {S2=0.970, te=2048, Rex=0.149} 
1648   
1649          The optimisation options are: 
1650              - Coordinate descent optimisation. 
1651              - Backtracking line search. 
1652              - Constrained. 
1653   
1654          The true data set is: 
1655              - S2  = 0.970 
1656              - te  = 2048 ps 
1657              - Rex = 0.149 s^-1 
1658          """ 
1659   
1660           
1661          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
1662   
1663           
1664          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
1665   
1666           
1667          self.interpreter.minimise.execute('cd', 'back', max_iter=50) 
1668   
1669           
1670          spin = cdp.mol[0].res[1].spin[0] 
1671   
1672           
1673           
1674   
1675           
1676           
1677           
1678           
1679           
1680           
1681           
1682           
1683           
1684           
1685           
1686           
1687           
1688           
1689           
1690           
1691           
1692           
1693           
1694           
1695           
1696           
1697   
1698           
1699          select = True 
1700          s2 = 0.9097900390625 
1701          te = 25.00000000000000 
1702          rex = 1.24017333984375 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
1703          chi2 = 53.476155463267176 
1704          iter = 50 
1705          f_count = 131 
1706          g_count = 51 
1707          h_count = 0 
1708          warning = 'Maximum number of iterations reached' 
1709   
1710           
1711          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
1712          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 1713   
1714   
1716          """Constrained coordinate descent opt, More and Thuente line search {S2=0.970, te=2048, Rex=0.149} 
1717   
1718          The optimisation options are: 
1719              - Coordinate descent optimisation. 
1720              - More and Thuente line search. 
1721              - Constrained. 
1722   
1723          The true data set is: 
1724              - S2  = 0.970 
1725              - te  = 2048 ps 
1726              - Rex = 0.149 s^-1 
1727   
1728          Relevant links for this test are: 
1729              - U{https://web.archive.org/web/https://gna.org/bugs/?12573} 
1730              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-users/2008-10/msg00089.html} 
1731              - U{https://web.archive.org/web/https://gna.org/bugs/?14175} 
1732          """ 
1733   
1734           
1735          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
1736   
1737           
1738          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
1739   
1740           
1741          self.interpreter.minimise.execute('cd', 'mt') 
1742   
1743           
1744          spin = cdp.mol[0].res[1].spin[0] 
1745   
1746           
1747           
1748   
1749           
1750           
1751           
1752   
1753           
1754           
1755           
1756           
1757           
1758           
1759           
1760           
1761           
1762           
1763           
1764           
1765           
1766           
1767           
1768           
1769           
1770           
1771           
1772           
1773           
1774           
1775   
1776           
1777           
1778           
1779           
1780           
1781           
1782           
1783           
1784           
1785           
1786           
1787           
1788           
1789           
1790           
1791           
1792           
1793           
1794           
1795           
1796           
1797           
1798   
1799           
1800           
1801           
1802           
1803           
1804           
1805           
1806           
1807           
1808           
1809           
1810           
1811           
1812           
1813           
1814           
1815           
1816           
1817           
1818           
1819           
1820           
1821   
1822           
1823           
1824           
1825           
1826           
1827           
1828           
1829           
1830           
1831           
1832           
1833           
1834           
1835           
1836           
1837           
1838           
1839           
1840           
1841           
1842           
1843   
1844           
1845          select = True 
1846          s2 = 0.9700000000219674 
1847          te = 2048.000001534187049 
1848          rex = 0.14899999946977982 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
1849          chi2 = 2.3477234248531005e-18 
1850          iter = [198, 200] 
1851          f_count = [738, 757, 874] 
1852          g_count = [738, 757, 874] 
1853          h_count = 0 
1854          warning = None 
1855   
1856           
1857          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
1858          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 1859   
1860   
1862          """Constrained Newton opt, GMW Hessian mod, backtracking line search {S2=0.970, te=2048, Rex=0.149} 
1863   
1864          The optimisation options are: 
1865              - Newton optimisation. 
1866              - GMW Hessian modification. 
1867              - Backtracking line search. 
1868              - Constrained. 
1869   
1870          The true data set is: 
1871              - S2  = 0.970 
1872              - te  = 2048 ps 
1873              - Rex = 0.149 s^-1 
1874   
1875          Relevant links for this test are: 
1876              - U{https://web.archive.org/web/https://gna.org/bugs/?12573} 
1877              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-users/2008-10/msg00089.html} 
1878              - U{https://web.archive.org/web/https://gna.org/bugs/?14177} 
1879          """ 
1880   
1881           
1882          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
1883   
1884           
1885          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
1886   
1887           
1888          self.interpreter.minimise.execute('newton', 'gmw', 'back') 
1889   
1890           
1891          spin = cdp.mol[0].res[1].spin[0] 
1892   
1893           
1894           
1895   
1896           
1897           
1898           
1899   
1900           
1901           
1902           
1903           
1904           
1905           
1906           
1907           
1908           
1909           
1910           
1911           
1912           
1913           
1914           
1915           
1916           
1917           
1918           
1919           
1920           
1921           
1922   
1923           
1924           
1925           
1926           
1927           
1928           
1929           
1930           
1931           
1932           
1933           
1934           
1935           
1936           
1937           
1938           
1939           
1940           
1941           
1942           
1943           
1944           
1945           
1946           
1947           
1948           
1949           
1950           
1951           
1952           
1953           
1954           
1955           
1956           
1957           
1958           
1959           
1960           
1961           
1962           
1963           
1964           
1965           
1966           
1967           
1968   
1969           
1970           
1971           
1972           
1973           
1974           
1975           
1976           
1977           
1978           
1979           
1980           
1981           
1982           
1983           
1984           
1985           
1986           
1987           
1988           
1989           
1990   
1991           
1992          select = True 
1993          s2 = 0.9699999999999994 
1994          te = 2048.000000000045020 
1995          rex = 0.14900000000001817 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
1996          chi2 = 7.3040158179665562e-28 
1997          iter = 18 
1998          f_count = [55, 57, 94] 
1999          g_count = [23] 
2000          h_count = 18 
2001          warning = None 
2002   
2003           
2004          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
2005          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 2006   
2007   
2009          """Constrained Newton opt, GMW Hessian mod, More and Thuente line search {S2=0.970, te=2048, Rex=0.149} 
2010   
2011          The optimisation options are: 
2012              - Newton optimisation. 
2013              - GMW Hessian modification. 
2014              - More and Thuente line search. 
2015              - Constrained. 
2016   
2017          The true data set is: 
2018              - S2  = 0.970 
2019              - te  = 2048 ps 
2020              - Rex = 0.149 s^-1 
2021   
2022          Relevant links for this test are: 
2023              - U{https://web.archive.org/web/https://gna.org/bugs/?12573} 
2024              - U{http://www.nmr-relax.com/mail.gna.org/public/relax-users/2008-10/msg00089.html} 
2025              - U{https://web.archive.org/web/https://gna.org/bugs/?14176} 
2026          """ 
2027   
2028           
2029          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
2030   
2031           
2032          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
2033   
2034           
2035          self.interpreter.minimise.execute('newton', 'gmw', 'mt') 
2036   
2037           
2038          self.monte_carlo() 
2039   
2040           
2041          spin = cdp.mol[0].res[1].spin[0] 
2042   
2043           
2044           
2045   
2046           
2047           
2048           
2049   
2050           
2051           
2052           
2053           
2054           
2055           
2056           
2057           
2058           
2059           
2060           
2061           
2062           
2063           
2064           
2065           
2066           
2067           
2068           
2069           
2070           
2071           
2072   
2073           
2074           
2075           
2076           
2077           
2078           
2079           
2080           
2081           
2082           
2083           
2084           
2085           
2086           
2087           
2088           
2089           
2090           
2091           
2092           
2093           
2094           
2095           
2096           
2097           
2098           
2099   
2100           
2101           
2102           
2103           
2104           
2105           
2106           
2107           
2108           
2109           
2110           
2111           
2112           
2113           
2114           
2115           
2116           
2117           
2118           
2119           
2120           
2121           
2122   
2123           
2124           
2125           
2126   
2127           
2128           
2129           
2130           
2131           
2132           
2133           
2134           
2135           
2136           
2137           
2138           
2139           
2140           
2141           
2142           
2143           
2144           
2145           
2146           
2147           
2148   
2149           
2150           
2151           
2152           
2153           
2154           
2155           
2156           
2157           
2158           
2159           
2160           
2161           
2162           
2163           
2164           
2165           
2166           
2167           
2168           
2169           
2170   
2171           
2172          select = True 
2173          s2 = 0.9699999999999993 
2174          te = 2048.000000000041837 
2175          rex = 0.14900000000002225 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
2176          chi2 = 6.8756889983348349e-28 
2177          iter = 22 
2178          f_count = [91, 95, 153, 159, 160, 165] 
2179          g_count = [91, 95, 153, 159, 160, 165] 
2180          h_count = 22 
2181          warning = None 
2182   
2183           
2184          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
2185          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 2186   
2187   
2189          """Constrained steepest descent opt, backtracking line search {S2=0.970, te=2048, Rex=0.149} 
2190   
2191          The optimisation options are: 
2192              - Steepest descent optimisation. 
2193              - Backtracking line search. 
2194              - Constrained. 
2195   
2196          The true data set is: 
2197              - S2  = 0.970 
2198              - te  = 2048 ps 
2199              - Rex = 0.149 s^-1 
2200          """ 
2201   
2202           
2203          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
2204   
2205           
2206          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
2207   
2208           
2209          self.interpreter.minimise.execute('sd', 'back', max_iter=50) 
2210   
2211           
2212          spin = cdp.mol[0].res[1].spin[0] 
2213   
2214           
2215           
2216   
2217           
2218           
2219           
2220           
2221           
2222           
2223           
2224           
2225           
2226           
2227           
2228           
2229           
2230           
2231           
2232           
2233           
2234           
2235           
2236           
2237           
2238           
2239           
2240           
2241          select = True 
2242          s2 = 0.91579220834688024 
2243          te = 0.30568658722531733 
2244          rex = 0.34008409798366124 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
2245          chi2 = 68.321956795264342 
2246          iter = 50 
2247          f_count = 134 
2248          g_count = 51 
2249          h_count = 0 
2250          warning = 'Maximum number of iterations reached' 
2251   
2252           
2253          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
2254          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 2255   
2256   
2258          """Constrained steepest descent opt, More and Thuente line search {S2=0.970, te=2048, Rex=0.149} 
2259   
2260          The optimisation options are: 
2261              - Steepest descent optimisation. 
2262              - More and Thuente line search. 
2263              - Constrained. 
2264   
2265          The true data set is: 
2266              - S2  = 0.970 
2267              - te  = 2048 ps 
2268              - Rex = 0.149 s^-1 
2269          """ 
2270   
2271           
2272          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
2273   
2274           
2275          self.interpreter.value.set([1.0, 0.0, 0.0], ['s2', 'te', 'rex']) 
2276   
2277           
2278          self.interpreter.minimise.execute('sd', 'mt', max_iter=50) 
2279   
2280           
2281          spin = cdp.mol[0].res[1].spin[0] 
2282   
2283           
2284           
2285   
2286           
2287           
2288           
2289           
2290           
2291           
2292           
2293           
2294           
2295           
2296           
2297           
2298           
2299           
2300           
2301           
2302           
2303           
2304           
2305           
2306           
2307           
2308           
2309           
2310          select = True 
2311          s2 = 0.91619994957822126 
2312          te = 0.12319687570987945 
2313          rex = 0.16249110942961512 / (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2 
2314          chi2 = 73.843613546506191 
2315          iter = 50 
2316          f_count = 108 
2317          g_count = 108 
2318          h_count = 0 
2319          warning = 'Maximum number of iterations reached' 
2320   
2321           
2322          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
2323          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 2324   
2325   
2327          """Constrained grid search {S2=0.970, te=2048, Rex=0.149}. 
2328   
2329          The optimisation options are: 
2330              - Constrained grid search. 
2331   
2332          The true data set is: 
2333              - S2  = 0.970 
2334              - te  = 2048 ps 
2335              - Rex = 0.149 s^-1 
2336          """ 
2337   
2338           
2339          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_setup_S2_0_970_te_2048_Rex_0_149.py') 
2340   
2341           
2342          self.interpreter.minimise.grid_search(inc=11) 
2343   
2344           
2345          spin = cdp.mol[0].res[1].spin[0] 
2346   
2347           
2348           
2349   
2350           
2351           
2352           
2353           
2354           
2355           
2356           
2357           
2358           
2359           
2360           
2361           
2362           
2363           
2364           
2365           
2366           
2367           
2368           
2369           
2370           
2371           
2372   
2373           
2374          select = True 
2375          s2 = 1.0 
2376          te = 0.0 
2377          rex = 0.0 
2378          chi2 = 3.9844117908982288 
2379          iter = 1331 
2380          f_count = 1331 
2381          g_count = 0 
2382          h_count = 0 
2383          warning = None 
2384   
2385           
2386          self.assertEqual(cdp.mol[0].res[0].spin[0].select, False) 
2387          self.value_test(spin, select=select, s2=s2, te=te, rex=rex, chi2=chi2) 
 2388   
2389   
2391          """Reading of relaxation data using the user function relax_data.read().""" 
2392   
2393           
2394          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'S2_0.970_te_2048_Rex_0.149' 
2395   
2396           
2397          self.interpreter.sequence.read(file='noe.500.out', dir=path, res_num_col=1, res_name_col=2) 
2398   
2399           
2400          self.interpreter.relax_data.read(ri_id='R1_600', ri_type='R1', frq=600.0 * 1e6, file='r1.600.out', dir=path, res_num_col=1, res_name_col=2, data_col=3, error_col=4) 
2401   
2402           
2403          self.assertEqual(cdp.mol[0].res[1].spin[0].ri_data['R1_600'], 1.3874977659397683) 
2404          self.assertEqual(cdp.mol[0].res[1].spin[0].ri_data_err['R1_600'], 0.027749955318795365) 
 2405   
2406   
2408          """Read a relax 1.2 model-free results file using the user function results.read().""" 
2409   
2410           
2411          self.interpreter.results.read(file='results_1.2', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free') 
2412   
2413           
2414          print(cdp) 
2415   
2416           
2417          num = [3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 35] 
2418          select = [False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False] 
2419          model = ['m6', 'm8', 'm6', 'm6', 'm5', 'm5', 'm6', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm5', 'm8'] 
2420          params = [['s2f', 'tf', 's2', 'ts'], ['s2f', 'tf', 's2', 'ts', 'rex'], ['s2f', 'tf', 's2', 'ts'], ['s2f', 'tf', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 'tf', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 's2', 'ts'], ['s2f', 'tf', 's2', 'ts', 'rex']] 
2421          s2 = [0.36670427146403667, 0.29007016882193892, 0.32969827132809559, 0.32795333510352148, 0.48713005133752196, 0.40269538236298569, 0.40700811448591556, 0.4283551026406261, 0.51176783207279875, 0.40593664887508263, 0.39437732735324443, 0.51457448574034614, 0.3946900969237977, 0.44740698217286901, 0.48527716982891644, 0.40845486062540021, 0.45839900995265137, 0.52650140958170921, 0.4293599736020427, 0.4057313062564018, 0.49877862202992485, 0.2592017578673716] 
2422          s2f = [0.74487419686217116, 0.75358958979175727, 0.77751085082436211, 0.79095600331751026, 0.81059857999556584, 0.83190224667917501, 0.80119109731193627, 0.83083248649122576, 0.86030420847112021, 0.84853537580616367, 0.82378413185968968, 0.82419108009774422, 0.85121172821954216, 0.8736616181472916, 0.84117641395909415, 0.82881488883235521, 0.82697284935760407, 0.85172375147802715, 0.81366357660551614, 0.80525752789388483, 0.87016608774434312, 0.72732036363757913] 
2423          s2s = [0.49230363061145249, 0.38491796164819009, 0.4240433056059994, 0.41462904855388333, 0.60095102971952741, 0.48406574687168274, 0.50800379067049317, 0.51557336720143987, 0.59486845122178478, 0.47839684761453399, 0.47873867934666214, 0.62433881919629686, 0.46368028522041266, 0.51210557140148982, 0.57690296800513374, 0.49281795745831319, 0.55430962492751434, 0.61815983018913379, 0.5276873464009153, 0.50385285725620466, 0.57319933407525203, 0.35637907423767778] 
2424          tf = [51.972302580836775, 40.664901270582988, 28.130299965023671, 33.804249387275249, None, None, 39.01236115991609, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 44.039078787981225] 
2425          ts = [4485.91415175767, 4102.7781982031429, 3569.2837792404325, 6879.5308400989479, 3372.9879908647699, 4029.0617588044606, 4335.5290462417324, 4609.1336532777468, 2628.5638771308277, 3618.1332115807745, 6208.3028336637644, 3763.0843884066526, 3847.9994107906346, 2215.2061317769703, 2936.1282626562524, 3647.0715185456729, 3803.6990762708042, 2277.5259401416288, 3448.4496004396187, 3884.6917561878495, 1959.3267951363712, 4100.8496898773756] 
2426          rex = [None, 0.37670424516405815, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, None, 0.71472288436387088] 
2427   
2428           
2429          ri_ids = ['R1_500', 'R2_500', 'NOE_500', 'R1_600', 'R2_600', 'NOE_600', 'R1_750', 'R2_750', 'NOE_750'] 
2430          types_list = ['R1', 'R2', 'NOE', 'R1', 'R2', 'NOE', 'R1', 'R2', 'NOE'] 
2431          frqs_list = [500000000.0] * 3 + [600000000.0] * 3 + [750000000.0] * 3 
2432          ri_type = {} 
2433          frqs = {} 
2434          for i in range(len(ri_ids)): 
2435              ri_type[ri_ids[i]] = types_list[i] 
2436              frqs[ri_ids[i]] = frqs_list[i] 
2437   
2438          ri_data = {} 
2439          ri_data['R1_500'] = [2.2480000000000002, 2.2679999999999998, 2.2309999999999999, 2.383, 2.1960000000000002, 2.3570000000000002, 2.3340000000000001, 2.3999999999999999, 2.2839999999999998, 2.3889999999999998, 2.375, 2.274, 2.407, 2.3220000000000001, 2.2130000000000001, 2.351, 2.3260000000000001, 2.2949999999999999, 2.2829999999999999, 2.302, 2.2719999999999998, 2.2280000000000002] 
2440          ri_data['R2_500'] = [5.3419999999999996, 5.3730000000000002, 5.1280000000000001, 5.6749999999999998, 5.9669999999999996, 5.8410000000000002, 5.774, 6.0419999999999998, 6.3129999999999997, 5.9210000000000003, 6.1269999999999998, 6.1120000000000001, 6.0570000000000004, 5.6399999999999997, 6.2809999999999997, 5.8890000000000002, 5.875, 6.1429999999999998, 5.7370000000000001, 5.5490000000000004, 5.7110000000000003, 5.4020000000000001] 
2441          ri_data['NOE_500'] = [0.4617, 0.46560000000000001, 0.61670000000000003, 0.60860000000000003, 0.68869999999999998, 0.6663, 0.58620000000000005, 0.64939999999999998, 0.61070000000000002, 0.61180000000000001, 0.73129999999999995, 0.69650000000000001, 0.65139999999999998, 0.4929, 0.65920000000000001, 0.63029999999999997, 0.64380000000000004, 0.53500000000000003, 0.63839999999999997, 0.65000000000000002, 0.49909999999999999, 0.45979999999999999] 
2442          ri_data['R1_600'] = [1.8879999999999999, 1.992, 2.0270000000000001, 1.9790000000000001, 1.9399999999999999, 2.0550000000000002, 2.0030000000000001, 2.0139999999999998, 1.982, 2.1000000000000001, 2.008, 1.927, 2.1019999999999999, 2.0830000000000002, 1.9910000000000001, 2.036, 1.9990000000000001, 1.9490000000000001, 1.976, 1.9870000000000001, 2.0, 1.9379999999999999] 
2443          ri_data['R2_600'] = [5.6100000000000003, 5.7869999999999999, 5.4029999999999996, 6.1849999999999996, 6.3150000000000004, 5.9809999999999999, 6.1600000000000001, 6.2460000000000004, 6.4340000000000002, 6.0069999999999997, 6.399, 6.6799999999999997, 6.1369999999999996, 5.952, 6.3239999999999998, 5.9699999999999998, 6.3979999999999997, 6.4379999999999997, 6.1139999999999999, 6.0960000000000001, 6.3250000000000002, 6.1050000000000004] 
2444          ri_data['NOE_600'] = [0.62929999999999997, 0.64429999999999998, 0.5393, 0.71509999999999996, 0.73870000000000002, 0.75580000000000003, 0.64239999999999997, 0.74429999999999996, 0.69440000000000002, 0.73140000000000005, 0.7681, 0.73399999999999999, 0.75680000000000003, 0.62470000000000003, 0.73529999999999995, 0.73740000000000006, 0.73080000000000001, 0.6603, 0.70899999999999996, 0.69040000000000001, 0.59199999999999997, 0.56830000000000003] 
2445          ri_data['R1_750'] = [1.6220000000000001, 1.706, 1.73, 1.665, 1.627, 1.768, 1.706, 1.7030000000000001, 1.7649999999999999, 1.8129999999999999, 1.675, 1.6339999999999999, 1.845, 1.7829999999999999, 1.764, 1.7470000000000001, 1.681, 1.647, 1.6850000000000001, 1.667, 1.7010000000000001, 1.6850000000000001] 
2446          ri_data['R2_750'] = [6.2619999999999996, 6.5359999999999996, 5.8959999999999999, 6.6840000000000002, 6.8819999999999997, 6.7569999999999997, 6.5620000000000003, 7.0030000000000001, 6.9740000000000002, 6.649, 6.9829999999999997, 7.2309999999999999, 6.4429999999999996, 6.6840000000000002, 6.8070000000000004, 6.4850000000000003, 6.9400000000000004, 6.944, 6.4640000000000004, 6.4889999999999999, 6.9009999999999998, 6.9539999999999997] 
2447          ri_data['NOE_750'] = [0.61909999999999998, 0.65890000000000004, 0.72009999999999996, 0.71009999999999995, 0.75219999999999998, 0.80420000000000003, 0.70020000000000004, 0.81999999999999995, 0.81040000000000001, 0.83409999999999995, 0.81299999999999994, 0.81910000000000005, 0.7782, 0.74760000000000004, 0.8115, 0.7379, 0.81100000000000005, 0.78249999999999997, 0.75729999999999997, 0.78259999999999996, 0.75139999999999996, 0.65210000000000001] 
2448   
2449          ri_data_err = {} 
2450          ri_data_err['R1_500'] = [0.044999999999999998, 0.044999999999999998, 0.044499999999999998, 0.048000000000000001, 0.043999999999999997, 0.047, 0.0465, 0.048000000000000001, 0.045499999999999999, 0.048000000000000001, 0.047500000000000001, 0.045499999999999999, 0.048000000000000001, 0.0465, 0.044499999999999998, 0.047, 0.0465, 0.045499999999999999, 0.045499999999999999, 0.045999999999999999, 0.045499999999999999, 0.044499999999999998] 
2451          ri_data_err['R2_500'] = [0.107, 0.1075, 0.10249999999999999, 0.1135, 0.11899999999999999, 0.11650000000000001, 0.11600000000000001, 0.121, 0.1265, 0.11799999999999999, 0.123, 0.122, 0.1215, 0.1125, 0.17599999999999999, 0.11749999999999999, 0.11749999999999999, 0.123, 0.1145, 0.111, 0.1145, 0.108] 
2452          ri_data_err['NOE_500'] = [0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003] 
2453          ri_data_err['R1_600'] = [0.037999999999999999, 0.040000000000000001, 0.040500000000000001, 0.0395, 0.0385, 0.041000000000000002, 0.040000000000000001, 0.040500000000000001, 0.040000000000000001, 0.042000000000000003, 0.041500000000000002, 0.039, 0.042000000000000003, 0.042000000000000003, 0.0395, 0.040500000000000001, 0.040000000000000001, 0.039, 0.0395, 0.040000000000000001, 0.040500000000000001, 0.039] 
2454          ri_data_err['R2_600'] = [0.1125, 0.11550000000000001, 0.108, 0.1235, 0.1265, 0.1275, 0.123, 0.125, 0.1285, 0.12, 0.128, 0.13350000000000001, 0.1225, 0.11899999999999999, 0.1265, 0.1195, 0.128, 0.129, 0.1225, 0.122, 0.1265, 0.1225] 
2455          ri_data_err['NOE_600'] = [0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003] 
2456          ri_data_err['R1_750'] = [0.032500000000000001, 0.034000000000000002, 0.035000000000000003, 0.033500000000000002, 0.032500000000000001, 0.035499999999999997, 0.034000000000000002, 0.034000000000000002, 0.035499999999999997, 0.036499999999999998, 0.033500000000000002, 0.032500000000000001, 0.036999999999999998, 0.035499999999999997, 0.035499999999999997, 0.035000000000000003, 0.033500000000000002, 0.033000000000000002, 0.034000000000000002, 0.033000000000000002, 0.034000000000000002, 0.033500000000000002] 
2457          ri_data_err['R2_750'] = [0.1255, 0.1305, 0.11799999999999999, 0.13400000000000001, 0.13800000000000001, 0.13550000000000001, 0.13150000000000001, 0.14050000000000001, 0.13950000000000001, 0.13300000000000001, 0.14000000000000001, 0.14449999999999999, 0.129, 0.13400000000000001, 0.13600000000000001, 0.1295, 0.13850000000000001, 0.13900000000000001, 0.1295, 0.13, 0.13800000000000001, 0.13900000000000001] 
2458          ri_data_err['NOE_750'] = [0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003, 0.050000000000000003] 
2459   
2460           
2461          self.assertEqual(cdp.pipe_type, 'mf') 
2462          self.assertEqual(cdp.hybrid_pipes, []) 
2463   
2464           
2465          self.assertEqual(cdp.diff_tensor.type, 'sphere') 
2466          self.assertEqual(cdp.diff_tensor.tm, 6.2029050826362826e-09) 
2467   
2468           
2469          self.assertEqual(cdp.chi2, 88.0888600975) 
2470          self.assertEqual(cdp.iter, 1) 
2471          self.assertEqual(cdp.f_count, 20) 
2472          self.assertEqual(cdp.g_count, 2) 
2473          self.assertEqual(cdp.h_count, 1) 
2474          self.assertEqual(cdp.warning, None) 
2475   
2476           
2477          self.assertEqual(cdp.ri_ids, ri_ids) 
2478          for ri_id in ri_ids: 
2479              self.assertEqual(cdp.ri_type[ri_id], ri_type[ri_id]) 
2480              self.assertEqual(cdp.spectrometer_frq[ri_id], frqs[ri_id]) 
2481   
2482           
2483          j = 0 
2484          for i in range(len(cdp.mol[0].res)): 
2485               
2486              res = cdp.mol[0].res[i] 
2487              spin = cdp.mol[0].res[i].spin[0] 
2488              h_spin = None 
2489              if len(cdp.mol[0].res[i].spin) > 1: 
2490                  h_spin = cdp.mol[0].res[i].spin[1] 
2491   
2492               
2493              print(res) 
2494              print(spin) 
2495   
2496               
2497              self.assertEqual(res.num, num[i]) 
2498              self.assertEqual(res.name, 'XXX') 
2499              self.assertEqual(spin.num, None) 
2500              if select[i]: 
2501                  self.assertEqual(spin.name, 'N') 
2502                  self.assertEqual(spin.fixed, False) 
2503              else: 
2504                  self.assertEqual(spin.name, None) 
2505              self.assertEqual(spin.select, select[i]) 
2506              if h_spin: 
2507                  self.assertEqual(h_spin.num, None) 
2508                  self.assertEqual(h_spin.name, 'H') 
2509                  self.assertEqual(h_spin.select, False) 
2510   
2511               
2512              if not select[i]: 
2513                  continue 
2514   
2515               
2516              self.assertEqual(spin.isotope, '15N') 
2517              self.assertEqual(h_spin.isotope, '1H') 
2518   
2519               
2520              self.assertEqual(spin.model, model[j]) 
2521              self.assertEqual(spin.equation, 'mf_ext') 
2522              self.assertEqual(spin.params, params[j]) 
2523              self.assertEqual(spin.s2, s2[j]) 
2524              self.assertEqual(spin.s2f, s2f[j]) 
2525              self.assertEqual(spin.s2s, s2s[j]) 
2526              self.assertEqual(spin.local_tm, None) 
2527              self.assertEqual(spin.te, None) 
2528              if tf[j] != None: 
2529                  tf[j] = tf[j]*1e-12 
2530              self.assertEqual(spin.tf, tf[j]) 
2531              self.assertEqual(spin.ts, ts[j]*1e-12) 
2532              if rex[j] != None: 
2533                  rex[j] = rex[j]/(2.0*pi*500000000.0)**2 
2534              self.assertEqual(spin.rex, rex[j]) 
2535              self.assertEqual(spin.csa, -0.00016999999999999999) 
2536   
2537               
2538              self.assertEqual(spin.chi2, None) 
2539              self.assertEqual(spin.iter, None) 
2540              self.assertEqual(spin.f_count, None) 
2541              self.assertEqual(spin.g_count, None) 
2542              self.assertEqual(spin.h_count, None) 
2543              self.assertEqual(spin.warning, None) 
2544   
2545               
2546              for ri_id in cdp.ri_ids: 
2547                  print(ri_id) 
2548                  self.assertEqual(spin.ri_data[ri_id], ri_data[ri_id][j]) 
2549                  self.assertEqual(spin.ri_data_err[ri_id], ri_data_err[ri_id][j]) 
2550   
2551               
2552              j = j + 1 
2553   
2554           
2555          for i in range(len(cdp.interatomic)): 
2556              self.assertEqual(cdp.interatomic[i].r, 1.0200000000000001e-10) 
 2557   
2558   
2560          """Read the truncated relax 1.2 model-free results file for PSE-4.""" 
2561   
2562           
2563          self.interpreter.results.read(file='pse4_trunc', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free') 
2564   
2565           
2566          print(cdp) 
2567   
2568           
2569          num = [24, 27] 
2570          name = ['ser', 'gln'] 
2571          eqi = [None, 'mf_ext'] 
2572          select = [False, True] 
2573          model = [None, 'm5'] 
2574          params = [[], ['s2f', 's2', 'ts']] 
2575          s2 = [None, 0.86578779694713515] 
2576          s2f = [None, 0.88618694421409949] 
2577          s2s = [None, 0.97698098871784322] 
2578          s2s_sim = [[None, None, None], 
2579                  [0.95852080081635382, 0.97574415413309512, 0.97293450506144197]] 
2580          tf = [None, None] 
2581          ts = [None, 598.8142249659868e-12] 
2582          rex = [None, None] 
2583          csa = [None, -0.00017199999999999998] 
2584          ri_ids = ['R1_800', 'NOE_800', 'R1_600', 'R2_600', 'NOE_600', 'R1_500', 'R2_500', 'NOE_500'] 
2585          ri_type_list = ['R1', 'NOE', 'R1', 'R2', 'NOE', 'R1', 'R2', 'NOE'] 
2586          frq_list = [799744000.0]*2 + [599737000.0]*3 + [499719000.0]*3 
2587          ri_data_list = [[], 
2588                  [0.6835, 0.81850000000000001, 0.98409999999999997, 16.5107, 0.79796699999999998, 1.3174999999999999, 15.381500000000001, 0.73046900000000003]] 
2589          ri_data_err_list = [[], 
2590                  [0.026957200000000001, 0.025881000000000001, 0.0243073, 0.497137, 0.028663000000000001, 0.038550000000000001, 0.40883999999999998, 0.022016299999999999]] 
2591          ri_type = {} 
2592          frq = {} 
2593          ri_data = [{}, {}] 
2594          ri_data_err = [{}, {}] 
2595          for i in range(len(ri_ids)): 
2596              ri_type[ri_ids[i]] = ri_type_list[i] 
2597              frq[ri_ids[i]] = frq_list[i] 
2598              ri_data[1][ri_ids[i]] = ri_data_list[1][i] 
2599              ri_data_err[1][ri_ids[i]] = ri_data_err_list[1][i] 
2600   
2601           
2602          r = [None, 1.0200000000000001e-10] 
2603   
2604           
2605          self.assertEqual(cdp.pipe_type, 'mf') 
2606          self.assertEqual(cdp.hybrid_pipes, []) 
2607   
2608           
2609          self.assertEqual(cdp.diff_tensor.type, 'ellipsoid') 
2610          self.assertEqual(cdp.diff_tensor.tm, 1.2682770910095516e-08) 
2611          self.assertEqual(cdp.diff_tensor.tm_err, 2.4053909822304126e-11) 
2612          self.assertEqual(cdp.diff_tensor.tm_sim[0], 1.2666656725867738e-08) 
2613          self.assertEqual(cdp.diff_tensor.tm_sim[1], 1.2689812011679408e-08) 
2614          self.assertEqual(cdp.diff_tensor.tm_sim[2], 1.2698266641804573e-08) 
2615   
2616           
2617          self.assertEqual(cdp.chi2, 935.13348627485448) 
2618          self.assertEqual(cdp.chi2_sim[0], 898.0981500197106) 
2619          self.assertEqual(cdp.chi2_sim[1], 904.11113814725172) 
2620          self.assertEqual(cdp.chi2_sim[2], 902.03890817023728) 
2621          self.assertEqual(cdp.iter, 1) 
2622          self.assertEqual(cdp.iter_sim[0], 23) 
2623          self.assertEqual(cdp.iter_sim[1], 30) 
2624          self.assertEqual(cdp.iter_sim[2], 16) 
2625          self.assertEqual(cdp.f_count, 21) 
2626          self.assertEqual(cdp.f_count_sim[0], 61) 
2627          self.assertEqual(cdp.f_count_sim[1], 501) 
2628          self.assertEqual(cdp.f_count_sim[2], 59) 
2629          self.assertEqual(cdp.g_count, 2) 
2630          self.assertEqual(cdp.g_count_sim[0], 27) 
2631          self.assertEqual(cdp.g_count_sim[1], 34) 
2632          self.assertEqual(cdp.g_count_sim[2], 20) 
2633          self.assertEqual(cdp.h_count, 1) 
2634          self.assertEqual(cdp.h_count_sim[0], 23) 
2635          self.assertEqual(cdp.h_count_sim[1], 30) 
2636          self.assertEqual(cdp.h_count_sim[2], 16) 
2637          self.assertEqual(cdp.warning, None) 
2638          self.assertEqual(cdp.warning_sim[0], None) 
2639          self.assertEqual(cdp.warning_sim[1], None) 
2640          self.assertEqual(cdp.warning_sim[2], None) 
2641   
2642           
2643          self.assertEqual(cdp.ri_ids, ri_ids) 
2644          for ri_id in ri_ids: 
2645              self.assertEqual(cdp.ri_type[ri_id], ri_type[ri_id]) 
2646              self.assertEqual(cdp.spectrometer_frq[ri_id], frq[ri_id]) 
2647   
2648           
2649          for i in range(len(cdp.mol[0].res)): 
2650               
2651              res = cdp.mol[0].res[i] 
2652              spin = cdp.mol[0].res[i].spin[0] 
2653              h_spin = cdp.mol[0].res[i].spin[1] 
2654   
2655               
2656              print(res) 
2657              print(spin) 
2658   
2659               
2660              self.assertEqual(res.num, num[i]) 
2661              self.assertEqual(res.name, name[i]) 
2662              self.assertEqual(spin.num, None) 
2663              self.assertEqual(spin.name, 'N') 
2664              self.assertEqual(spin.select, select[i]) 
2665              self.assertEqual(spin.fixed, False) 
2666              self.assertEqual(h_spin.num, None) 
2667              self.assertEqual(h_spin.name, 'H') 
2668              self.assertEqual(h_spin.select, False) 
2669   
2670               
2671              self.assertEqual(spin.isotope, '15N') 
2672              self.assertEqual(h_spin.isotope, '1H') 
2673   
2674               
2675              self.assertEqual(spin.model, model[i]) 
2676              self.assertEqual(spin.equation, eqi[i]) 
2677              self.assertEqual(spin.params, params[i]) 
2678              self.assertEqual(spin.s2, s2[i]) 
2679              self.assertEqual(spin.s2f, s2f[i]) 
2680              self.assertEqual(spin.s2s, s2s[i]) 
2681              self.assertEqual(spin.local_tm, None) 
2682              self.assertEqual(spin.te, None) 
2683              self.assertEqual(spin.tf, tf[i]) 
2684              self.assertEqual(spin.ts, ts[i]) 
2685              self.assertEqual(spin.rex, rex[i]) 
2686              self.assertEqual(spin.csa, csa[i]) 
2687              for j in range(3): 
2688                  self.assertEqual(spin.s2s_sim[j], s2s_sim[i][j]) 
2689   
2690               
2691              self.assertEqual(spin.chi2, None) 
2692              self.assertEqual(spin.iter, None) 
2693              self.assertEqual(spin.f_count, None) 
2694              self.assertEqual(spin.g_count, None) 
2695              self.assertEqual(spin.h_count, None) 
2696              self.assertEqual(spin.warning, None) 
2697   
2698               
2699              if i == 0: 
2700                  self.assertEqual(spin.ri_data, {}) 
2701                  self.assertEqual(spin.ri_data_err, {}) 
2702              else: 
2703                  for ri_id in ri_ids: 
2704                      self.assertEqual(spin.ri_data[ri_id], ri_data[i][ri_id]) 
2705                      self.assertEqual(spin.ri_data_err[ri_id], ri_data_err[i][ri_id]) 
2706   
2707           
2708          for i in range(len(cdp.interatomic)): 
2709              self.assertEqual(cdp.interatomic[i].r, r[i]) 
 2710   
2711   
2713          """Read the truncated relax 1.2 model-free results file for TEM-1.""" 
2714   
2715           
2716          self.interpreter.results.read(file='tem1_trunc', dir=status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free') 
2717   
2718           
2719          print(cdp) 
2720   
2721           
2722          num = [26, 27, 29, 30, 31, 32, 33, 34] 
2723          name = ['His', 'Pro', 'Thr', 'Leu', 'Val', 'Lys', 'Val', 'Lys'] 
2724          eqi = [None, None, None, 'mf_ext', 'mf_orig', 'mf_orig', None, 'mf_orig'] 
2725          select = [False, False, False, True, True, True, False, True] 
2726          model = [None, None, None, 'm5', 'm2', 'm1', None, 'm1'] 
2727          params = [None, None, None, ['s2f', 's2', 'ts'], ['s2', 'te'], ['s2'], None, ['s2']] 
2728          s2 = [None, None, None, 0.85674161305142216, 0.89462664243726608, 0.90201790111143165, None, 0.92099297347361675] 
2729          s2f = [None, None, None, 0.88220054271390302, None, None, None, None] 
2730          s2s = [None, None, None, 0.97114156200339452, None, None, None, None] 
2731          te = [None, None, None, None, 43.262426916926735*1e-12, None, None, None] 
2732          tf = [None, None, None, None, None, None, None, None] 
2733          ts = [None, None, None, 2385.912514843546*1e-12, None, None, None, None] 
2734          rex = [None, None, None, None, None, None, None, None] 
2735          csa = [None, None, None, -0.00017199999999999998, -0.00017199999999999998, -0.00017199999999999998, None, -0.00017199999999999998] 
2736          ri_ids = ['R1_800', 'R2_800', 'R1_600', 'R2_600', 'NOE_600', 'R1_500', 'R2_500', 'NOE_500'] 
2737          ri_type_list = ['R1', 'R2', 'R1', 'R2', 'NOE', 'R1', 'R2', 'NOE'] 
2738          frq_list = [799812000.0]*2 + [599739000.0]*3 + [499827000.0]*3 
2739          ri_data_list = [[], 
2740                          [], 
2741                          [], 
2742                          [0.75680000000000003, 18.797999999999998, 1.0747, 16.477, 0.86873100000000003, 1.2625999999999999, 15.3367, 0.77803197999999996], 
2743                          [0.75019999999999998, 19.201599999999999, 1.0617000000000001, 17.652899999999999, 0.73757200000000001, 1.3165, 15.949, 0.72442474000000001], 
2744                          [0.75860000000000005, 19.303799999999999, 1.0605, 16.593699999999998, 0.79137500000000005, 1.3425, 15.327199999999999, 0.83449132000000004], 
2745                          [], 
2746                          [0.71919999999999995, 20.165400000000002, 1.0729, 17.291899999999998, 0.80444599999999999, 1.2971999999999999, 15.9963, 0.73164684999999996]] 
2747          ri_data_err_list = [[], 
2748                              [], 
2749                              [], 
2750                              [0.028001600000000001, 0.21729999999999999, 0.031166300000000001, 0.44487900000000002, 0.043210699999999998, 0.054291800000000001, 0.69015199999999999, 0.038901600000000001], 
2751                              [0.028899999999999999, 0.25640000000000002, 0.030789299999999999, 0.476628, 0.036686799999999999, 0.0566095, 0.71770500000000004, 0.036221200000000002], 
2752                              [0.033399999999999999, 0.2233, 0.030754500000000001, 0.44802999999999998, 0.039363000000000002, 0.057727500000000001, 0.689724, 0.041724600000000001], 
2753                              [], 
2754                              [0.027699999999999999, 0.52810000000000001, 0.031399999999999997, 0.46688099999999999, 0.040013100000000003, 0.055779599999999999, 0.71983399999999997, 0.036582299999999998]] 
2755          ri_type = {} 
2756          frq = {} 
2757          ri_data = [] 
2758          ri_data_err = [] 
2759          for i in range(len(ri_data_list)): 
2760              ri_data.append({}) 
2761              ri_data_err.append({}) 
2762   
2763          for i in range(len(ri_ids)): 
2764              ri_type[ri_ids[i]] = ri_type_list[i] 
2765              frq[ri_ids[i]] = frq_list[i] 
2766              for j in range(len(ri_data_list)): 
2767                  if len(ri_data_list[j]): 
2768                      ri_data[j][ri_ids[i]] = ri_data_list[j][i] 
2769                      ri_data_err[j][ri_ids[i]] = ri_data_err_list[j][i] 
2770   
2771          chi2 = [None, None, None, 7.9383923597292441, 10.93852890925343, 3.1931459495488084, None, 8.3598891989018611] 
2772          iter = [None, None, None, 55, 10, 3, None, 3] 
2773          f_count = [None, None, None, 170, 148, 10, None, 10] 
2774          g_count = [None, None, None, 60, 14, 6, None, 6] 
2775          h_count = [None, None, None, 55, 10, 3, None, 3] 
2776   
2777           
2778          r = [None, None, None, 1.0200000000000001e-10, 1.0200000000000001e-10, 1.0200000000000001e-10, None, 1.0200000000000001e-10] 
2779   
2780           
2781          self.assertEqual(cdp.pipe_type, 'mf') 
2782          self.assertEqual(cdp.hybrid_pipes, []) 
2783   
2784           
2785          self.assertEqual(cdp.diff_tensor.type, 'ellipsoid') 
2786          self.assertEqual(cdp.diff_tensor.tm, 1.2526607261882971e-08) 
2787          self.assertEqual(cdp.diff_tensor.Da, 2784606.8835473624) 
2788          self.assertEqual(cdp.diff_tensor.Dr, 0.097243698709517518) 
2789          self.assertEqual(cdp.diff_tensor.alpha, 48.852555276419558 / 360.0 * 2.0 * pi) 
2790          self.assertEqual(cdp.diff_tensor.beta, 9.7876096346750447 / 360.0 * 2.0 * pi) 
2791          self.assertEqual(cdp.diff_tensor.gamma, 42.15815798778408 / 360.0 * 2.0 * pi) 
2792   
2793           
2794          self.assertEqual(cdp.ri_ids, ri_ids) 
2795          for ri_id in ri_ids: 
2796              self.assertEqual(cdp.ri_type[ri_id], ri_type[ri_id]) 
2797              self.assertEqual(cdp.spectrometer_frq[ri_id], frq[ri_id]) 
2798   
2799           
2800          for i in range(len(cdp.mol[0].res)): 
2801               
2802              res = cdp.mol[0].res[i] 
2803              spin = cdp.mol[0].res[i].spin[0] 
2804              h_spin = cdp.mol[0].res[i].spin[1] 
2805   
2806               
2807              print(res) 
2808              print(spin) 
2809   
2810               
2811              self.assertEqual(res.num, num[i]) 
2812              self.assertEqual(res.name, name[i]) 
2813              self.assertEqual(spin.num, None) 
2814              self.assertEqual(spin.name, 'N') 
2815              self.assertEqual(spin.select, select[i]) 
2816              self.assertEqual(spin.fixed, False) 
2817              self.assertEqual(h_spin.num, None) 
2818              self.assertEqual(h_spin.name, 'H') 
2819              self.assertEqual(h_spin.select, False) 
2820   
2821               
2822              self.assertEqual(spin.isotope, '15N') 
2823              self.assertEqual(h_spin.isotope, '1H') 
2824   
2825               
2826              self.assertEqual(spin.model, model[i]) 
2827              self.assertEqual(spin.equation, eqi[i]) 
2828              self.assertEqual(spin.params, params[i]) 
2829              self.assertEqual(spin.s2, s2[i]) 
2830              self.assertEqual(spin.s2f, s2f[i]) 
2831              self.assertEqual(spin.s2s, s2s[i]) 
2832              self.assertEqual(spin.local_tm, None) 
2833              self.assertEqual(spin.te, te[i]) 
2834              self.assertEqual(spin.tf, tf[i]) 
2835              self.assertEqual(spin.ts, ts[i]) 
2836              self.assertEqual(spin.rex, rex[i]) 
2837              self.assertEqual(spin.csa, csa[i]) 
2838   
2839               
2840              self.assertEqual(spin.chi2, chi2[i]) 
2841              self.assertEqual(spin.iter, iter[i]) 
2842              self.assertEqual(spin.f_count, f_count[i]) 
2843              self.assertEqual(spin.g_count, g_count[i]) 
2844              self.assertEqual(spin.h_count, h_count[i]) 
2845              self.assertEqual(spin.warning, None) 
2846   
2847               
2848              if not len(ri_data[i]): 
2849                  self.assertEqual(spin.ri_data, {}) 
2850                  self.assertEqual(spin.ri_data_err, {}) 
2851              else: 
2852                  for ri_id in ri_ids: 
2853                      self.assertEqual(spin.ri_data[ri_id], ri_data[i][ri_id]) 
2854                      self.assertEqual(spin.ri_data_err[ri_id], ri_data_err[i][ri_id]) 
2855   
2856           
2857          for i in range(len(cdp.interatomic)): 
2858              self.assertEqual(cdp.interatomic[i].r, r[i]) 
 2859   
2860   
2873   
2874   
2887   
2888   
2901   
2902   
2904          """Read a 1.3 model-free results file (relax XML version 2) with corrupted floats. 
2905   
2906          The floats are deliberately mangled to test the IEEE-754 reading. 
2907          """ 
2908   
2909           
2910          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'OMP' 
2911   
2912           
2913          self.interpreter.pipe.create('1.3', 'mf') 
2914          self.interpreter.results.read(file='final_results_trunc2_1.3_v2_broken', dir=path) 
2915   
2916           
2917          self.check_read_results_1_3() 
 2918   
2919   
2932   
2933   
2935          """Selecting model m4 with parameters {S2, te, Rex} using model_free.select_model().""" 
2936   
2937           
2938          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'S2_0.970_te_2048_Rex_0.149' 
2939   
2940           
2941          self.interpreter.sequence.read(file='noe.500.out', dir=path, res_num_col=1, res_name_col=2) 
2942   
2943           
2944          self.interpreter.model_free.select_model(model='m4') 
2945   
2946           
2947          self.assertEqual(cdp.mol[0].res[1].spin[0].model, 'm4') 
2948          self.assertEqual(cdp.mol[0].res[1].spin[0].params, ['s2', 'te', 'rex']) 
 2949   
2950   
2952          """Setting the CSA value through the user function value.set().""" 
2953   
2954           
2955          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'S2_0.970_te_2048_Rex_0.149' 
2956   
2957           
2958          self.interpreter.sequence.read(file='noe.500.out', dir=path, res_num_col=1, res_name_col=2) 
2959   
2960           
2961          self.interpreter.value.set(N15_CSA, 'csa') 
2962   
2963           
2964          self.assertEqual(cdp.mol[0].res[1].spin[0].csa, N15_CSA) 
 2965   
2966   
2968          """Test the optimisation of the tm0 model-free parameter grid.""" 
2969   
2970           
2971          cdp._model = 'tm0' 
2972          cdp._value_test = self.value_test 
2973   
2974           
2975          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm0_grid.py') 
 2976   
2977   
2979          """Test the optimisation of the tm1 model-free parameter grid.""" 
2980   
2981           
2982          cdp._model = 'tm1' 
2983          cdp._value_test = self.value_test 
2984   
2985           
2986          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm1_grid.py') 
 2987   
2988   
2990          """Test the optimisation of the tm2 model-free parameter grid.""" 
2991   
2992           
2993          cdp._model = 'tm2' 
2994          cdp._value_test = self.value_test 
2995   
2996           
2997          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm2_grid.py') 
 2998   
2999   
3001          """Test the optimisation of the tm3 model-free parameter grid.""" 
3002   
3003           
3004          cdp._model = 'tm3' 
3005          cdp._value_test = self.value_test 
3006   
3007           
3008          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm3_grid.py') 
 3009   
3010   
3012          """Test the optimisation of the tm4 model-free parameter grid.""" 
3013   
3014           
3015          cdp._model = 'tm4' 
3016          cdp._value_test = self.value_test 
3017   
3018           
3019          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm4_grid.py') 
 3020   
3021   
3023          """Test the optimisation of the tm5 model-free parameter grid.""" 
3024   
3025           
3026          cdp._model = 'tm5' 
3027          cdp._value_test = self.value_test 
3028   
3029           
3030          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm5_grid.py') 
 3031   
3032   
3034          """Test the optimisation of the tm6 model-free parameter grid.""" 
3035   
3036           
3037          cdp._model = 'tm6' 
3038          cdp._value_test = self.value_test 
3039   
3040           
3041          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm6_grid.py') 
 3042   
3043   
3045          """Test the optimisation of the tm7 model-free parameter grid.""" 
3046   
3047           
3048          cdp._model = 'tm7' 
3049          cdp._value_test = self.value_test 
3050   
3051           
3052          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm7_grid.py') 
 3053   
3054   
3056          """Test the optimisation of the tm8 model-free parameter grid.""" 
3057   
3058           
3059          cdp._model = 'tm8' 
3060          cdp._value_test = self.value_test 
3061   
3062           
3063          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm8_grid.py') 
 3064   
3065   
3067          """Test the optimisation of the tm9 model-free parameter grid.""" 
3068   
3069           
3070          cdp._model = 'tm9' 
3071          cdp._value_test = self.value_test 
3072   
3073           
3074          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'opt_tm9_grid.py') 
 3075   
3076   
3078          """Try a component of model-free analysis on Tyler Reddy's peptide data (truncated).""" 
3079   
3080           
3081          self.script_exec(status.install_path + sep+'test_suite'+sep+'system_tests'+sep+'scripts'+sep+'model_free'+sep+'tylers_peptide.py') 
 3082   
3083   
3085          """Writing of model-free results using the user function results.write().""" 
3086   
3087           
3088          path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'model_free'+sep+'OMP' 
3089   
3090           
3091          self.interpreter.results.read(file='final_results_trunc2_1.2', dir=path) 
3092   
3093           
3094          file = DummyFileObject() 
3095   
3096           
3097          self.interpreter.results.write(file=file, dir=path) 
3098   
3099           
3100          test_lines = file.readlines() 
3101          file.close() 
3102   
3103           
3104          if sys.version_info[0] >= 3 and sys.version_info[1] >= 2: 
3105              file = open_read_file(file_name='final_results_trunc2_3.0', dir=path) 
3106   
3107           
3108          elif sys.version_info[0] >= 3 and sys.version_info[1] == 1: 
3109              file = open_read_file(file_name='final_results_trunc2_3.0_oldxml', dir=path) 
3110   
3111           
3112          elif dep_check.xml_type == 'internal' and sys.version_info[0] >= 2 and sys.version_info[1] >= 7 and sys.version_info[2] >= 3: 
3113              file = open_read_file(file_name='final_results_trunc2_3.0', dir=path) 
3114   
3115           
3116          else: 
3117              file = open_read_file(file_name='final_results_trunc2_3.0_oldxml', dir=path) 
3118   
3119           
3120          true_lines = file.readlines() 
3121          file.close() 
3122   
3123           
3124          for i in range(len(test_lines)): 
3125               
3126               
3127              if i == 1 or i == 2: 
3128                  continue 
3129   
3130               
3131              test = test_lines[i] 
3132              true = true_lines[i] 
3133   
3134               
3135              try: 
3136                   
3137                  if search('<value>', test): 
3138                      test = test.lstrip() 
3139                      test = test.replace('<value>', '') 
3140                      test = test.replace('</value>', '') 
3141                  if search('<ieee_754_byte_array>', test): 
3142                      test = test.lstrip() 
3143                      test = test.replace('<ieee_754_byte_array>', '') 
3144                      test = test.replace('</ieee_754_byte_array>', '') 
3145   
3146                  test = eval(test) 
3147              except: 
3148                  pass 
3149   
3150               
3151              try: 
3152                   
3153                  if search('<value>', true): 
3154                      true = true.lstrip() 
3155                      true = true.replace('<value>', '') 
3156                      true = true.replace('</value>', '') 
3157                  if search('<ieee_754_byte_array>', true): 
3158                      true = true.lstrip() 
3159                      true = true.replace('<ieee_754_byte_array>', '') 
3160                      true = true.replace('</ieee_754_byte_array>', '') 
3161   
3162                  true = eval(true) 
3163              except: 
3164                  pass 
3165   
3166               
3167              self.assertEqual(test, true) 
 3168   
3169   
3170 -    def value_test(self, spin, select=True, local_tm=None, s2=None, s2f=None, s2s=None, te=None, tf=None, ts=None, rex=None, chi2=None, iter=None, f_count=None, g_count=None, h_count=None, warning=None): 
 3171          """Test the optimisation values.""" 
3172   
3173           
3174          mesg = self.mesg_opt_debug(spin) 
3175   
3176           
3177          if iter != None and not isinstance(iter, list): 
3178              iter = [iter] 
3179          if f_count != None and not isinstance(f_count, list): 
3180              f_count = [f_count] 
3181          if g_count != None and not isinstance(g_count, list): 
3182              g_count = [g_count] 
3183          if h_count != None and not isinstance(h_count, list): 
3184              h_count = [h_count] 
3185   
3186           
3187           
3188   
3189           
3190          self.assertEqual(spin.select, select, msg=mesg) 
3191   
3192           
3193          if local_tm != None: 
3194              self.assertAlmostEqual(spin.local_tm / 1e-9, local_tm, msg=mesg) 
3195          else: 
3196              self.assertEqual(spin.local_tm, None, msg=mesg) 
3197   
3198           
3199          if s2 != None: 
3200              self.assertAlmostEqual(spin.s2, s2, msg=mesg) 
3201          else: 
3202              self.assertEqual(spin.s2, None, msg=mesg) 
3203   
3204           
3205          if s2f != None: 
3206              self.assertAlmostEqual(spin.s2f, s2f, 5, msg=mesg) 
3207          else: 
3208              self.assertEqual(spin.s2f, None, msg=mesg) 
3209   
3210           
3211          if s2s != None: 
3212              self.assertAlmostEqual(spin.s2s, s2s, 5, msg=mesg) 
3213          else: 
3214              self.assertEqual(spin.s2s, None, msg=mesg) 
3215   
3216           
3217          if isinstance(te, float): 
3218              self.assertAlmostEqual(spin.te / 1e-12, te, 5, msg=mesg) 
3219          elif te == None: 
3220              self.assertEqual(spin.te, None, msg=mesg) 
3221   
3222           
3223          if isinstance(tf, float): 
3224              self.assertAlmostEqual(spin.tf / 1e-12, tf, 4, msg=mesg) 
3225          elif tf == None: 
3226              self.assertEqual(spin.tf, None, msg=mesg) 
3227   
3228           
3229          if isinstance(ts, float): 
3230              self.assertAlmostEqual(spin.ts / 1e-12, ts, 4, msg=mesg) 
3231          elif ts == None: 
3232              self.assertEqual(spin.ts, None, msg=mesg) 
3233   
3234           
3235          if isinstance(rex, float): 
3236              self.assertAlmostEqual(spin.rex * (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2, rex * (2.0 * pi * cdp.spectrometer_frq[cdp.ri_ids[0]])**2, msg=mesg) 
3237          elif rex == None: 
3238              self.assertEqual(spin.rex, None, msg=mesg) 
3239   
3240           
3241          if chi2 != None: 
3242              self.assertAlmostEqual(spin.chi2, chi2, msg=mesg) 
3243          if iter != None: 
3244              self.assert_(spin.iter in iter, msg=mesg) 
3245          if f_count != None: 
3246              self.assert_(spin.f_count in f_count, msg=mesg) 
3247          if g_count != None: 
3248              self.assert_(spin.g_count in g_count, msg=mesg) 
3249          if h_count != None: 
3250              self.assert_(spin.h_count in h_count, msg=mesg) 
3251          if warning != None: 
3252              self.assertEqual(spin.warning, warning, msg=mesg) 
  3253