MCPcopy Create free account
hub / github.com/dblalock/bolt / set_data

Method set_data

python/bolt/bolt_api.py:285–312  ·  view source on GitHub ↗
(self, X)

Source from the content-addressed store, hash-verified

283 assert np.allclose(centroids, cpp_centroids)
284
285 def set_data(self, X):
286 self.X = X
287 self.X_enc = _encode_X_pq(X, self.centroids)
288 ncodebooks = self.centroids.shape[1]
289 enc_offsets = np.arange(ncodebooks, dtype=np.int) * 16
290
291 self._encoder.set_data(X)
292 raw_Xenc = self._encoder.codes()
293 assert 2 * raw_Xenc.shape[1] == ncodebooks
294 cpp_Xenc = np.empty((raw_Xenc.shape[0], ncodebooks), dtype=np.uint8)
295 # cpp returns codes in bitpacked form, so unpack them
296 for in_j, out_j in enumerate(range(0, ncodebooks, 2)):
297 col = raw_Xenc[:, in_j]
298 cpp_Xenc[:, out_j] = np.bitwise_and(col, 15)
299 for in_j, out_j in enumerate(range(1, ncodebooks, 2)):
300 col = raw_Xenc[:, in_j]
301 cpp_Xenc[:, out_j] = np.bitwise_and(col, 255 - 15) >> 4
302
303 # print "python X enc"
304 # print self.X_enc.shape
305 # print self.X_enc[:20]
306 # print "cpp X enc"
307 # print cpp_Xenc.shape
308 # print cpp_Xenc[:20]
309 # print "raw cpp X_enc"
310 # print raw_Xenc[:20]
311
312 self.X_enc += enc_offsets
313
314 def set_offsets(self, offsets):
315 assert self.scale > 0

Callers

nothing calls this directly

Calls 4

codesMethod · 0.80
_encode_X_pqFunction · 0.70
set_dataMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected