Esempio n. 1
0
    ndsets = np.int(sys.argv[1])
    nth = np.int(sys.argv[2])
    fname = sys.argv[3]
    center = np.float(sys.argv[4])

    binning = 1
    data = np.zeros([ndsets * nth, 1, 2448 // pow(2, binning)],
                    dtype='float32')
    theta = np.zeros(ndsets * nth, dtype='float32')
    for k in range(ndsets):
        data[k * nth:(k + 1) *
             nth] = np.load(fname + 'fw_bin' + str(binning) + str(k) +
                            '.npy').astype('float32')[:, 1224 //
                                                      pow(2, binning):1224 //
                                                      pow(2, binning) + 1]
        theta[k * nth:(k + 1) * nth] = np.load(fname + '_theta' + str(k) +
                                               '.npy').astype('float32')
    data[np.isnan(data)] = 0
    data = data[:400]
    theta = theta[:400]
    ngpus = 1
    pprot = data.shape[0]
    nitercg = 32
    pnz = 1
    res = tomoalign.pcg(data, theta, pprot, pnz, center / pow(2, binning),
                        ngpus, nitercg)
    dxchange.write_tiff(res['u'][0],
                        fname + '/results_cg_centersp' + str(data.shape[0]) +
                        '/u/r' + str(center),
                        overwrite=True)
Esempio n. 2
0
                            '.npy').astype('float32')
        theta[k * nth:(k + 1) * nth] = np.load(fname + '_theta' + str(k) +
                                               '.npy').astype('float32')
    data[np.isnan(data)] = 0
    # data = data[1200,512:]
    # theta=theta[:1200]
    #print(len(np.unique(theta[:])))
    #exit()
    # # data = data[:, 512:]
    # for k in range(15):
    #     print(theta[k*100:(k+1)*100])
    # exit()

    # #theta=np.sort(theta%(2*np.pi))

    # print(np.min(theta[1::2]-theta[0::2]))
    # print(np.max(theta[1::2]-theta[0::2]))

    # exit()

    ngpus = 4
    pprot = 1200
    nitercg = 64
    pnz = 8
    center = centers[fname] / 2

    res = tomoalign.pcg(data, theta, pprot, pnz, center, ngpus, nitercg)
    dxchange.write_tiff_stack(res['u'],
                              fname + '/results_pcgr_new1200/u/r',
                              overwrite=True)
Esempio n. 3
0
    nz, n, _ = u.shape

    # parameters
    center = n / 2
    ntheta = 384
    ne = 3 * n // 2
    ngpus = 1
    pnz = nz // 4
    theta = np.linspace(0, 4 * np.pi, ntheta).astype('float32')
    # cg
    niter = 32
    init = u * 0
    pprot = 192
    # simulate data
    with tomoalign.SolverTomo(theta, ntheta, nz, n, pnz, center,
                              ngpus) as tslv:
        data = tslv.fwd_tomo_batch(u)
        u = tslv.cg_tomo_batch(data, init, niter)

    dxchange.write_tiff(u, 'data/cg/u', overwrite=True)

    res = tomoalign.pcg(data,
                        theta,
                        pprot,
                        pnz,
                        center,
                        ngpus,
                        niter,
                        padding=False)
    dxchange.write_tiff(res['u'], 'data/cg/upcg', overwrite=True)