예제 #1
0
# 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)
예제 #2
0
                               #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)
예제 #3
0
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)
예제 #4
0
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)