Author: bugman Date: Mon Oct 8 19:56:55 2012 New Revision: 17767 URL: http://svn.gna.org/viewcvs/relax?rev=17767&view=rev Log: Fix for the reading of relax 1.2 model-free results files for the diffusion tensor structure redesign. Modified: branches/tensor_data/specific_fns/model_free/results.py Modified: branches/tensor_data/specific_fns/model_free/results.py URL: http://svn.gna.org/viewcvs/relax/branches/tensor_data/specific_fns/model_free/results.py?rev=17767&r1=17766&r2=17767&view=diff ============================================================================== --- branches/tensor_data/specific_fns/model_free/results.py (original) +++ branches/tensor_data/specific_fns/model_free/results.py Mon Oct 8 19:56:55 2012 @@ -23,7 +23,6 @@ """Module for the creation and processing of model-free results files.""" # Python module imports. -from data.diff_tensor import DiffTensorSimList from math import pi from numpy import float64, array, transpose from re import search @@ -626,7 +625,7 @@ file_data = file_data[1:] # Sort the column numbers. - col = self._read_col_numbers(header) + col = self._read_1_2_col_numbers(header) # Test the file. if len(col) < 2: @@ -660,6 +659,20 @@ # Sequence. self._generate_sequence(file_line, col, verbosity) + # Count the number of simulations. + for file_line in file_data: + # The data set. + data_set = file_line[col['data_set']] + + # Simulation number. + if data_set != 'value' and data_set != 'error': + # Extract the number from the data_set string. + sim_num = data_set.split('_') + try: + sim_num = int(sim_num[1]) + except: + raise RelaxError("The simulation number '%s' is invalid." % sim_num) + cdp.sim_number = sim_num + 1 # Loop over the lines of the file data. for file_line in file_data: @@ -744,17 +757,21 @@ # Diffusion tensor data. if data_set == 'value' and not diff_data_set: - self._set_diff_tensor(file_line, col, data_set, verbosity) + self._read_1_2_set_diff_tensor(file_line, col, data_set, verbosity, sim_num=sim_num) diff_data_set = True # Diffusion tensor errors. elif data_set == 'error' and not diff_error_set: - self._set_diff_tensor(file_line, col, data_set, verbosity) + self._read_1_2_set_diff_tensor(file_line, col, data_set, verbosity, sim_num=sim_num) diff_error_set = True # Diffusion tensor simulation data. elif data_set != 'value' and data_set != 'error' and sim_num != diff_sim_set: - self._set_diff_tensor(file_line, col, data_set, verbosity) + # Set up the diffusion tensor. + if not hasattr(cdp.diff_tensor, '_sim_num') or cdp.diff_tensor._sim_num == None: + cdp.diff_tensor.set_sim_num(cdp.sim_number) + + self._read_1_2_set_diff_tensor(file_line, col, data_set, verbosity, sim_num=sim_num) diff_sim_set = sim_num # Model type. @@ -789,7 +806,7 @@ cdp.sim_state = False - def _read_col_numbers(self, header): + def _read_1_2_col_numbers(self, header): """Determine the column indices from the header line. @param header: The header line. @@ -911,19 +928,19 @@ return col - def _set_diff_tensor(self, spin_line, col, data_set, verbosity=1): + def _read_1_2_set_diff_tensor(self, spin_line, col, data_set, verbosity=1, sim_num=None): """Set up the diffusion tensor. @param spin_line: The line of data for a single spin. @type spin_line: list of str @param col: The column indices. @type col: dict of int - @param data_set: The data set type, one of 'value', 'error', or 'sim_xxx' (where xxx is - a number). + @param data_set: The data set type, one of 'value', 'error', or 'sim_xxx' (where xxx is a number). @type data_set: str - @keyword verbosity: A variable specifying the amount of information to print. The higher - the value, the greater the verbosity. + @keyword verbosity: A variable specifying the amount of information to print. The higher the value, the greater the verbosity. @type verbosity: int + @keyword sim_num: The Monte Carlo simulation index. + @type sim_num: int or None """ # The diffusion tensor type. @@ -955,16 +972,12 @@ # Errors. elif data_set == 'error': - cdp.diff.tm_err = tm + cdp.diff_tensor.set(param='tm', value=tm, category='err') # Simulation values. else: - # Create the data structure if it doesn't exist. - if not hasattr(cdp.diff_tensor, 'tm_sim'): - cdp.diff.tm_sim = DiffTensorSimList('tm', cdp.diff_tensor) - - # Append the value. - cdp.diff_tensor.tm_sim.append(tm) + # Set the value. + cdp.diff_tensor.set(param='tm', value=tm, category='sim', sim_index=sim_num) # Spheroid. @@ -989,28 +1002,18 @@ # Errors. elif data_set == 'error': - cdp.diff_tensor.tm_err = tm - cdp.diff_tensor.Da_err = Da - cdp.diff_tensor.theta_err = theta - cdp.diff_tensor.phi_err = phi + cdp.diff_tensor.set(param='tm', value=tm, category='err') + cdp.diff_tensor.set(param='Da', value=Da, category='err') + cdp.diff_tensor.set(param='theta', value=theta, category='err') + cdp.diff_tensor.set(param='phi', value=phi, category='err') # Simulation values. else: - # Create the data structure if it doesn't exist. - if not hasattr(cdp.diff, 'tm_sim'): - cdp.diff_tensor.tm_sim = DiffTensorSimList('tm', cdp.diff_tensor) - if not hasattr(cdp.diff, 'Da_sim'): - cdp.diff_tensor.Da_sim = DiffTensorSimList('Da', cdp.diff_tensor) - if not hasattr(cdp.diff, 'theta_sim'): - cdp.diff_tensor.theta_sim = DiffTensorSimList('theta', cdp.diff_tensor) - if not hasattr(cdp.diff, 'phi_sim'): - cdp.diff_tensor.phi_sim = DiffTensorSimList('phi', cdp.diff_tensor) - - # Append the value. - cdp.diff_tensor.tm_sim.append(tm) - cdp.diff_tensor.Da_sim.append(Da) - cdp.diff_tensor.theta_sim.append(theta) - cdp.diff_tensor.phi_sim.append(phi) + # Set the values. + cdp.diff_tensor.set(param='tm', value=tm, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='Da', value=Da, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='theta', value=theta, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='phi', value=phi, category='sim', sim_index=sim_num) # Ellipsoid. @@ -1037,37 +1040,22 @@ # Errors. elif data_set == 'error': - cdp.diff_tensor.tm_err = tm - cdp.diff_tensor.Da_err = Da - cdp.diff_tensor.Dr_err = Dr - cdp.diff_tensor.alpha_err = alpha - cdp.diff_tensor.beta_err = beta - cdp.diff_tensor.gamma_err = gamma + cdp.diff_tensor.set(param='tm', value=tm, category='err') + cdp.diff_tensor.set(param='Da', value=Da, category='err') + cdp.diff_tensor.set(param='Dr', value=Dr, category='err') + cdp.diff_tensor.set(param='alpha', value=alpha, category='err') + cdp.diff_tensor.set(param='beta', value=beta, category='err') + cdp.diff_tensor.set(param='gamma', value=gamma, category='err') # Simulation values. else: - # Create the data structure if it doesn't exist. - if not hasattr(cdp.diff_tensor, 'tm_sim'): - cdp.diff_tensor.tm_sim = DiffTensorSimList('tm', cdp.diff_tensor) - if not hasattr(cdp.diff_tensor, 'Da_sim'): - cdp.diff_tensor.Da_sim = DiffTensorSimList('Da', cdp.diff_tensor) - if not hasattr(cdp.diff_tensor, 'Dr_sim'): - cdp.diff_tensor.Dr_sim = DiffTensorSimList('Dr', cdp.diff_tensor) - if not hasattr(cdp.diff_tensor, 'alpha_sim'): - cdp.diff_tensor.alpha_sim = DiffTensorSimList('alpha', cdp.diff_tensor) - if not hasattr(cdp.diff_tensor, 'beta_sim'): - cdp.diff_tensor.beta_sim = DiffTensorSimList('beta', cdp.diff_tensor) - if not hasattr(cdp.diff_tensor, 'gamma_sim'): - cdp.diff_tensor.gamma_sim = DiffTensorSimList('gamma', cdp.diff_tensor) - - # Append the value. - cdp.diff_tensor.tm_sim.append(tm) - cdp.diff_tensor.Da_sim.append(Da) - cdp.diff_tensor.Dr_sim.append(Dr) - cdp.diff_tensor.alpha_sim.append(alpha) - cdp.diff_tensor.beta_sim.append(beta) - cdp.diff_tensor.gamma_sim.append(gamma) - + # Set the values. + cdp.diff_tensor.set(param='tm', value=tm, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='Da', value=Da, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='Dr', value=Dr, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='alpha', value=alpha, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='beta', value=beta, category='sim', sim_index=sim_num) + cdp.diff_tensor.set(param='gamma', value=gamma, category='sim', sim_index=sim_num) # Set the diffusion tensor. if data_set == 'value' and diff_type: