Changeset 1787
- Timestamp:
- Apr 13, 2015 12:59:34 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASIIgrid.py
r1784 r1787 144 144 ] = [wx.NewId() for item in range(12)] 145 145 146 [ wxID_SELECTPHASE,wxID_PWDHKLPLOT,wxID_PWD3DHKLPLOT, wxID_REJECTHKL,wxID_CLEARREJECT,147 ] = [wx.NewId() for item in range( 5)]146 [ wxID_SELECTPHASE,wxID_PWDHKLPLOT,wxID_PWD3DHKLPLOT, 147 ] = [wx.NewId() for item in range(3)] 148 148 149 149 [ wxID_PDFCOPYCONTROLS, wxID_PDFSAVECONTROLS, wxID_PDFLOADCONTROLS, … … 1485 1485 self.ReflEdit.Append(id=wxID_PWD3DHKLPLOT,kind=wx.ITEM_NORMAL,text='Plot 3D HKLs', 1486 1486 help='Plot HKLs from powder pattern in 3D') 1487 self.RejectHKL = self.ReflEdit.Append(id=wxID_REJECTHKL,kind=wx.ITEM_NORMAL,text='Reject HKL toggle',1488 help='Reject selected HKL toggle; make mul *= -1')1489 self.ClearReject = self.ReflEdit.Append(id=wxID_CLEARREJECT,kind=wx.ITEM_NORMAL,text='Clear rejects',1490 help='Clear all rejected HKLs')1491 1487 self.PostfillDataMenu() 1492 1488 … … 2255 2251 data['max cyc'] = 3 2256 2252 data['F**2'] = False 2257 data['minF/sig'] = 02258 2253 if 'shift factor' not in data: 2259 2254 data['shift factor'] = 1. … … 2262 2257 if 'F**2' not in data: 2263 2258 data['F**2'] = False 2264 data['minF/sig'] = 02265 2259 if 'Author' not in data: 2266 2260 data['Author'] = 'no name' … … 2274 2268 data['Copy2Next'] = False 2275 2269 if 'Reverse Seq' not in data: 2276 data['Reverse Seq'] = False 2270 data['Reverse Seq'] = False 2271 if 'UsrReject' not in data: 2272 data['UsrReject'] = {'minF/sig':0,'MinExt':0.01,'MaxDF/F':20.,'MaxD':500.,'MinD':0.05} 2277 2273 2278 2274 … … 2366 2362 data['F**2'] = fsqRef.GetValue() 2367 2363 2368 def OnMinSig(event): 2364 def OnUsrRej(event): 2365 Obj = event.GetEventObject() 2366 item,limits = Indx[Obj] 2369 2367 try: 2370 value = min(max(float( minSig.GetValue()),0.),5.)2368 value = min(max(float(Obj.GetValue()),limits[0]),limits[1]) 2371 2369 except ValueError: 2372 value = 1.02373 data[' minF/sig'] = value2374 minSig.SetValue('%.2f'%(value))2370 value = data['UsrReject'][item] 2371 data['UsrReject'][item] = value 2372 Obj.SetValue('%.2f'%(value)) 2375 2373 2376 2374 LSSizer = wx.FlexGridSizer(cols=4,vgap=5,hgap=5) … … 2388 2386 Cnvrg.Bind(wx.EVT_KILL_FOCUS,OnConvergence) 2389 2387 LSSizer.Add(Cnvrg,0,WACV) 2388 Indx = {} 2390 2389 if 'Hessian' in data['deriv type']: 2391 2390 LSSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' Max cycles: '),0,WACV) … … 2403 2402 LSSizer.Add(Factr,0,WACV) 2404 2403 if G2frame.Sngl: 2405 LSSizer.Add((1,0),) 2406 LSSizer.Add((1,0),) 2404 userReject = data['UsrReject'] 2405 usrRej = {'minF/sig':[' Min obs/sig (0-5): ',[0,5], ],'MinExt':[' Min extinct. (0-.9): ',[0,.9],], 2406 'MaxDF/F':[' Max delt-F/sig (3-20): ',[3.,20.],],'MaxD':[' Max d-spacing (3-500): ',[3,500],], 2407 'MinD':[' Min d-spacing (0.1-1.0): ',[0.1,1.0],]} 2408 2407 2409 fsqRef = wx.CheckBox(G2frame.dataDisplay,-1,label='Refine HKLF as F^2? ') 2408 2410 fsqRef.SetValue(data['F**2']) 2409 2411 fsqRef.Bind(wx.EVT_CHECKBOX,OnFsqRef) 2410 2412 LSSizer.Add(fsqRef,0,WACV) 2411 LSSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label='Min obs/sig (0-5): '),0,WACV) 2412 minSig = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.2f'%(data['minF/sig']),style=wx.TE_PROCESS_ENTER) 2413 minSig.Bind(wx.EVT_TEXT_ENTER,OnMinSig) 2414 minSig.Bind(wx.EVT_KILL_FOCUS,OnMinSig) 2415 LSSizer.Add(minSig,0,WACV) 2413 LSSizer.Add((1,0),) 2414 for item in usrRej: 2415 LSSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,label=usrRej[item][0]),0,WACV) 2416 usrrej = wx.TextCtrl(G2frame.dataDisplay,-1,value='%.2f'%(userReject[item]),style=wx.TE_PROCESS_ENTER) 2417 Indx[usrrej] = [item,usrRej[item][1]] 2418 usrrej.Bind(wx.EVT_TEXT_ENTER,OnUsrRej) 2419 usrrej.Bind(wx.EVT_KILL_FOCUS,OnUsrRej) 2420 LSSizer.Add(usrrej,0,WACV) 2416 2421 return LSSizer 2417 2422 -
trunk/GSASIIplot.py
r1786 r1787 703 703 Model = glGetDoublev(GL_MODELVIEW_MATRIX) 704 704 Zmax = 1. 705 xy = [int(xy[0]),int(View[3]-xy[1])] 705 706 for i,ref in enumerate(hklRef): 706 h,k,l = ref[ 1:4]707 h,k,l = ref[:3] 707 708 X,Y,Z = gluProject(h,k,l,Model,Proj,View) 708 709 XY = [int(X),int(Y)] 709 print xy,XY 710 if np.allclose(xy,XY,atol=10): 710 if np.allclose(xy,XY,atol=10) and Z < Zmax: 711 711 Zmax = Z 712 return [ h,k,l]712 return [int(h),int(k),int(l)] 713 713 714 714 def SetTranslation(newxy): … … 795 795 Q = drawingData['Quaternion'] 796 796 Draw('move') 797 # else: 798 # hkl = GetTruePosition(newxy) 797 else: 798 hkl = GetTruePosition(newxy) 799 if hkl: 800 h,k,l = hkl 801 Page.canvas.SetToolTipString('%d %d %d'%(h,k,l)) 802 G2frame.G2plotNB.status.SetStatusText('hkl = %d %d %d'%(h,k,l),1) 799 803 800 804 def OnMouseWheel(event): -
trunk/GSASIIpwdGUI.py
r1785 r1787 2947 2947 G2plt.Plot3DSngl(G2frame,newPlot=True,Data=controls,hklRef=refList,Title=phaseName) 2948 2948 2949 def OnRejectHKL(event):2950 phaseName = G2frame.RefList2951 pId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases')2952 phaseId = G2gd.GetPatternTreeItemId(G2frame,pId,phaseName)2953 General = G2frame.PatternTree.GetItemPyData(phaseId)['General']2954 im = General.get('Super',0)2955 rowList = G2frame.refTable[phaseName].GetSelectedRows()2956 for row in rowList:2957 data[1]['RefList'][row][3+im] *= -1 #toggles mul & -mul2958 if data[1]['RefList'][row][3+im] < 0:2959 G2frame.refTable[phaseName].SetCellBackgroundColour(row,3+im,wx.RED)2960 else:2961 G2frame.refTable[phaseName].SetCellBackgroundColour(row,3+im,wx.WHITE)2962 G2frame.refTable[phaseName].ClearSelection()2963 ShowReflTable(phaseName)2964 2965 def OnClearReject(event):2966 phaseName = G2frame.RefList2967 pId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'Phases')2968 phaseId = G2gd.GetPatternTreeItemId(G2frame,pId,phaseName)2969 General = G2frame.PatternTree.GetItemPyData(phaseId)['General']2970 im = General.get('Super',0)2971 for row in range(G2frame.refTable[phaseName].GetNumberRows()):2972 if data[1]['RefList'][row][3+im] < 0:2973 data[1]['RefList'][row][3+im] *= -1 #toggles mul & -mul2974 G2frame.refTable[phaseName].SetCellBackgroundColour(row,3+im,wx.WHITE)2975 UpdateReflectionGrid(G2frame,data,True,Name)2976 2977 2949 def MakeReflectionTable(phaseName): 2978 2950 '''Returns a wx.grid table (G2gd.Table) containing a list of all reflections … … 3126 3098 G2frame.Bind(wx.EVT_MENU, OnPlotHKL, id=G2gd.wxID_PWDHKLPLOT) 3127 3099 G2frame.Bind(wx.EVT_MENU, OnPlot3DHKL, id=G2gd.wxID_PWD3DHKLPLOT) 3128 G2frame.Bind(wx.EVT_MENU,OnRejectHKL, id=G2gd.wxID_REJECTHKL)3129 G2frame.Bind(wx.EVT_MENU,OnClearReject, id=G2gd.wxID_CLEARREJECT)3130 3100 G2frame.dataFrame.SelectPhase.Enable(False) 3131 3101 else: … … 3136 3106 G2frame.Bind(wx.EVT_MENU, OnPlotHKL, id=G2gd.wxID_PWDHKLPLOT) 3137 3107 G2frame.Bind(wx.EVT_MENU, OnPlot3DHKL, id=G2gd.wxID_PWD3DHKLPLOT) 3138 G2frame.dataFrame.RejectHKL.Enable(False)3139 G2frame.dataFrame.ClearReject.Enable(False)3140 3108 G2frame.dataFrame.SelectPhase.Enable(False) 3141 3109 -
trunk/GSASIIstrMath.py
r1786 r1787 2388 2388 return dMdv 2389 2389 2390 def UserRejectHKL(ref,im,userReject): 2391 if ref[5+im]/ref[6+im] < userReject['minF/sig']: 2392 return False 2393 elif userReject['MaxD'] < ref[4+im] > userReject['MinD']: 2394 return False 2395 elif ref[11+im] < userReject['MinExt']: 2396 return False 2397 elif abs(ref[5+im]-ref[7+im])/ref[6+im] > userReject['MaxDF/F']: 2398 return False 2399 return True 2400 2401 2402 2390 2403 def dervHKLF(Histogram,Phase,calcControls,varylist,parmDict,rigidbodyDict): 2391 2404 '''Loop over reflections in a HKLF histogram and compute derivatives of the fitting … … 2406 2419 SSGMT = np.array([ops[0].T for ops in SSGData['SSGOps']]) 2407 2420 im = 1 #offset in SS reflection list 2408 #??2409 2421 A = [parmDict[pfx+'A%d'%(i)] for i in range(6)] 2410 2422 G,g = G2lat.A2Gmat(A) #recip & real metric tensors … … 2426 2438 dervDict = SCExtinction(ref,im,phfx,hfx,pfx,calcControls,parmDict,varylist+dependentVars)[1] 2427 2439 w = 1.0/ref[6+im] 2428 if w*ref[5+im] >= calcControls['minF/sig'] andref[3+im] > 0:2440 if ref[3+im] > 0: 2429 2441 wdf[iref] = w*(ref[5+im]-ref[7+im]) 2430 2442 for j,var in enumerate(varylist): … … 2455 2467 Fc = np.sqrt(ref[7+im]) 2456 2468 w = 1.0/ref[6+im] 2457 if ref[ 5+im]/ref[6+im] >= calcControls['minF/sig'] and ref[3+im] > 0:2469 if ref[3+im] > 0: 2458 2470 wdf[iref] = 2.0*Fo*w*(Fo-Fc) 2459 2471 for j,var in enumerate(varylist): … … 2683 2695 SSGMT = np.array([ops[0].T for ops in SSGData['SSGOps']]) 2684 2696 im = 1 #offset in SS reflection list 2685 #??2686 2697 A = [parmDict[pfx+'A%d'%(i)] for i in range(6)] 2687 2698 G,g = G2lat.A2Gmat(A) #recip & real metric tensors … … 2708 2719 ref[7+im] = parmDict[phfx+'Scale']*ref[9+im]*ref[11+im] #correct Fc^2 for extinction 2709 2720 ref[8+im] = ref[5+im]/(parmDict[phfx+'Scale']*ref[11+im]) 2710 if w*ref[5+im] >= calcControls['minF/sig'] and ref[3+im] > 0: #min cutoff & user rejection 2721 if UserRejectHKL(ref,im,calcControls['UsrReject']): 2722 ref[3+im] = abs(ref[3+im]) #mark as allowed 2711 2723 Fo = np.sqrt(ref[5+im]) 2712 2724 sumFo += Fo … … 2718 2730 sumwYo += (w*ref[5+im])**2 #w*Fo^2 2719 2731 else: 2732 ref[3+im] = -abs(ref[3+im]) #mark as rejected 2720 2733 nrej += 1 2721 2734 else: … … 2728 2741 Fc = np.sqrt(ref[7+im]) 2729 2742 w = 2.0*(Fo/ref[6+im])**2 # 1/sig(F)? 2730 if ref[5+im]/ref[6+im] >= calcControls['minF/sig'] and ref[3+im] > 0: #min cutoff & user rejection 2743 if UserRejectHKL(ref,im,calcControls['UsrReject']): 2744 ref[3+im] = abs(ref[3+im]) #mark as allowed 2731 2745 sumFo += Fo 2732 2746 sumFo2 += ref[5+im] … … 2737 2751 sumwYo += (w*Fo)**2 2738 2752 else: 2753 ref[3+im] = -abs(ref[3+im]) #mark as rejected 2739 2754 nrej += 1 2740 2755 Histogram['Residuals']['Nobs'] = nobs
Note: See TracChangeset
for help on using the changeset viewer.