[Scipy-tickets] [SciPy] #1052: KDTree.query_pair() leafnode attribute error
SciPy Trac
scipy-tickets@scipy....
Fri Dec 10 16:48:42 CST 2010
#1052: KDTree.query_pair() leafnode attribute error
---------------------------+------------------------------------------------
Reporter: dhelfman | Owner: peridot
Type: defect | Status: needs_review
Priority: high | Milestone:
Component: scipy.spatial | Version: devel
Keywords: |
---------------------------+------------------------------------------------
Changes (by WeatherGod):
* cc: ben.v.root@… (added)
* priority: normal => high
Comment:
I can explain the source of the bug. The problem is that when the number
of points is less than the size of a leaf node, then the tree building
process will create a "leafnode" type, which indicates that it is a tip of
the tree structure. Leaves that are split are "innernode" leaf types,
which have the 'less' and 'greater' methods to recursively evaluate its
branches.
In normal situations, the root node is of type innernode because we are
usually dealing with many diverse sets of points. Only if the number of
points is smaller than some nodesize value, or if all of the points are
identical will the root node be a leafnode.
So, in this case, if the points are close enough then the code normally
proceeds to continue traversing the leaves. However, if the root node is
a leafnode, then you can not traverse the leaves. Putting the checks for
isinstance(leafnode) first makes a lot of sense and seems to work well for
me.
In my opinion, this patch should be pushed out. Note, that there may
still be similar issues in some of the other functions, as I have not
checked.
--
Ticket URL: <http://projects.scipy.org/scipy/ticket/1052#comment:2>
SciPy <http://www.scipy.org>
SciPy is open-source software for mathematics, science, and engineering.
More information about the Scipy-tickets
mailing list