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()
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
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
def get_e_mat(self, grain_params): """ strain tensor calculation """ return logm(np.linalg.inv(vecMVToSymm(grain_params[6:])))
def get_e_mat(self, grain_params): # TODO: document what is this? return logm(np.linalg.inv(vecMVToSymm(grain_params[6:])))
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)