ringModel.l1_ratio = 1
ringModel.max_iters = 500
ringModel.compute_lipschitz(A0_stack)

synth_image_list = []
for j in range(3):
    synth_image = np.zeros((num_rad, num_theta))
    for i in range(5):
        rand_t = random.randint(0, num_var_t - 1)
        rand_r = random.randint(0, num_var_r - 1)
        rand_theta = random.randint(0, num_theta - 1)
        rand_rad = random.randint(0, num_rad - 1)

        synth_image += 10 * random.random() * EM.gaussian_basis_wrap_2D(
            num_theta, dtheta, rand_theta, var_theta[rand_t], num_rad, drad,
            rand_rad, var_rad[rand_r]).reshape((num_rad, num_theta))
    synth_image_list.append(synth_image)

partial_fit = partial(RM.fit_circulant_FISTA_Multiprocess,
                      ringModel=ringModel,
                      A0_stack=A0_stack,
                      positive=1,
                      benchmark=1,
                      verbose=1)

rm_test = partial_fit(synth_image_list[0])
print(rm_test.times)

pool = multiprocessing.Pool(processes=3)
ringModels_synth = pool.map(partial_fit, synth_image_list)
Example #2
0
r_coord = np.transpose(r_coord)

theta_coord = theta.copy()
for i in range(num_r - 1):
    theta_coord = np.vstack((theta_coord, theta))

#%% Stack up a bunch of test images shiftes in theta using 2D gaussian basis
m_r = num_r / 2
m_theta = np.linspace(0, num_theta, num_r)
v_r = num_r / 2
v_theta = num_theta / 2
images = np.zeros((num_theta, 0))
for j in range(num_r):
    dr = 1
    dtheta = 1
    B = EM.gaussian_basis_wrap_2D(num_theta, dtheta, m_theta[j], v_theta,
                                  num_r, dr, m_r, v_r)
    img = B.reshape((num_theta, num_r))
    images = np.append(images, img, 1)
plt.imshow(images)

#%% Test 2D convolution to generate 2D shifted Gaussian basis functions
num_r = 500
num_theta = 500
v_r = num_r / 2
v_theta = num_theta / 2
m_r = 0
m_theta = 0
dr = 1
dtheta = 1
B0 = EM.gaussian_basis_wrap_2D(num_theta, dtheta, m_theta, v_theta, num_r, dr,
                               m_r, v_r).reshape((num_theta, num_r))
reload(EM)
num_var_t = 15
num_var_r = 10
var_theta = np.linspace((dtheta), (np.pi / 32), num_var_t)**2
var_rad = np.linspace(drad, 3, num_var_r)**2

# Generate unshifted basis function for each variance combination

#Store stack of image slices
B0_stack = np.zeros((num_rad, num_theta, num_var_t, num_var_r))
for t in range(num_var_t):
    for r in range(num_var_r):
        m_r = 0
        m_theta = 0
        B0 = EM.gaussian_basis_wrap_2D(num_theta, dtheta, m_theta,
                                       var_theta[t], num_rad, drad, m_r,
                                       var_rad[r]).reshape(
                                           (num_rad, num_theta))
        B0_stack[:, :, t, r] = B0

B0_stack_ft = np.zeros(B0_stack.shape)
for tv in range(num_var_t):
    for rv in range(num_var_r):
        B0_stack_ft[:, :, tv, rv] = np.fft.fft2(B0_stack[:, :, tv, rv])

# Fit 2D data
l1_ratio = 1
max_iters = 500

#plt.figure(1)
#plt.imshow(8000*B0_stack[:,:,12,9],cmap='jet', interpolation='nearest',vmin=0,vmax=200)