def stack(): rings = masks.radial_bins(centerX=cx, centerY=cy, imageSizeX=detector_x, imageSizeY=detector_y, radius=ro, radius_inner=ri, n_bins=n_bins, use_sparse=use_sparse, dtype=np.complex64) orders = np.arange(max_order + 1) r, phi = masks.polar_map(centerX=cx, centerY=cy, imageSizeX=detector_x, imageSizeY=detector_y) modulator = np.exp(phi * orders[:, np.newaxis, np.newaxis] * 1j) if use_sparse: rings = rings.reshape((rings.shape[0], 1, *rings.shape[1:])) ring_stack = [rings] * len(orders) ring_stack = sparse.concatenate(ring_stack, axis=1) ring_stack *= modulator else: ring_stack = rings[:, np.newaxis, ...] * modulator return ring_stack.reshape((-1, detector_y, detector_x))
def test_radial_bins(): bins = m.radial_bins(35, 37, 80, 80, n_bins=42) assert np.allclose(1, bins.sum(axis=0).todense()) assert bins.shape == (42, 80, 80)
def test_radial_bins_dense(): bins = m.radial_bins(40, 41, 80, 80, n_bins=2) assert np.allclose(1, bins.sum(axis=0)) assert bins.shape == (2, 80, 80)
def test_radial_bins(): bins = m.radial_bins(20, 20, 80, 80, n_bins=23) assert np.allclose(1, bins.sum(axis=0).todense()) assert bins.shape == (23, 80, 80)