Exemplo n.º 1
0
        def func(pos, idx, verts):
            pos = pos[-1]
            for irot in irots:
                to_pos = rots[irot] @ pos
                xtgt = (np.linalg.inv(pos) @ to_pos).astype(np.float64)
                key = binner(xtgt)
                val = _khash_get(hash_vp, key, -9223372036854775808)

                # if missing, no hit
                if val == -9223372036854775808:
                    continue

                # must use same bblock
                ibody = verts[-1].ibblock[idx[-1]]
                ibody0 = np.right_shift(val, 16) % 2**16
                if ibody != ibody0:
                    continue

                # must use different site
                isite0 = np.right_shift(val, 8) % 2**8
                isite1 = val % 2**8
                isite = verts[-1].isite[idx[-1], 0]
                if isite == isite0 or isite == isite1:
                    continue

                return 0
            return 9e9
Exemplo n.º 2
0
 def func(pos, idx, verts):
     xhat = pos[to_seg] @ np.linalg.inv(pos[from_seg])
     xhat = xhat.astype(np.float64)
     filter_key = filter_binner(xhat)
     val = _khash_get(filter_hash_vp, filter_key, -1)
     if val < 0:
         return 9e9
     prev_ivert = decode_indices(prev_vsize, val)[0]
     prev_site = prev_isite[prev_ivert, 1]
     site = verts[-1].isite[idx[-1], 0]
     if prev_site == site:
         return 9e9
     return 0
Exemplo n.º 3
0
            def func(pos, idx, verts):
                xhat = pos[to_seg] @ np.linalg.inv(pos[from_seg])
                xhat = xhat.astype(np.float64)
                filter_key = filter_binner(xhat)
                if _khash_get(filter_hash_vp, filter_key, -1) < 0:
                    return 9e9
                key = binner(xhat.astype(np.float64))

                nverts = np.zeros((len(verts), ), dtype=np.int64)
                for i in range(len(nverts)):
                    nverts[i] = len(verts[i].ibblock)
                index = encode_indices(nverts, idx)

                _khash_set(hash_vp, key, index)
                return 9e9
Exemplo n.º 4
0
def with_khash(fid, values, fetch_ids):
    d = _khash_init()

    fix = 0
    for i in range(fid.shape[0]):
        _khash_set(d, fid[i], fix)
        fix += 1

    s = np.empty_like(fetch_ids, dtype=np.float64)
    for j in range(fetch_ids.shape[0]):
        ii = _khash_get(d, fetch_ids[j], -99)
        s[j] = values[ii]

    _khash_destroy(d)
    return s