Author: semor Date: Mon Jan 7 20:03:39 2008 New Revision: 4466 URL: http://svn.gna.org/viewcvs/relax?rev=4466&view=rev Log: Modified the consistency tests math_fns code. This is a copy of the 1.2 line code without the 'cos' import and with updated copyrights. Modified: branches/consistency_tests_1.3/maths_fns/consistency_tests.py Modified: branches/consistency_tests_1.3/maths_fns/consistency_tests.py URL: http://svn.gna.org/viewcvs/relax/branches/consistency_tests_1.3/maths_fns/consistency_tests.py?rev=4466&r1=4465&r2=4466&view=diff ============================================================================== --- branches/consistency_tests_1.3/maths_fns/consistency_tests.py (original) +++ branches/consistency_tests_1.3/maths_fns/consistency_tests.py Mon Jan 7 20:03:39 2008 @@ -27,14 +27,30 @@ from ri_comps import calc_fixed_csa, calc_fixed_dip, comp_csa_const_func, comp_dip_const_func -class Mapping: +class Consistency: def __init__(self, frq=None, gx=None, gh=None, mu0=None, h_bar=None): - """Reduced spectral density mapping.""" + """Consistency tests for data acquired at different magnetic fields. + + These three tests are used to assess the consistency of datasets aquired at different + magnetic fields. Inconsistency can affect extracted information from experimental data and + can be caused by variations in temperature, concentration, pH, water suppression, etc. + + This code calculates three functions for each residue. When comparing datasets from + different magnetic field, the value should be the same for each function as these are field + independent. The J(0) function is the spectral density at the zero frequency and is obtained + using a reduced spectral density approach. The F_eta and F_R2 functions are the + consistency functions proposed by Fushman D. et al. (1998) JACS, 120: 10947-10952. + + To assess the consistency of its datasets, one should first calculate those values (J(0), + F_eta and F_R2) for each field. Then, the user should compare values obtained for different + magnetic fields. Comparisons could proceed using correlation plots and histograms, and the + user could also calculate correlation, skewness and kurtosis coefficients. + """ # Initialise the data container. self.data = Data() - # Add the initial data to self.data + # Add the initial data to self.data. self.data.gx = gx self.data.gh = gh self.data.mu0 = mu0 @@ -68,10 +84,10 @@ return (noe - 1.0) * r1 * self.data.gx / self.data.gh - def func(self, r=None, csa=None, r1=None, r2=None, noe=None): - """Function for calculating the three spectal density values. + def func(self, orientation=None, tc=None, r=None, csa=None, r1=None, r2=None, noe=None): + """Function for calculating the three consistency testing values. - Three values are returned, J(0), J(wX), and J(wH) (or J(0.87wH)). + Three values are returned, J(0), F_eta and F_R2. """ # Calculate the fixed component of the dipolar and CSA constants. @@ -95,11 +111,35 @@ # Calculate J(wX). jwx = 1.0 / (3.0*d + c) * (r1 - 1.4*sigma_noe) - # Calculate J(wH). - jwh = sigma_noe / (5.0*d) + # Calculate P_2. + # p_2 is a second rank Legendre polynomial as p_2(x) = 0.5 * (3 * (x ** 2) -1) + # where x is the cosine of the angle Theta when expressed in radians. + # + # Note that the angle Theta (called 'orientation' in relax) is the angle between the 15N-1H + # vector and the principal axis of the 15N chemical shift tensor. + p_2 = 0.5 * ((3.0 * (cos(orientation * pi / 180)) ** 2) -1) + + # Calculate eta. + # eta is the cross-correlation rate between 15N CSA and 15N-1H dipolar interaction. It is + # expressed here as proposed in Fushman D. & Cowburn D. (1998) JACS, 120: 7109-7110. + eta = ((d * c) ** 0.5) * (4.0 * j0 + 3.0 * jwx) * p_2 + + # Calculate F_eta. + # F_eta is independent of the magnetic field for residues with local mobility + f_eta = eta * self.data.gh / (self.data.frq_list[0, 3] * (4.0 + 3.0 / (1 + (self.data.frq_list[0, 1] * tc) ** 2))) + + # Calculate P_HF. + # P_HF is the contribution to R2 from high frequency motions. + # P_HF = 0.5 * d * [J(wH-wN) + 6 * J(wH) + 6 * J(wH+wN)]. + # Here, P_HF is described using a reduced spectral density approach. + p_hf = 1.3 * (self.data.gx / self.data.gh) * (1.0 - noe) * r1 + + # Calculate F_R2. + # F_R2 tests the consistency of the transverse relaxation data. + f_r2 = (r2 - p_hf) / ((4.0 + 3.0 / (1 + (self.data.frq_list[0, 1] * tc) ** 2)) * (d + c/3.0)) # Return the three values. - return j0, jwx, jwh + return j0, f_eta, f_r2 class Data: