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"
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
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
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
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