Esempio n. 1
0
File: latred.py Progetto: yns11/tst
def test_fft():
    gv = get_eu_gv()
    from ImageD11.fft_index_refac import grid
    from ImageD11.indexing import ubitocellpars, write_ubi_file,\
        refine
    g = grid( np = 128,
              mr = 1.0,
              nsig = 20,
              minlen = 3. )
    g.gv_to_grid_new(gv)
    g.fft()
    g.props()
    g.peaksearch(open("eu.patterson_pks","w"))
    g.read_peaks("eu.patterson_pks")
    vecs = g.UBIALL
    order = argsort( g.colfile.sum_intensity )[::-1]
    min_pks = 300
    try:
        for i in order:
            print vecs[i], g.colfile.sum_intensity[i]
            for j in order[i:]:
                for k in order[j:]:
                    print i,j,k
                    try:
                        l = lattice( vecs[i], vecs[j], vecs[k],
                                     space='real')
                        t = 0.1
                        ref = refine( l.vi, gv, t)
                        l = lattice( ref[0], ref[1], ref[2], space='real')
                        print "UBI:"
                        print l.vi
                        print ubitocellpars(l.vi)
                        s = l.score_recip( gv , t )
                        print "Indexes",s ,"at tolerance",t
                    
                    except:
                        import traceback
                        print traceback.print_exc()
                        raise Exception("error")
                    if s > min_pks:
                        write_ubi_file( "trial.ubi", [ l.vi ] )
                        raise Exception("Really bad control structure")
    except:
        import traceback
        print traceback.print_exc()
        print "Got something"
Esempio n. 2
0
def test_fft():
    gv = get_eu_gv()
    from ImageD11.fft_index_refac import grid
    from ImageD11.indexing import ubitocellpars, write_ubi_file,\
        refine
    g = grid(np=128, mr=1.0, nsig=20)
    g.gv_to_grid_new(gv)
    g.fft()
    g.props()
    g.peaksearch(open("eu.patterson_pks", "w"))
    g.read_peaks("eu.patterson_pks")
    vecs = rc_array(g.UBIALL.T, direction='col')
    assert vecs.shape == (3, g.colfile.nrows)
    order = argsort(g.colfile.sum_intensity)[::-1]
    vecs = take(vecs, order, axis=1)
    min_pks = 300
    ntry = 0

    assert g.gv.shape[1] == 3
    tv = rc_array(g.gv, direction='row')
    print "Finding lattice l1 from patterson"
    l1 = find_lattice(vecs, min_vec2=9, test_vecs=tv, n_try=20)
    print "r2c == ubi matrix"
    print l1.r2c
    print "scores", l1.score(tv)
    print "cell", ubitocellpars(l1.r2c)
    l1.r2c = refine(l1.r2c, g.gv, tol=0.1)
    l1.c2r = inv(l1.r2c)
    print "With refine", l1.score(tv)
    print "cell", ubitocellpars(l1.r2c)
    print "Finding lattice l2 with gvectors to test"
    l2 = find_lattice(vecs, min_vec2=9, n_try=20, test_vecs=tv)
    print "r2c == ubi matrix"
    print l2.r2c
    print "scores", l2.score(tv)
    print "cell", ubitocellpars(l2.r2c)
    l2.r2c = refine(l2.r2c, g.gv, tol=0.1)
    l2.c2r = inv(l2.r2c)
    print "With refine", l2.score(tv)
    print "cell", ubitocellpars(l2.r2c)
    return
Esempio n. 3
0
    all_gvecs = rc_array.rc_array(sorted.copy(), direction='row')
    cur_gvecs = rc_array.rc_array(sorted.copy(), direction='row')

    ubis = []

    try:
        for i in range(options.ngrains):
            if len(cur_gvecs) < 3:
                print "Ran out of unindexed peaks"
                break

            # print "Peak remaining",len(cur_gvecs)
            if options.use_fft:
                # do fft
                g = grid(np=options.np, mr=options.mr, nsig=options.nsig)
                g.gv_to_grid_new(cur_gvecs)
                g.fft()
                g.props()
                g.peaksearch(open("eu.patterson_pks", "w"))
                g.read_peaks("eu.patterson_pks")
                vecs = rc_array.rc_array(g.UBIALL.T, direction='col')
                assert vecs.shape == (3, g.colfile.nrows)
                order = np.argsort(g.colfile.sum_intensity)[::-1]
                vecs = rc_array.rc_array(np.take(vecs, order, axis=1),
                                         direction='col')
                assert g.gv.shape[1] == 3
                print "Finding lattice from patterson"
                # Go through and make a shortlist of lattices by scoring fft only
                if options.score_fft:
                    test_set = vecs
Esempio n. 4
0
    all_gvecs = rc_array.rc_array(sorted.copy(), direction='row')
    cur_gvecs = rc_array.rc_array(sorted.copy(), direction='row')

    ubis = []

    try:
        for i in range(options.ngrains):
            if len(cur_gvecs) < 3:
                print("Ran out of unindexed peaks")
                break

            # print "Peak remaining",len(cur_gvecs)
            if options.use_fft:
                # do fft
                g = grid(npx=options.npx, mr=options.mr, nsig=options.nsig)
                g.gv_to_grid_new(cur_gvecs)
                g.fft()
                g.props()
                g.peaksearch(open("eu.patterson_pks", "w"))
                g.read_peaks("eu.patterson_pks")
                vecs = rc_array.rc_array(g.UBIALL.T, direction='col')
                assert vecs.shape == (3, len(g.UBIALL))
                order = np.argsort(g.colfile.sum_intensity)[::-1]
                vecs = rc_array.rc_array(np.take(vecs, order, axis=1),
                                         direction='col')
                assert g.gv.shape[1] == 3
                print("Finding lattice from patterson")
                # Go through and make a shortlist of lattices by scoring fft only
                if options.score_fft:
                    test_set = vecs
Esempio n. 5
0
import numpy as np
from ImageD11 import indexing, fft_index_refac

o = indexing.indexer()
o.readgvfile("test.vecs")
g = fft_index_refac.grid(128, 1., 5.)
g.gv_to_grid_new(o.gv)
g.fft()
g.props()
g.peaksearch("pairFFT.pks")
g.read_peaks("pairFFT.pks")
tol = 0.1
tol2 = tol * tol


def refine_vector(v, gv, tol=0.25, ncycles=25, precision=1e-6):
    """
    Input
    v  :  real space lattice vector
    gv : scattering vectors (no errors)
    tol : tolerance for initial assignment to peak
    ncycles : how much to refine
    precision : when to stop refining in v += s when |s|/|v| < precision
    Returns
    vref : refined real space lattice vector

    Uses:
    hr = v[0]*gv[i,0] + v[0]*gv[i,1] + v[1]*gv[i,2]  1 per peak
    hi = round(hr) = calc                            1 per peak
    diff = calc - hr                                 1 per peak
    gradient = d(diff)/dv[i] = gv[j,i]               3 per peak