[Scipy-svn] r3097 - in trunk/Lib/sandbox/pyem: . tests

scipy-svn at scipy.org scipy-svn at scipy.org
Mon Jun 11 06:34:27 EDT 2007


Author: cdavid
Date: 2007-06-11 05:34:20 -0500 (Mon, 11 Jun 2007)
New Revision: 3097

Modified:
   trunk/Lib/sandbox/pyem/densities.py
   trunk/Lib/sandbox/pyem/tests/test_densities.py
Log:
Add tests for pdf computation in log domain (1st step for logsumexp trick support)

Modified: trunk/Lib/sandbox/pyem/densities.py
===================================================================
--- trunk/Lib/sandbox/pyem/densities.py	2007-06-11 10:12:10 UTC (rev 3096)
+++ trunk/Lib/sandbox/pyem/densities.py	2007-06-11 10:34:20 UTC (rev 3097)
@@ -1,7 +1,7 @@
 #! /usr/bin/python
 #
 # Copyrighted David Cournapeau
-# Last Change: Mon Jun 11 03:00 PM 2007 J
+# Last Change: Mon Jun 11 07:00 PM 2007 J
 """This module implements various basic functions related to multivariate
 gaussian, such as pdf estimation, confidence interval/ellipsoids, etc..."""
 
@@ -119,7 +119,7 @@
     if not log:
         y   = fac * N.exp(y)
     else:
-        y   = y + log(fac)
+        y   += N.log(fac)
 
     return y
     

Modified: trunk/Lib/sandbox/pyem/tests/test_densities.py
===================================================================
--- trunk/Lib/sandbox/pyem/tests/test_densities.py	2007-06-11 10:12:10 UTC (rev 3096)
+++ trunk/Lib/sandbox/pyem/tests/test_densities.py	2007-06-11 10:34:20 UTC (rev 3097)
@@ -1,5 +1,5 @@
 #! /usr/bin/env python
-# Last Change: Mon Jun 11 06:00 PM 2007 J
+# Last Change: Mon Jun 11 07:00 PM 2007 J
 
 # TODO:
 #   - having "fake tests" to check that all mode (scalar, diag and full) are
@@ -72,6 +72,10 @@
         Y   = gauss_den(self.X, self.mu, self.va)
         assert_array_almost_equal(Y, self.Yt, decimal)
 
+    def _test_log(self, level, decimal = DEF_DEC):
+        Y   = gauss_den(self.X, self.mu, self.va, log = True)
+        assert_array_almost_equal(N.exp(Y), self.Yt, decimal)
+
     def test_2d_diag(self, level = 0):
         self._generate_test_data_2d_diag()
         self._test(level)
@@ -80,10 +84,22 @@
         self._generate_test_data_2d_full()
         self._test(level)
     
-    def test_py_1d(self, level = 0):
+    def test_1d(self, level = 0):
         self._generate_test_data_1d()
         self._test(level)
 
+    def test_2d_diag_log(self, level = 0):
+        self._generate_test_data_2d_diag()
+        self._test_log(level)
+
+    def test_2d_full_log(self, level = 0):
+        self._generate_test_data_2d_full()
+        self._test_log(level)
+
+    def test_1d_log(self, level = 0):
+        self._generate_test_data_1d()
+        self._test_log(level)
+
 class test_c_implementation(TestDensities):
     def _test(self, level, decimal = DEF_DEC):
         try:




More information about the Scipy-svn mailing list