Changeset 1288
- Timestamp:
- Apr 19, 2014 2:10:37 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r1287 r1288 739 739 self.PatternTree.SelectItem(Id) 740 740 self.PatternTree.Expand(Id) 741 self.Sngl = Id741 self.Sngl = True 742 742 newHistList.append(HistName) 743 743 … … 1902 1902 self.Integrate = 0 1903 1903 self.imageDefault = {} 1904 self.Sngl = 01904 self.Sngl = False 1905 1905 self.ifGetRing = False 1906 1906 self.MaskKey = '' #trigger for making image masks -
trunk/GSASIIgrid.py
r1287 r1288 140 140 [ wxID_MODELCOPY,wxID_MODELFIT,wxID_MODELADD,wxID_ELEMENTADD,wxID_ELEMENTDELETE, 141 141 wxID_ADDSUBSTANCE,wxID_LOADSUBSTANCE,wxID_DELETESUBSTANCE,wxID_COPYSUBSTANCE, 142 wxID_MODELUNDO, 143 ] = [wx.NewId() for item in range(1 0)]142 wxID_MODELUNDO,wxID_MODELFITALL, 143 ] = [wx.NewId() for item in range(11)] 144 144 145 145 [ wxID_SELECTPHASE,wxID_PWDHKLPLOT, … … 2640 2640 help='Undo model fit') 2641 2641 self.SasdUndo.Enable(False) 2642 self.ModelEdit.Append(id=wxID_MODELFITALL, kind=wx.ITEM_NORMAL,text='Fit all', 2643 help='Fit model parameters to all SASD data') 2642 2644 self.ModelEdit.Append(id=wxID_MODELCOPY, kind=wx.ITEM_NORMAL,text='Copy', 2643 2645 help='Copy model parameters to other histograms') … … 4112 4114 G2plt.PlotPatterns(G2frame,plotType=kind,newPlot=True) 4113 4115 elif kind == 'HKLF': 4114 G2plt.PlotSngl(G2frame,newPlot=True) 4116 refList = data[1]['RefList'] 4117 FoMax = np.max(refList.T[5]) 4118 controls = {'Type' : 'Fo','ifFc' : True, 4119 'HKLmax' : [int(np.max(refList.T[0])),int(np.max(refList.T[1])),int(np.max(refList.T[2]))], 4120 'HKLmin' : [int(np.min(refList.T[0])),int(np.min(refList.T[1])),int(np.min(refList.T[2]))], 4121 'FoMax' : FoMax,'Zone' : '001','Layer' : 0,'Scale' : 1.0,} 4122 G2plt.PlotSngl(G2frame,newPlot=True,Data=controls,hklRef=refList) 4115 4123 4116 ################################################################################4117 ##### HKLF controls4118 ################################################################################4119 4120 def UpdateHKLControls(G2frame,data):4121 '''Needs a doc string4122 '''4123 4124 def OnScaleSlider(event):4125 scale = int(scaleSel.GetValue())/1000.4126 scaleSel.SetValue(int(scale*1000.))4127 data['Scale'] = scale*1.4128 G2plt.PlotSngl(G2frame)4129 4130 def OnLayerSlider(event):4131 layer = layerSel.GetValue()4132 data['Layer'] = layer4133 G2plt.PlotSngl(G2frame)4134 4135 def OnSelZone(event):4136 data['Zone'] = zoneSel.GetValue()4137 izone = zones.index(data['Zone'])4138 layerSel.SetRange(maxValue=HKLmax[izone],minValue=HKLmin[izone])4139 G2plt.PlotSngl(G2frame,newPlot=True)4140 4141 def OnSelType(event):4142 data['Type'] = typeSel.GetValue()4143 G2plt.PlotSngl(G2frame)4144 4145 def SetStatusLine():4146 Status.SetStatusText("")4147 4148 if G2frame.dataDisplay:4149 G2frame.dataDisplay.Destroy()4150 if not G2frame.dataFrame.GetStatusBar():4151 Status = G2frame.dataFrame.CreateStatusBar()4152 SetStatusLine()4153 zones = ['100','010','001']4154 HKLmax = data['HKLmax']4155 HKLmin = data['HKLmin']4156 typeChoices = ['Fosq','Fo','|DFsq|/sig','|DFsq|>sig','|DFsq|>3sig']4157 G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)4158 SetDataMenuBar(G2frame)4159 G2frame.dataFrame.SetTitle('HKL Plot Controls')4160 mainSizer = wx.BoxSizer(wx.VERTICAL)4161 mainSizer.Add((5,10),0)4162 4163 # scaleSizer = wx.BoxSizer(wx.HORIZONTAL)4164 # scaleSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Scale'),0,4165 # WACV|wx.EXPAND)4166 # scaleSel = wx.Slider(parent=G2frame.dataDisplay,maxValue=1000,minValue=1,4167 # style=wx.SL_HORIZONTAL,value=int(data['Scale']*10))4168 # scaleSizer.Add(scaleSel,1,wx.EXPAND|wx.RIGHT|WACV)4169 # scaleSel.SetLineSize(10)4170 # scaleSel.SetPageSize(10)4171 # scaleSel.Bind(wx.EVT_SLIDER, OnScaleSlider)4172 ## mainSizer.Add(scaleSizer,0,wx.EXPAND|wx.RIGHT)4173 mainSizer.Add((0,10),0)4174 4175 zoneSizer = wx.BoxSizer(wx.HORIZONTAL)4176 zoneSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Zone '),0,4177 WACV)4178 zoneSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['Zone'],choices=['100','010','001'],4179 style=wx.CB_READONLY|wx.CB_DROPDOWN)4180 zoneSel.Bind(wx.EVT_COMBOBOX, OnSelZone)4181 zoneSizer.Add(zoneSel,0,WACV)4182 zoneSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Plot type '),0,4183 WACV)4184 typeSel = wx.ComboBox(parent=G2frame.dataDisplay,value=data['Type'],choices=typeChoices,4185 style=wx.CB_READONLY|wx.CB_DROPDOWN)4186 typeSel.Bind(wx.EVT_COMBOBOX, OnSelType)4187 zoneSizer.Add(typeSel,0,WACV)4188 zoneSizer.Add((10,0),0)4189 mainSizer.Add(zoneSizer,0,wx.EXPAND|wx.RIGHT)4190 mainSizer.Add((0,10),0)4191 4192 # izone = zones.index(data['Zone'])4193 # layerSizer = wx.BoxSizer(wx.HORIZONTAL)4194 # layerSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Layer'),0,4195 # WACV|wx.EXPAND)4196 # layerSel = wx.Slider(parent=G2frame.dataDisplay,maxValue=HKLmax[izone],minValue=HKLmin[izone],4197 # style=wx.SL_HORIZONTAL|wx.SL_AUTOTICKS|wx.SL_LABELS,value=0)4198 # layerSel.SetLineSize(1)4199 # layerSel.SetPageSize(1)4200 # layerSel.Bind(wx.EVT_SLIDER, OnLayerSlider)4201 # layerSizer.Add(layerSel,1,wx.EXPAND|wx.RIGHT|WACV)4202 # layerSizer.Add((10,0),0)4203 # mainSizer.Add(layerSizer,1,wx.EXPAND|wx.RIGHT)4204 4205 4206 mainSizer.Layout()4207 G2frame.dataDisplay.SetSizer(mainSizer)4208 G2frame.dataDisplay.SetSize(mainSizer.Fit(G2frame.dataFrame))4209 G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame))4210 4211 4124 ################################################################################ 4212 4125 ##### Pattern tree routines … … 4340 4253 UpdatePWHKPlot(G2frame,'SASD',item) 4341 4254 elif 'HKLF' in G2frame.PatternTree.GetItemText(item): 4342 G2frame.Sngl = item4255 G2frame.Sngl = True 4343 4256 UpdatePWHKPlot(G2frame,'HKLF',item) 4344 4257 elif 'PDF' in G2frame.PatternTree.GetItemText(item): … … 4400 4313 G2plt.PlotImage(G2frame) 4401 4314 G2plt.PlotStrain(G2frame,data,newPlot=True) 4402 elif G2frame.PatternTree.GetItemText(item) == 'HKL Plot Controls':4403 G2frame.PickId = item4404 G2frame.Sngl = G2frame.PatternTree.GetItemParent(item)4405 data = G2frame.PatternTree.GetItemPyData(item)4406 UpdateHKLControls(G2frame,data)4407 G2plt.PlotSngl(G2frame)4408 4315 elif G2frame.PatternTree.GetItemText(item) == 'PDF Controls': 4409 4316 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) -
trunk/GSASIIplot.py
r1286 r1288 245 245 from matplotlib.patches import Circle,CirclePolygon 246 246 global HKL,HKLF 247 247 248 248 def OnSCKeyPress(event): 249 249 i = zones.index(Data['Zone']) 250 250 newPlot = False 251 typeChoice = {'1':'|DFsq|>sig','3':'|DFsq|>3sig','w':'|DFsq|/sig','f':'Fo','s':'Fosq'} 251 252 if event.key == 'h': 252 253 Data['Zone'] = '100' 254 newPlot = True 253 255 elif event.key == 'k': 254 256 Data['Zone'] = '010' 257 newPlot = True 255 258 elif event.key == 'l': 256 259 Data['Zone'] = '001' 260 newPlot = True 257 261 elif event.key == 'u': 258 262 Data['Scale'] *= 1.1 … … 265 269 elif event.key == '0': 266 270 Data['Layer'] = 0 267 PlotSngl(G2frame,False,Data,hklRef,Title) 271 elif event.key in typeChoice and 'HKLF' in Name: 272 Data['Type'] = typeChoice[event.key] 273 newPlot = True 274 PlotSngl(G2frame,newPlot,Data,hklRef,Title) 268 275 269 276 def OnSCMotion(event): … … 283 290 G2frame.G2plotNB.status.SetStatusText('Use K-box to set plot controls',1) 284 291 285 def OnSCP ick(event):292 def OnSCPress(event): 286 293 zpos = Data['Layer'] 287 pos = event.artist.center 288 if '100' in Data['Zone']: 289 Page.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(zpos,pos[0],pos[1])) 290 hkl = np.array([zpos,pos[0],pos[1]]) 291 elif '010' in Data['Zone']: 292 Page.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(pos[0],zpos,pos[1])) 293 hkl = np.array([pos[0],zpos,pos[1]]) 294 elif '001' in Data['Zone']: 295 Page.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(pos[0],pos[1],zpos)) 296 hkl = np.array([pos[0],pos[1],zpos]) 297 h,k,l = hkl 298 hklf = HKLF[np.where(np.all(HKL-hkl == [0,0,0],axis=1))] 299 if len(hklf): 300 Fosq,sig,Fcsq = hklf[0] 301 HKLtxt = '( %.2f %.3f %.2f %.2f)'%(Fosq,sig,Fcsq,(Fosq-Fcsq)/(scale*sig)) 302 G2frame.G2plotNB.status.SetStatusText('Fosq, sig, Fcsq, delFsq/sig = '+HKLtxt,1) 294 xpos = event.xdata 295 if xpos: 296 pos = int(round(event.xdata)),int(round(event.ydata)) 297 if '100' in Data['Zone']: 298 Page.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(zpos,pos[0],pos[1])) 299 hkl = np.array([zpos,pos[0],pos[1]]) 300 elif '010' in Data['Zone']: 301 Page.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(pos[0],zpos,pos[1])) 302 hkl = np.array([pos[0],zpos,pos[1]]) 303 elif '001' in Data['Zone']: 304 Page.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(pos[0],pos[1],zpos)) 305 hkl = np.array([pos[0],pos[1],zpos]) 306 h,k,l = hkl 307 hklf = HKLF[np.where(np.all(HKL-hkl == [0,0,0],axis=1))] 308 if len(hklf): 309 Fosq,sig,Fcsq = hklf[0] 310 HKLtxt = '( %.2f %.3f %.2f %.2f)'%(Fosq,sig,Fcsq,(Fosq-Fcsq)/(scale*sig)) 311 G2frame.G2plotNB.status.SetStatusText('Fosq, sig, Fcsq, delFsq/sig = '+HKLtxt,1) 303 312 313 Name = G2frame.PatternTree.GetItemText(G2frame.PatternId) 314 if not Title: 315 Title = Name 304 316 try: 305 317 plotNum = G2frame.G2plotNB.plotList.index('Structure Factors') … … 314 326 plotNum = G2frame.G2plotNB.plotList.index('Structure Factors') 315 327 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 316 Page.canvas.mpl_connect(' pick_event', OnSCPick)328 Page.canvas.mpl_connect('button_press_event', OnSCPress) 317 329 Page.canvas.mpl_connect('motion_notify_event', OnSCMotion) 318 330 Page.canvas.mpl_connect('key_press_event', OnSCKeyPress) 319 331 Page.keyPress = OnSCKeyPress 320 Page.Choice = (' key press','u: increase scale','d: decrease scale', 321 'h: select 100 zone','k: select 010 zone','l: select 001 zone', 322 '+: increase index','-: decrease index','0: zero layer',) 332 if 'HKLF' in Name: 333 Page.Choice = (' key press','u: increase scale','d: decrease scale', 334 'f: select Fo','s: select Fosq','w: select |DFsq|/sig', 335 '1: select |DFsq|>sig','3 select |DFsq|>3sig', 336 'h: select 100 zone','k: select 010 zone','l: select 001 zone', 337 '+: increase index','-: decrease index','0: zero layer',) 338 else: 339 Page.Choice = (' key press','u: increase scale','d: decrease scale', 340 'h: select 100 zone','k: select 010 zone','l: select 001 zone', 341 '+: increase index','-: decrease index','0: zero layer',) 323 342 Page.SetFocus() 324 343 325 344 G2frame.G2plotNB.status.SetStatusText('Use K-box to set plot controls',1) 326 345 Plot.set_aspect(aspect='equal') 327 Name = G2frame.PatternTree.GetItemText(G2frame.PatternId)328 if 'HKLF' in Name:329 HKLref = G2frame.PatternTree.GetItemPyData(G2frame.PatternId)[1]['RefList']330 Data = G2frame.PatternTree.GetItemPyData(331 G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'HKL Plot Controls'))332 Title = Name[5:]333 else:334 HKLref = hklRef335 346 336 347 Type = Data['Type'] … … 345 356 pzone = [[1,2],[0,2],[0,1]] 346 357 izone = zones.index(Data['Zone']) 347 Plot.set_title( Title)358 Plot.set_title(Data['Type']+' '+Title) 348 359 HKL = [] 349 360 HKLF = [] 350 361 time0 = time.time() 351 for refl in HKLref:362 for refl in hklRef: 352 363 H = np.array(refl[:3]) 353 364 if 'HKLF' in Name: … … 370 381 elif Type == '|DFsq|/sig': 371 382 if sig > 0.: 372 A = scale*(Fosq-Fcsq)/(sig)383 A = (Fosq-Fcsq)/(3*sig) 373 384 B = 0 374 385 elif Type == '|DFsq|>sig': 375 386 if sig > 0.: 376 A = (Fosq-Fcsq)/ sig387 A = (Fosq-Fcsq)/(3*sig) 377 388 if abs(A) < 1.0: A = 0 378 A *= scale379 389 B = 0 380 390 elif Type == '|DFsq|>3sig': 381 391 if sig > 0.: 382 A = (Fosq-Fcsq)/ sig392 A = (Fosq-Fcsq)/(3*sig) 383 393 if abs(A) < 3.0: A = 0 384 A *= scale385 394 B = 0 386 395 xy = (H[pzone[izone][0]],H[pzone[izone][1]]) 387 396 if Type in ['|DFsq|/sig','|DFsq|>sig','|DFsq|>3sig']: 388 397 if A > 0.0: 389 Plot.add_artist(Circle(xy,radius=A,ec='g',fc='w' ,picker=3))398 Plot.add_artist(Circle(xy,radius=A,ec='g',fc='w')) 390 399 else: 391 Plot.add_artist(Circle(xy,radius=-A,ec='r',fc='w' ,picker=3))400 Plot.add_artist(Circle(xy,radius=-A,ec='r',fc='w')) 392 401 else: 393 402 if A > 0.0 and A > B: 394 Plot.add_artist(Circle(xy,radius=A,ec='g',fc='w' ,picker=3))403 Plot.add_artist(Circle(xy,radius=A,ec='g',fc='w')) 395 404 if B: 396 405 Plot.add_artist(Circle(xy,radius=B,ec='b',fc='w')) 397 406 if A < B: 398 Plot.add_artist(Circle(xy,radius=A,ec='g',fc='w' ,picker=3))407 Plot.add_artist(Circle(xy,radius=A,ec='g',fc='w')) 399 408 radius = C 400 409 if radius > 0: -
trunk/GSASIIpwdGUI.py
r1286 r1288 2683 2683 data['Particle']['Levels'].append({ 2684 2684 'Controls':{'FormFact':'Sphere','DistType':'LogNormal','Material':material, 2685 'FFargs':{},'NumPoints':50,'Cutoff':0.01, 'AutoDist':True,'logR':True,2686 'S trFact':'Dilute'},2685 'FFargs':{},'NumPoints':50,'Cutoff':0.01, 2686 'SlitSmear':[0.0,False],'StrFact':'Dilute'}, #last 2 not used - future? 2687 2687 'LogNormal':{'Volume':[0.05,False],'Mean':[1000.,False],'StdDev':[0.5,False],'MinSize':[10.,False],}, 2688 2688 'Gaussian':{'Volume':[0.05,False],'Mean':[1000.,False],'StdDev':[300.,False],}, 2689 2689 'LSW':{'Volume':[0.05,False],'Mean':[1000.0,False],}, 2690 2690 'Schulz-Zimm':{'Volume':[0.05,False],'Mean':[1000.,False],'StdDev':[300.,False],}, 2691 'Unified':{'G':[1 00,False],'Rg':[100,False],'B':[1.e-4,False],'P':[4,False],'Cutoff':[1e-5,False],},2691 'Unified':{'G':[1.e3,False],'Rg':[100,False],'B':[1.e-5,False],'P':[4,False],'Cutoff':[1e-5,False],}, 2692 2692 'Porod':{'B':[1.e-4,False],'P':[4,False],'Cutoff':[1e-5,False],}, 2693 2693 'Monodisperse':{'Volume':[0.05,False],'Radius':[100,False],}, #OK for spheres 2694 2694 'Bragg':{'PkInt':[100,False],'PkPos':[0.2,False], 2695 'PkSig':[10,False],'PkGam':[10,False],}, #re easonable 31A peak2695 'PkSig':[10,False],'PkGam':[10,False],}, #reasonable 31A peak 2696 2696 }) 2697 2697 G2sasd.ModelFxn(Profile,ProfDict,Limits,Substances,Sample,data) … … 2721 2721 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Models'), 2722 2722 copy.deepcopy(data)) 2723 2724 def OnFitModelAll(event): 2725 event.Skip() 2723 2726 2724 2727 def OnFitModel(event): … … 3158 3161 G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyModel, id=G2gd.wxID_MODELCOPY) 3159 3162 G2frame.dataFrame.Bind(wx.EVT_MENU, OnFitModel, id=G2gd.wxID_MODELFIT) 3163 G2frame.dataFrame.Bind(wx.EVT_MENU, OnFitModelAll, id=G2gd.wxID_MODELFITALL) 3160 3164 G2frame.dataFrame.Bind(wx.EVT_MENU, OnUnDo, id=G2gd.wxID_MODELUNDO) 3161 3165 G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddModel, id=G2gd.wxID_MODELADD)
Note: See TracChangeset
for help on using the changeset viewer.