mailr21570 - /branches/relax_disp/test_suite/system_tests/relax_disp.py


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

Header


Content

Posted by edward on November 21, 2013 - 10:34:
Author: bugman
Date: Thu Nov 21 10:34:26 2013
New Revision: 21570

URL: http://svn.gna.org/viewcvs/relax?rev=21570&view=rev
Log:
Created the Relax_disp.test_korzhnev_2005_all_data system test for checking 
the 'MMQ 2-site' model.

This checks against all six data types, 1H SQ, 15N SQ, DQ, ZQ, 1H MQ, and 15N 
MQ.  This is currently
set to the values found by cpmg_fit.  As this is the true solution, relax 
should find similar
parameter values.


Modified:
    branches/relax_disp/test_suite/system_tests/relax_disp.py

Modified: branches/relax_disp/test_suite/system_tests/relax_disp.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/test_suite/system_tests/relax_disp.py?rev=21570&r1=21569&r2=21570&view=diff
==============================================================================
--- branches/relax_disp/test_suite/system_tests/relax_disp.py (original)
+++ branches/relax_disp/test_suite/system_tests/relax_disp.py Thu Nov 21 
10:34:26 2013
@@ -1856,6 +1856,135 @@
         self.assertAlmostEqual(spin.chi2, 50.32297, 4)
 
 
