mailr21122 - /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 October 15, 2013 - 18:29:
Author: bugman
Date: Tue Oct 15 18:29:50 2013
New Revision: 21122

URL: http://svn.gna.org/viewcvs/relax?rev=21122&view=rev
Log:
Created the Relax_disp.test_sprangers_data_to_mq_cr72 system test.

This was copied from the Relax_disp.test_sprangers_data_to_mq_ns_cpmg_2site 
system test and the
model changed to 'MQ CR72'.

This follows the tutorial for adding relaxation dispersion models at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax#The_test_suite


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=21122&r1=21121&r2=21122&view=diff
==============================================================================
--- branches/relax_disp/test_suite/system_tests/relax_disp.py (original)
+++ branches/relax_disp/test_suite/system_tests/relax_disp.py Tue Oct 15 
18:29:50 2013
@@ -1491,6 +1491,111 @@
         self.assertEqual(cdp.mol[0].res[2].spin[0].ri_data['R2eff.600'], 
7.2385)
 
 
+    def test_sprangers_data_to_mq_cr72(self, model=None):
+        """Test the 'MQ CR72' model fitting against Remco Sprangers' ClpP 
data.
+
+        This uses the data from Remco Sprangers' paper at 
http://dx.doi.org/10.1073/pnas.0507370102.  This is MQ CPMG data with a fixed 
relaxation time period.
+        """
+
+        # Reset.
+        self.interpreter.reset()
+
+        # Create the data pipe and load the base data.
+        data_path = status.install_path + 
sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'Sprangers_ClpP'
+        self.interpreter.state.load(data_path+sep+'r2eff_values')
+
+        # The model data pipe.
+        model = 'MQ CR72'
+        self.interpreter.pipe.copy(pipe_from='base pipe', pipe_to=model, 
bundle_to='relax_disp')
+        self.interpreter.pipe.switch(pipe_name=model)
+
+        # Set the model.
+        self.interpreter.relax_disp.select_model(model=model)
+
+        # Cluster everything.
+        self.interpreter.relax_disp.cluster(cluster_id='all', 
spin_id=":135-137")
+
+        # Copy the data.
+        self.interpreter.value.copy(pipe_from='R2eff', pipe_to=model, 
param='r2eff')
+
+        # Alias the spins.
+        spin135S = cdp.mol[0].res[0].spin[0]
+        spin135F = cdp.mol[0].res[0].spin[1]
+        spin137S = cdp.mol[0].res[1].spin[0]
+        spin137F = cdp.mol[0].res[1].spin[1]
+
+        # Set the cluster specific parameters (only for the first spin).
+        spin135S.pA = 0.500311298403094
+        spin135S.kex = 59.5551680542025
+
+        # Set the initial parameter values.
+        spin135S.r2 = [ 2.89494989792968, 12.6694205621436]
+        spin135S.dw = 1.47777783753308
+        spin135S.dwH = 1.0880818550171
+
+        spin135F.r2 = [ 41.907752972063, 58.1518607839796]
+        spin135F.dw = 0.419799242782033
+        spin135F.dwH = 1.27742823131436
+
+        spin137S.r2 = [ 0.0736711146623223, 13.8168225329927]
+        spin137S.dw = 2.4030348485243
+        spin137S.dwH = 0.00271978588774347
+
+        spin137F.r2 = [ 45.2885284912096, 57.8347181561312]
+        spin137F.dw = 1.5929498838754
+        spin137F.dwH = 0.00605967407110987
+
+        # Low precision optimisation.
+        self.interpreter.minimise(min_algor='simplex', line_search=None, 
hessian_mod=None, hessian_type=None, func_tol=1e-05, grad_tol=None, 
max_iter=100, constraints=True, scaling=True, verbosity=1)
+
+        # Printout.
+        print("\n\nOptimised parameters:\n")
+        print("%-20s %-20s %-20s %-20s %-20s" % ("Parameter", "Value 
(:135@S)", "Value (:135@F)", "Value (:137@S)", "Value (:137@F)"))
+        print("%-20s %20.15g %20.15g %20.15g %20.15g" % ("R2 (500 MHz)", 
spin135S.r2[0], spin135F.r2[0], spin137S.r2[0], spin137F.r2[0]))
+        print("%-20s %20.15g %20.15g %20.15g %20.15g" % ("R2 (800 MHz)", 
spin135S.r2[1], spin135F.r2[1], spin137S.r2[1], spin137F.r2[1]))
+        print("%-20s %20.15g %20.15g %20.15g %20.15g" % ("pA", spin135S.pA, 
spin135F.pA, spin137S.pA, spin137F.pA))
+        print("%-20s %20.15g %20.15g %20.15g %20.15g" % ("dw", spin135S.dw, 
spin135F.dw, spin137S.dw, spin137F.dw))
+        print("%-20s %20.15g %20.15g %20.15g %20.15g" % ("dwH", 
spin135S.dwH, spin135F.dwH, spin137S.dwH, spin137F.dwH))
+        print("%-20s %20.15g %20.15g %20.15g %20.15g" % ("kex", 
spin135S.kex, spin135F.kex, spin137S.kex, spin137F.kex))
+        print("%-20s %20.15g %20.15g %20.15g %20.15g\n" % ("chi2", 
spin135S.chi2, spin135F.chi2, spin137S.chi2, spin137F.chi2))
+
+        # Checks for residue :135S.
+        self.assertAlmostEqual(spin135S.r2[0], 2.89494989792968, 4)
+        self.assertAlmostEqual(spin135S.r2[1], 12.6694205621436, 4)
+        self.assertAlmostEqual(spin135S.pA, 0.500311298403094, 4)
+        self.assertAlmostEqual(spin135S.dw, 1.47777783753308, 4)
+        self.assertAlmostEqual(spin135S.dwH, 1.0880818550171, 4)
+        self.assertAlmostEqual(spin135S.kex, 59.5551680542025, 4)
+        self.assertAlmostEqual(spin135S.chi2, 347.259150126813, 4)
+
+        # Checks for residue :135F.
+        self.assertAlmostEqual(spin135F.r2[0], 41.907752972063, 4)
+        self.assertAlmostEqual(spin135F.r2[1], 58.1518607839796, 4)
+        self.assertAlmostEqual(spin135F.pA, 0.500311298403094, 4)
+        self.assertAlmostEqual(spin135F.dw, 0.419799242782033, 4)
+        self.assertAlmostEqual(spin135F.dwH, 1.27742823131436, 4)
+        self.assertAlmostEqual(spin135F.kex, 59.5551680542025, 4)
+        self.assertAlmostEqual(spin135F.chi2, 347.259150126813, 4)
+
+        # Checks for residue :137S.
+        self.assertAlmostEqual(spin137S.r2[0], 0.0736711146623223, 4)
+        self.assertAlmostEqual(spin137S.r2[1], 13.8168225329927, 4)
+        self.assertAlmostEqual(spin137S.pA, 0.500311298403094, 4)
+        self.assertAlmostEqual(spin137S.dw, 2.4030348485243, 4)
+        self.assertAlmostEqual(spin137S.dwH, 0.00285577518213064, 4)
+        self.assertAlmostEqual(spin137S.kex, 59.5551680542025, 4)
+        self.assertAlmostEqual(spin137S.chi2, 347.259150126813, 4)
+
+        # Checks for residue :137F.
+        self.assertAlmostEqual(spin137F.r2[0], 45.2885284912096, 4)
+        self.assertAlmostEqual(spin137F.r2[1], 57.8347181561312, 4)
+        self.assertAlmostEqual(spin137F.pA, 0.500311298403094, 4)
+        self.assertAlmostEqual(spin137F.dw, 1.5929498838754, 4)
+        self.assertAlmostEqual(spin137F.dwH, 0.00605967407110987, 4)
+        self.assertAlmostEqual(spin137F.kex, 59.5551680542025, 4)
+        self.assertAlmostEqual(spin137F.chi2, 347.259150126813, 4)
+
+
     def test_sprangers_data_to_mq_ns_cpmg_2site(self, model=None):
         """Test the 'MQ NS CPMG 2-site' model fitting against Remco 
Sprangers' ClpP data.
 




Related Messages


Powered by MHonArc, Updated Tue Oct 15 18:40:01 2013