Author: bugman Date: Thu Aug 21 14:52:20 2014 New Revision: 25163 URL: http://svn.gna.org/viewcvs/relax?rev=25163&view=rev Log: Merger of the 'No Rex' and 'No Rex R1rho off res' models in the specific_analyses.relax_disp package. In the 'variables' module, all *_NOREX_R1RHO variables have simply been deleted and the MODEL_LIST_* structures updated. For the 'data' module, the is_r1_optimised() function was modified to catch the 'No Rex' model and to then use the cdp.exp_type_list structure to determine if the experiment type is EXP_TYPE_R1RHO. This will be modified in the future by using a function for determining if the current experiment is on or off-resonance. The return_r1_data() and return_r1_err_data() functions have also been modified to check if R1 values are fit rather than if the model is in MODEL_LIST_R1RHO_OFF_RES. In the 'model' module, in addition to deleting all *_NOREX_R1RHO variables, the convert_no_rex() function has also been deleted as it no longer serves a purpose. In the 'checks' module, all 'No Rex R1rho off res' model references have been replaced with 'No Rex'. Modified: trunk/specific_analyses/relax_disp/checks.py trunk/specific_analyses/relax_disp/data.py trunk/specific_analyses/relax_disp/model.py trunk/specific_analyses/relax_disp/variables.py Modified: trunk/specific_analyses/relax_disp/checks.py URL: http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/checks.py?rev=25163&r1=25162&r2=25163&view=diff ============================================================================== --- trunk/specific_analyses/relax_disp/checks.py (original) +++ trunk/specific_analyses/relax_disp/checks.py Thu Aug 21 14:52:20 2014 @@ -1,6 +1,6 @@ ############################################################################### # # -# Copyright (C) 2013 Edward d'Auvergne # +# Copyright (C) 2013-2014 Edward d'Auvergne # # Copyright (C) 2013-2014 Troels E. Linnet # # # # This file is part of the program relax (http://www.nmr-relax.com). # @@ -30,7 +30,7 @@ from dep_check import C_module_exp_fn from lib.errors import RelaxError, RelaxFuncSetupError, RelaxNoPeakIntensityError import specific_analyses -from specific_analyses.relax_disp.variables import EXP_TYPE_LIST_CPMG, EXP_TYPE_LIST_R1RHO, MODEL_LIST_R1RHO_OFF_RES, MODEL_NOREX_R1RHO +from specific_analyses.relax_disp.variables import EXP_TYPE_LIST_CPMG, EXP_TYPE_LIST_R1RHO, MODEL_LIST_R1RHO_OFF_RES, MODEL_NOREX def check_c_modules(): @@ -188,7 +188,7 @@ """ # Check that the model uses R1 data. - if model in [MODEL_NOREX_R1RHO] + MODEL_LIST_R1RHO_OFF_RES: + if model in [MODEL_NOREX] + MODEL_LIST_R1RHO_OFF_RES: # If R1 ids are present. if hasattr(cdp, 'ri_ids'): return False Modified: trunk/specific_analyses/relax_disp/data.py URL: http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/data.py?rev=25163&r1=25162&r2=25163&view=diff ============================================================================== --- trunk/specific_analyses/relax_disp/data.py (original) +++ trunk/specific_analyses/relax_disp/data.py Thu Aug 21 14:52:20 2014 @@ -79,7 +79,7 @@ from pipe_control import value import specific_analyses from specific_analyses.relax_disp.checks import check_exp_type, check_interpolate_offset_cpmg_model, check_missing_r1, check_mixed_curve_types -from specific_analyses.relax_disp.variables import EXP_TYPE_CPMG_DQ, EXP_TYPE_CPMG_MQ, EXP_TYPE_CPMG_PROTON_MQ, EXP_TYPE_CPMG_PROTON_SQ, EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_ZQ, EXP_TYPE_DESC_CPMG_DQ, EXP_TYPE_DESC_CPMG_MQ, EXP_TYPE_DESC_CPMG_PROTON_MQ, EXP_TYPE_DESC_CPMG_PROTON_SQ, EXP_TYPE_DESC_CPMG_SQ, EXP_TYPE_DESC_CPMG_ZQ, EXP_TYPE_DESC_R1RHO, EXP_TYPE_LIST, EXP_TYPE_LIST_CPMG, EXP_TYPE_LIST_R1RHO, EXP_TYPE_R1RHO, MODEL_B14, MODEL_B14_FULL, MODEL_DPL94, MODEL_LIST_FIT_R1, MODEL_LIST_MMQ, MODEL_LIST_NUMERIC_CPMG, MODEL_LIST_R1RHO_FULL, MODEL_LIST_R1RHO_ON_RES, MODEL_LIST_R1RHO_OFF_RES, MODEL_MP05, MODEL_NS_R1RHO_2SITE, MODEL_PARAMS, MODEL_R2EFF, MODEL_TAP03, MODEL_TP02, PARAMS_R20 +from specific_analyses.relax_disp.variables import EXP_TYPE_CPMG_DQ, EXP_TYPE_CPMG_MQ, EXP_TYPE_CPMG_PROTON_MQ, EXP_TYPE_CPMG_PROTON_SQ, EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_ZQ, EXP_TYPE_DESC_CPMG_DQ, EXP_TYPE_DESC_CPMG_MQ, EXP_TYPE_DESC_CPMG_PROTON_MQ, EXP_TYPE_DESC_CPMG_PROTON_SQ, EXP_TYPE_DESC_CPMG_SQ, EXP_TYPE_DESC_CPMG_ZQ, EXP_TYPE_DESC_R1RHO, EXP_TYPE_LIST, EXP_TYPE_LIST_CPMG, EXP_TYPE_LIST_R1RHO, EXP_TYPE_R1RHO, MODEL_B14, MODEL_B14_FULL, MODEL_DPL94, MODEL_LIST_FIT_R1, MODEL_LIST_MMQ, MODEL_LIST_NUMERIC_CPMG, MODEL_LIST_R1RHO_FULL, MODEL_LIST_R1RHO_ON_RES, MODEL_LIST_R1RHO_OFF_RES, MODEL_MP05, MODEL_NOREX, MODEL_NS_R1RHO_2SITE, MODEL_PARAMS, MODEL_R2EFF, MODEL_TAP03, MODEL_TP02, PARAMS_R20 from stat import S_IRWXU, S_IRGRP, S_IROTH from os import chmod, sep @@ -1029,6 +1029,8 @@ # Return False for all models which do not support R1 optimisation. if model not in MODEL_LIST_FIT_R1: + return False + if model == MODEL_NOREX and (cdp != None and hasattr(cdp, 'exp_type_list') and EXP_TYPE_R1RHO not in cdp.exp_type_list): return False # Firstly use the R1 fit flag as an override. @@ -4063,7 +4065,7 @@ r1_fit = is_r1_optimised(model=spins[0].model) # Check for the presence of data. - if not hasattr(cdp, 'ri_ids') and spins[0].model not in MODEL_LIST_R1RHO_OFF_RES: + if not r1_fit and not hasattr(cdp, 'ri_ids'): warn_text = "No R1 relaxation data has been loaded. Setting it to 0.0. This is essential for the proper handling of offsets in off-resonance R1rho experiments." error_text = "No R1 relaxation data has been loaded. This is essential for the proper handling of offsets in off-resonance R1rho experiments." if has_r1rho_exp_type(): @@ -4178,7 +4180,7 @@ r1_fit = is_r1_optimised(model=spins[0].model) # Check for the presence of data. - if not hasattr(cdp, 'ri_ids') and spins[0].model not in MODEL_LIST_R1RHO_OFF_RES: + if not r1_fit and not hasattr(cdp, 'ri_ids'): warn_text = "No R1 relaxation data has been loaded. Setting it to 0.0. This is essential for the proper handling of offsets in off-resonance R1rho experiments." error_text = "No R1 relaxation data has been loaded. This is essential for the proper handling of offsets in off-resonance R1rho experiments." if has_r1rho_exp_type(): Modified: trunk/specific_analyses/relax_disp/model.py URL: http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/model.py?rev=25163&r1=25162&r2=25163&view=diff ============================================================================== --- trunk/specific_analyses/relax_disp/model.py (original) +++ trunk/specific_analyses/relax_disp/model.py Thu Aug 21 14:52:20 2014 @@ -1,6 +1,7 @@ ############################################################################### # # # Copyright (C) 2014 Troels E. Linnet # +# Copyright (C) 2014 Edward d'Auvergne # # # # This file is part of the program relax (http://www.nmr-relax.com). # # # @@ -31,7 +32,7 @@ from lib.errors import RelaxError from specific_analyses.relax_disp.checks import check_missing_r1 from specific_analyses.relax_disp.data import is_r1_optimised -from specific_analyses.relax_disp.variables import EQ_ANALYTIC, EQ_NUMERIC, EQ_SILICO, EXP_TYPE_CPMG_MMQ, EXP_TYPE_R1RHO, EXP_TYPE_CPMG_SQ, EXP_TYPE_NOREX, EXP_TYPE_NOREX_R1RHO, EXP_TYPE_R2EFF, MODEL_DESC, MODEL_EQ, MODEL_EXP_TYPE, MODEL_LIST_ANALYTIC_CPMG, MODEL_LIST_NUMERIC_CPMG, MODEL_LIST_R1RHO_OFF_RES, MODEL_CR72, MODEL_DPL94, MODEL_IT99, MODEL_LM63, MODEL_LM63_3SITE, MODEL_MMQ_CR72, MODEL_NEST, MODEL_NOREX, MODEL_NOREX_R1RHO, MODEL_NS_MMQ_2SITE, MODEL_NS_MMQ_3SITE, MODEL_NS_MMQ_3SITE_LINEAR, MODEL_NS_R1RHO_2SITE, MODEL_NS_R1RHO_3SITE, MODEL_NS_R1RHO_3SITE_LINEAR, MODEL_PARAMS, MODEL_PARAMS_LM63, MODEL_PARAMS_LM63_3SITE, MODEL_PARAMS_NS_MMQ_2SITE, MODEL_PARAMS_NS_MMQ_3SITE, MODEL_PARAMS_NS_MMQ_3SITE_LINEAR, MODEL_PARAMS_NS_R1RHO_2SITE, MODEL_PARAMS_NS_R1RHO_3SITE, MODEL_PARAMS_NS_R1RHO_3SITE_LINEAR, MODEL_R2EFF, MODEL_SITES, MODEL_YEAR, PARAMS_R20 +from specific_analyses.relax_disp.variables import EQ_ANALYTIC, EQ_NUMERIC, EQ_SILICO, EXP_TYPE_CPMG_MMQ, EXP_TYPE_R1RHO, EXP_TYPE_CPMG_SQ, EXP_TYPE_NOREX, EXP_TYPE_R2EFF, MODEL_DESC, MODEL_EQ, MODEL_EXP_TYPE, MODEL_LIST_ANALYTIC_CPMG, MODEL_LIST_NUMERIC_CPMG, MODEL_LIST_R1RHO_OFF_RES, MODEL_CR72, MODEL_DPL94, MODEL_IT99, MODEL_LM63, MODEL_LM63_3SITE, MODEL_MMQ_CR72, MODEL_NEST, MODEL_NOREX, MODEL_NS_MMQ_2SITE, MODEL_NS_MMQ_3SITE, MODEL_NS_MMQ_3SITE_LINEAR, MODEL_NS_R1RHO_2SITE, MODEL_NS_R1RHO_3SITE, MODEL_NS_R1RHO_3SITE_LINEAR, MODEL_PARAMS, MODEL_PARAMS_LM63, MODEL_PARAMS_LM63_3SITE, MODEL_PARAMS_NS_MMQ_2SITE, MODEL_PARAMS_NS_MMQ_3SITE, MODEL_PARAMS_NS_MMQ_3SITE_LINEAR, MODEL_PARAMS_NS_R1RHO_2SITE, MODEL_PARAMS_NS_R1RHO_3SITE, MODEL_PARAMS_NS_R1RHO_3SITE_LINEAR, MODEL_R2EFF, MODEL_SITES, MODEL_YEAR, PARAMS_R20 # Define class for describing the model. @@ -81,7 +82,7 @@ self.nest_list = nest_list # Define the order of how exp type ranks. - order_exp_type = [EXP_TYPE_R2EFF, EXP_TYPE_NOREX, EXP_TYPE_NOREX_R1RHO, EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_MMQ, EXP_TYPE_R1RHO] + order_exp_type = [EXP_TYPE_R2EFF, EXP_TYPE_NOREX, EXP_TYPE_CPMG_SQ, EXP_TYPE_CPMG_MMQ, EXP_TYPE_R1RHO] # Save the index of current model to order of equation type. self.exp_type_i = order_exp_type.index(self.exp_type) @@ -104,74 +105,6 @@ # Make a readable presentation of the class object. Here a tuple. def __repr__(self): return repr((self.model, self.desc, self.exp_type, self.eq, self.sites, self.year, self.params, self.params_nr)) - - -# Define function, to convert/insert 'No Rex' for R1rho off-resonance models, and translates models which miss R1. -def convert_no_rex(self_models=None): - """Determine if any model in the list of all models should be replaced or inserted as the correct 'No Rex' model. - - @keyword self_models: The list of all models analysed. - @type self_models: list of str - @return: The corrected all models list, flag if 'No Rex' model for R1rho off-resonance was translated, flag if 'No Rex' model for R1rho off-resonance was inserted. - @rtype: list of str, bool, bool - """ - - # Flags to return. - no_rex_translated = False - no_rex_inserted = False - - # First check if 'No Rex' model should be converted to 'No Rex R1rho off res' for R1rho off-resonance. - # First remove 'R2eff' model from the list. - self_models_rem_r2eff = filter(partial(ne, MODEL_R2EFF), self_models) - - # Then remove all 'No Rex' model. - self_models_rem_r2eff_norex = filter(partial(ne, MODEL_NOREX), self_models_rem_r2eff) - self_models_rem_r2eff_norex = filter(partial(ne, MODEL_NOREX_R1RHO), self_models_rem_r2eff_norex) - - # Then test if all or any models analysed is R1rho off-resonance models. - all_r1rho_off_res = True - any_r1rho_off_res = False - - # Define the model list which is R1rho off-resonance. - model_list_r1rho_off_res = MODEL_LIST_R1RHO_OFF_RES - - # Loop through models. - for i, model in enumerate(self_models_rem_r2eff_norex): - if model in model_list_r1rho_off_res: - any_r1rho_off_res = True - - else: - all_r1rho_off_res = False - - # In case, only analysing 'R2eff' or 'No Rex' - if len(self_models_rem_r2eff_norex) == 0: - all_r1rho_off_res = False - - # Now either replace or insert MODEL_NOREX_R1RHO. - # If all models is R1rho off resonance. - if all_r1rho_off_res: - # Then test if 'No Rex' is the only 'No Rex' model. - if MODEL_NOREX in self_models and MODEL_NOREX_R1RHO not in self_models: - # Then replace 'No Rex' with 'No Rex R1rho off res' - no_rex_index = self_models.index(MODEL_NOREX) - self_models[no_rex_index] = MODEL_NOREX_R1RHO - - # Change flag. - no_rex_translated = True - - # If some of the models are R1rho off-resonance, and MODEL_NOREX is present but MODEL_NOREX_R1RHO is not present. - elif any_r1rho_off_res: - # Then test if 'No Rex' is the only 'No Rex' model. - if MODEL_NOREX in self_models and MODEL_NOREX_R1RHO not in self_models: - # Then insert 'No Rex R1rho off res' after 'No Rex'. - no_rex_index = self_models.index(MODEL_NOREX) - self_models.insert(no_rex_index + 1, MODEL_NOREX_R1RHO) - - # Change flag. - no_rex_inserted = True - - # Return the model. - return self_models, no_rex_translated, no_rex_inserted # Define function, to return model info. Modified: trunk/specific_analyses/relax_disp/variables.py URL: http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/variables.py?rev=25163&r1=25162&r2=25163&view=diff ============================================================================== --- trunk/specific_analyses/relax_disp/variables.py (original) +++ trunk/specific_analyses/relax_disp/variables.py Thu Aug 21 14:52:20 2014 @@ -1,6 +1,6 @@ ############################################################################### # # -# Copyright (C) 2004-2013 Edward d'Auvergne # +# Copyright (C) 2004-2014 Edward d'Auvergne # # Copyright (C) 2009 Sebastien Morin # # Copyright (C) 2014 Troels E. Linnet # # # @@ -34,7 +34,6 @@ EXP_TYPE_CPMG_PROTON_MQ = '1H MQ CPMG' EXP_TYPE_CPMG_MMQ = 'CPMG: SQ, DQ, MQ, ZQ, 1H SQ, 1H MQ' EXP_TYPE_NOREX = 'No Rex' -EXP_TYPE_NOREX_R1RHO = 'No Rex: R1rho off res' EXP_TYPE_R1RHO = 'R1rho' EXP_TYPE_R2EFF = 'R2eff/R1rho' @@ -84,15 +83,6 @@ 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." -MODEL_PARAMS_NOREX_R1RHO = ['r2'] -# This year is fake. Just to get the order correct. -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_LM63 = 'LM63' MODEL_DESC_LM63 = "The Luz and Meiboom (1963) 2-site fast exchange model for SQ-CPMG experiments." MODEL_PARAMS_LM63 = ['r2', 'phi_ex', 'kex'] @@ -368,12 +358,12 @@ """The list of all dispersion models specifically for numeric R1rho-type experiments which use R1 in their equations (excluding the R2eff model and model 'No Rex').""" #### All off-resonance R1rho models. -MODEL_LIST_R1RHO_OFF_RES = [MODEL_NOREX_R1RHO] + MODEL_LIST_ANALYTIC_R1RHO + MODEL_LIST_NUMERIC_R1RHO +MODEL_LIST_R1RHO_OFF_RES = [MODEL_NOREX] + MODEL_LIST_ANALYTIC_R1RHO + MODEL_LIST_NUMERIC_R1RHO """The list of all dispersion models specifically for R1rho-type experiments which use R1 in their equations (excluding the R2eff model and model 'No Rex').""" ### All R1rho models. #### No Rex model + All R1rho models. -MODEL_LIST_R1RHO = [MODEL_NOREX, MODEL_NOREX_R1RHO, MODEL_NOREX_R1RHO] + MODEL_LIST_R1RHO_ON_RES + MODEL_LIST_ANALYTIC_R1RHO + MODEL_LIST_NUMERIC_R1RHO +MODEL_LIST_R1RHO = [MODEL_NOREX] + MODEL_LIST_R1RHO_ON_RES + MODEL_LIST_ANALYTIC_R1RHO + MODEL_LIST_NUMERIC_R1RHO """The list of all dispersion models specifically for R1rho-type experiments (excluding the R2eff model).""" MODEL_LIST_R1RHO_FULL = [MODEL_R2EFF] + MODEL_LIST_R1RHO @@ -389,7 +379,7 @@ """The list of all numeric models.""" # List of all models. -MODEL_LIST_DISP = [MODEL_NOREX, MODEL_NOREX_R1RHO, MODEL_NOREX_R1RHO] + MODEL_LIST_CPMG_ONLY + MODEL_LIST_R1RHO_ON_RES + MODEL_LIST_R1RHO_OFF_RES + MODEL_LIST_MMQ +MODEL_LIST_DISP = [MODEL_NOREX] + MODEL_LIST_CPMG_ONLY + MODEL_LIST_R1RHO_ON_RES + MODEL_LIST_R1RHO_OFF_RES + MODEL_LIST_MMQ """The list of all dispersion models (excluding the R2eff model).""" MODEL_LIST_FULL = [MODEL_R2EFF] + MODEL_LIST_DISP @@ -409,7 +399,7 @@ """Models using parameters with mixed dw, and has four variables. For example with both dw_AB, dw_BC, dwH_AB and dwH_BC.""" # The models which currently support R1 fitting via target function switching. -MODEL_LIST_FIT_R1 = [MODEL_NOREX_R1RHO, MODEL_DPL94, MODEL_TP02, MODEL_TAP03, MODEL_MP05, MODEL_NS_R1RHO_2SITE] +MODEL_LIST_FIT_R1 = [MODEL_NOREX, MODEL_DPL94, MODEL_TP02, MODEL_TAP03, MODEL_MP05, MODEL_NS_R1RHO_2SITE] # The defined models, which is used for nesting. @@ -433,7 +423,6 @@ # Define order of nesting models for each model. MODEL_NEST_R2EFF = None MODEL_NEST_NOREX = None -MODEL_NEST_NOREX_R1RHO = None MODEL_NEST_LM63 = None MODEL_NEST_LM63_3SITE = [MODEL_LM63] MODEL_NEST_CR72 = MODEL_NEST_LIST_CPMG @@ -466,7 +455,6 @@ MODEL_DESC = { MODEL_R2EFF: MODEL_DESC_R2EFF, MODEL_NOREX: MODEL_DESC_NOREX, - MODEL_NOREX_R1RHO: MODEL_DESC_NOREX_R1RHO, MODEL_LM63: MODEL_DESC_LM63, MODEL_LM63_3SITE: MODEL_DESC_LM63_3SITE, MODEL_CR72: MODEL_DESC_CR72, @@ -499,7 +487,6 @@ MODEL_PARAMS = { MODEL_R2EFF: MODEL_PARAMS_R2EFF, MODEL_NOREX: MODEL_PARAMS_NOREX, - MODEL_NOREX_R1RHO: MODEL_PARAMS_NOREX_R1RHO, MODEL_LM63: MODEL_PARAMS_LM63, MODEL_LM63_3SITE: MODEL_PARAMS_LM63_3SITE, MODEL_CR72: MODEL_PARAMS_CR72, @@ -532,7 +519,6 @@ MODEL_YEAR = { MODEL_R2EFF: MODEL_YEAR_R2EFF, MODEL_NOREX: MODEL_YEAR_NOREX, - MODEL_NOREX_R1RHO: MODEL_YEAR_NOREX_R1RHO, MODEL_LM63: MODEL_YEAR_LM63, MODEL_LM63_3SITE: MODEL_YEAR_LM63_3SITE, MODEL_CR72: MODEL_YEAR_CR72, @@ -565,7 +551,6 @@ MODEL_EXP_TYPE = { MODEL_R2EFF: MODEL_EXP_TYPE_R2EFF, MODEL_NOREX: MODEL_EXP_TYPE_NOREX, - MODEL_NOREX_R1RHO: MODEL_EXP_TYPE_NOREX_R1RHO, MODEL_LM63: MODEL_EXP_TYPE_LM63, MODEL_LM63_3SITE: MODEL_EXP_TYPE_LM63_3SITE, MODEL_CR72: MODEL_EXP_TYPE_CR72, @@ -598,7 +583,6 @@ MODEL_SITES = { MODEL_R2EFF: MODEL_SITES_R2EFF, MODEL_NOREX: MODEL_SITES_NOREX, - MODEL_NOREX_R1RHO: MODEL_SITES_NOREX_R1RHO, MODEL_LM63: MODEL_SITES_LM63, MODEL_LM63_3SITE: MODEL_SITES_LM63_3SITE, MODEL_CR72: MODEL_SITES_CR72, @@ -631,7 +615,6 @@ MODEL_EQ = { MODEL_R2EFF: MODEL_EQ_R2EFF, MODEL_NOREX: MODEL_EQ_NOREX, - MODEL_NOREX_R1RHO: MODEL_EQ_NOREX_R1RHO, MODEL_LM63: MODEL_EQ_LM63, MODEL_LM63_3SITE: MODEL_EQ_LM63_3SITE, MODEL_CR72: MODEL_EQ_CR72, @@ -664,7 +647,6 @@ MODEL_NEST = { MODEL_R2EFF: MODEL_NEST_R2EFF, MODEL_NOREX: MODEL_NEST_NOREX, - MODEL_NOREX_R1RHO: MODEL_NEST_NOREX_R1RHO, MODEL_LM63: MODEL_NEST_LM63, MODEL_LM63_3SITE: MODEL_NEST_LM63_3SITE, MODEL_CR72: MODEL_NEST_CR72,