Skip to content

Commit dd3b27c

Browse files
committed
Move back to namedtuples for trees
1 parent f2d9a0d commit dd3b27c

File tree

2 files changed

+5
-135
lines changed

2 files changed

+5
-135
lines changed

pynndescent/rp_trees.py

+4-134
Original file line numberDiff line numberDiff line change
@@ -14,149 +14,19 @@
1414
from pynndescent.utils import tau_rand_int, norm
1515
import joblib
1616

17+
from collections import namedtuple
18+
1719
locale.setlocale(locale.LC_NUMERIC, "C")
1820

1921
# Used for a floating point "nearly zero" comparison
2022
EPS = 1e-8
2123
INT32_MIN = np.iinfo(np.int32).min + 1
2224
INT32_MAX = np.iinfo(np.int32).max - 1
2325

24-
25-
@structref.register
26-
class RandomProjectionTreeNodeType(types.StructRef):
27-
pass
28-
29-
30-
class RandomProjectionTreeNode(structref.StructRefProxy):
31-
@property
32-
def graph_indices(self):
33-
return RandomProjectionTreeNode_get_graph_indices(self)
34-
35-
@property
36-
def is_leaf(self):
37-
return RandomProjectionTreeNode_get_is_leaf(self)
38-
39-
@property
40-
def hyperplane(self):
41-
return RandomProjectionTreeNode_get_hyperplane(self)
42-
43-
@property
44-
def offset(self):
45-
return RandomProjectionTreeNode_get_offset(self)
46-
47-
@property
48-
def left_child(self):
49-
return RandomProjectionTreeNode_get_left_child(self)
50-
51-
@property
52-
def right_child(self):
53-
return RandomProjectionTreeNode_get_right_child(self)
54-
55-
56-
@numba.njit
57-
def RandomProjectionTreeNode_get_graph_indices(self):
58-
return self.graph_indices
59-
60-
61-
@numba.njit
62-
def RandomProjectionTreeNode_get_is_leaf(self):
63-
return self.is_leaf
64-
65-
66-
@numba.njit
67-
def RandomProjectionTreeNode_get_hyperplane(self):
68-
return self.hyperplane
69-
70-
71-
@numba.njit
72-
def RandomProjectionTreeNode_get_offset(self):
73-
return self.offset
74-
75-
76-
@numba.njit
77-
def RandomProjectionTreeNode_get_left_child(self):
78-
return self.left_child
79-
80-
81-
@numba.njit
82-
def RandomProjectionTreeNode_get_right_child(self):
83-
return self.right_child
84-
85-
86-
structref.define_proxy(
87-
RandomProjectionTreeNode,
88-
RandomProjectionTreeNodeType,
89-
["graph_indices", "is_leaf", "hyperplane", "offset", "left_child", "right_child"],
26+
FlatTree = namedtuple(
27+
"FlatTree", ["hyperplanes", "offsets", "children", "indices", "leaf_size"]
9028
)
9129

92-
# RandomProjectionTreeNode = namedtuple(
93-
# "RandomProjectionTreeNode",
94-
# ["graph_indices", "is_leaf", "hyperplane", "offset", "left_child", "right_child"],
95-
# )
96-
97-
98-
@structref.register
99-
class FlatTreeType(types.StructRef):
100-
pass
101-
102-
103-
class FlatTree(structref.StructRefProxy):
104-
@property
105-
def hyperplanes(self):
106-
return FlatTree_get_hyperplanes(self)
107-
108-
@property
109-
def offsets(self):
110-
return FlatTree_get_offsets(self)
111-
112-
@property
113-
def children(self):
114-
return FlatTree_get_children(self)
115-
116-
@property
117-
def indices(self):
118-
return FlatTree_get_indices(self)
119-
120-
@property
121-
def leaf_size(self):
122-
return FlatTree_get_leaf_size(self)
123-
124-
125-
@numba.njit
126-
def FlatTree_get_hyperplanes(self):
127-
return self.hyperplanes
128-
129-
130-
@numba.njit
131-
def FlatTree_get_offsets(self):
132-
return self.offsets
133-
134-
135-
@numba.njit
136-
def FlatTree_get_children(self):
137-
return self.children
138-
139-
140-
@numba.njit
141-
def FlatTree_get_indices(self):
142-
return self.indices
143-
144-
145-
@numba.njit
146-
def FlatTree_get_leaf_size(self):
147-
return self.leaf_size
148-
149-
150-
structref.define_proxy(
151-
FlatTree,
152-
FlatTreeType,
153-
["hyperplanes", "offsets", "children", "indices", "leaf_size"],
154-
)
155-
156-
# FlatTree = namedtuple(
157-
# "FlatTree", ["hyperplanes", "offsets", "children", "indices", "leaf_size"]
158-
# )
159-
16030
dense_hyperplane_type = numba.float32[::1]
16131
sparse_hyperplane_type = numba.float64[:, ::1]
16232
offset_type = numba.float64

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def readme():
88

99
configuration = {
1010
"name": "pynndescent",
11-
"version": "0.5.0",
11+
"version": "0.5.1",
1212
"description": "Nearest Neighbor Descent",
1313
"long_description": readme(),
1414
"classifiers": [

0 commit comments

Comments
 (0)