コード例 #1
0
ファイル: rsv_mapper.py プロジェクト: mkutsal/ImageD11
    def make_k_vecs(self):
        """
        Generate the k vectors from the experiment parameters
        given in constructor
        """
        xim, yim = self.spatial.make_pixel_lut(self.dims)
        peaks = [numpy.ravel(xim), numpy.ravel(yim)]
        # First, x, is the slow pixel direction, should not change
        # when raveled
        #for i in range(10):
        #    print "slow, fast"
        #    print peaks[0][i],peaks[1][i]
        assert abs(peaks[0][10] - peaks[0][0]) < 3
        # Second, y, is the fast, should change by ~ 1 pixel per pixel
        assert abs(peaks[1][10] - peaks[1][0] - 10) < 3
        tth, eta = transform.compute_tth_eta(peaks,
                                             **self.pars.get_parameters())
        self.k = transform.compute_k_vectors(tth, eta,
                                             self.pars.get('wavelength'))

        # FIXME
        # This should be something like domega/dk where
        #      dk [ k(omega=0) - k(omega=1) ]

        self.lorfac = numpy.ones(self.dims[0] * self.dims[1], numpy.float32)
コード例 #2
0
ファイル: test_gv_general.py プロジェクト: yns11/tst
 def test_0_0_0(self):
     """ wedge, chi = 0 """
     SANITY = False
     om = np.zeros(self.np, np.float)
     g_old = transform.compute_g_vectors(self.tth,
                                         self.eta,
                                         om,
                                         self.wvln,
                                         wedge=0.0,
                                         chi=0.0)
     if SANITY: print g_old.shape, g_old[:, 0]
     k = transform.compute_k_vectors(self.tth, self.eta, self.wvln)
     if SANITY: print "k=", k[:, 0]
     g_new = gv_general.k_to_g(k, om)
     if SANITY: print g_new.shape, g_new[:, 0]
     if SANITY: print "end routine"
     self.assertAlmostEqual(array_diff(g_new, g_old), 0, 6)
コード例 #3
0
ファイル: testwripaca.py プロジェクト: jonwright/wripaca
def testhklcalc_many(wedge, chi):
    # hklcalc_many
    # apply wedge, chi to axis if necessary

    axis = np.array( [0,0,-1], np.float )
    UBI = np.eye(3).ravel()
    hkl = np.zeros( (len(omega), 3), np.float)
    XL = np.ones( (len(omega), 3), np.float)*1e3
    T = np.array([100,200,300],np.float)
    wvln = 0.254
    pre = np.eye(3).ravel()
    post = gv_general.chiwedge( wedge=wedge, chi=chi ).ravel()
    kc = XL.copy()
    wripaca.hklcalc_many( XL, axis,  omega*np.pi/180, UBI, T, pre, post, hkl, wvln, kc)
    print "axis is",axis
    t, e = transform.compute_tth_eta_from_xyz( XL.T,
        t_x = T[0],
        t_y = T[1],
        t_z = T[2],
        omega = omega,
        wedge = wedge,
        chi = chi
        )
    #print t,e,omega
    ori = transform.compute_grain_origins( omega, wedge=wedge, chi=chi, 
        t_x  = T[0], t_y = T[1], t_z = T[2] )
    print "last origin",ori.T[-1],ori.T[0]
    print "last xl",XL[-1],XL[0]
    kve = transform.compute_k_vectors( t, e, wvln )
    print "last k",kve.T[-1],kve.T[0]
    gve = transform.compute_g_vectors( t, e, omega, wvln, wedge=wedge, chi=chi )
    print "last g",gve.T[-1],gve.T[0]
    htest = np.dot( UBI.reshape(3,3), gve )
    for i in range(len(t)):
        #        print gve[:,i]
        # print hkl[i]

        if ((gve[:,i]-hkl[i])**2).sum() > 1e-10:
            print "FAIL",
            print i,gve[:,i],hkl[i],((gve[:,i]-hkl[i])**2).sum() 
            print wedge,chi
            sys.exit()
    
    print "OK for wedge",wedge,"chi",chi
コード例 #4
0
 def test_0_0(self):
     """ wedge, chi = 0 """
     SANITY = False
     if SANITY: print("*" * 80)
     om = np.zeros(self.np, np.float)
     g_old = transform.compute_g_vectors(self.tth,
                                         self.eta,
                                         self.omega,
                                         self.wvln,
                                         wedge=0.0,
                                         chi=0.0)
     if SANITY: print(g_old.shape, g_old[:, :3])
     k = transform.compute_k_vectors(self.tth, self.eta, self.wvln)
     if SANITY: print("k=", k[:, :3])
     g_new = gv_general.k_to_g(k, self.omega, axis=[0, 0, -1])
     if SANITY: print(g_new.shape, g_new[:, :3])
     if SANITY: print("end routine")
     if SANITY: print("*" * 80)
     self.assertAlmostEqual(array_diff(g_new, g_old), 0, 6)
コード例 #5
0
ファイル: test_gv_general.py プロジェクト: yns11/tst
 def test_25_30(self):
     """ wedge, chi = 25,30 """
     w, c = 25, 30
     SANITY = False
     if SANITY: print "*" * 80
     om = np.zeros(self.np, np.float)
     g_old = transform.compute_g_vectors(self.tth,
                                         self.eta,
                                         self.omega,
                                         self.wvln,
                                         wedge=w,
                                         chi=c)
     if SANITY: print g_old.shape, "\n", g_old[:, :3]
     k = transform.compute_k_vectors(self.tth, self.eta, self.wvln)
     if SANITY: print "k=", k[:, :3]
     post = gv_general.chiwedge(chi=c, wedge=w)
     g_new = gv_general.k_to_g(k, self.omega, axis=[0, 0, -1], post=post)
     if SANITY: print g_new.shape, g_new[:, :3]
     if SANITY: print "end routine"
     if SANITY: print "*" * 80
     self.assertAlmostEqual(array_diff(g_new, g_old), 0, 6)
コード例 #6
0
ファイル: diffgeo.py プロジェクト: younes-elhachi/ImageD11
def test1():
    np.random.seed(42)
    w = 40 / 12.
    nv = 1024 * 1024
    xyz = 1e5 * (np.random.random((nv, 3)) + (0.2, -0.5, -0.5)).T
    old = []
    new = []
    for i in range(5):
        start = timer()
        t, e = compute_tth_eta_from_xyz(xyz, None)
        k = compute_k_vectors(t, e, w)
        old.append(timer() - start)
        knew = k_from_xyz(xyz, w)
        start = timer()
        ok = np.allclose(k, knew)
        new.append(timer() - start)
    if ok:
        print("Matches", nv)
    else:
        print("Fails")
    print("old perf", np.min(old), np.mean(old), np.std(old))
    print("new perf", np.min(new), np.mean(new), np.std(new))
    print("speedup", np.min(old) / np.min(new))