+    def test_korzhnev_2005_all_data(self):
+        """Optimisation of all the Korzhnev et al., 2005 CPMG data using the 
'MMQ 2-site' model.
+
+        This uses the data from Dmitry Korzhnev's paper at U{DOI: 
10.1021/ja054550e<http://dx.doi.org/10.1021/ja054550e>}.  This is the 1H SQ, 
15N SQ, ZQ, DQ, 1H MQ and 15N MQ data for residue Asp 9 of the Fyn SH3 domain 
mutant.
+
+        Here all data will be optimised.  The values found by cpmg_fit using 
just this data are:
+
+            - r2 = {'H-S 500': 6.778902, 'H-S 600':  7.097458, 'H-S 800':  
5.635893,
+                    'N-S 500': 8.481132, 'N-S 600':  8.977845, 'N-S 800': 
10.490257,
+                    'NHD 500': 8.693570, 'NHD 600': 10.744672, 'NHD 800': 
12.647869,
+                    'NHZ 500': 6.043942, 'NHZ 600':  6.827802, 'NHZ 800':  
6.946693,
+                    'NHM 500': 9.245925, 'NHM 600':  9.949255, 'NHM 800': 
12.053031,
+                    'HNM 500': 7.887264, 'HNM 600':  8.506481, 'HNM 800': 
11.276893},
+            - pA = 0.944322,
+            - kex = 368.075,
+            - dw = 4.413451,
+            - dwH = -0.271799,
+            - chi2 = 162.37981.
+        """
+
+        # Base data setup.
+        self.setup_korzhnev_2005_data(data_list=['SQ', '1H SQ', 'DQ', 'ZQ', 
'MQ', '1H MQ'])
+
+        # Alias the spin.
+        spin = return_spin(":9@N")
+
+        # The R20 keys.
+        r20_key1 = generate_r20_key(exp_type=EXP_TYPE_CPMG_PROTON_SQ, 
frq=500e6)
+        r20_key2 = generate_r20_key(exp_type=EXP_TYPE_CPMG_PROTON_SQ, 
frq=600e6)
+        r20_key3 = generate_r20_key(exp_type=EXP_TYPE_CPMG_PROTON_SQ, 
frq=800e6)
+        r20_key4 = generate_r20_key(exp_type=EXP_TYPE_CPMG_SQ, frq=500e6)
+        r20_key5 = generate_r20_key(exp_type=EXP_TYPE_CPMG_SQ, frq=600e6)
+        r20_key6 = generate_r20_key(exp_type=EXP_TYPE_CPMG_SQ, frq=800e6)
+        r20_key7 = generate_r20_key(exp_type=EXP_TYPE_CPMG_DQ, frq=500e6)
+        r20_key8 = generate_r20_key(exp_type=EXP_TYPE_CPMG_DQ, frq=600e6)
+        r20_key9 = generate_r20_key(exp_type=EXP_TYPE_CPMG_DQ, frq=800e6)
+        r20_key10 = generate_r20_key(exp_type=EXP_TYPE_CPMG_ZQ, frq=500e6)
+        r20_key11 = generate_r20_key(exp_type=EXP_TYPE_CPMG_ZQ, frq=600e6)
+        r20_key12 = generate_r20_key(exp_type=EXP_TYPE_CPMG_ZQ, frq=800e6)
+        r20_key13 = generate_r20_key(exp_type=EXP_TYPE_CPMG_PROTON_MQ, 
frq=500e6)
+        r20_key14 = generate_r20_key(exp_type=EXP_TYPE_CPMG_PROTON_MQ, 
frq=600e6)
+        r20_key15 = generate_r20_key(exp_type=EXP_TYPE_CPMG_PROTON_MQ, 
frq=800e6)
+        r20_key16 = generate_r20_key(exp_type=EXP_TYPE_CPMG_MQ, frq=500e6)
+        r20_key17 = generate_r20_key(exp_type=EXP_TYPE_CPMG_MQ, frq=600e6)
+        r20_key18 = generate_r20_key(exp_type=EXP_TYPE_CPMG_MQ, frq=800e6)
+
+        # Set the initial parameter values.
+        spin.r2 = {
+            r20_key1:  6.778902, r20_key2:   7.097458, r20_key3:   5.635893,
+            r20_key4:  8.481132, r20_key5:   8.977845, r20_key6:  10.490257,
+            r20_key7:  8.693570, r20_key8:  10.744672, r20_key9:  12.647869,
+            r20_key10: 6.043942, r20_key11:  6.827802, r20_key12:  6.946693,
+            r20_key13: 9.245925, r20_key14:  9.949255, r20_key15: 12.053031,
+            r20_key16: 7.887264, r20_key17:  8.506481, r20_key18: 11.276893
+        }
+        spin.pA = 0.944322
+        spin.kex = 368.075
+        spin.dw = 4.413451
+        spin.dwH = -0.271799
+
+        # Low precision optimisation.
+        self.interpreter.minimise(min_algor='simplex', func_tol=1e-05, 
max_iter=1000)
+
+        # Monte Carlo simulations.
+        self.interpreter.monte_carlo.setup(number=2)
+        self.interpreter.monte_carlo.create_data(method='back_calc')
+        self.interpreter.monte_carlo.initial_values()
+        self.interpreter.minimise(min_algor='simplex', max_iter=10)
+        self.interpreter.monte_carlo.error_analysis()
+
+        # Plot the dispersion curves.
+        self.interpreter.relax_disp.plot_disp_curves(dir='.', force=True)
+
+        # Save the results.
+        self.interpreter.state.save('state', dir='.', compress_type=1, 
force=True)
+
+        # Printout.
+        print("\n\nOptimised parameters:\n")
+        print("%-20s %-20s" % ("Parameter", "Value (:9)"))
+        print("%-20s %20.15g" % ("R2 (SQ - 500 MHz)", spin.r2[r20_key1]))
+        print("%-20s %20.15g" % ("R2 (SQ - 600 MHz)", spin.r2[r20_key2]))
+        print("%-20s %20.15g" % ("R2 (SQ - 800 MHz)", spin.r2[r20_key3]))
+        print("%-20s %20.15g" % ("R2 (1H SQ - 500 MHz)", spin.r2[r20_key4]))
+        print("%-20s %20.15g" % ("R2 (1H SQ - 600 MHz)", spin.r2[r20_key5]))
+        print("%-20s %20.15g" % ("R2 (1H SQ - 800 MHz)", spin.r2[r20_key6]))
+        print("%-20s %20.15g" % ("R2 (DQ - 500 MHz)", spin.r2[r20_key7]))
+        print("%-20s %20.15g" % ("R2 (DQ - 600 MHz)", spin.r2[r20_key8]))
+        print("%-20s %20.15g" % ("R2 (DQ - 800 MHz)", spin.r2[r20_key9]))
+        print("%-20s %20.15g" % ("R2 (ZQ - 500 MHz)", spin.r2[r20_key10]))
+        print("%-20s %20.15g" % ("R2 (ZQ - 600 MHz)", spin.r2[r20_key11]))
+        print("%-20s %20.15g" % ("R2 (ZQ - 800 MHz)", spin.r2[r20_key12]))
+        print("%-20s %20.15g" % ("R2 (MQ - 500 MHz)", spin.r2[r20_key13]))
+        print("%-20s %20.15g" % ("R2 (MQ - 600 MHz)", spin.r2[r20_key14]))
+        print("%-20s %20.15g" % ("R2 (MQ - 800 MHz)", spin.r2[r20_key15]))
+        print("%-20s %20.15g" % ("R2 (1H MQ - 500 MHz)", spin.r2[r20_key16]))
+        print("%-20s %20.15g" % ("R2 (1H MQ - 600 MHz)", spin.r2[r20_key17]))
+        print("%-20s %20.15g" % ("R2 (1H MQ - 800 MHz)", spin.r2[r20_key18]))
+        print("%-20s %20.15g" % ("pA", spin.pA))
+        print("%-20s %20.15g" % ("dw", spin.dw))
+        print("%-20s %20.15g" % ("dwH", spin.dwH))
+        print("%-20s %20.15g" % ("kex", spin.kex))
+        print("%-20s %20.15g\n" % ("chi2", spin.chi2))
+
+        # Checks for residue :9.
+        self.assertAlmostEqual(spin.r2[r20_key1], 8.481132, 4)
+        self.assertAlmostEqual(spin.r2[r20_key2], 8.977845, 4)
+        self.assertAlmostEqual(spin.r2[r20_key3], 10.490257, 4)
+        self.assertAlmostEqual(spin.r2[r20_key4], 6.778902, 4)
+        self.assertAlmostEqual(spin.r2[r20_key5], 7.097458, 4)
+        self.assertAlmostEqual(spin.r2[r20_key6], 5.635893, 4)
+        self.assertAlmostEqual(spin.r2[r20_key7], 8.693570, 4)
+        self.assertAlmostEqual(spin.r2[r20_key8], 10.744672, 4)
+        self.assertAlmostEqual(spin.r2[r20_key9], 12.647869, 4)
+        self.assertAlmostEqual(spin.r2[r20_key10], 6.043942, 4)
+        self.assertAlmostEqual(spin.r2[r20_key11], 6.827802, 4)
+        self.assertAlmostEqual(spin.r2[r20_key12], 6.946693, 4)
+        self.assertAlmostEqual(spin.r2[r20_key13], 9.245925, 4)
+        self.assertAlmostEqual(spin.r2[r20_key14], 9.949255, 4)
+        self.assertAlmostEqual(spin.r2[r20_key15], 12.053031, 4)
+        self.assertAlmostEqual(spin.r2[r20_key16], 7.887264, 4)
+        self.assertAlmostEqual(spin.r2[r20_key17], 8.506481, 4)
+        self.assertAlmostEqual(spin.r2[r20_key18], 11.276893, 4)
+        self.assertAlmostEqual(spin.pA, 0.944322, 4)
+        self.assertAlmostEqual(spin.dw, 4.413451, 4)
+        self.assertAlmostEqual(spin.dwH, -0.271799, 4)
+        self.assertAlmostEqual(spin.kex/1000, 368.075/1000, 4)
+        self.assertAlmostEqual(spin.chi2, 162.37981, 4)
+
+
     def test_kteilum_fmpoulsen_makke_cpmg_data_048m_guhcl_to_cr72(self):
         """Optimisation of Kaare Teilum, Flemming M Poulsen, Mikael Akke 
2006 "acyl-CoA binding protein" CPMG data to the CR72 dispersion model.
 




Related Messages


Powered by MHonArc, Updated Thu Nov 21 11:20:02 2013