Author: bugman Date: Wed Jul 30 10:02:45 2008 New Revision: 7029 URL: http://svn.gna.org/viewcvs/relax?rev=7029&view=rev Log: Added the ability to handle missing RDCs. Modified: branches/rdc_analysis/generic_fns/rdc.py branches/rdc_analysis/maths_fns/n_state_model.py Modified: branches/rdc_analysis/generic_fns/rdc.py URL: http://svn.gna.org/viewcvs/relax/branches/rdc_analysis/generic_fns/rdc.py?rev=7029&r1=7028&r2=7029&view=diff ============================================================================== --- branches/rdc_analysis/generic_fns/rdc.py (original) +++ branches/rdc_analysis/generic_fns/rdc.py Wed Jul 30 10:02:45 2008 @@ -646,10 +646,6 @@ if error_col: error = eval(file_data[i][error_col]) - # Skip all rows where the value or error is None. - if value == None or (error_col and error == None): - continue - # Get the corresponding spin container. spin = return_spin(id) if spin == None: Modified: branches/rdc_analysis/maths_fns/n_state_model.py URL: http://svn.gna.org/viewcvs/relax/branches/rdc_analysis/maths_fns/n_state_model.py?rev=7029&r1=7028&r2=7029&view=diff ============================================================================== --- branches/rdc_analysis/maths_fns/n_state_model.py (original) +++ branches/rdc_analysis/maths_fns/n_state_model.py Wed Jul 30 10:02:45 2008 @@ -27,6 +27,7 @@ # relax module imports. from alignment_tensor import dAi_dAxx, dAi_dAyy, dAi_dAxy, dAi_dAxz, dAi_dAyz, to_tensor from chi2 import chi2, dchi2_element, d2chi2_element +from float import isNaN from rdc import ave_rdc_tensor, ave_rdc_tensor_dDij_dAmn, rdc_tensor from rotation_matrix import R_euler_zyz @@ -154,6 +155,13 @@ dAi_dAxz(self.dA[3]) dAi_dAyz(self.dA[4]) + # Missing data matrix. + self.missing_Dij = zeros((self.num_align, self.num_spins), float64) + for i in xrange(self.num_align): + for j in xrange(self.num_spins): + if isNaN(self.Dij[i, j]): + self.missing_Dij[i, j] = 1 + # RDC function, gradient, and Hessian matrices. self.Dij_theta = zeros((self.num_align, self.num_spins), float64) self.dDij_theta = zeros((self.total_num_params, self.num_align, self.num_spins), float64) @@ -355,6 +363,10 @@ for j in xrange(self.num_spins): # Calculate the average RDC. self.Dij_theta[i, j] = ave_rdc_tensor(self.dip_const[j], self.mu[j], self.N, self.A[i], weights=self.probs) + + # Replace missing data with the back calculated value (to give a zero chi-squared for the missing element). + if self.missing_Dij[i, j]: + self.Dij[i, j] = self.Dij_theta[i, j] # Calculate and sum the single alignment chi-squared value. chi2_sum = chi2_sum + chi2(self.Dij[i], self.Dij_theta[i], self.sigma_ij[i])