candidates#
- anri.index.candidates(d, pred, ring_j, pos, scan, dims, k, vb, qc=16, log=<built-in function print>)[source]#
Pick each voxel’s k best orientations by the first MLEM update from unit occupancy.
f1 = A^T(d / A 1) / A^T 1: two passes over every (voxel, orientation), in blocks of vb voxels. Dividing byA 1down-weights crowded cells, as MLEM does.- Parameters:
d (
Array) – [n_cells] histogrampred (
tuple) – (eta, om, use, w), each [Nq, Nj] with Nq a multiple of qcring_j (
Array) – [Nj] ring of each predictionpos (
Array) – [Nv, 3] positions, Nv a multiple of vb (pad_voxels())k (
int) – Candidates per voxelvb (
int) – Voxels per block and orientations per chunkqc (
int, default:16) – Voxels per block and orientations per chunklog (
Callable, default:<built-in function print>) – Progress messages
- Returns:
f1, cand (
jax.Array) – [Nv, k] first-update occupancies and orientation indices