Changeset 190 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
Dec 7, 2010 3:58:39 PM (13 years ago)
Author:
vondreele
Message:

fill Pawley reflections grid
fix Item vs item

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIphsGUI.py

    r185 r190  
    1515import GSASIIplot as G2plt
    1616import GSASIIgrid as G2gd
     17import GSASIIIO as G2IO
    1718import numpy as np
    1819import numpy.linalg as nl
     
    124125        self.Destroy()
    125126
    126 def UpdatePhaseData(self,item,data,oldPage):
     127def UpdatePhaseData(self,Item,data,oldPage):
    127128
    128129    Atoms = []
    129130    if self.dataDisplay:
    130131        self.dataDisplay.Destroy()
    131     PhaseName = self.PatternTree.GetItemText(item)
     132    PhaseName = self.PatternTree.GetItemText(Item)
    132133    self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)
    133134    self.dataFrame.SetLabel('Phase Data for '+PhaseName)
     
    188189            self.G2plotNB.Rename(oldName,generalData['Name'])
    189190            self.dataFrame.SetLabel('Phase Data for '+generalData['Name'])
    190             self.PatternTree.SetItemText(item,generalData['Name'])
     191            self.PatternTree.SetItemText(Item,generalData['Name'])
    191192                       
    192193        def OnPhaseType(event):
     
    18981899            except ValueError:
    18991900                pass
    1900             Obj.SetValue("%.3f"%(UseList[hist]['Mustrain'][1][pid]))          #reset in case of error
     1901            Obj.SetValue("%.5f"%(UseList[hist]['Mustrain'][1][pid]))          #reset in case of error
    19011902           
    19021903        def OnStrainAxis(event):
     
    21142115                        strainRef.Bind(wx.EVT_CHECKBOX, OnStrainRef)
    21152116                        strainSizer.Add(strainRef,0,wx.ALIGN_CENTER_VERTICAL)
    2116                         strainVal = wx.TextCtrl(dataDisplay,wx.ID_ANY,'%.3f'%(val),style=wx.TE_PROCESS_ENTER)
     2117                        strainVal = wx.TextCtrl(dataDisplay,wx.ID_ANY,'%.5f'%(val),style=wx.TE_PROCESS_ENTER)
    21172118                        Indx[strainVal.GetId()] = [item,id]
    21182119                        strainVal.Bind(wx.EVT_TEXT_ENTER,OnStrainVal)
     
    22432244
    22442245    def FillPawleyReflectionsGrid():
     2246       
     2247           
     2248           
     2249        if data['Histograms']:
     2250            self.dataFrame.PawleyMenu.FindItemById(G2gd.wxID_PAWLEYLOAD).Enable(True)
     2251            self.dataFrame.PawleyMenu.FindItemById(G2gd.wxID_PAWLEYIMPORT).Enable(True)
     2252        else:
     2253            self.dataFrame.PawleyMenu.FindItemById(G2gd.wxID_PAWLEYLOAD).Enable(False)
     2254            self.dataFrame.PawleyMenu.FindItemById(G2gd.wxID_PAWLEYIMPORT).Enable(False)
     2255                       
     2256        def KeyEditPawleyGrid(event):
     2257            colList = PawleyRefl.GetSelectedCols()
     2258            PawleyPeaks = data['Pawley ref']
     2259            if event.GetKeyCode() == wx.WXK_RETURN:
     2260                event.Skip(True)
     2261            elif event.GetKeyCode() == wx.WXK_CONTROL:
     2262                event.Skip(True)
     2263            elif event.GetKeyCode() == wx.WXK_SHIFT:
     2264                event.Skip(True)
     2265            elif colList:
     2266                PawleyRefl.ClearSelection()
     2267                key = event.GetKeyCode()
     2268                for col in colList:
     2269                    if PawleyTable.GetTypeName(0,col) == wg.GRID_VALUE_BOOL:
     2270                        if key == 89: #'Y'
     2271                            for row in range(PawleyTable.GetNumberRows()): PawleyPeaks[row][col]=True
     2272                        elif key == 78:  #'N'
     2273                            for row in range(PawleyTable.GetNumberRows()): PawleyPeaks[row][col]=False
     2274                        FillPawleyReflectionsGrid()
     2275           
     2276        if 'Pawley ref' in data:
     2277            PawleyPeaks = data['Pawley ref']                       
     2278            rowLabels = []
     2279            for i in range(len(PawleyPeaks)): rowLabels.append(str(i+1))
     2280            colLabels = ['h','k','l','mul','2-theta','sigma','refine','Iobs','Icalc']
     2281            Types = [wg.GRID_VALUE_LONG,wg.GRID_VALUE_LONG,wg.GRID_VALUE_LONG,wg.GRID_VALUE_LONG,
     2282                wg.GRID_VALUE_FLOAT+':10,4',wg.GRID_VALUE_FLOAT+':10,4',wg.GRID_VALUE_BOOL,
     2283                wg.GRID_VALUE_FLOAT+':10,5',wg.GRID_VALUE_FLOAT+':10,5']
     2284            PawleyTable = G2gd.Table(PawleyPeaks,rowLabels=rowLabels,colLabels=colLabels,types=Types)
     2285            PawleyRefl.SetTable(PawleyTable, True)
     2286            PawleyRefl.Bind(wx.EVT_KEY_DOWN, KeyEditPawleyGrid)                 
     2287            PawleyRefl.SetMargins(0,0)
     2288            PawleyRefl.AutoSizeColumns(False)
     2289            self.dataFrame.setSizePosLeft([500,300])
     2290                   
     2291    def OnPawleyLoad(event):
     2292        sig = lambda Th,U,V,W: 1.17741*math.sqrt(U*tand(Th)**2+V*tand(Th)+W)/100.
     2293        gam = lambda Th,X,Y: (X/cosd(Th)+Y*tand(Th))/100.
     2294        gamFW = lambda s,g: math.sqrt(s**2+(0.4654996*g)**2)+.5345004*g  #Ubaldo Bafile - private communication
     2295        choice = data['Histograms'].keys()
     2296        dlg = wx.SingleChoiceDialog(self,'Select','Powder histogram',choice)
     2297        if dlg.ShowModal() == wx.ID_OK:
     2298            histogram = choice[dlg.GetSelection()]
     2299            Id  = G2gd.GetPatternTreeItemId(self, self.root, histogram)
     2300            Iparms = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,Id, 'Instrument Parameters'))
     2301            try:                                            #try single wavelength
     2302                lam = Iparms[1][Iparms[3].index('Lam')]
     2303            except ValueError:                              #Ka1 & Ka2 present
     2304                lam = Iparms[1][Iparms[3].index('Lam1')]
     2305            GU = Iparms[1][Iparms[3].index('U')]               
     2306            GV = Iparms[1][Iparms[3].index('V')]               
     2307            GW = Iparms[1][Iparms[3].index('W')]               
     2308            LX = Iparms[1][Iparms[3].index('X')]               
     2309            LY = Iparms[1][Iparms[3].index('Y')]
     2310        dlg.Destroy()
    22452311        generalData = data['General']
    2246         print 'Pawley reflections'
     2312        dmin = generalData['Pawley dmin']
     2313        cell = generalData['Cell'][1:7]
     2314        A = G2lat.cell2A(cell)
     2315        SGData = generalData['SGData']
     2316        Laue = SGData['SGLaue']
     2317        SGLatt = SGData['SGLatt']
     2318        SGUniq = SGData['SGUniq']       
     2319        HKLd = G2lat.GenHLaue(dmin,Laue,SGLatt,SGUniq,A)
     2320        PawleyPeaks = []
     2321        for h,k,l,d in HKLd:
     2322            ext,mul = G2spc.GenHKL([h,k,l],SGData)[:2]
     2323            if not ext:
     2324                th = asind(lam/(2.0*d))
     2325                H = gamFW(sig(th,GU,GV,GW),gam(th,LX,LY))/2.35482
     2326                PawleyPeaks.append([h,k,l,mul,2*th,H,False,0,0])
     2327        data['Pawley ref'] = PawleyPeaks
     2328        FillPawleyReflectionsGrid()
     2329               
     2330           
     2331    def OnPawleyImport(event):
     2332        dlg = wx.FileDialog(self, 'Choose file with Pawley reflections', '.', '',
     2333            'GSAS Pawley files (*.RFL)|*.RFL',wx.OPEN)
     2334        if self.dirname:
     2335            dlg.SetDirectory(self.dirname)
     2336        try:
     2337            if dlg.ShowModal() == wx.ID_OK:
     2338                PawleyFile = dlg.GetPath()
     2339                self.dirname = dlg.GetDirectory()
     2340                choice = data['Histograms'].keys()
     2341                dlg2 = wx.SingleChoiceDialog(self,'Select','Powder histogram',choice)
     2342                if dlg2.ShowModal() == wx.ID_OK:
     2343                    histogram = choice[dlg2.GetSelection()]
     2344                    Id  = G2gd.GetPatternTreeItemId(self, self.root, histogram)
     2345                    Iparms = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,Id, 'Instrument Parameters'))
     2346                dlg2.Destroy()
     2347               
     2348                PawleyPeaks = G2IO.GetPawleyPeaks(PawleyFile)
     2349                data['Pawley ref'] = PawleyPeaks
     2350                FillPawleyReflectionsGrid()
     2351        finally:
     2352            dlg.Destroy()
    22472353
    22482354    def OnPageChanged(event):
     
    22872393            UpdateDrawAtoms()
    22882394            G2plt.PlotStructure(self,data)
     2395        elif text == 'Pawley reflections':
     2396            self.dataFrame.SetMenuBar(self.dataFrame.PawleyMenu)
     2397            self.dataFrame.Bind(wx.EVT_MENU, OnPawleyLoad, id=G2gd.wxID_PAWLEYLOAD)
     2398            self.dataFrame.Bind(wx.EVT_MENU, OnPawleyImport, id=G2gd.wxID_PAWLEYIMPORT)
     2399            FillPawleyReflectionsGrid()           
    22892400        else:
    22902401            self.dataFrame.SetMenuBar(self.dataFrame.BlankMenu)
     
    22982409
    22992410    if GeneralData['Type'] == 'Pawley':
     2411        DData = wx.ScrolledWindow(self.dataDisplay)
     2412        self.dataDisplay.AddPage(DData,'Data')
    23002413        PawleyRefl = G2gd.GSGrid(self.dataDisplay)
    23012414        self.dataDisplay.AddPage(PawleyRefl,'Pawley reflections')
Note: See TracChangeset for help on using the changeset viewer.