Author: tlinnet Date: Mon Aug 18 16:20:33 2014 New Revision: 25048 URL: http://svn.gna.org/viewcvs/relax?rev=25048&view=rev Log: Added a "check" function, what will determine if R1 data is missing for a model to analyse. Also added corresponding unit tests, to test the functionality. Modified: trunk/specific_analyses/relax_disp/checks.py trunk/test_suite/unit_tests/_specific_analyses/_relax_disp/test_checks.py Modified: trunk/specific_analyses/relax_disp/checks.py URL: http://svn.gna.org/viewcvs/relax/trunk/specific_analyses/relax_disp/checks.py?rev=25048&r1=25047&r2=25048&view=diff ============================================================================== --- trunk/specific_analyses/relax_disp/checks.py (original) +++ trunk/specific_analyses/relax_disp/checks.py Mon Aug 18 16:20:33 2014 @@ -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 +from specific_analyses.relax_disp.variables import EXP_TYPE_LIST_CPMG, EXP_TYPE_LIST_R1RHO, MODEL_LIST_R1RHO_W_R1_ONLY def check_c_modules(): @@ -178,6 +178,30 @@ raise RelaxFuncSetupError(specific_analyses.setup.get_string(function_type)) +def check_missing_r1(model=None): + """Check if R1 data is missing for the model. + + @keyword model: The model to test for. + @type model: str + @return: Return True if R1 data is not available for the model. + @rtype: bool + """ + + # Check that the model uses R1 data. + if model in MODEL_LIST_R1RHO_W_R1_ONLY: + # If R1 ids are present. + if hasattr(cdp, 'ri_ids'): + return False + + # If not present. + else: + return True + + # If model does not need R1. + else: + return False + + def check_relax_times(): """Check if the spectrometer frequencies have been set up. Modified: trunk/test_suite/unit_tests/_specific_analyses/_relax_disp/test_checks.py URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/unit_tests/_specific_analyses/_relax_disp/test_checks.py?rev=25048&r1=25047&r2=25048&view=diff ============================================================================== --- trunk/test_suite/unit_tests/_specific_analyses/_relax_disp/test_checks.py (original) +++ trunk/test_suite/unit_tests/_specific_analyses/_relax_disp/test_checks.py Mon Aug 18 16:20:33 2014 @@ -25,8 +25,10 @@ # relax module imports. from data_store import Relax_data_store; ds = Relax_data_store() -from pipe_control import state -from specific_analyses.relax_disp.checks import get_times +from pipe_control import mol_res_spin, pipes, relax_data, spectrometer, state +from specific_analyses.relax_disp.checks import check_missing_r1, get_times +from specific_analyses.relax_disp.data import set_exp_type +from specific_analyses.relax_disp.variables import MODEL_DPL94, MODEL_R2EFF from status import Status; status = Status() from test_suite.unit_tests.base_classes import UnitTestCase @@ -39,6 +41,74 @@ # Create a dispersion data pipe. ds.add(pipe_name='orig', pipe_type='relax_disp') + + + def set_up_spins(self, pipe_name=None): + """Function for setting up a few spins for the given pipe.""" + + # Alias the pipe. + pipe = pipes.get_pipe(pipe_name) + + # Path to file. + data_path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'Kjaergaard_et_al_2013' + + # File with spins. + file = open(data_path+sep+'R1_fitted_values.txt') + lines = file.readlines() + file.close() + + for i, line in enumerate(lines): + # Make the string test + line_split = line.split() + + if line_split[0] == "#": + continue + + mol_name = line_split[0] + mol_name = None + res_num = int(line_split[1]) + res_name = line_split[2] + spin_num = line_split[3] + spin_num = None + spin_name = line_split[4] + + # Create the spin. + mol_res_spin.create_spin(spin_num=spin_num, spin_name=spin_name, res_num=res_num, res_name=res_name, mol_name=mol_name, pipe=pipe_name) + + + def test_check_missing_r1(self): + """Unit test of the check_missing_r1() function.""" + + # Set up some spins. + self.set_up_spins(pipe_name='orig') + + # Set variables. + exp_type = 'R1rho' + frq = 800.1 * 1E6 + + # Set an experiment type to the pipe. + set_exp_type(spectrum_id='test', exp_type=exp_type) + + # Set a frequency to loop through. + spectrometer.set_frequency(id='test', frq=frq, units='Hz') + + # Check R1 for DPL94. + check_missing_r1_return = check_missing_r1(model=MODEL_DPL94) + self.assertEqual(check_missing_r1_return, True) + + # Check R1 for R2eff. + check_missing_r1_return = check_missing_r1(model=MODEL_R2EFF) + self.assertEqual(check_missing_r1_return, False) + + # The path to the data files. + data_path = status.install_path + sep+'test_suite'+sep+'shared_data'+sep+'dispersion'+sep+'Kjaergaard_et_al_2013' + + # Now load some R1 data. + relax_data.read(ri_id='R1', ri_type='R1', frq=cdp.spectrometer_frq_list[0], file='R1_fitted_values.txt', dir=data_path, mol_name_col=1, res_num_col=2, res_name_col=3, spin_num_col=4, spin_name_col=5, data_col=6, error_col=7) + + # Check R1. + check_missing_r1_return = check_missing_r1(model=MODEL_DPL94) + self.assertEqual(check_missing_r1_return, False) def test_get_times_cpmg(self):