Ejemplo n.º 1
0
def test(options):
    gvfile = options.gvfile
    mr = options.max_res
    np = options.np
    nsig = options.nsig
    from ImageD11 import indexing
    print np, mr, nsig
    go = grid(np = np , mr = mr , nsig = nsig)
    io = indexing.indexer()
    io.readgvfile(gvfile)
    go.gv_to_grid_new(io.gv )
    go.fft()
    go.props()
    go.peaksearch(open(gvfile+".patterson_pks","w"))
    im = go.read_peaks(gvfile+".patterson_pks")
    #print "Before reduction", len(go.UBIALL)
    #sys.stdout.flush()
    #ubinew = go.reduce(go.UBIALL)
    #print "After reduction", len(ubinew)
    go.UBIALL = ubinew
    go.slow_score()
    #from matplotlib.pylab import imshow, show
    #imshow(im)
    #show()
    #return im, go
    sys.exit()


    go.gv_to_grid_old(io.gv)

    diff = numpy.ravel(go.grid - go.old_grid)
    print "All OK if this is zero",numpy.add.reduce(diff)
    print "error at",numpy.argmax(diff),diff.max(),numpy.argmin(diff),diff.min()
Ejemplo n.º 2
0
def doindex(gve, x, y, z, w):
    global NUL
    global tmp
    global NPKS
    global UC
    global TOLSEQ
    ss = sys.stdout  # turns of printing
    sys.stdout = NUL
    myindexer = indexing.indexer(wavelength=w, unitcell=UC, gv=gve.T)
    myindexer.ds = np.sqrt((gve * gve).sum(axis=0))
    myindexer.ga = np.zeros(len(myindexer.ds), int) - 1  # Grain assignments
    #   myindexer.readgvfile( gve )

    for ring1 in RING1:
        for ring2 in RING2:
            myindexer.parameterobj.set_parameters({
                'ds_tol': DSTOL,
                'minpks': NPKS,
                'max_grains': 1000,
                'hkl_tol': TOLSEQ[0],
                'ring_1': ring1,
                'ring_2': ring2
            })
            myindexer.loadpars()
            myindexer.assigntorings()
            myindexer.find()
            myindexer.scorethem()
    grains = [grain.grain(ubi, [x, y, z]) for ubi in myindexer.ubis]
    grain.write_grain_file("%s.ubi" % (tmp), grains)
    sys.stdout = ss
    return len(grains)
Ejemplo n.º 3
0
def doindex(gve, x, y, z):
    global NUL
    global tmp
    global NPKS
    ss = sys.stdout  # turns of printing
    #sys.stdout = NUL
    myindexer = indexing.indexer()
    myindexer.readgvfile(gve)
    for ring1 in [1, 0, 2]:
        for ring2 in [1, 0]:
            myindexer.parameterobj.set_parameters({
                'ds_tol': 0.004,
                'minpks': NPKS,
                'max_grains': 1000,
                'hkl_tol': 0.02,
                'ring_1': ring1,
                'ring_2': ring2
            })
            myindexer.loadpars()
            myindexer.assigntorings()
            myindexer.find()
            myindexer.scorethem()
    grains = [grain.grain(ubi, [x, y, z]) for ubi in myindexer.ubis]
    grain.write_grain_file("%s.ubi" % (tmp), grains)
    sys.stdout = ss
    return len(grains)
Ejemplo n.º 4
0
    def __init__(self):
        self.objects = {
            "peakmerger": peakmerge.peakmerger(),
            "transformer": transformer.transformer(),
            "indexer": indexing.indexer(),
            "solver": eps_sig_solver.solver(),
        }

        self.commandscript = \
