Author: tlinnet Date: Wed May 21 20:36:39 2014 New Revision: 23318 URL: http://svn.gna.org/viewcvs/relax?rev=23318&view=rev Log: Code cleanup in systemtest Relax_disp.test_baldwin_synthetic_full.
bug #22021: (https://gna.org/bugs/?22021) Model B14 shows bad fitting to data. The precision could also be increased with 1 digit. Modified: trunk/test_suite/system_tests/relax_disp.py Modified: trunk/test_suite/system_tests/relax_disp.py URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/system_tests/relax_disp.py?rev=23318&r1=23317&r2=23318&view=diff ============================================================================== --- trunk/test_suite/system_tests/relax_disp.py (original) +++ trunk/test_suite/system_tests/relax_disp.py Wed May 21 20:36:39 2014 @@ -593,11 +593,9 @@ # Generate the sequence. # Generate both a 1H spin, and 15N spin. self.interpreter.spin.create(res_name='Ala', res_num=1, spin_name='H') - self.interpreter.spin.create(res_name='Ala', res_num=2, spin_name='N') # Define the isotope. self.interpreter.spin.isotope('1H', spin_id='@H') - self.interpreter.spin.isotope('15N', spin_id='@N') # Build the experiment IDs. # Number of cpmg cycles (1 cycle = delay/180/delay/delay/180/delay) @@ -638,7 +636,6 @@ # Try reading the R2eff file. self.interpreter.relax_disp.r2eff_read_spin(id="CPMG", file="test_w_error.out", dir=data_path, spin_id=':1@H', disp_point_col=1, data_col=2, error_col=3) - self.interpreter.relax_disp.r2eff_read_spin(id="CPMG", file="test_15N_w_error.out", dir=data_path, spin_id=':2@N', disp_point_col=1, data_col=2, error_col=3) # Check the global data. data = [ @@ -686,10 +683,6 @@ ## Now prepare for MODEL calculation. MODEL = "B14 full" - #MODEL = "CR72 full" - #MODEL = "NS CPMG 2-site star full" - #MODEL = "NS CPMG 2-site 3D full" - #MODEL = "NS CPMG 2-site expanded" # Change pipe. pipe_name_MODEL = "%s_%s"%(pipe_name, MODEL) @@ -726,26 +719,26 @@ # Store result. for spin, mol_name, resi, resn, spin_id in spin_loop(full_info=True, return_id=True, skip_desel=True): - # Store grid results. - if "r2a" in MODEL_PARAMS[MODEL]: - grid_results.append([spin.r2a[r20_key], spin.r2b[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) - else: - grid_results.append([spin.r2[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) - + grid_results.append([spin.r2a[r20_key], spin.r2b[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) ## Now do minimisation. # Standard parameters are: func_tol=1e-25, grad_tol=None, max_iter=10000000, - set_func_tol = 1e-12 + set_func_tol = 1e-11 set_max_iter = 10000 self.interpreter.minimise(min_algor='simplex', func_tol=set_func_tol, max_iter=set_max_iter, constraints=True, scaling=True, verbosity=1) # Store result. for spin, mol_name, resi, resn, spin_id in spin_loop(full_info=True, return_id=True, skip_desel=True): - # Store minimisation results. - if "r2a" in MODEL_PARAMS[MODEL]: - mini_results.append([spin.r2a[r20_key], spin.r2b[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) - else: - mini_results.append([spin.r2[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) + mini_results.append([spin.r2a[r20_key], spin.r2b[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) + + print("\n# Now print before and after minimisation-\n") + + # Print results. + for i in range(len(grid_results)): + g_r2a, g_r2b, g_dw, g_pA, g_kex, g_chi2, g_spin_id, g_resi, g_resn = grid_results[i] + m_r2a, m_r2b, m_dw, m_pA, m_kex, m_chi2, m_spin_id, m_resi, m_resn = mini_results[i] + print("GRID %s r2a=%2.4f r2b=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s"%(g_spin_id, g_r2a, g_r2b, g_dw, g_pA, g_kex, g_chi2, g_spin_id, g_resi, g_resn)) + print("MIN %s r2b=%2.4f r2b=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s"%(m_spin_id, m_r2a, m_r2b, m_dw, m_pA, m_kex, m_chi2, m_spin_id, m_resi, m_resn)) # Reference values from Baldwin.py. # Exchange rate = k+ + k- (s-1) @@ -761,89 +754,12 @@ # Test the parameters which created the data. # This is for the 1H spin. - if "r2a" in MODEL_PARAMS[MODEL]: - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2a[r20_key], R2g, 3) - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2b[r20_key], R2e, 1) - else: - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2[r20_key], R2g, 4) + self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2a[r20_key], R2g, 4) + self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2b[r20_key], R2e, 2) self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].dw, dw_ppm, 6) self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].pA, 1-pb, 6) - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].kex, kex, 1) - - ## Since the Rex is 5 times as small for N15, it have hard times finding the values. - ## So we can try to cluster. But it won't work. - - # Change pipe. - pipe_name_MODEL_CLUSTER = "%s_%s_CLUSTER"%(pipe_name, MODEL) - self.interpreter.pipe.copy(pipe_from=pipe_name_r2eff, pipe_to=pipe_name_MODEL_CLUSTER) - self.interpreter.pipe.switch(pipe_name=pipe_name_MODEL_CLUSTER) - - # Then select model. - self.interpreter.relax_disp.select_model(model=MODEL) - - # Skip the clustering analysis, since it won't work. !!! - #self.interpreter.relax_disp.cluster('model_cluster', ":1-2") - - # Copy the parameters from before. - self.interpreter.relax_disp.parameter_copy(pipe_from=pipe_name_MODEL, pipe_to=pipe_name_MODEL_CLUSTER) - - # Skip the clustering analysis, since it won't work. !!! - self.interpreter.minimise(min_algor='simplex', func_tol=set_func_tol, max_iter=set_max_iter, constraints=True, scaling=True, verbosity=1) - - # Store result. - for spin, mol_name, resi, resn, spin_id in spin_loop(full_info=True, return_id=True, skip_desel=True): - # Store minimisation results. - if "r2a" in MODEL_PARAMS[MODEL]: - clust_results.append([spin.r2a[r20_key], spin.r2b[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) - else: - clust_results.append([spin.r2[r20_key], spin.dw, spin.pA, spin.kex, spin.chi2, spin_id, resi, resn]) - - print("\n# Now print before and after minimisation-\n") - - # Print results. - for i in range(len(grid_results)): - # Get values. - if "r2a" in MODEL_PARAMS[MODEL]: - g_r2a, g_r2b, g_dw, g_pA, g_kex, g_chi2, g_spin_id, g_resi, g_resn = grid_results[i] - m_r2a, m_r2b, m_dw, m_pA, m_kex, m_chi2, m_spin_id, m_resi, m_resn = mini_results[i] - c_r2a, c_r2b, c_dw, c_pA, c_kex, c_chi2, c_spin_id, c_resi, c_resn = clust_results[i] - print("GRID %s r2a=%2.4f r2b=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s"%(g_spin_id, g_r2a, g_r2b, g_dw, g_pA, g_kex, g_chi2, g_spin_id, g_resi, g_resn)) - print("MIN %s r2b=%2.4f r2b=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s"%(m_spin_id, m_r2a, m_r2b, m_dw, m_pA, m_kex, m_chi2, m_spin_id, m_resi, m_resn)) - print("CLUS %s r2a=%2.4f r2b=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s\n"%(c_spin_id, c_r2a, c_r2b, c_dw, c_pA, c_kex, c_chi2, c_spin_id, c_resi, c_resn)) - else: - g_r2, g_dw, g_pA, g_kex, g_chi2, g_spin_id, g_resi, g_resn = grid_results[i] - m_r2, m_dw, m_pA, m_kex, m_chi2, m_spin_id, m_resi, m_resn = mini_results[i] - c_r2, c_dw, c_pA, c_kex, c_chi2, c_spin_id, c_resi, c_resn = clust_results[i] - print("GRID %s r2=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s"%(g_spin_id, g_r2, g_dw, g_pA, g_kex, g_chi2, g_spin_id, g_resi, g_resn)) - print("MIN %s r2=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s"%(m_spin_id, m_r2, m_dw, m_pA, m_kex, m_chi2, m_spin_id, m_resi, m_resn)) - print("CLUS %s r2=%2.4f dw=%1.4f pA=%1.4f kex=%3.4f chi2=%3.4f spin_id=%s resi=%i resn=%s\n"%(c_spin_id, c_r2, c_dw, c_pA, c_kex, c_chi2, c_spin_id, c_resi, c_resn)) - - # Test the parameters which created the data. - # This is for the 1H spin. - if "r2a" in MODEL_PARAMS[MODEL]: - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2a[r20_key], R2g, 3) - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2b[r20_key], R2e, 1) - else: - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].r2[r20_key], R2g, 4) - - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].dw, dw_ppm, 6) - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].pA, 1-pb, 6) - self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].kex, kex, 1) - - # This is for the 15N spin. The data won't fit, since r2b is making trouble. - #if "r2a" in MODEL_PARAMS[MODEL]: - # self.assertAlmostEqual(cdp.mol[0].res[1].spin[0].r2a[r20_key], R2g, 4) - # self.assertAlmostEqual(cdp.mol[0].res[1].spin[0].r2b[r20_key], R2e, 2) - #else: - # self.assertAlmostEqual(cdp.mol[0].res[1].spin[0].r2[r20_key], R2g, 4) - - #self.assertAlmostEqual(cdp.mol[0].res[1].spin[0].dw, dw_ppm, 6) - #self.assertAlmostEqual(cdp.mol[0].res[1].spin[0].pA, 1-pb, 6) - #self.assertAlmostEqual(cdp.mol[0].res[1].spin[0].kex, kex, 2) - - # Save graphs - #self.interpreter.relax_disp.plot_disp_curves(dir=path.join(getcwd()), num_points=100, extend=0.0, force=True) + self.assertAlmostEqual(cdp.mol[0].res[0].spin[0].kex, kex, 2) def test_bug_21081_disp_cluster_fail(self): _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-commits mailing list relax-commits@gna.org To unsubscribe from this list, get a password reminder, or change your subscription options, visit the list information page at https://mail.gna.org/listinfo/relax-commits