[Scipy-svn] r7020 - in trunk/scipy/spatial: . tests

scipy-svn at scipy.org scipy-svn at scipy.org
Mon Jan 10 09:32:56 EST 2011


Author: rgommers
Date: 2011-01-10 08:32:55 -0600 (Mon, 10 Jan 2011)
New Revision: 7020

Modified:
   trunk/scipy/spatial/kdtree.py
   trunk/scipy/spatial/tests/test_kdtree.py
Log:
BUG: spatial.kdtree.query_pair() fix. Closes #1052. Thanks to Stefan vd Walt.

Modified: trunk/scipy/spatial/kdtree.py
===================================================================
--- trunk/scipy/spatial/kdtree.py	2010-12-22 04:05:46 UTC (rev 7019)
+++ trunk/scipy/spatial/kdtree.py	2011-01-10 14:32:55 UTC (rev 7020)
@@ -592,12 +592,8 @@
                 # This node pair will be visited in the other order
                 #return
                 pass
-            if rect1.min_distance_rectangle(rect2, p)>r/(1.+eps):
-                return
-            elif rect1.max_distance_rectangle(rect2, p)<r*(1.+eps):
-                traverse_no_checking(node1.less, node2)
-                traverse_no_checking(node1.greater, node2)
-            elif isinstance(node1, KDTree.leafnode):
+
+            if isinstance(node1, KDTree.leafnode):
                 if isinstance(node2, KDTree.leafnode):
                     d = self.data[node2.idx]
                     for i in node1.idx:
@@ -614,6 +610,11 @@
                 less, greater = rect1.split(node1.split_dim, node1.split)
                 traverse_checking(node1.less,less,node2,rect2)
                 traverse_checking(node1.greater,greater,node2,rect2)
+            elif rect1.min_distance_rectangle(rect2, p)>r/(1.+eps):
+                return
+            elif rect1.max_distance_rectangle(rect2, p)<r*(1.+eps):
+                traverse_no_checking(node1.less, node2)
+                traverse_no_checking(node1.greater, node2)
             else:
                 less1, greater1 = rect1.split(node1.split_dim, node1.split)
                 less2, greater2 = rect2.split(node2.split_dim, node2.split)

Modified: trunk/scipy/spatial/tests/test_kdtree.py
===================================================================
--- trunk/scipy/spatial/tests/test_kdtree.py	2010-12-22 04:05:46 UTC (rev 7019)
+++ trunk/scipy/spatial/tests/test_kdtree.py	2011-01-10 14:32:55 UTC (rev 7020)
@@ -467,6 +467,9 @@
     yield check_onetree_query, T, 0.00001
     yield check_onetree_query, T, 1e-6
 
+def test_query_pairs_single_node():
+    tree = KDTree([[0, 1]])
+    assert_equal(tree.query_pairs(0.5), set())
 
 if __name__=="__main__":
     run_module_suite()




More information about the Scipy-svn mailing list