"""# Create objects to manipulate - they hold your data
Ejemplo n.º 5
0
 def testtwin(self):
     myindexer = indexing.indexer()
     myindexer.readgvfile(os.path.join(os.path.dirname(__file__), 'Al.gve'))
     myindexer.updateparameters()
     myindexer.parameterobj.set_parameters({
         'minpks': 3,
         'ring_1': 20,
         'ring_2': 20
     })
     myindexer.loadpars()
     myindexer.assigntorings()
     myindexer.find()
     myindexer.scorethem()
     self.assertEqual(len(myindexer.ubis), 1)
Ejemplo n.º 6
0
def doindex(gve, x, y, z, w, gridpars):
    """
    Try to index some g-vectors
    """
    NPKS = gridpars['NPKS']
    UC = gridpars['UC']
    TOLSEQ = gridpars['TOLSEQ']
    COSTOL = gridpars['COSTOL']
    DSTOL = gridpars['DSTOL']
    if "2RFIT" in gridpars:
        DOFIT = gridpars['2RFIT']
    else:
        DOFIT = False
    ss = sys.stdout  # turns off printing
    if gridpars['NUL']:
        NUL = open(nulfile, "w")
        sys.stdout = NUL
    myindexer = indexing.indexer(wavelength=w, unitcell=UC, gv=gve.T)
    # added in indexer.__init__
    #myindexer.ds = np.sqrt( (gve * gve).sum(axis=0) )
    #myindexer.ga = np.zeros(len(myindexer.ds),int)-1 # Grain assignments
    for ring1 in gridpars['RING1']:
        for ring2 in gridpars['RING2']:
            myindexer.parameterobj.set_parameters({
                'cosine_tol': COSTOL,
                'ds_tol': DSTOL,
                'minpks': NPKS,
                'max_grains': 1000,
                'hkl_tol': TOLSEQ[0],
                'ring_1': ring1,
                'ring_2': ring2
            })
            myindexer.loadpars()
            myindexer.assigntorings()
            try:
                myindexer.find()
                myindexer.scorethem(fitb4=DOFIT)
            except:
                pass
    # filter out crap
    vol = 1 / np.linalg.det(UC.B)
    grains = [
        grain.grain(ubi, [x, y, z]) for ubi in myindexer.ubis
        if np.linalg.det(ubi) > vol * 0.5
    ]
    if gridpars['NUL']:
        sys.stdout = ss
    return grains
Ejemplo n.º 7
0
 def testtwin(self):
     ss = sys.stdout
     sys.stdout = fake()
     myindexer = indexing.indexer()
     myindexer.readgvfile('Al.gve')
     myindexer.updateparameters()
     myindexer.parameterobj.set_parameters({
         'minpks': 3,
         'ring_1': 20,
         'ring_2': 20
     })
     myindexer.loadpars()
     myindexer.assigntorings()
     myindexer.find()
     myindexer.scorethem()
     sys.stdout = ss
     self.assertEqual(len(myindexer.ubis), 1)
Ejemplo n.º 8
0
 def test12(self):
     ss = sys.stdout
     sys.stdout = fake()
     try:
         myindexer = indexing.indexer()
         myindexer.readgvfile('simAl.gve')
         myindexer.updateparameters()
         myindexer.parameterobj.set_parameters({
             'minpks': '80',
             'ring_1': '0',
             'ring_2': '1',
         })
         myindexer.loadpars()
         myindexer.assigntorings()
         myindexer.find()
         myindexer.scorethem()
         # myindexer.saveubis(  'test.ubi' )
         myindexer.assigntorings()
         # myindexer.saveindexing(  'test.idx' )
         self.assertEqual(len(myindexer.ubis), 20)
     finally:
         sys.stdout = ss
Ejemplo n.º 9
0
from ImageD11 import indexing
import sys
from Numeric import *
from LinearAlgebra import inverse, determinant
from FFT import fftnd, inverse_fftnd
from math import cos, sin, radians, degrees

# test case
if 1:
    # Read in the g-vectors
    io = indexing.indexer()
    io.readgvfile(sys.argv[1])

# Decide on max resolution to use from detector
# higher resolution in reciprocal space = lower in real space
mr = float(sys.argv[2])  # raw_input("Max resolution ?")

cutoff = float(sys.argv[3])
# Array to hold g-vectors on a regular grid
s = 128
g = zeros((s, s, s), Float)

cell_size = s * mr / 2.
print("FFT cell size is 128*mr/2", cell_size)

n_use = 0
n_ignore = 0
import time
start = time.time()
for p in io.gv:
    # compute hkl indices in g grid
Ejemplo n.º 10
0
Archivo: idx.py Proyecto: yns11/tst
import time

start = time.time()
# Create objects to manipulate - they hold your data
#
from ImageD11 import indexing

myindexer = indexing.indexer()
#
# Your work starts here:
#
myindexer.readgvfile('simAl.gve')
myindexer.updateparameters()
myindexer.parameterobj.set_parameters({
    'minpks': '80',
    'ring_1': '0',
    'ring_2': '1',
})
myindexer.loadpars()
myindexer.assigntorings()
myindexer.find()
myindexer.scorethem()
myindexer.saveubis('test.ubi')
myindexer.assigntorings()
print "Time:", time.time() - start
myindexer.saveindexing('test.idx')
print "Time:", time.time() - start
Ejemplo n.º 11
0
def get_eu_gv():
    from ImageD11.indexing import indexer, ubitocellpars
    o = indexer()
    o.readgvfile("eu3.gve", quiet=True)
    return o.gv
Ejemplo n.º 12
0
def grids(flt, tol, npk):
    import os
    mapfile = open(flt.replace("flt", "maptxt"), "a")
    mapfile.write("# %s %f %d\n" % (flt, tol, npk))
    dir = flt.replace(".flt", "_mapdir")
    os.mkdir(dir)
    mytransformer.loadfiltered(flt)
    mytransformer.loadfileparameters('krill.prm')
    mytransformer.updateparameters()

    first = True

    for tx in range(-750, 751, 25):
        for ty in range(-750, 751, 25):
            mytransformer.parameterobj.set_parameters({'t_x': tx, 't_y': ty})

            mytransformer.compute_tth_eta()
            mytransformer.computegv()
            if first:
                mytransformer.savegv('map.gve')
                myindexer = indexing.indexer()
                myindexer.readgvfile('map.gve')
                first = False
            else:
                # Do what readgvfile does...
                # Set grain assignments to blanks
                # Copy in the g-vectors
                gv = np.array([
                    mytransformer.getcolumn("gx"),
                    mytransformer.getcolumn("gy"),
                    mytransformer.getcolumn("gz")
                ]).T
                myindexer.gv = gv
                myindexer.ubis = []
                myindexer.ga = -1 * np.ones((gv.shape[0], ), int)
                myindexer.gvflat = np.reshape(
                    np.fromstring(myindexer.gv.tostring(), float),
                    myindexer.gv.shape)
                # ds for rings
                print(gv.shape)
                myindexer.ds = np.sqrt(gv[:, 0] * gv[:, 0] +
                                       gv[:, 1] * gv[:, 1] +
                                       gv[:, 2] * gv[:, 2])
                myindexer.ds = myindexer.ds.clip(0, 1.25)
                myindexer.scores = []

            myindexer.updateparameters()
            myindexer.parameterobj.set_parameters({
                'hkl_tol': tol,
                'minpks': npk,
                'ds_tol': '0.01',
                'max_grains': '100',
                'uniqueness': '0.5',
                'eta_range': '0.0',
                'ring_1': '3',
                'wavelength': '0.26464',
                'ring_2': '5',
                'cosine_tol': '0.01'
            })
            myindexer.loadpars()
            myindexer.assigntorings()
            myindexer.find()
            myindexer.scorethem()
            mapfile.write("%d %d " % (tx, ty))
            if len(myindexer.scores) > 0:
                myindexer.saveubis(os.path.join(dir, 'x%d_y%d.ubi' % (tx, ty)))

                mapfile.write("%d %d %s\n" %
                              (len(myindexer.scores), max(
                                  myindexer.scores), str(myindexer.scores)))
            else:
                mapfile.write("0  0  []\n")
            mapfile.flush()