mailFatal bug introduced for the conversion of kex to k_AB, using population pA.


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

Header


Content

Posted by Troels Emtekær Linnet on September 11, 2013 - 09:48:
Dear Edward.

This commit introduced a fatal bug, making the whole systemtest fail.

--------
        # The kex to k_AB conversion.
        if param_name == 'kex':
            # Get pA value.
            pA = get_value(key=key, spins=spins, sim_index=sim_index,
param_name='pA', spin_index=spin_index, frq_index=frq_index)
            k_AB = value * (1.0 - pA)
            set_value(value=k_AB, key=key, spins=spins,
sim_index=sim_index, param_name='k_AB', spin_index=spin_index,
frq_index=frq_index)
-----

For example does the LM63 not contain the pA value.
And so it will fail with an AttributeError.

A not very elegant solution is:
------------
        # The kex to k_AB conversion.
        if param_name == 'kex':
            # Try tp get the pA value and set it.
            try:
                pA = get_value(key=key, spins=spins,
sim_index=sim_index, param_name='pA', spin_index=spin_index,
frq_index=frq_index)
                k_AB = value * (1.0 - pA)
                set_value(value=k_AB, key=key, spins=spins,
sim_index=sim_index, param_name='k_AB', spin_index=spin_index,
frq_index=frq_index)
            except AttributeError:
                pass
------------
But "try" statements should always be avoided.

Another possibility is to do a run through the generator: loop_parameters.
First add the available parameters to a list, and then loop over the 
generator.

Then do a check if 'pA' is in the parameter list.

What do you think?

Best
Troels Emtekær Linnet



---------- Forwarded message ----------
From:  <edward@xxxxxxxxxxxxx>
Date: 2013/9/10
Subject: r20966 - in /branches/relax_disp: auto_analyses/
specific_analyses/relax_disp/ test_suite/system_tests/
To: relax-commits@xxxxxxx


Author: bugman
Date: Tue Sep 10 14:39:51 2013
New Revision: 20966

URL: http://svn.gna.org/viewcvs/relax?rev=20966&view=rev
Log:
Added the conversion to k_AB from kex and pA. k_AB = kex * (1.0 - pA).

Progress sr #3071: https://gna.org/support/index.php?3071 -
Implementation of Tollinger/Kay dispersion model (2001)
Following the guide at:
http://wiki.nmr-relax.com/Tutorial_for_adding_relaxation_dispersion_models_to_relax

Troels E. Linnet provided this patch. Commit by: tlinnet _aaattt_ 
gmail_dot_com

Signed-off-by: Edward d'Auvergne <edward@xxxxxxxxxxxxx>

Modified:
    branches/relax_disp/auto_analyses/relax_disp.py
    branches/relax_disp/specific_analyses/relax_disp/api.py
    branches/relax_disp/specific_analyses/relax_disp/parameters.py
    branches/relax_disp/test_suite/system_tests/relax_disp.py

Modified: branches/relax_disp/auto_analyses/relax_disp.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/auto_analyses/relax_disp.py?rev=20966&r1=20965&r2=20966&view=diff
==============================================================================
--- branches/relax_disp/auto_analyses/relax_disp.py (original)
+++ branches/relax_disp/auto_analyses/relax_disp.py Tue Sep 10 14:39:51 2013
@@ -417,10 +417,12 @@
             self.interpreter.value.write(param='dw', file='dw.out',
dir=path, force=True)
             self.interpreter.grace.write(x_data_type='res_num',
y_data_type='dw', file='dw.agr', dir=path, force=True)

-        # The kex and tex parameters.
+        # The k_AB, kex and tex parameters.
         if model in [None, MODEL_LM63, MODEL_CR72, MODEL_CR72_FULL,
MODEL_IT99, MODEL_M61, MODEL_DPL94, MODEL_M61B,
MODEL_NS_CPMG_2SITE_3D, MODEL_NS_CPMG_2SITE_3D_FULL,
MODEL_NS_CPMG_2SITE_STAR, MODEL_NS_CPMG_2SITE_STAR_FULL,
MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_NS_R1RHO_2SITE, MODEL_TP02]:
+            self.interpreter.value.write(param='k_AB',
file='k_AB.out', dir=path, force=True)
             self.interpreter.value.write(param='kex', file='kex.out',
dir=path, force=True)
             self.interpreter.value.write(param='tex', file='tex.out',
dir=path, force=True)
+            self.interpreter.grace.write(x_data_type='res_num',
y_data_type='k_AB', file='k_AB.agr', dir=path, force=True)
             self.interpreter.grace.write(x_data_type='res_num',
y_data_type='kex', file='kex.agr', dir=path, force=True)
             self.interpreter.grace.write(x_data_type='res_num',
y_data_type='tex', file='tex.agr', dir=path, force=True)


Modified: branches/relax_disp/specific_analyses/relax_disp/api.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/api.py?rev=20966&r1=20965&r2=20966&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/api.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/api.py Tue Sep 10
14:39:51 2013
@@ -1517,6 +1517,9 @@
         pairs['pA'] = 'pB'
         pairs['pB'] = 'pA'

+        # Add the names of kex-k_AB pair.
+        pairs['k_AB'] = 'kex'
+
         # Get the minimisation statistic object names.
         min_names = self.data_names(set='min')


Modified: branches/relax_disp/specific_analyses/relax_disp/parameters.py
URL: 
http://svn.gna.org/viewcvs/relax/branches/relax_disp/specific_analyses/relax_disp/parameters.py?rev=20966&r1=20965&r2=20966&view=diff
==============================================================================
--- branches/relax_disp/specific_analyses/relax_disp/parameters.py (original)
+++ branches/relax_disp/specific_analyses/relax_disp/parameters.py Tue
Sep 10 14:39:51 2013
@@ -716,6 +716,13 @@
             tex = 1.0 / (2.0 * value)
             set_value(value=tex, key=key, spins=spins,
sim_index=sim_index, param_name='tex', spin_index=spin_index,
frq_index=frq_index)

+        # The kex to k_AB conversion.
+        if param_name == 'kex':
+            # Get pA value.
+            pA = get_value(key=key, spins=spins, sim_index=sim_index,
param_name='pA', spin_index=spin_index, frq_index=frq_index)
+            k_AB = value * (1.0 - pA)
+            set_value(value=k_AB, key=key, spins=spins,
sim_index=sim_index, param_name='k_AB', spin_index=spin_index,
frq_index=frq_index)
+
         # The tex to kex conversion.
         if param_name == 'tex':
             kex = 1.0 / (2.0 * value)

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=20966&r1=20965&r2=20966&view=diff
==============================================================================
--- branches/relax_disp/test_suite/system_tests/relax_disp.py (original)
+++ branches/relax_disp/test_suite/system_tests/relax_disp.py Tue Sep
10 14:39:51 2013
@@ -1014,6 +1014,9 @@
         self.assertAlmostEqual(res61L.kex, 609.262167216419, 0)
         self.assertAlmostEqual(res61L.chi2, 65.99987828889657, 5)

+        # Test the conversion to k_AB from kex and pA.
+        self.assertEqual(res61L.k_AB, res61L.kex * (1.0 - res61L.pA))
+

     def test_kteilum_fmpoulsen_makke_cpmg_data_048m_guhcl_to_cr72_full(self):
         """Optimisation of Kaare Teilum, Flemming M Poulsen, Mikael
Akke 2006 "acyl-CoA binding protein" CPMG data to the CR72 dispersion
model.


_______________________________________________
relax (http://www.nmr-relax.com)

This is the relax-commits mailing list
relax-commits@xxxxxxx

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



Related Messages


Powered by MHonArc, Updated Wed Sep 11 19:20:06 2013