[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