Hi, Could these be turned into the MODEL_NEST dictionary? I.e. as you have done with the MODEL_DESC, MODEL_PARAMS, MODEL_YEAR, MODEL_EXP_TYPE, etc. I have expanded your table to the following. This is for the manual, which I am adding at the moment.
R2EFF <- None NOREX <- None LM63 <- None LM63 3-site <- LM63 CR72 <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72, NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full CR72 full <- NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 IT99 <- None TSMFK01 <- None B14 <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72, NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full B14 full <- NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 M61 <- None M61B <- None DPL94 <- None DPL94 R1 fit <- None TP02 <- MP05, TAP03, TP02 TP02 R1 fit <- MP05 R1 fit, TAP03 R1 fit, TP02 R1 fit TAP03 <- MP05, TAP03, TP02 TAP03 R1 fit <- MP05 R1 fit, TAP03 R1 fit, TP02 R1 fit MP05 <- MP05, TAP03, TP02 MP05 R1 fit <- MP05 R1 fit, TAP03 R1 fit, TP02 R1 fit NS CPMG 2-site 3D <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72, NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full NS CPMG 2-site 3D full <- NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 NS CPMG 2-site star <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72, NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full NS CPMG 2-site star full <- NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 NS CPMG 2-site expanded <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72, NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full NS R1RHO 2-site <- MP05, TAP03, TP02 NS R1RHO 2-site R1 fit <- MP05 R1 fit, TAP03 R1 fit, TP02 R1 fit NS R1RHO 3-site <- NS R1RHO 3-site linear, NS R1RHO 2-site, MP05, TAP03, TP02 NS R1RHO 3-site linear <- NS R1RHO 3-site linear, NS R1RHO 2-site, MP05, TAP03, TP02 MMQ CR72 <- NS MMQ 2-site, MMQ CR72, CR72 NS MMQ 2-site <- NS MMQ 2-site, MMQ CR72, CR72 NS MMQ 3-site <- NS MMQ 3-site linear, NS MMQ 2-site, MMQ CR72, CR72 NS MMQ 3-site linear <- NS MMQ 2-site, MMQ CR72, CR72 There are some issues here: 1) Because of model instability, we should exclude some of these combinations. For example: CR72 <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72, NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, CR72 full The model instability is in the '* full' models. No one really uses these in publications, other than theoretical ones, as they are rarely usable in practice. The separation of R20A != R20B introduces huge instabilities and possibly multiple minima in the space. The results from these models almost always terrible. For these models to be useful, some NMR spectroscopist needs to publish a comprehensive study of their optimisation properties. This is similar to to the 3-site model instability problems. Both problems are open-ended and not yet solved by the dispersion field. 2) Another problem is with the MMQ models. CR72 cannot be used for these, as CR72 does not support all of the MMQ experiment types and hence cannot be optimised. 3) There is model duplication. CR72 is listed as a nested model for CR72, etc. A special MODEL_NEST dictionary object where the set_deps() or __setitem__() method removes the 'self' model before storing the list would be useful for this purpose (see http://thread.gmane.org/gmane.science.nmr.relax.devel/6684/focus=6685 and http://www.diveintopython.net/object_oriented_framework/special_class_methods.html). 4) The 'NS R1rho 2-site' model is not used for the analytic R1rho models, as the 'NS CPMG *' models are for the analytic CPMG models. Therefore a better table eliminated or fixing these problems would be: R2EFF <- None NOREX <- None LM63 <- None LM63 3-site <- LM63 CR72 <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14 CR72 full <- NS CPMG 2-site 3D full, NS CPMG 2-site star full, B14 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 IT99 <- None TSMFK01 <- None B14 <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, CR72 B14 full <- NS CPMG 2-site 3D full, NS CPMG 2-site star full, CR72 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 NS CPMG 2-site expanded <- NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 NS CPMG 2-site 3D <- NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 NS CPMG 2-site 3D full <- NS CPMG 2-site star full, B14 full, CR72 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 NS CPMG 2-site star <- NS CPMG 2-site 3D, NS CPMG 2-site expanded, B14, CR72 NS CPMG 2-site star full <- NS CPMG 2-site 3D full, B14 full, CR72 full, NS CPMG 2-site 3D, NS CPMG 2-site star, NS CPMG 2-site expanded, B14, CR72 M61 <- None M61B <- None DPL94 <- None DPL94 R1 fit <- None TP02 <- NS R1RHO 2-site, MP05, TAP03 TP02 R1 fit <- MP05 R1 fit, TAP03 R1 fit TAP03 <- NS R1RHO 2-site, MP05, TP02 TAP03 R1 fit <- MP05 R1 fit, TP02 R1 fit MP05 <- NS R1RHO 2-site, TAP03, TP02 MP05 R1 fit <- TAP03 R1 fit, TP02 R1 fit NS R1RHO 2-site <- MP05, TAP03, TP02 NS R1RHO 2-site R1 fit <- MP05 R1 fit, TAP03 R1 fit, TP02 R1 fit NS R1RHO 3-site linear <- NS R1RHO 2-site, MP05, TAP03, TP02 NS R1RHO 3-site <- NS R1RHO 3-site linear, NS R1RHO 2-site, MP05, TAP03, TP02 MMQ CR72 <- NS MMQ 2-site NS MMQ 2-site <- MMQ CR72 NS MMQ 3-site linear <- NS MMQ 2-site, MMQ CR72 NS MMQ 3-site <- NS MMQ 3-site linear, NS MMQ 2-site, MMQ CR72 What do you think? I will add this version to the manual. Regards, Edward P. S. Note that CR72 should always be optimised before the numerical models! A grid search for the numerical models is pretty much impossible - it takes far too long. As the CR72 model will always be optimised before the numeric models in the auto-analysis (I can add the ordering function, if required), then having the NS models in the list is not needed. This is really a massively important part of the paper (http://dx.doi.org/10.1093/bioinformatics/btu166). The CR72 model is very stable and is in the most number of cases the best approximation for the numerical solution. Of course, now we have B14 which is better. But CR72 is really fast and using it as a starting point for the other CPMG models really massively speeds up an analysis with the NS models. On 19 August 2014 10:50, Troels Emtekær Linnet <tlin...@nmr-relax.com> wrote: > Hi Edward. > > After having sleeping on it, I will now change to a hard-coded version. > > You will see, that I have some differences from you. > > I will also accept, that CR72 can learn from the other similar models. > > I cannot see the argument, why this should not be the case? > > > It looks like this: > ------------ > > # Define recurring lists. > ## For CPMG. > MODEL_NEST_LIST_CPMG = [MODEL_NS_CPMG_2SITE_3D, > MODEL_NS_CPMG_2SITE_STAR, MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_B14, > MODEL_CR72] > MODEL_NEST_LIST_CPMG_R20B = [MODEL_NS_CPMG_2SITE_3D_FULL, > MODEL_NS_CPMG_2SITE_STAR_FULL, MODEL_B14_FULL, MODEL_CR72_FULL] > ## For R1rho. > MODEL_NEST_LIST_R1RHO_2SITE = [MODEL_MP05, MODEL_TAP03, MODEL_TP02] > MODEL_NEST_LIST_R1RHO_2SITE_FIT_R1 = [MODEL_MP05_FIT_R1, > MODEL_TAP03_FIT_R1, MODEL_TP02_FIT_R1] > MODEL_NEST_LIST_R1RHO_3SITE = [MODEL_NS_R1RHO_3SITE_LINEAR, > MODEL_NS_R1RHO_2SITE] > ## For CPMG MMQ. > MODEL_NEST_LIST_MMQ_2SITE = [MODEL_NS_MMQ_2SITE, MODEL_MMQ_CR72, MODEL_CR72] > MODEL_NEST_LIST_MMQ_3SITE = [MODEL_NS_MMQ_3SITE_LINEAR] > > # Define order of nesting models for each model. > MODEL_NEST_R2EFF = None > MODEL_NEST_NOREX = None > MODEL_NEST_NOREX_R1RHO = None > MODEL_NEST_NOREX_R1RHO_FIT_R1 = None > MODEL_NEST_LM63 = None > MODEL_NEST_LM63_3SITE = [MODEL_LM63] > MODEL_NEST_CR72 = MODEL_NEST_LIST_CPMG + MODEL_NEST_LIST_CPMG_R20B > MODEL_NEST_CR72_FULL = MODEL_NEST_LIST_CPMG_R20B + MODEL_NEST_LIST_CPMG > MODEL_NEST_IT99 = None > MODEL_NEST_TSMFK01 = None > MODEL_NEST_B14 = MODEL_NEST_LIST_CPMG + MODEL_NEST_LIST_CPMG_R20B > MODEL_NEST_B14_FULL = MODEL_NEST_LIST_CPMG_R20B + MODEL_NEST_LIST_CPMG > MODEL_NEST_M61 = None > MODEL_NEST_M61B = None > MODEL_NEST_DPL94 = None > MODEL_NEST_DPL94_FIT_R1 = None > MODEL_NEST_TP02 = MODEL_NEST_LIST_R1RHO_2SITE > MODEL_NEST_TP02_FIT_R1 = MODEL_NEST_LIST_R1RHO_2SITE_FIT_R1 > MODEL_NEST_TAP03 = MODEL_NEST_LIST_R1RHO_2SITE > MODEL_NEST_TAP03_FIT_R1 = MODEL_NEST_LIST_R1RHO_2SITE_FIT_R1 > MODEL_NEST_MP05 = MODEL_NEST_LIST_R1RHO_2SITE > MODEL_NEST_MP05_FIT_R1 = MODEL_NEST_LIST_R1RHO_2SITE_FIT_R1 > MODEL_NEST_NS_CPMG_2SITE_3D = MODEL_NEST_LIST_CPMG + MODEL_NEST_LIST_CPMG_R20B > MODEL_NEST_NS_CPMG_2SITE_3D_FULL = MODEL_NEST_LIST_CPMG_R20B + > MODEL_NEST_LIST_CPMG > MODEL_NEST_NS_CPMG_2SITE_STAR = MODEL_NEST_LIST_CPMG + > MODEL_NEST_LIST_CPMG_R20B > MODEL_NEST_NS_CPMG_2SITE_STAR_FULL = MODEL_NEST_LIST_CPMG_R20B + > MODEL_NEST_LIST_CPMG > MODEL_NEST_NS_CPMG_2SITE_EXPANDED = MODEL_NEST_LIST_CPMG + > MODEL_NEST_LIST_CPMG_R20B > MODEL_NEST_NS_R1RHO_2SITE = MODEL_NEST_LIST_R1RHO_2SITE > MODEL_NEST_NS_R1RHO_2SITE_FIT_R1 = MODEL_NEST_LIST_R1RHO_2SITE_FIT_R1 > MODEL_NEST_NS_R1RHO_3SITE = MODEL_NEST_LIST_R1RHO_3SITE + > MODEL_NEST_LIST_R1RHO_2SITE > MODEL_NEST_NS_R1RHO_3SITE_LINEAR = MODEL_NEST_LIST_R1RHO_3SITE + > MODEL_NEST_LIST_R1RHO_2SITE > MODEL_NEST_MMQ_CR72 = MODEL_NEST_LIST_MMQ_2SITE > MODEL_NEST_NS_MMQ_2SITE = MODEL_NEST_LIST_MMQ_2SITE > MODEL_NEST_NS_MMQ_3SITE = MODEL_NEST_LIST_MMQ_3SITE + > MODEL_NEST_LIST_MMQ_2SITE > MODEL_NEST_NS_MMQ_3SITE_LINEAR = MODEL_NEST_LIST_MMQ_2SITE > > 2014-08-19 10:21 GMT+02:00 Edward d'Auvergne <edw...@nmr-relax.com>: >> Hi, >> >> Here is a mini-proposal for a special Python dictionary object to help >> with dispersion model nesting: >> >> ----- >> class Model_nesting(dict): >> """Special object for handling model nesting for avoiding the grid >> search.""" >> >> def get_deps(self, model): >> """Return the dependency list for the given model.""" >> >> return self[model] >> >> >> def set_deps(self, model, deps=None): >> """Set the model dependency list for the given model.""" >> >> self[model] = deps >> >> >> MODEL_NESTING = Model_nesting() >> MODEL_NESTING['B14 full'] = ['CR72 full', 'B14', 'CR72'] >> ----- >> >> The class would be in the specific_analyses.relax_disp.models module >> and the MODEL_NESTING instantiation in the >> specific_analyses.relax_disp.variables module. This can have error >> checking added and additional methods for manipulating the data added. >> The get_deps() and set_deps() methods are optional for the power user. >> They may be useful if the __getattr__(), __getitem__(), __setattr__(), >> and __setitem__() methods are overridden to allow for better object >> control (see the objects in the data_store package for how this is >> done). A get_dep() method could be added which accepts the model and >> a list of the currently optimised models and then returns the nested >> model to be used or None, i.e. to implement the model preference. >> >> Or, this could just be a normal Python dictionary rather than a >> special dictionary object. Such an object could be used by relax >> power users, via scripting, to implement their own relaxation >> dispersion analysis protocol. But this is just an idea and many >> alternatives exist. >> >> Regards, >> >> Edward >> >> >> On 19 August 2014 10:07, Edward d'Auvergne <edw...@nmr-relax.com> wrote: >>> Hi Troels, >>> >>> This continues from >>> http://thread.gmane.org/gmane.science.nmr.relax.scm/22733/, and all >>> the related threads. For the change of r25060 >>> (http://article.gmane.org/gmane.science.nmr.relax.scm/22810), could >>> you please document all cases? I.e. model x takes its parameters from >>> model y, and then do this for all models. See the table below for how >>> to document this. This algorithm really worries me and I strongly >>> think that this development is in the wrong direction. All models are >>> special cases! You can't just take any model as the starting point >>> for another. The following ordering is not a good idea: >>> >>> 1) EQ_NUMERIC, EQ_SILICO, EQ_ANALYTIC. >>> 2) Year (from newest). >>> 3) Number of sites. >>> >>> Models should be rather classified in the following groups: >>> >>> 1) Parameter nesting (related to 2). The models should ideally have >>> identical parameter sets. >>> 2) Fast exchange, slow exchange, very slow exchange, vs. all exchange >>> regimes. These are mutually exclusive (apart from the last). >>> 3) The pA >> pB limit - this can never be mixed with the normal pA > >>> pB condition. >>> 4) Model stability (i.e. stable vs. unstable). >>> 5) Model accuracy. >>> 6) Analytic vs. numeric. >>> >>> This is in order of importance. Part 2) here excludes most >>> combinations of the new algorithm - you cannot mix the models for >>> different mutually exclusive exchange regimes. >>> >>> The one and only aim is for speed by avoiding the grid search, >>> therefore the nested model from which the parameters are copied from >>> must be a good estimate for the solution of the target model. I would >>> then propose the following table mapping models to nested models for >>> avoiding the grid search. The order is also the order of >>> optimisation, as you will see from the nested model dependencies. The >>> proposal is: >>> >>> R2eff <- None >>> No Rex <- None >>> >>> LM63 <- None >>> LM63 3-site <- LM63 >>> CR72 <- None >>> CR72 full <- CR72 >>> IT99 <- None >>> TSMFK01 <- None >>> B14 <- CR72 >>> B14 full <- CR72 full, B14, CR72 >>> NS CPMG 2-site expanded <- B14, CR72 >>> NS CPMG 2-site 3D <- NS CPMG 2-site expanded, B14, CR72 >>> NS CPMG 2-site 3D full <- B14 full, CR72 full, NS CPMG 2-site >>> expanded, B14, CR72 >>> NS CPMG 2-site star <- NS CPMG 2-site expanded, B14, CR72 >>> NS CPMG 2-site star full <- B14 full, CR72 full, NS CPMG 2-site >>> expanded, B14, CR72 >>> >>> M61 <- None >>> M61 skew <- None >>> DPL94 <- None >>> DPL94 R1 fit <- DPL94 >>> TP02 <- None >>> TP02 R1 fit <- TP02 >>> TAP03 <- None >>> TAP03 R1 fit <- TAP03 >>> MP05 <- TAP03, TP02 >>> MP05 R1 fit <- MP05, TAP03, TP02 >>> NS R1rho 2-site <- MP05, TAP03, TP02 >>> NS R1rho 2-site R1 fit <- NS R1rho 2-site, MP05, TAP03, TP02 >>> NS R1rho 3-site linear <- NS R1rho 2-site, MP05, TAP03, TP02 >>> NS R1rho 3-site <- NS R1rho 3-site linear, NS R1rho 2-site, >>> MP05, TAP03, TP02 >>> >>> MMQ CR72 <- None >>> NS MMQ 2-site <- MMQ CR72 >>> NS MMQ 3-site linear <- NS MMQ 2-site, MMQ CR72 >>> NS MMQ 3-site <- NS MMQ 3-site linear, NS MMQ 2-site, MMQ CR72 >>> >>> In the second column, the list of models indicate importance. For >>> example for the 'B14 full' model, the 'CR72 full' model is the first >>> preference. If that model has not been optimised, then B14 is used. >>> And if B14 is missing, the fall back is to CR72. If none of these >>> models have been optimised, the grid search will be performed. In >>> this case, 'CR72 full' is preferred as it has perfect parameter >>> nesting - all parameters of 'B14 full' are found in 'CR72 full'. The >>> B14 and CR72 are fallbacks - here R20A and R20B are copied from R20 so >>> they start optimisation as R20A == R20B. Hence 'CR72 full' whereby >>> R20A != R20B is a much better starting point as R20A and R20B have >>> been optimised to different values. But the large model instability >>> in 'CR72 full' might make the user want to start with 'B14'. >>> >>> For the '* R1 fit' models, this nesting is of little interest in >>> experimental cases, as you either measure R1 data or not (measuring it >>> is always preferable for model stability). Some people who have >>> measured R1 data might still be interested in what will if R1 is >>> nevertheless optimised, so that nesting could be of use. >>> >>> This nesting table is complete as far as I can tell. Some of this >>> nesting could be still argued to be wrong, for example TP02 with pA << >>> pB as a starting point. I would not use any other nesting for fear of >>> creating a very bad optimisation starting position. The table is very >>> easy to extend for new models as well. But because of model >>> instability, the user may wish to change this nesting. >>> >>> Regards, >>> >>> Edward >>> >>> >>> >>> >>> >>> >>> >>> >>> >>> On 18 August 2014 18:11, Edward d'Auvergne <edw...@nmr-relax.com> wrote: >>>> Hi Troels, >>>> >>>> I will continue from your last post in the triplet thread at >>>> http://thread.gmane.org/gmane.science.nmr.relax.scm/22737. I have >>>> copied and pasted your message below: >>>> >>>> On 18 August 2014 17:17, Troels Emtekær Linnet <tlin...@nmr-relax.com> >>>> wrote: >>>>> I will remove the nesting of IT99, since it also worried me. >>>> >>>> I would also suggest removing TSMFK01, TAP03, M61, M61 skew, and DPL94. >>>> >>>> >>>>> But do you really intent to stay on the argument that nesting should >>>>> always be from CR72? >>>> >>>> No, we need a 3rd solution for this. >>>> >>>> >>>>> What if the model pipe for B14 is available. >>>>> Or from NS CPMG 2-site expanded ? >>>> >>>> We could, for example, have a list of nested models. For example for >>>> the NS CPMG 2-site expanded model, the list would be [MODEL_B41, >>>> MODEL_CR72]. It used B14 first, but switches to CR72 if B14 is not >>>> available. This is easy to hardcode in a dictionary (or special >>>> Python dictionary object) and hardcode into a table in the manual. >>>> >>>> For all of the numeric CPMG models, which should be optimised after >>>> the analytic models in all cases so that model nesting can be useful >>>> for speed, I would suggest using B14 and then CR72. But if you have >>>> fast exchange, then the LM63 model is far better for these models than >>>> B14 or CR72, however the parameters are not nested. There are >>>> infinite parameter combinations of the numeric models which give the >>>> same parameter values as LM63. >>>> >>>> For the R1rho models, a similar logic would be used. MP05 replaces >>>> B14, and TP02 replaces CR72. The BK13 model will also need to be >>>> considered in the future (https://gna.org/support/?3155). DPL94 >>>> replaces LM63 for the fast vs. slow exchange problem, but then you >>>> also have the infinite parameter combination problem. >>>> >>>> Note that the infinite parameter combination problem is actually a >>>> major issue affecting the optimisation of all numeric models when the >>>> exchange is fast, but that no one talks about this! >>>> >>>> >>>>> Is this issue rather related how to sort the models first? >>>> >>>> This is an important issue which requires knowledge of the nesting, as >>>> I mentioned previously. Our understanding of the models themselves >>>> and our logic based on experiment is far more useful for determining >>>> model nesting and the order in which they should be optimised. This >>>> is why a hardcoded solution is very powerful. >>>> >>>> Regards, >>>> >>>> Edward >>>> >>>> >>>> >>>> On 12 August 2014 10:54, <tlin...@nmr-relax.com> wrote: >>>>> Author: tlinnet >>>>> Date: Tue Aug 12 10:54:36 2014 >>>>> New Revision: 24983 >>>>> >>>>> URL: http://svn.gna.org/viewcvs/relax?rev=24983&view=rev >>>>> Log: >>>>> Added meta information about equation type. >>>>> >>>>> The models are dividided into: analytic, silico or numeric. >>>>> >>>>> sr #3135(https://gna.org/support/?3135): Optimisation of the R1 >>>>> relaxation rate for the off-resonance R1rho relaxation dispersion models. >>>>> >>>>> Modified: >>>>> branches/R1_fitting/specific_analyses/relax_disp/variables.py >>>>> >>>>> branches/R1_fitting/test_suite/unit_tests/_specific_analyses/_relax_disp/test_variables.py >>>>> >>>>> Modified: branches/R1_fitting/specific_analyses/relax_disp/variables.py >>>>> URL: >>>>> http://svn.gna.org/viewcvs/relax/branches/R1_fitting/specific_analyses/relax_disp/variables.py?rev=24983&r1=24982&r2=24983&view=diff >>>>> ============================================================================== >>>>> --- branches/R1_fitting/specific_analyses/relax_disp/variables.py >>>>> (original) >>>>> +++ branches/R1_fitting/specific_analyses/relax_disp/variables.py >>>>> Tue Aug 12 10:54:36 2014 >>>>> @@ -59,6 +59,12 @@ >>>>> """The list of all dispersion experiment types.""" >>>>> >>>>> >>>>> +# Model equation types. Either analytic, silico or numeric. >>>>> +EQ_ANALYTIC = 'analytic' >>>>> +EQ_NUMERIC = 'numeric' >>>>> +EQ_SILICO = 'silico' >>>>> + >>>>> + >>>>> # The model names, parameters, and descriptions. >>>>> MODEL_R2EFF = 'R2eff' >>>>> MODEL_DESC_R2EFF = "The model for determining the R2eff/R1rho values >>>>> from peak intensities." >>>>> @@ -67,6 +73,7 @@ >>>>> MODEL_YEAR_R2EFF = 1950 >>>>> MODEL_EXP_TYPE_R2EFF = EXP_TYPE_R2EFF >>>>> MODEL_SITES_R2EFF = None >>>>> +MODEL_EQ_R2EFF = EQ_ANALYTIC >>>>> >>>>> MODEL_NOREX = 'No Rex' >>>>> MODEL_DESC_NOREX = "The model for no chemical exchange relaxation." >>>>> @@ -75,6 +82,7 @@ >>>>> MODEL_YEAR_NOREX = 1951 >>>>> MODEL_EXP_TYPE_NOREX = EXP_TYPE_NOREX >>>>> MODEL_SITES_NOREX = 1 >>>>> +MODEL_EQ_NOREX = EQ_ANALYTIC >>>>> >>>>> MODEL_NOREX_R1RHO = "No_Rex_R1rho_off_res" >>>>> MODEL_DESC_NOREX_R1RHO = "The model for no chemical exchange relaxation, >>>>> for R1rho off resonance models." >>>>> @@ -83,6 +91,7 @@ >>>>> MODEL_YEAR_NOREX_R1RHO = 1952 >>>>> MODEL_EXP_TYPE_NOREX_R1RHO = EXP_TYPE_NOREX_R1RHO >>>>> MODEL_SITES_NOREX_R1RHO = 1 >>>>> +MODEL_EQ_NOREX_R1RHO = EQ_ANALYTIC >>>>> >>>>> MODEL_NOREX_R1RHO_FIT_R1 = "%s_fit_r1"%MODEL_NOREX_R1RHO >>>>> MODEL_DESC_NOREX_R1RHO_FIT_R1 = "The model for no chemical exchange >>>>> relaxation, for R1rho off resonance models, where R1 is fitted." >>>>> @@ -91,6 +100,7 @@ >>>>> MODEL_YEAR_NOREX_R1RHO_FIT_R1 = 1953 >>>>> MODEL_EXP_TYPE_NOREX_R1RHO_FIT_R1 = EXP_TYPE_NOREX_R1RHO >>>>> MODEL_SITES_NOREX_R1RHO_FIT_R1 = 1 >>>>> +MODEL_EQ_NOREX_R1RHO_FIT_R1 = EQ_ANALYTIC >>>>> >>>>> MODEL_LM63 = 'LM63' >>>>> MODEL_DESC_LM63 = "The Luz and Meiboom (1963) 2-site fast exchange model >>>>> for SQ-CPMG experiments." >>>>> @@ -98,6 +108,7 @@ >>>>> MODEL_YEAR_LM63 = 1963 >>>>> MODEL_EXP_TYPE_LM63 = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_LM63 = 2 >>>>> +MODEL_EQ_LM63 = EQ_ANALYTIC >>>>> >>>>> MODEL_LM63_3SITE = 'LM63 3-site' >>>>> MODEL_DESC_LM63_3SITE = "The Luz and Meiboom (1963) 3-site fast exchange >>>>> model for SQ-CPMG experiments." >>>>> @@ -105,6 +116,7 @@ >>>>> MODEL_YEAR_LM63_3SITE = 1963 >>>>> MODEL_EXP_TYPE_LM63_3SITE = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_LM63_3SITE = 3 >>>>> +MODEL_EQ_LM63_3SITE = EQ_ANALYTIC >>>>> >>>>> MODEL_CR72 = 'CR72' >>>>> MODEL_DESC_CR72 = "The reduced Carver and Richards (1972) 2-site model >>>>> for all time scales for SQ-CPMG experiments, whereby the simplification >>>>> R20A = R20B is assumed." >>>>> @@ -112,6 +124,7 @@ >>>>> MODEL_YEAR_CR72 = 1972 >>>>> MODEL_EXP_TYPE_CR72 = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_CR72 = 2 >>>>> +MODEL_EQ_CR72 = EQ_ANALYTIC >>>>> >>>>> MODEL_CR72_FULL = 'CR72 full' >>>>> MODEL_DESC_CR72_FULL = "The full Carver and Richards (1972) 2-site model >>>>> for all time scales for SQ-CPMG experiments." >>>>> @@ -119,6 +132,7 @@ >>>>> MODEL_YEAR_CR72_FULL = 1972 >>>>> MODEL_EXP_TYPE_CR72_FULL = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_CR72_FULL = 2 >>>>> +MODEL_EQ_CR72_FULL = EQ_ANALYTIC >>>>> >>>>> MODEL_IT99 = 'IT99' >>>>> MODEL_DESC_IT99 = "The Ishima and Torchia (1999) 2-site CPMG model for >>>>> all time scales for SQ-CPMG experiments, with skewed populations (pA >> >>>>> pB)." >>>>> @@ -126,6 +140,7 @@ >>>>> MODEL_YEAR_IT99 = 1999 >>>>> MODEL_EXP_TYPE_IT99 = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_IT99 = 2 >>>>> +MODEL_EQ_IT99 = EQ_ANALYTIC >>>>> >>>>> MODEL_TSMFK01 = 'TSMFK01' >>>>> MODEL_DESC_TSMFK01 = "The Tollinger et al. (2001) 2-site very-slow >>>>> exchange model for SQ-CPMG experiments." >>>>> @@ -133,6 +148,7 @@ >>>>> MODEL_YEAR_TSMFK01 = 2001 >>>>> MODEL_EXP_TYPE_TSMFK01 = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_TSMFK01 = 2 >>>>> +MODEL_EQ_TSMFK01 = EQ_ANALYTIC >>>>> >>>>> MODEL_B14 = 'B14' >>>>> MODEL_DESC_B14 = "The Baldwin (2014) 2-site CPMG exact solution model >>>>> for all time scales for SQ-CPMG experiments, whereby the simplification >>>>> R20A = R20B is assumed." >>>>> @@ -140,6 +156,7 @@ >>>>> MODEL_YEAR_B14 = 2014 >>>>> MODEL_EXP_TYPE_B14 = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_B14 = 2 >>>>> +MODEL_EQ_B14 = EQ_ANALYTIC >>>>> >>>>> MODEL_B14_FULL = 'B14 full' >>>>> MODEL_DESC_B14_FULL = "The Baldwin (2014) 2-site CPMG exact solution >>>>> model for all time scales for SQ-CPMG experiments." >>>>> @@ -147,6 +164,7 @@ >>>>> MODEL_YEAR_B14_FULL = 2014 >>>>> MODEL_EXP_TYPE_B14_FULL = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_B14_FULL = 2 >>>>> +MODEL_EQ_B14_FULL = EQ_ANALYTIC >>>>> >>>>> MODEL_M61 = 'M61' >>>>> MODEL_DESC_M61 = "The Meiboom (1961) on-resonance 2-site fast exchange >>>>> model for R1rho-type experiments." >>>>> @@ -154,6 +172,7 @@ >>>>> MODEL_YEAR_M61 = 1961 >>>>> MODEL_EXP_TYPE_M61 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_M61 = 2 >>>>> +MODEL_EQ_M61 = EQ_ANALYTIC >>>>> >>>>> MODEL_M61B = 'M61 skew' >>>>> MODEL_DESC_M61B = "The Meiboom (1961) on-resonance 2-site model for >>>>> R1rho-type experiments, with skewed populations (pA >> pB)." >>>>> @@ -161,6 +180,7 @@ >>>>> MODEL_YEAR_M61B = 1961 >>>>> MODEL_EXP_TYPE_M61B = EXP_TYPE_R1RHO >>>>> MODEL_SITES_M61B = 2 >>>>> +MODEL_EQ_M61B = EQ_ANALYTIC >>>>> >>>>> MODEL_DPL94 = 'DPL94' >>>>> """The R1rho 2-site fast exchange model of Davis, Perlman and London >>>>> (1994).""" >>>>> @@ -169,6 +189,7 @@ >>>>> MODEL_YEAR_DPL94 = 1994 >>>>> MODEL_EXP_TYPE_DPL94 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_DPL94 = 2 >>>>> +MODEL_EQ_DPL94 = EQ_ANALYTIC >>>>> >>>>> MODEL_DPL94_FIT_R1 = "%s_fit_r1"%MODEL_DPL94 >>>>> """The R1rho 2-site fast exchange model of Davis, Perlman and London >>>>> (1994), where R1 is fitted.""" >>>>> @@ -177,6 +198,7 @@ >>>>> MODEL_YEAR_DPL94_FIT_R1 = 1994 >>>>> MODEL_EXP_TYPE_DPL94_FIT_R1 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_DPL94_FIT_R1 = 2 >>>>> +MODEL_EQ_DPL94_FIT_R1 = EQ_ANALYTIC >>>>> >>>>> MODEL_TP02 = 'TP02' >>>>> MODEL_DESC_TP02 = "The Trott and Palmer (2002) off-resonance 2-site >>>>> model for R1rho-type experiments." >>>>> @@ -184,6 +206,7 @@ >>>>> MODEL_YEAR_TP02 = 2002 >>>>> MODEL_EXP_TYPE_TP02 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_TP02 = 2 >>>>> +MODEL_EQ_TP02 = EQ_ANALYTIC >>>>> >>>>> MODEL_TP02_FIT_R1 = "%s_fit_r1"%MODEL_TP02 >>>>> MODEL_DESC_TP02_FIT_R1 = "The Trott and Palmer (2002) off-resonance >>>>> 2-site model for R1rho-type experiments, where R1 is fitted." >>>>> @@ -191,6 +214,7 @@ >>>>> MODEL_YEAR_TP02_FIT_R1 = 2002 >>>>> MODEL_EXP_TYPE_TP02_FIT_R1 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_TP02_FIT_R1 = 2 >>>>> +MODEL_EQ_TP02_FIT_R1 = EQ_ANALYTIC >>>>> >>>>> MODEL_TAP03 = 'TAP03' >>>>> MODEL_DESC_TAP03 = "The Trott, Abergel and Palmer (2003) off-resonance >>>>> 2-site model for R1rho-type experiments." >>>>> @@ -198,6 +222,7 @@ >>>>> MODEL_YEAR_TAP03 = 2003 >>>>> MODEL_EXP_TYPE_TAP03 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_TAP03 = 2 >>>>> +MODEL_EQ_TAP03 = EQ_ANALYTIC >>>>> >>>>> MODEL_TAP03_FIT_R1 = "%s_fit_r1"%MODEL_TAP03 >>>>> MODEL_DESC_TAP03_FIT_R1 = "The Trott, Abergel and Palmer (2003) >>>>> off-resonance 2-site model for R1rho-type experiments, where R1 is >>>>> fitted." >>>>> @@ -205,6 +230,7 @@ >>>>> MODEL_YEAR_TAP03_FIT_R1 = 2003 >>>>> MODEL_EXP_TYPE_TAP03_FIT_R1 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_TAP03_FIT_R1 = 2 >>>>> +MODEL_EQ_TAP03_FIT_R1 = EQ_ANALYTIC >>>>> >>>>> MODEL_MP05 = 'MP05' >>>>> """The R1rho 2-site off-resonance exchange model of Miloushev and Palmer >>>>> (2005).""" >>>>> @@ -213,6 +239,7 @@ >>>>> MODEL_YEAR_MP05 = 2005 >>>>> MODEL_EXP_TYPE_MP05 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_MP05 = 2 >>>>> +MODEL_EQ_MP05 = EQ_ANALYTIC >>>>> >>>>> MODEL_MP05_FIT_R1 = "%s_fit_r1"%MODEL_MP05 >>>>> """The R1rho 2-site off-resonance exchange model of Miloushev and Palmer >>>>> (2005).""" >>>>> @@ -221,6 +248,7 @@ >>>>> MODEL_YEAR_MP05_FIT_R1 = 2005 >>>>> MODEL_EXP_TYPE_MP05_FIT_R1 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_MP05_FIT_R1 = 2 >>>>> +MODEL_EQ_MP05_FIT_R1 = EQ_ANALYTIC >>>>> >>>>> >>>>> # The Numerical model names. >>>>> @@ -230,6 +258,7 @@ >>>>> MODEL_YEAR_NS_CPMG_2SITE_3D = 2004 >>>>> MODEL_EXP_TYPE_NS_CPMG_2SITE_3D = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_NS_CPMG_2SITE_3D = 2 >>>>> +MODEL_EQ_NS_CPMG_2SITE_3D = EQ_NUMERIC >>>>> >>>>> MODEL_NS_CPMG_2SITE_3D_FULL = 'NS CPMG 2-site 3D full' >>>>> MODEL_DESC_NS_CPMG_2SITE_3D_FULL = "The full numerical solution for the >>>>> 2-site Bloch-McConnell equations using 3D magnetisation vectors for SQ >>>>> CPMG experiments." >>>>> @@ -237,6 +266,7 @@ >>>>> MODEL_YEAR_NS_CPMG_2SITE_3D_FULL = 2004 >>>>> MODEL_EXP_TYPE_NS_CPMG_2SITE_3D_FULL = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_NS_CPMG_2SITE_3D_FULL = 2 >>>>> +MODEL_EQ_NS_CPMG_2SITE_3D_FULL = EQ_NUMERIC >>>>> >>>>> MODEL_NS_CPMG_2SITE_STAR = 'NS CPMG 2-site star' >>>>> MODEL_DESC_NS_CPMG_2SITE_STAR = "The numerical reduced solution for the >>>>> 2-site Bloch-McConnell equations using complex conjugate matrices for SQ >>>>> CPMG experiments, whereby the simplification R20A = R20B is assumed." >>>>> @@ -244,6 +274,7 @@ >>>>> MODEL_YEAR_NS_CPMG_2SITE_STAR = 2004 >>>>> MODEL_EXP_TYPE_NS_CPMG_2SITE_STAR = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_NS_CPMG_2SITE_STAR = 2 >>>>> +MODEL_EQ_NS_CPMG_2SITE_STAR = EQ_NUMERIC >>>>> >>>>> MODEL_NS_CPMG_2SITE_STAR_FULL = 'NS CPMG 2-site star full' >>>>> MODEL_DESC_NS_CPMG_2SITE_STAR_FULL = "The full numerical solution for >>>>> the 2-site Bloch-McConnell equations using complex conjugate matrices for >>>>> SQ CPMG experiments." >>>>> @@ -251,6 +282,7 @@ >>>>> MODEL_YEAR_NS_CPMG_2SITE_STAR_FULL = 2004 >>>>> MODEL_EXP_TYPE_NS_CPMG_2SITE_STAR_FULL = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_NS_CPMG_2SITE_STAR_FULL = 2 >>>>> +MODEL_EQ_NS_CPMG_2SITE_STAR_FULL = EQ_NUMERIC >>>>> >>>>> MODEL_NS_CPMG_2SITE_EXPANDED = 'NS CPMG 2-site expanded' >>>>> MODEL_DESC_NS_CPMG_2SITE_EXPANDED = "The numerical solution for the >>>>> 2-site Bloch-McConnell equations for SQ CPMG experiments, expanded using >>>>> Maple by Nikolai Skrynnikov." >>>>> @@ -258,6 +290,7 @@ >>>>> MODEL_YEAR_NS_CPMG_2SITE_EXPANDED = 2001 >>>>> MODEL_EXP_TYPE_NS_CPMG_2SITE_EXPANDED = EXP_TYPE_CPMG_SQ >>>>> MODEL_SITES_NS_CPMG_2SITE_EXPANDED = 2 >>>>> +MODEL_EQ_NS_CPMG_2SITE_EXPANDED = EQ_SILICO >>>>> >>>>> MODEL_NS_R1RHO_2SITE = 'NS R1rho 2-site' >>>>> MODEL_DESC_NS_R1RHO_2SITE = "The reduced numerical solution for the >>>>> 2-site Bloch-McConnell equations using 3D magnetisation vectors for >>>>> R1rho-type experiments, whereby the simplification R20A = R20B is >>>>> assumed." >>>>> @@ -265,6 +298,7 @@ >>>>> MODEL_YEAR_NS_R1RHO_2SITE = 2005 >>>>> MODEL_EXP_TYPE_NS_R1RHO_2SITE = EXP_TYPE_R1RHO >>>>> MODEL_SITES_NS_R1RHO_2SITE = 2 >>>>> +MODEL_EQ_NS_R1RHO_2SITE = EQ_NUMERIC >>>>> >>>>> MODEL_NS_R1RHO_2SITE_FIT_R1 = "%s_fit_r1"%MODEL_NS_R1RHO_2SITE >>>>> MODEL_DESC_NS_R1RHO_2SITE_FIT_R1 = "The reduced numerical solution for >>>>> the 2-site Bloch-McConnell equations using 3D magnetisation vectors for >>>>> R1rho-type experiments, whereby the simplification R20A = R20B is >>>>> assumed, and where R1 is fitted." >>>>> @@ -272,6 +306,7 @@ >>>>> MODEL_YEAR_NS_R1RHO_2SITE_FIT_R1 = 2005 >>>>> MODEL_EXP_TYPE_NS_R1RHO_2SITE_FIT_R1 = EXP_TYPE_R1RHO >>>>> MODEL_SITES_NS_R1RHO_2SITE_FIT_R1 = 2 >>>>> +MODEL_EQ_NS_R1RHO_2SITE_FIT_R1 = EQ_NUMERIC >>>>> >>>>> MODEL_NS_R1RHO_3SITE = 'NS R1rho 3-site' >>>>> MODEL_DESC_NS_R1RHO_3SITE = "The numerical solution for the 3-site >>>>> Bloch-McConnell equations using 3D magnetisation vectors for R1rho-type >>>>> experiments, whereby the simplification R20A = R20B = R20C is assumed." >>>>> @@ -279,6 +314,7 @@ >>>>> MODEL_YEAR_NS_R1RHO_3SITE = 2005 >>>>> MODEL_EXP_TYPE_NS_R1RHO_3SITE = EXP_TYPE_R1RHO >>>>> MODEL_SITES_NS_R1RHO_3SITE = 3 >>>>> +MODEL_EQ_NS_R1RHO_3SITE = EQ_NUMERIC >>>>> >>>>> MODEL_NS_R1RHO_3SITE_LINEAR = 'NS R1rho 3-site linear' >>>>> MODEL_DESC_NS_R1RHO_3SITE_LINEAR = "The numerical solution for the >>>>> 3-site Bloch-McConnell equations using 3D magnetisation vectors for >>>>> R1rho-type experiments, linearised with kAC = kCA = 0 and whereby the >>>>> simplification R20A = R20B = R20C is assumed." >>>>> @@ -286,6 +322,7 @@ >>>>> MODEL_YEAR_NS_R1RHO_3SITE_LINEAR = 2005 >>>>> MODEL_EXP_TYPE_NS_R1RHO_3SITE_LINEAR = EXP_TYPE_R1RHO >>>>> MODEL_SITES_NS_R1RHO_3SITE_LINEAR = 3 >>>>> +MODEL_EQ_NS_R1RHO_3SITE_LINEAR = EQ_NUMERIC >>>>> >>>>> # The multi-quantum data model names. >>>>> MODEL_MMQ_CR72 = 'MMQ CR72' >>>>> @@ -294,6 +331,7 @@ >>>>> MODEL_YEAR_MMQ_CR72 = 2004 >>>>> MODEL_EXP_TYPE_MMQ_CR72 = EXP_TYPE_CPMG_MMQ >>>>> MODEL_SITES_MMQ_CR72 = 2 >>>>> +MODEL_EQ_MMQ_CR72 = EQ_ANALYTIC >>>>> >>>>> MODEL_NS_MMQ_2SITE = 'NS MMQ 2-site' >>>>> MODEL_DESC_NS_MMQ_2SITE = "The reduced numerical solution for the 2-site >>>>> Bloch-McConnell equations for MMQ CPMG experiments, whereby the >>>>> simplification R20A = R20B is assumed." >>>>> @@ -301,6 +339,7 @@ >>>>> MODEL_YEAR_NS_MMQ_2SITE = 2005 >>>>> MODEL_EXP_TYPE_NS_MMQ_2SITE = EXP_TYPE_CPMG_MMQ >>>>> MODEL_SITES_NS_MMQ_2SITE = 2 >>>>> +MODEL_EQ_NS_MMQ_2SITE = EQ_NUMERIC >>>>> >>>>> MODEL_NS_MMQ_3SITE = 'NS MMQ 3-site' >>>>> MODEL_DESC_NS_MMQ_3SITE = "The numerical solution for the 3-site >>>>> Bloch-McConnell equations for MMQ CPMG experiments, whereby the >>>>> simplification R20A = R20B = R20C is assumed." >>>>> @@ -308,6 +347,7 @@ >>>>> MODEL_YEAR_NS_MMQ_3SITE = 2005 >>>>> MODEL_EXP_TYPE_NS_MMQ_3SITE = EXP_TYPE_CPMG_MMQ >>>>> MODEL_SITES_NS_MMQ_3SITE = 3 >>>>> +MODEL_EQ_NS_MMQ_3SITE = EQ_NUMERIC >>>>> >>>>> MODEL_NS_MMQ_3SITE_LINEAR = 'NS MMQ 3-site linear' >>>>> MODEL_DESC_NS_MMQ_3SITE_LINEAR = "The numerical solution for the 3-site >>>>> Bloch-McConnell equations for MMQ CPMG experiments, linearised with kAC = >>>>> kCA = 0 and whereby the simplification R20A = R20B = R20C is assumed." >>>>> @@ -315,6 +355,7 @@ >>>>> MODEL_YEAR_NS_MMQ_3SITE_LINEAR = 2005 >>>>> MODEL_EXP_TYPE_NS_MMQ_3SITE_LINEAR = EXP_TYPE_CPMG_MMQ >>>>> MODEL_SITES_NS_MMQ_3SITE_LINEAR = 3 >>>>> +MODEL_EQ_NS_MMQ_3SITE_LINEAR = EQ_NUMERIC >>>>> >>>>> # The parameters. >>>>> PARAMS_R20 = ['r2', 'r2a', 'r2b'] >>>>> @@ -650,4 +691,43 @@ >>>>> MODEL_NS_MMQ_2SITE: MODEL_SITES_NS_MMQ_2SITE, >>>>> MODEL_NS_MMQ_3SITE: MODEL_SITES_NS_MMQ_3SITE, >>>>> MODEL_NS_MMQ_3SITE_LINEAR: MODEL_SITES_NS_MMQ_3SITE_LINEAR >>>>> +} >>>>> + >>>>> +# Full list of equation type. >>>>> +MODEL_EQ = { >>>>> + MODEL_R2EFF: MODEL_EQ_R2EFF, >>>>> + MODEL_NOREX: MODEL_EQ_NOREX, >>>>> + MODEL_NOREX_R1RHO: MODEL_EQ_NOREX_R1RHO, >>>>> + MODEL_NOREX_R1RHO_FIT_R1: MODEL_EQ_NOREX_R1RHO_FIT_R1, >>>>> + MODEL_LM63: MODEL_EQ_LM63, >>>>> + MODEL_LM63_3SITE: MODEL_EQ_LM63_3SITE, >>>>> + MODEL_CR72: MODEL_EQ_CR72, >>>>> + MODEL_CR72_FULL: MODEL_EQ_CR72_FULL, >>>>> + MODEL_IT99: MODEL_EQ_IT99, >>>>> + MODEL_TSMFK01: MODEL_EQ_TSMFK01, >>>>> + MODEL_B14: MODEL_EQ_B14, >>>>> + MODEL_B14_FULL: MODEL_EQ_B14_FULL, >>>>> + MODEL_M61: MODEL_EQ_M61, >>>>> + MODEL_M61B: MODEL_EQ_M61B, >>>>> + MODEL_DPL94: MODEL_EQ_DPL94, >>>>> + MODEL_DPL94_FIT_R1: MODEL_EQ_DPL94_FIT_R1, >>>>> + MODEL_TP02: MODEL_EQ_TP02, >>>>> + MODEL_TP02_FIT_R1: MODEL_EQ_TP02_FIT_R1, >>>>> + MODEL_TAP03: MODEL_EQ_TAP03, >>>>> + MODEL_TAP03_FIT_R1: MODEL_EQ_TAP03_FIT_R1, >>>>> + MODEL_MP05: MODEL_EQ_MP05, >>>>> + MODEL_MP05_FIT_R1: MODEL_EQ_MP05_FIT_R1, >>>>> + MODEL_NS_CPMG_2SITE_3D: MODEL_EQ_NS_CPMG_2SITE_3D, >>>>> + MODEL_NS_CPMG_2SITE_3D_FULL: MODEL_EQ_NS_CPMG_2SITE_3D_FULL, >>>>> + MODEL_NS_CPMG_2SITE_STAR: MODEL_EQ_NS_CPMG_2SITE_STAR, >>>>> + MODEL_NS_CPMG_2SITE_STAR_FULL: MODEL_EQ_NS_CPMG_2SITE_STAR_FULL, >>>>> + MODEL_NS_CPMG_2SITE_EXPANDED: MODEL_EQ_NS_CPMG_2SITE_EXPANDED, >>>>> + MODEL_NS_R1RHO_2SITE: MODEL_EQ_NS_R1RHO_2SITE, >>>>> + MODEL_NS_R1RHO_2SITE_FIT_R1: MODEL_EQ_NS_R1RHO_2SITE_FIT_R1, >>>>> + MODEL_NS_R1RHO_3SITE: MODEL_EQ_NS_R1RHO_3SITE, >>>>> + MODEL_NS_R1RHO_3SITE_LINEAR: MODEL_EQ_NS_R1RHO_3SITE_LINEAR, >>>>> + MODEL_MMQ_CR72: MODEL_EQ_MMQ_CR72, >>>>> + MODEL_NS_MMQ_2SITE: MODEL_EQ_NS_MMQ_2SITE, >>>>> + MODEL_NS_MMQ_3SITE: MODEL_EQ_NS_MMQ_3SITE, >>>>> + MODEL_NS_MMQ_3SITE_LINEAR: MODEL_EQ_NS_MMQ_3SITE_LINEAR >>>>> } >>>>> >>>>> Modified: >>>>> branches/R1_fitting/test_suite/unit_tests/_specific_analyses/_relax_disp/test_variables.py >>>>> URL: >>>>> http://svn.gna.org/viewcvs/relax/branches/R1_fitting/test_suite/unit_tests/_specific_analyses/_relax_disp/test_variables.py?rev=24983&r1=24982&r2=24983&view=diff >>>>> ============================================================================== >>>>> --- >>>>> branches/R1_fitting/test_suite/unit_tests/_specific_analyses/_relax_disp/test_variables.py >>>>> (original) >>>>> +++ >>>>> branches/R1_fitting/test_suite/unit_tests/_specific_analyses/_relax_disp/test_variables.py >>>>> Tue Aug 12 10:54:36 2014 >>>>> @@ -20,8 +20,8 @@ >>>>> >>>>> ############################################################################### >>>>> >>>>> # relax module imports. >>>>> -from specific_analyses.relax_disp.variables import MODEL_CR72, >>>>> MODEL_MMQ_CR72, MODEL_NS_R1RHO_3SITE >>>>> -from specific_analyses.relax_disp.variables import MODEL_EXP_TYPE, >>>>> MODEL_PARAMS, MODEL_SITES, MODEL_YEAR >>>>> +from specific_analyses.relax_disp.variables import MODEL_CR72, >>>>> MODEL_MMQ_CR72, MODEL_NS_CPMG_2SITE_EXPANDED, MODEL_NS_R1RHO_3SITE >>>>> +from specific_analyses.relax_disp.variables import MODEL_EXP_TYPE, >>>>> MODEL_EQ, MODEL_PARAMS, MODEL_SITES, MODEL_YEAR >>>>> from test_suite.unit_tests.base_classes import UnitTestCase >>>>> >>>>> >>>>> @@ -67,3 +67,13 @@ >>>>> >>>>> # Test the return. >>>>> self.assertEqual(model_sites, 3) >>>>> + >>>>> + >>>>> + def test_MODEL_EQ(self): >>>>> + """Unit test of the MODEL_EQ dictionary.""" >>>>> + >>>>> + # Test model equation type return from model equation dictionary. >>>>> + model_eq = MODEL_EQ[MODEL_NS_CPMG_2SITE_EXPANDED] >>>>> + >>>>> + # Test the return. >>>>> + self.assertEqual(model_eq, 'silico') >>>>> >>>>> >>>>> _______________________________________________ >>>>> relax (http://www.nmr-relax.com) >>>>> >>>>> This is the relax-commits mailing list >>>>> relax-comm...@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 >> >> _______________________________________________ >> relax (http://www.nmr-relax.com) >> >> This is the relax-devel mailing list >> relax-devel@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-devel _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-devel mailing list relax-devel@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-devel