Changeset 1593
- Timestamp:
- Dec 3, 2014 12:31:01 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r1591 r1593 2084 2084 self.PeakTable = [] 2085 2085 self.LimitsTable = [] 2086 self.ifX20 = True #use M20 /= (1+X20) 2086 2087 self.HKL = [] 2087 2088 self.Lines = [] -
trunk/GSASIIindex.py
r1592 r1593 260 260 return X 261 261 262 def findMV(peaks,controls,ssopt,Inst ):262 def findMV(peaks,controls,ssopt,Inst,dlg): 263 263 264 264 def Val2Vec(vec,Vref,values): … … 268 268 if r: 269 269 if values.size > 1: 270 Vec.append( values[i])270 Vec.append(max(0.0,min(1.0,values[i]))) 271 271 else: 272 Vec.append( values)272 Vec.append(max(0.0,min(1.0,values))) 273 273 i += 1 274 274 else: … … 276 276 return np.array(Vec) 277 277 278 def ZSSfunc(values,peaks,dmin,Inst,SGData,SSGData,vec,Vref,maxH,A,wave,Z ):278 def ZSSfunc(values,peaks,dmin,Inst,SGData,SSGData,vec,Vref,maxH,A,wave,Z,dlg=None): 279 279 Vec = Val2Vec(vec,Vref,values) 280 280 HKL = G2pwd.getHKLMpeak(dmin,Inst,SGData,SSGData,Vec,maxH,A) … … 282 282 Qo = 1./Peaks[-2]**2 283 283 Qc = G2lat.calc_rDsqZSS(Peaks[4:8],A,Vec,Z,Peaks[0],wave) 284 return np.sum((Qo-Qc)**2) 284 chi = np.sum((Qo-Qc)**2) 285 if dlg: 286 dlg.Pulse() 287 return chi 285 288 286 289 if 'C' in Inst['Type'][0]: … … 302 305 Peaks = np.copy(np.array(peaks).T) 303 306 result = so.brute(ZSSfunc,ranges,finish=so.fmin_cg, 304 args=(peaks,dmin,Inst,SGData,SSGData,ssopt['ModVec'],Vref,ssopt['maxH'],A,wave,Z ))307 args=(peaks,dmin,Inst,SGData,SSGData,ssopt['ModVec'],Vref,ssopt['maxH'],A,wave,Z,dlg)) 305 308 return Val2Vec(ssopt['ModVec'],Vref,result) 306 309 … … 357 360 if N == 0: return False,Peaks 358 361 if len(peaks[0]) == 9: #add m column if missing 359 for peak in Peaks: 360 peak.insert(7,0) 362 Peaks = np.insert(Peaks,7,np.zeros_like(Peaks.T[0]),axis=1) 363 # for peak in Peaks: 364 # peak.insert(7,0) 361 365 hklds = list(np.array(HKL).T[4])+[1000.0,0.0,] 362 366 hklds.sort() # ascending sort - upper bound at end -
trunk/GSASIIpwdGUI.py
r1592 r1593 2175 2175 UnitCellsId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Unit Cells List') 2176 2176 SPGlist = G2spc.spglist 2177 ifX20 = True2178 2177 bravaisSymb = ['Fm3m','Im3m','Pm3m','R3-H','P6/mmm','I4/mmm', 2179 2178 'P4/mmm','Fmmm','Immm','Cmmm','Pmmm','C2/m','P2/m','P1'] … … 2208 2207 2209 2208 def OnIfX20(event): 2210 ifX20 = x20.GetValue()2209 G2frame.ifX20 = x20.GetValue() 2211 2210 2212 2211 def OnStartVol(event): … … 2241 2240 return 2242 2241 ssopt['Use'] = SSopt.GetValue() 2242 if 'ssSymb' not in ssopt: 2243 ssopt.update({'ssSymb':'(abg)','ModVec':[0.1,0.1,0.1],'maxH':1}) 2243 2244 wx.CallAfter(UpdateUnitCellsGrid,G2frame,data) 2244 2245 … … 2248 2249 modS = G2spc.splitSSsym(ssopt['ssSymb'])[0] 2249 2250 ssopt['ModVec'] = G2spc.SSGModCheck(Vec,modS)[0] 2251 print ' Selecting: ',controls[13],ssopt['ssSymb'], 'maxH:',ssopt['maxH'] 2250 2252 OnHklShow(event) 2251 2253 wx.CallAfter(UpdateUnitCellsGrid,G2frame,data) … … 2276 2278 def OnMaxMH(event): 2277 2279 ssopt['maxH'] = int(maxMH.GetValue()) 2280 print ' Selecting: ',controls[13],ssopt['ssSymb'], 'maxH:',ssopt['maxH'] 2278 2281 OnHklShow(event) 2279 2282 2280 2283 def OnFindMV(event): 2281 2284 Peaks = np.copy(peaks[0]) 2282 ssopt['ModVec'] = G2indx.findMV(Peaks,controls,ssopt,Inst) 2285 print ' Trying: ',controls[13],ssopt['ssSymb'], 'maxH:',ssopt['maxH'] 2286 dlg = wx.ProgressDialog('Elapsed time','Modulation vector search', 2287 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE) 2288 try: 2289 ssopt['ModVec'] = G2indx.findMV(Peaks,controls,ssopt,Inst,dlg) 2290 finally: 2291 dlg.Destroy() 2283 2292 OnHklShow(event) 2284 2293 wx.CallAfter(UpdateUnitCellsGrid,G2frame,data) … … 2517 2526 G2frame.ErrorDialog('Error','No Bravais lattices selected') 2518 2527 return 2519 if not peaks[0]:2528 if not len(peaks[0]): 2520 2529 G2frame.ErrorDialog('Error','Index Peak List is empty') 2521 2530 return … … 2525 2534 G2frame.dataFrame.CopyCell.Enable(False) 2526 2535 G2frame.dataFrame.RefineCell.Enable(False) 2527 OK,dmin,newcells = G2indx.DoIndexPeaks(peaks[0],controls,bravais, ifX20)2536 OK,dmin,newcells = G2indx.DoIndexPeaks(peaks[0],controls,bravais,G2frame.ifX20) 2528 2537 cells = keepcells+newcells 2529 2538 cells = G2indx.sortM20(cells) 2530 cells[0][10] = True #select best M202531 2539 if OK: 2540 cells[0][10] = True #select best M20 2532 2541 data = [controls,bravais,cells,dmin,ssopt] 2533 2542 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Unit Cells List'),data) … … 2544 2553 G2frame.dataFrame.IndexPeaks.Enable(True) 2545 2554 G2frame.dataFrame.MakeNewPhase.Enable(True) 2546 wx.CallAfter(UpdateUnitCellsGrid,G2frame,data) 2555 G2frame.ifX20 = True 2556 wx.CallAfter(UpdateUnitCellsGrid,G2frame,data) 2547 2557 2548 2558 def RefreshUnitCellsGrid(event): … … 2601 2611 dlg.Destroy() 2602 2612 if G2frame.dataDisplay: 2603 print G2frame.dataDisplay.GetScrollPos(wx.VERTICAL)2604 2613 G2frame.dataFrame.DestroyChildren() 2605 2614 G2frame.dataDisplay = wxscroll.ScrolledPanel(G2frame.dataFrame) … … 2660 2669 littleSizer.Add(startVol,0,WACV) 2661 2670 x20 = wx.CheckBox(G2frame.dataDisplay,label='Use M20/(X20+1)?') 2662 x20.SetValue( ifX20)2671 x20.SetValue(G2frame.ifX20) 2663 2672 x20.Bind(wx.EVT_CHECKBOX,OnIfX20) 2664 2673 littleSizer.Add(x20,0,WACV) … … 2758 2767 ssSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Mod. vector: '),0,WACV) 2759 2768 modS = G2spc.splitSSsym(ssopt['ssSymb'])[0] 2760 Vec = ssopt['ModVec'] 2761 Vec,ifShow = G2spc.SSGModCheck(Vec,modS) 2769 ssopt['ModVec'],ifShow = G2spc.SSGModCheck(ssopt['ModVec'],modS) 2762 2770 Indx = {} 2763 for i,[val,show] in enumerate(zip( Vec,ifShow)):2771 for i,[val,show] in enumerate(zip(ssopt['ModVec'],ifShow)): 2764 2772 if show: 2765 2773 valSizer = wx.BoxSizer(wx.HORIZONTAL)
Note: See TracChangeset
for help on using the changeset viewer.