Author: bugman Date: Thu Mar 5 09:53:37 2009 New Revision: 8903 URL: http://svn.gna.org/viewcvs/relax?rev=8903&view=rev Log: Merged revisions 8900-8902 via svnmerge from svn+ssh://bugman@xxxxxxxxxxx/svn/relax/1.3 ........ r8900 | bugman | 2009-03-04 15:33:51 +0100 (Wed, 04 Mar 2009) | 6 lines Changed the way the Q-factor is calculated. The Q-factor is now calculated as Clore's R-factor divided by N. This now matches the Pales default mode. ........ r8901 | bugman | 2009-03-04 15:37:49 +0100 (Wed, 04 Mar 2009) | 3 lines Both Q-factors are now being calculated. ........ r8902 | bugman | 2009-03-04 17:17:28 +0100 (Wed, 04 Mar 2009) | 3 lines Changed the Q-factors tested in the system tests. ........ Modified: branches/bmrb/ (props changed) branches/bmrb/specific_fns/n_state_model.py branches/bmrb/test_suite/system_tests/n_state_model.py Propchange: branches/bmrb/ ------------------------------------------------------------------------------ --- svnmerge-integrated (original) +++ svnmerge-integrated Thu Mar 5 09:53:37 2009 @@ -1,1 +1,1 @@ -/1.3:1-8898 +/1.3:1-8902 Modified: branches/bmrb/specific_fns/n_state_model.py URL: http://svn.gna.org/viewcvs/relax/branches/bmrb/specific_fns/n_state_model.py?rev=8903&r1=8902&r2=8903&view=diff ============================================================================== --- branches/bmrb/specific_fns/n_state_model.py (original) +++ branches/bmrb/specific_fns/n_state_model.py Thu Mar 5 09:53:37 2009 @@ -730,6 +730,7 @@ # Q-factor list. cdp.q_factors_rdc = [] + cdp.q_factors_rdc_norm2 = [] # Loop over the alignments. for i in xrange(len(cdp.align_tensors)): @@ -738,6 +739,8 @@ sse = 0.0 # Spin loop. + dj = None + N = 0 for spin in spin_loop(): # Skip deselected spins. if not spin.select: @@ -750,19 +753,44 @@ # Sum of squares. sse = sse + (spin.rdc[i] - spin.rdc_bc[i])**2 - # Sum the RDCs squared (for normalisation). + # Sum the RDCs squared (for one type of normalisation). D2_sum = D2_sum + spin.rdc[i]**2 + # Gyromagnetic ratios. + gx = return_gyromagnetic_ratio(spin.heteronuc_type) + gh = return_gyromagnetic_ratio(spin.proton_type) + + # Calculate the RDC dipolar constant (in Hertz, and the 3 comes from the alignment tensor), and append it to the list. + dj_new = 3.0/(2.0*pi) * dipolar_constant(gx, gh, spin.r) + if dj and dj_new != dj: + raise RelaxError, "All the RDCs must come from the same nucleus type." + else: + dj = dj_new + + # Increment the number of data sets. + N = N + 1 + + # Normalisation factor of 2Da^2(4 + 3R)/5. + D = dj * cdp.align_tensors[i].tensor_diag + Da = 1.0/3.0 * (D[2,2] - (D[0,0]+D[1,1])/2.0) + Dr = 1.0/3.0 * (D[0,0] - D[1,1]) + R = Dr / Da + norm = 2.0 * (Da)**2 * (4.0 + 3.0*R**2)/5.0 + # The Q-factor for the alignment. - Q = sqrt(sse / D2_sum) + Q = sqrt(sse / N / norm) cdp.q_factors_rdc.append(Q) + cdp.q_factors_rdc_norm2.append(sqrt(sse / D2_sum)) # The total Q-factor. cdp.q_rdc = 0.0 + cdp.q_rdc_norm2 = 0.0 for Q in cdp.q_factors_rdc: cdp.q_rdc = cdp.q_rdc + Q**2 - cdp.q_rdc = cdp.q_rdc / len(cdp.q_factors_rdc) - cdp.q_rdc = sqrt(cdp.q_rdc) + for Q in cdp.q_factors_rdc_norm2: + cdp.q_rdc_norm2 = cdp.q_rdc_norm2 + Q**2 + cdp.q_rdc = sqrt(cdp.q_rdc / len(cdp.q_factors_rdc)) + cdp.q_rdc_norm2 = sqrt(cdp.q_rdc_norm2 / len(cdp.q_factors_rdc_norm2)) def __q_factors_pcs(self): Modified: branches/bmrb/test_suite/system_tests/n_state_model.py URL: http://svn.gna.org/viewcvs/relax/branches/bmrb/test_suite/system_tests/n_state_model.py?rev=8903&r1=8902&r2=8903&view=diff ============================================================================== --- branches/bmrb/test_suite/system_tests/n_state_model.py (original) +++ branches/bmrb/test_suite/system_tests/n_state_model.py Thu Mar 5 09:53:37 2009 @@ -131,7 +131,7 @@ self.assertAlmostEqual(cdp.align_tensors[0].Ayz, -0.000152207413184) self.assertAlmostEqual(cdp.chi2, 783.530808266) self.assertAlmostEqual(cdp.q_pcs, 0.063345784112045375) - self.assertAlmostEqual(cdp.q_rdc, 0.15076645625705937) + self.assertAlmostEqual(cdp.q_rdc, 0.084926009099013003) def test_align_fit_pcs(self): @@ -227,7 +227,7 @@ self.assertAlmostEqual(cdp.align_tensors[0].Axz, 0.00029833) self.assertAlmostEqual(cdp.align_tensors[0].Ayz, -0.00015125) self.assertAlmostEqual(cdp.chi2, 23.5877482365) # Pales: 23.709 - self.assertAlmostEqual(cdp.q_rdc, 0.14049691097282743/2.) # Pales (Q Saupe): 0.079 + self.assertAlmostEqual(cdp.q_rdc, 0.078460000413257444) # Pales (Q Saupe): 0.079 def test_lactose_n_state(self):