Hi, There is also an alternative, and that would be to check if 'pA' and 'kex' are both present in spin[0].params. But either solution would be reasonable.
Regards, Edward On 11 September 2013 10:02, Edward d'Auvergne <[email protected]> wrote: > Hi, > > I had noticed that this commit had killed the entire branch ;) That's > ok though, because this is a branch and not the trunk. The best fix > would be to use the model information. One of the arguments to this > param_conversion() function is 'spins'. This is a list of all the > spins in the cluster. The key is that every spin container holds the > model name for the cluster. There is another part of this module > which uses the model information, just search for where the MODEL_M61B > variable is used. You should perform a similar test, and only perform > the kex to k_AB conversion for the list of models in which this > conversion is possible (i.e. they must have a pA and kex parameter). > > I have also noticed that the conversion is only half there. There > should also be the kex to k_BA conversion as well! > > Regards, > > Edward > > > > > On 11 September 2013 09:47, Troels Emtekær Linnet <[email protected]> wrote: >> 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: <[email protected]> >> Date: 2013/9/10 >> Subject: r20966 - in /branches/relax_disp: auto_analyses/ >> specific_analyses/relax_disp/ test_suite/system_tests/ >> To: [email protected] >> >> >> 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 <[email protected]> >> >> 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 >> [email protected] >> >> 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 >> >> _______________________________________________ >> relax (http://www.nmr-relax.com) >> >> This is the relax-devel mailing list >> [email protected] >> >> 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-devel _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list [email protected] 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-devel

