# data path = os.path.join(os.getenv('HOME'), 'data', '171dec08') obsrvtry = 'STEREO_A' time_window = ['2008-12-01T00:00:00.000', '2008-12-03T00:00:00.000'] # one image every time_step seconds time_step = 4 * 3600. data = siddon.secchi.read_data(path, bin_factor=4, obsrvtry=obsrvtry, time_window=time_window, time_step=time_step) # cube shape = 3 * (128,) header = {'CRPIX1':64., 'CRPIX2':64., 'CRPIX3':64., 'CDELT1':0.0234375, 'CDELT2':0.0234375, 'CDELT3':0.0234375, 'CRVAL1':0., 'CRVAL2':0., 'CRVAL3':0.,} cube = fa.zeros(shape, header=header) # model P = siddon.siddon_lo(data.header, cube.header) D = [lo.diff(cube.shape, axis=i) for i in xrange(cube.ndim)] hypers = cube.ndim * (1e0, ) # inversion t = time.time() A = P.T * P + np.sum([h * d.T * d for h, d in zip(hypers, D)]) b = P.T * data.flatten() #callback = lo.iterative.CallbackFactory(verbose=True) #x, info = spl.bicgstab(A, b, maxiter=100, callback=callback) x, info = lo.acg(P, data.flatten(), D, hypers, maxiter=100,) sol = cube.copy() sol[:] = x.reshape(cube.shape) print(time.time() - t)
#time_window=time_window, #time_step=time_step ) # errors in data ... data.header['BITPIX'][:] = -64 data[np.isnan(data)] = 0. data.header['RSUN'] /= 16. # cube shape = np.asarray(3 * (128. ,)) crpix = shape / 2. cdelt = 6. / shape crval = np.zeros(3) header = {'CRPIX1':crpix[0], 'CRPIX2':crpix[1], 'CRPIX3':crpix[2], 'CDELT1':cdelt[0], 'CDELT2':cdelt[1], 'CDELT3':cdelt[2], 'CRVAL1':0., 'CRVAL2':0., 'CRVAL3':0.,} cube = fa.zeros(shape, header=header) t = time.time() cube = tomograpy.backprojector(data, cube, obstacle="sun") print("backprojection time : " + str(time.time() - t)) # inversion t = time.time() u = .5 kwargs={ "obj_rmin":1.5, "obj_rmax":3., "data_rmin":1.5, "data_rmax":2.5, "mask_negative":True } P, D, obj_mask, data_mask = tomograpy.models.thomson(data, cube, u, **kwargs)
import time import siddon import fitsarray as fa # data path = os.path.join(os.getenv('HOME'), 'data', '171dec08') obsrvtry = 'STEREO_A' time_window = ['2008-12-01T00:00:00.000', '2008-12-03T00:00:00.000'] time_step = 4 * 3600. # one image every time_step seconds data = siddon.secchi.read_data(path, bin_factor=4, obsrvtry=obsrvtry, time_window=time_window, time_step=time_step) # cube shape = 3 * (128,) header = dict() for i in xrange(1, 4): header['CRPIX' + str(i)] = 64. header['CDELT' + str(i)] = 0.0234375 header['CRVAL' + str(i)] = 0. cube = fa.zeros(shape, header=header, dtype=np.float32) P = siddon.siddon_sun_lo(data.header, cube.header) t = time.time() fbp = (P.T * data.flatten()).reshape(cube.shape) print("backprojection time : " + str(time.time() - t)) t = time.time() fbp0 = siddon.backprojector_sun(data, cube) print("backprojection time : " + str(time.time() - t)) #assert np.all(fbp == fbp0)
import time import tomograpy import fitsarray as fa # data path = os.path.join(os.getenv('HOME'), 'data', '171dec08') obsrvtry = 'STEREO_A' time_window = ['2008-12-01T00:00:00.000', '2008-12-03T00:00:00.000'] time_step = 4 * 3600. # one image every time_step seconds data = tomograpy.secchi.read_data(path, bin_factor=4, obsrvtry=obsrvtry, time_window=time_window, time_step=time_step) # cube shape = 3 * (128,) header = dict() for i in xrange(1, 4): header['CRPIX' + str(i)] = 64. header['CDELT' + str(i)] = 0.0234375 header['CRVAL' + str(i)] = 0. cube = fa.zeros(shape, header=header, dtype=np.float32) P = tomograpy.sun_lo(data.header, cube.header) t = time.time() fbp = (P.T * data.flatten()).reshape(cube.shape) print("backprojection time : " + str(time.time() - t)) t = time.time() fbp0 = tomograpy.backprojector_sun(data, cube) print("backprojection time : " + str(time.time() - t)) #assert np.all(fbp == fbp0)