Author: bugman
Date: Fri Aug 29 18:37:55 2014
New Revision: 25452
URL: http://svn.gna.org/viewcvs/relax?rev=25452&view=rev
Log:
Created two unit tests showing the target_functions.relax_fit.jacobian_chi2()
function is correct.
This compares the calculated chi-squared Jacobian to the numerically integrated
values from the
test_suite/shared_data/curve_fitting/numeric_topology/jacobian_chi2.py script.
Modified:
trunk/test_suite/unit_tests/_target_functions/test_relax_fit.py
Modified: trunk/test_suite/unit_tests/_target_functions/test_relax_fit.py
URL:
http://svn.gna.org/viewcvs/relax/trunk/test_suite/unit_tests/_target_functions/test_relax_fit.py?rev=25452&r1=25451&r2=25452&view=diff
==============================================================================
--- trunk/test_suite/unit_tests/_target_functions/test_relax_fit.py
(original)
+++ trunk/test_suite/unit_tests/_target_functions/test_relax_fit.py Fri Aug
29 18:37:55 2014
@@ -24,7 +24,7 @@
from unittest import TestCase
# relax module imports.
-from target_functions.relax_fit import setup, func, dfunc, d2func, jacobian
+from target_functions.relax_fit import setup, func, dfunc, d2func, jacobian,
jacobian_chi2
class Test_relax_fit(TestCase):
@@ -173,6 +173,71 @@
self.assertAlmostEqual(matrix[i, j], real[i, j], 3)
+ def test_jacobian_chi2(self):
+ """Unit test for the Jacobian returned by the jacobian_chi2() function
at the minimum.
+
+ This uses the data from
test_suite/shared_data/curve_fitting/numeric_gradient/jacobian_chi2.log.
+ """
+
+ # Get the exponential curve Jacobian.
+ matrix = jacobian_chi2(self.params)
+
+ # The real Jacobian.
+ real = [[ 0.00000000e+00, 0.00000000e+00],
+ [ -3.25440806e-09, 3.25446070e-12],
+ [ 2.09660266e-09, -1.04831421e-12],
+ [ 1.07707223e-10, -3.58994022e-14],
+ [ -5.00778448e-11, 1.25201612e-14]]
+
+ # Numpy conversion.
+ matrix = array(matrix)
+ real = transpose(array(real))
+
+ # Printouts.
+ print("The chi-squared Jacobian at the minimum is:\n%s" % matrix)
+ print("The real chi-squared Jacobian at the minimum is:\n%s" % real)
+
+ # Check that the Jacobian matches the numerically derived values.
+ for i in range(len(matrix)):
+ for j in range(len(matrix[i])):
+ self.assertAlmostEqual(matrix[i, j], real[i, j], 3)
+
+
+ def test_jacobian_chi2_off_minimum(self):
+ """Unit test for the Jacobian returned by the jacobian_chi2() function
at a position away from the minimum.
+
+ This uses the data from
test_suite/shared_data/curve_fitting/numeric_gradient/jacobian_chi2.log.
+ """
+
+ # The off-minimum parameter values.
+ I0 = 500.0
+ R = 2.0
+ params = [R/self.scaling_list[0], I0/self.scaling_list[1]]
+
+ # Get the exponential curve Jacobian.
+ matrix = jacobian_chi2(params)
+
+ # The real Jacobian.
+ real = [[ 0.00000000e+00, -1.00000000e+01],
+ [ 4.06292489e+02, -8.12584978e-01],
+ [ 4.62204173e+01, -4.62204173e-02],
+ [ 3.61013094e+00, -2.40675396e-03],
+ [ 2.43517791e-01, -1.21758895e-04]]
+
+ # Numpy conversion.
+ matrix = array(matrix)
+ real = transpose(array(real))
+
+ # Printout.
+ print("The chi-squared Jacobian at %s is:\n%s" % (params, matrix))
+ print("The real chi-squared Jacobian at the minimum is:\n%s" % real)
+
+ # Check that the Jacobian matches the numerically derived values.
+ for i in range(len(matrix)):
+ for j in range(len(matrix[i])):
+ self.assertAlmostEqual(matrix[i, j], real[i, j], 3)
+
+
def test_jacobian_off_minimum(self):
"""Unit test for the Jacobian returned by the jacobian() function at a
position away from the minimum.
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-commits mailing list
[email protected]
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits