示例#1
0
文件: fitgrains.py 项目: ddale/hexrd
    def loop(self):
        id, grain_params = self._jobs.get(False)

        # skips the first loop if have_estimate is True
        have_estimate = not np.all(grain_params[-9] == [0,0,0,1,1,1,0,0,0])
        iterations = (have_estimate, len(self._p['eta_tol']))
        for iteration in range(*iterations):
            self.pull_spots(id, grain_params, iteration)
            grain_params, compl = self.fit_grains(id, grain_params)
            if compl == 0:
                break

        eMat = logm(np.linalg.inv(vecMVToSymm(grain_params[6:])))

        dFunc, dParams = self._p['distortion']
        resd = objFuncFitGrain(
            grain_params[gFlag], grain_params, gFlag,
            self._p['detector_params'],
            self._p['xyo_det'], self._p['hkls'],
            self._p['bMat'], self._p['wlen'],
            bVec_ref, eta_ref,
            dFunc, dParams,
            self._p['omega_period'],
            simOnly=False
            )

        self._results.append((id, grain_params, compl, eMat, sum(resd**2)))
        self._jobs.task_done()
示例#2
0
文件: io.py 项目: hsheng94/hexrd-1
    def dump_grain(self, grain_id, completeness, chisq, grain_params):
        assert len(grain_params) == 12, \
            "len(grain_params) must be 12, not %d" % len(grain_params)

        # extract strain
        emat = logm(np.linalg.inv(mutil.vecMVToSymm(grain_params[6:])))
        evec = mutil.symmToVecMV(emat, scale=False)

        res = [int(grain_id), completeness, chisq] \
            + grain_params.tolist() \
            + evec.tolist()
        output_str = self._delim.join([
            self._delim.join(['{:<12d}', '{:<12f}',
                              '{:<12e}']).format(*res[:3]),
            self._delim.join(np.tile('{:<23.16e}',
                                     len(res) - 3)).format(*res[3:])
        ])
        print(output_str, file=self.fid)
        return output_str
示例#3
0
文件: io.py 项目: joelvbernier/hexrd
    def dump_grain(self, grain_id, completeness, chisq,
                   grain_params):
        assert len(grain_params) == 12, \
            "len(grain_params) must be 12, not %d" % len(grain_params)

        # extract strain
        emat = logm(np.linalg.inv(mutil.vecMVToSymm(grain_params[6:])))
        evec = mutil.symmToVecMV(emat, scale=False)

        res = [int(grain_id), completeness, chisq] \
            + grain_params.tolist() \
            + evec.tolist()
        output_str = self._delim.join(
            [self._delim.join(
                ['{:<12d}', '{:<12f}', '{:<12e}']
             ).format(*res[:3]),
             self._delim.join(
                np.tile('{:<23.16e}', len(res) - 3)
             ).format(*res[3:])]
        )
        print(output_str, file=self.fid)
        return output_str
示例#4
0
 def get_e_mat(self, grain_params):
     """
     strain tensor calculation
     """
     return logm(np.linalg.inv(vecMVToSymm(grain_params[6:])))
示例#5
0
 def get_e_mat(self, grain_params):
     """
     strain tensor calculation
     """
     return logm(np.linalg.inv(vecMVToSymm(grain_params[6:])))
示例#6
0
 def get_e_mat(self, grain_params):
     # TODO: document what is this?
     return logm(np.linalg.inv(vecMVToSymm(grain_params[6:])))
示例#7
0
 def get_e_mat(self, grain_params):
     # TODO: document what is this?
     return logm(np.linalg.inv(vecMVToSymm(grain_params[6:])))
示例#8
0
                    fid = open(filename %grainID, 'w')
                    sd = xrdutil.pullSpots(pd, detector_params, g_refined, reader,
                                           distortion=(dFunc, dParams),
                                           eta_range=etaRange, ome_period=ome_period,
                                           tth_tol=tth_tol_r, eta_tol=eta_tol_r, ome_tol=ome_tol_r,
                                           panel_buff=[10, 10],
                                           npdiv=2, threshold=threshold,
                                           use_closest=True, doClipping=False,
                                           filename=fid)
                    fid.close()
                pass
            else:
                g_refined = grain_params
                break
            pass
        eMat = logm(np.linalg.inv(mutil.vecMVToSymm(g_refined[6:])))

        resd_f2 = fitting.objFuncFitGrain(g_refined[gFlag], g_refined, gFlag,
                                          detector_params,
                                          xyo_det, hkls, bMat, wlen,
                                          bVec_ref, eta_ref,
                                          dFunc, dParams,
                                          ome_period,
                                          simOnly=False)
        print >> grains_file, \
          "%d\t%1.7e\t%1.7e\t"                         % (grainID, sum(idx)/float(len(idx)), sum(resd_f2**2)) + \
          "%1.7e\t%1.7e\t%1.7e\t"                      % tuple(g_refined[:3]) + \
          "%1.7e\t%1.7e\t%1.7e\t"                      % tuple(g_refined[3:6]) + \
          "%1.7e\t%1.7e\t%1.7e\t%1.7e\t%1.7e\t%1.7e\t" % tuple(g_refined[6:]) + \
          "%1.7e\t%1.7e\t%1.7e\t%1.7e\t%1.7e\t%1.7e"   % (eMat[0, 0], eMat[1, 1], eMat[2, 2], eMat[1, 2], eMat[0, 2], eMat[0, 1])
        elapsed = (time.clock() - start)