Changeset 1288


Ignore:
Timestamp:
Apr 19, 2014 2:10:37 PM (8 years ago)
Author:
vondreele
Message:

remove HKL Controls GUI - all function now keystrokes on plot.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r1287 r1288  
    739739            self.PatternTree.SelectItem(Id)
    740740            self.PatternTree.Expand(Id)
    741             self.Sngl = Id
     741            self.Sngl = True
    742742            newHistList.append(HistName)
    743743
     
    19021902        self.Integrate = 0
    19031903        self.imageDefault = {}
    1904         self.Sngl = 0
     1904        self.Sngl = False
    19051905        self.ifGetRing = False
    19061906        self.MaskKey = ''           #trigger for making image masks
  • trunk/GSASIIgrid.py

    r1287 r1288  
    140140[ wxID_MODELCOPY,wxID_MODELFIT,wxID_MODELADD,wxID_ELEMENTADD,wxID_ELEMENTDELETE,
    141141    wxID_ADDSUBSTANCE,wxID_LOADSUBSTANCE,wxID_DELETESUBSTANCE,wxID_COPYSUBSTANCE,
    142     wxID_MODELUNDO,
    143 ] = [wx.NewId() for item in range(10)]
     142    wxID_MODELUNDO,wxID_MODELFITALL,
     143] = [wx.NewId() for item in range(11)]
    144144
    145145[ wxID_SELECTPHASE,wxID_PWDHKLPLOT,
     
    26402640            help='Undo model fit')
    26412641        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')
    26422644        self.ModelEdit.Append(id=wxID_MODELCOPY, kind=wx.ITEM_NORMAL,text='Copy',
    26432645            help='Copy model parameters to other histograms')
     
    41124114        G2plt.PlotPatterns(G2frame,plotType=kind,newPlot=True)
    41134115    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)
    41154123                 
    4116 ################################################################################
    4117 #####  HKLF controls
    4118 ################################################################################           
    4119        
    4120 def UpdateHKLControls(G2frame,data):
    4121     '''Needs a doc string
    4122     '''
    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'] = layer
    4133         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 
    42114124################################################################################
    42124125#####  Pattern tree routines
     
    43404253            UpdatePWHKPlot(G2frame,'SASD',item)
    43414254        elif 'HKLF' in G2frame.PatternTree.GetItemText(item):
    4342             G2frame.Sngl = item
     4255            G2frame.Sngl = True
    43434256            UpdatePWHKPlot(G2frame,'HKLF',item)
    43444257        elif 'PDF' in G2frame.PatternTree.GetItemText(item):
     
    44004313        G2plt.PlotImage(G2frame)
    44014314        G2plt.PlotStrain(G2frame,data,newPlot=True)
    4402     elif G2frame.PatternTree.GetItemText(item) == 'HKL Plot Controls':
    4403         G2frame.PickId = item
    4404         G2frame.Sngl = G2frame.PatternTree.GetItemParent(item)
    4405         data = G2frame.PatternTree.GetItemPyData(item)
    4406         UpdateHKLControls(G2frame,data)
    4407         G2plt.PlotSngl(G2frame)
    44084315    elif G2frame.PatternTree.GetItemText(item) == 'PDF Controls':
    44094316        G2frame.PatternId = G2frame.PatternTree.GetItemParent(item)
  • trunk/GSASIIplot.py

    r1286 r1288  
    245245    from matplotlib.patches import Circle,CirclePolygon
    246246    global HKL,HKLF
    247 
     247   
    248248    def OnSCKeyPress(event):
    249249        i = zones.index(Data['Zone'])
    250250        newPlot = False
     251        typeChoice = {'1':'|DFsq|>sig','3':'|DFsq|>3sig','w':'|DFsq|/sig','f':'Fo','s':'Fosq'}
    251252        if event.key == 'h':
    252253            Data['Zone'] = '100'
     254            newPlot = True
    253255        elif event.key == 'k':
    254256            Data['Zone'] = '010'
     257            newPlot = True
    255258        elif event.key == 'l':
    256259            Data['Zone'] = '001'
     260            newPlot = True
    257261        elif event.key == 'u':
    258262            Data['Scale'] *= 1.1
     
    265269        elif event.key == '0':
    266270            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)
    268275
    269276    def OnSCMotion(event):
     
    283290            G2frame.G2plotNB.status.SetStatusText('Use K-box to set plot controls',1)
    284291               
    285     def OnSCPick(event):
     292    def OnSCPress(event):
    286293        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)
    303312                                 
     313    Name = G2frame.PatternTree.GetItemText(G2frame.PatternId)
     314    if not Title:
     315        Title = Name
    304316    try:
    305317        plotNum = G2frame.G2plotNB.plotList.index('Structure Factors')
     
    314326        plotNum = G2frame.G2plotNB.plotList.index('Structure Factors')
    315327        Page = G2frame.G2plotNB.nb.GetPage(plotNum)
    316         Page.canvas.mpl_connect('pick_event', OnSCPick)
     328        Page.canvas.mpl_connect('button_press_event', OnSCPress)
    317329        Page.canvas.mpl_connect('motion_notify_event', OnSCMotion)
    318330        Page.canvas.mpl_connect('key_press_event', OnSCKeyPress)
    319331        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',)
    323342    Page.SetFocus()
    324343   
    325344    G2frame.G2plotNB.status.SetStatusText('Use K-box to set plot controls',1)
    326345    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 = hklRef
    335346   
    336347    Type = Data['Type']           
     
    345356    pzone = [[1,2],[0,2],[0,1]]
    346357    izone = zones.index(Data['Zone'])
    347     Plot.set_title(Title)
     358    Plot.set_title(Data['Type']+' '+Title)
    348359    HKL = []
    349360    HKLF = []
    350361    time0 = time.time()
    351     for refl in HKLref:
     362    for refl in hklRef:
    352363        H = np.array(refl[:3])
    353364        if 'HKLF' in Name:
     
    370381            elif Type == '|DFsq|/sig':
    371382                if sig > 0.:
    372                     A = scale*(Fosq-Fcsq)/(sig)
     383                    A = (Fosq-Fcsq)/(3*sig)
    373384                B = 0
    374385            elif Type == '|DFsq|>sig':
    375386                if sig > 0.:
    376                     A = (Fosq-Fcsq)/sig
     387                    A = (Fosq-Fcsq)/(3*sig)
    377388                if abs(A) < 1.0: A = 0
    378                 A *= scale
    379389                B = 0                   
    380390            elif Type == '|DFsq|>3sig':
    381391                if sig > 0.:
    382                     A = (Fosq-Fcsq)/sig
     392                    A = (Fosq-Fcsq)/(3*sig)
    383393                if abs(A) < 3.0: A = 0
    384                 A *= scale
    385394                B = 0                   
    386395            xy = (H[pzone[izone][0]],H[pzone[izone][1]])
    387396            if Type in ['|DFsq|/sig','|DFsq|>sig','|DFsq|>3sig']:
    388397                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'))
    390399                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'))
    392401            else:
    393402                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'))
    395404                if B:
    396405                    Plot.add_artist(Circle(xy,radius=B,ec='b',fc='w'))
    397406                    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'))
    399408                    radius = C
    400409                    if radius > 0:
  • trunk/GSASIIpwdGUI.py

    r1286 r1288  
    26832683            data['Particle']['Levels'].append({
    26842684                'Controls':{'FormFact':'Sphere','DistType':'LogNormal','Material':material,
    2685                     'FFargs':{},'NumPoints':50,'Cutoff':0.01,'AutoDist':True,'logR':True,
    2686                     'StrFact':'Dilute'},
     2685                    'FFargs':{},'NumPoints':50,'Cutoff':0.01,
     2686                    'SlitSmear':[0.0,False],'StrFact':'Dilute'},    #last 2 not used - future?
    26872687                'LogNormal':{'Volume':[0.05,False],'Mean':[1000.,False],'StdDev':[0.5,False],'MinSize':[10.,False],},
    26882688                'Gaussian':{'Volume':[0.05,False],'Mean':[1000.,False],'StdDev':[300.,False],},
    26892689                'LSW':{'Volume':[0.05,False],'Mean':[1000.0,False],},
    26902690                'Schulz-Zimm':{'Volume':[0.05,False],'Mean':[1000.,False],'StdDev':[300.,False],},
    2691                 'Unified':{'G':[100,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],},
    26922692                'Porod':{'B':[1.e-4,False],'P':[4,False],'Cutoff':[1e-5,False],},
    26932693                'Monodisperse':{'Volume':[0.05,False],'Radius':[100,False],},   #OK for spheres
    26942694                'Bragg':{'PkInt':[100,False],'PkPos':[0.2,False],
    2695                     'PkSig':[10,False],'PkGam':[10,False],},        #reeasonable 31A peak
     2695                    'PkSig':[10,False],'PkGam':[10,False],},        #reasonable 31A peak
    26962696                })
    26972697            G2sasd.ModelFxn(Profile,ProfDict,Limits,Substances,Sample,data)
     
    27212721            G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Models'),
    27222722                copy.deepcopy(data))
     2723               
     2724    def OnFitModelAll(event):
     2725        event.Skip()
    27232726       
    27242727    def OnFitModel(event):
     
    31583161    G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyModel, id=G2gd.wxID_MODELCOPY)
    31593162    G2frame.dataFrame.Bind(wx.EVT_MENU, OnFitModel, id=G2gd.wxID_MODELFIT)
     3163    G2frame.dataFrame.Bind(wx.EVT_MENU, OnFitModelAll, id=G2gd.wxID_MODELFITALL)
    31603164    G2frame.dataFrame.Bind(wx.EVT_MENU, OnUnDo, id=G2gd.wxID_MODELUNDO)
    31613165    G2frame.dataFrame.Bind(wx.EVT_MENU, OnAddModel, id=G2gd.wxID_MODELADD)
Note: See TracChangeset for help on using the changeset viewer.