|
14 | 14 | from pynndescent.utils import tau_rand_int, norm
|
15 | 15 | import joblib
|
16 | 16 |
|
| 17 | +from collections import namedtuple |
| 18 | + |
17 | 19 | locale.setlocale(locale.LC_NUMERIC, "C")
|
18 | 20 |
|
19 | 21 | # Used for a floating point "nearly zero" comparison
|
20 | 22 | EPS = 1e-8
|
21 | 23 | INT32_MIN = np.iinfo(np.int32).min + 1
|
22 | 24 | INT32_MAX = np.iinfo(np.int32).max - 1
|
23 | 25 |
|
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"] |
90 | 28 | )
|
91 | 29 |
|
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 |
| - |
160 | 30 | dense_hyperplane_type = numba.float32[::1]
|
161 | 31 | sparse_hyperplane_type = numba.float64[:, ::1]
|
162 | 32 | offset_type = numba.float64
|
|
0 commit comments