Changeset 1878


Ignore:
Timestamp:
Jun 4, 2015 1:49:58 PM (7 years ago)
Author:
vondreele
Message:

refactor DDataGUI - mostly move event routines to be inside respective sizer routines
Enable Flack parameter - function OK; derivatives need work
Allow inversion of noncentrosymmetric structures in SymOpDialog? - to test enantiomers
some work to make pdf stuff neutron TOF friendly - not complete
fix Debye background function - now works; refactor result printing for it

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIddataGUI.py

    r1875 r1878  
    153153        return scaleSizer
    154154       
    155     def OnUseData(event):
    156         Obj = event.GetEventObject()
    157         UseList[G2frame.hist]['Use'] = Obj.GetValue()
    158        
    159155    def OnLGmixRef(event):
    160156        Obj = event.GetEventObject()
     
    212208        G2plt.PlotSizeStrainPO(G2frame,data,hist)
    213209       
    214     def OnSizeAxis(event):           
    215         Obj = event.GetEventObject()
    216         Saxis = Obj.GetValue().split()
    217         try:
    218             hkl = [int(Saxis[i]) for i in range(3)]
    219         except (ValueError,IndexError):
    220             hkl = UseList[G2frame.hist]['Size'][3]
    221         if not np.any(np.array(hkl)):
    222             hkl = UseList[G2frame.hist]['Size'][3]
    223         UseList[G2frame.hist]['Size'][3] = hkl
    224         h,k,l = hkl
    225         Obj.SetValue('%3d %3d %3d'%(h,k,l))
    226                    
    227     def OnResetSize(event):
    228         Obj = event.GetEventObject()
    229         Obj.SetValue(False)
    230         item,name = Indx[Obj.GetId()]
    231         if name == 'isotropic':
    232             UseList[item]['Size'][1][0] = 1.0
    233         elif name == 'uniaxial':
    234             UseList[item]['Size'][1][0] = 1.0
    235             UseList[item]['Size'][1][1] = 1.0
    236         elif name == 'ellipsoidal':
    237             for i in range(3):
    238                 UseList[item]['Size'][4][i] = 1.0
    239                 UseList[item]['Size'][4][i+3] = 0.0
    240         G2plt.PlotSizeStrainPO(G2frame,data,item)
    241         wx.CallLater(100,RepaintHistogramInfo)
    242            
    243210    def OnStrainType(event):
    244211        Obj = event.GetEventObject()
     
    377344        return newPOCoef
    378345       
    379     def OnExtRef(event):
    380         Obj = event.GetEventObject()
    381         UseList[G2frame.hist]['Extinction'][1] = Obj.GetValue()
    382        
    383     def OnExtVal(event):
    384         Obj = event.GetEventObject()
    385         try:
    386             ext = float(Obj.GetValue())
    387             if ext >= 0:
    388                 UseList[G2frame.hist]['Extinction'][0] = ext
    389         except ValueError:
    390             pass
    391         Obj.SetValue("%.2f"%(UseList[G2frame.hist]['Extinction'][0]))
    392 
    393     def OnBabRef(event):
    394         Obj = event.GetEventObject()
    395         item,bab = Indx[Obj.GetId()]
    396         UseList[item]['Babinet']['Bab'+bab][1] = Obj.GetValue()
    397        
    398     def OnFlackRef(event):
    399         Obj = event.GetEventObject()
    400         UseList[G2frame.hist]['Flack'][1] = Obj.GetValue()
    401        
    402     def OnBabVal(event):
    403         Obj = event.GetEventObject()
    404         item,bab = Indx[Obj.GetId()]
    405         try:
    406             val = float(Obj.GetValue())
    407             if val >= 0:
    408                 UseList[item]['Babinet']['Bab'+bab][0] = val
    409         except ValueError:
    410             pass
    411         Obj.SetValue("%.3f"%(UseList[item]['Babinet']['Bab'+bab][0]))
    412        
    413     def OnFlackVal(event):
    414         Obj = event.GetEventObject()
    415         try:
    416             flack = float(Obj.GetValue())
    417             UseList[G2frame.hist]['Flack'][0] = flack
    418         except ValueError:
    419             pass
    420         Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Flack'][0]))
    421 
    422     def OnTbarVal(event):
    423         Obj = event.GetEventObject()
    424         try:
    425             tbar = float(Obj.GetValue())
    426             if tbar > 0:
    427                 UseList[G2frame.hist]['Extinction'][2]['Tbar'] = tbar
    428         except ValueError:
    429             pass
    430         Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Extinction'][2]['Tbar']))
    431 
    432     def OnCos2TM(event):
    433         Obj = event.GetEventObject()
    434         try:
    435             val = float(Obj.GetValue())
    436             if 0. < val <= 1.:
    437                 UseList[G2frame.hist]['Extinction'][2]['Cos2TM'] = val
    438         except ValueError:
    439             pass
    440         Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Extinction'][2]['Cos2TM']))
    441        
    442     def OnEval(event):
    443         Obj = event.GetEventObject()
    444         item = Indx[Obj.GetId()]
    445         try:
    446             val = float(Obj.GetValue())
    447             if val > 0:
    448                 UseList[item[0]]['Extinction'][2][item[1]][0] = val
    449         except ValueError:
    450             pass
    451         Obj.SetValue("%10.3e"%(UseList[item[0]]['Extinction'][2][item[1]][0]))
    452        
    453     def OnEref(event):
    454         Obj = event.GetEventObject()
    455         item = Indx[Obj.GetId()]
    456         UseList[item[0]]['Extinction'][2][item[1]][1] = Obj.GetValue()
    457 
    458     def OnSCExtType(event):
    459         Obj = event.GetEventObject()
    460         item = Indx[Obj.GetId()]
    461         UseList[item[0]]['Extinction'][item[1]] = Obj.GetValue()
    462         wx.CallLater(100,RepaintHistogramInfo)
    463            
    464346    def checkAxis(axis):
    465347        if not np.any(np.array(axis)):
     
    710592        return shPenalty   
    711593       
    712     def ExtSizer():           
    713         extSizer = wx.BoxSizer(wx.HORIZONTAL)
    714         extRef = wx.CheckBox(DData,wx.ID_ANY,label=' Extinction: ')
    715         extRef.SetValue(UseList[G2frame.hist]['Extinction'][1])
    716         extRef.Bind(wx.EVT_CHECKBOX, OnExtRef)
    717         extSizer.Add(extRef,0,WACV|wx.LEFT,5)
    718         extVal = wx.TextCtrl(DData,wx.ID_ANY,
    719             '%.2f'%(UseList[G2frame.hist]['Extinction'][0]),style=wx.TE_PROCESS_ENTER)
    720         extVal.Bind(wx.EVT_TEXT_ENTER,OnExtVal)
    721         extVal.Bind(wx.EVT_KILL_FOCUS,OnExtVal)
    722         extSizer.Add(extVal,0,WACV)
     594    def ExtSizer(Type):
     595       
     596        def OnSCExtType(event):
     597            Obj = event.GetEventObject()
     598            item = Indx[Obj.GetId()]
     599            UseList[item[0]]['Extinction'][item[1]] = Obj.GetValue()
     600            wx.CallLater(100,RepaintHistogramInfo)
     601               
     602        def OnTbarVal(event):
     603            Obj = event.GetEventObject()
     604            try:
     605                tbar = float(Obj.GetValue())
     606                if tbar > 0:
     607                    UseList[G2frame.hist]['Extinction'][2]['Tbar'] = tbar
     608            except ValueError:
     609                pass
     610            Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Extinction'][2]['Tbar']))
     611   
     612        def OnCos2TM(event):
     613            Obj = event.GetEventObject()
     614            try:
     615                val = float(Obj.GetValue())
     616                if 0. < val <= 1.:
     617                    UseList[G2frame.hist]['Extinction'][2]['Cos2TM'] = val
     618            except ValueError:
     619                pass
     620            Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Extinction'][2]['Cos2TM']))
     621       
     622        def OnEval(event):
     623            Obj = event.GetEventObject()
     624            item = Indx[Obj.GetId()]
     625            try:
     626                val = float(Obj.GetValue())
     627                if val > 0:
     628                    UseList[item[0]]['Extinction'][2][item[1]][0] = val
     629            except ValueError:
     630                pass
     631            Obj.SetValue("%10.3e"%(UseList[item[0]]['Extinction'][2][item[1]][0]))
     632       
     633        def OnEref(event):
     634            Obj = event.GetEventObject()
     635            item = Indx[Obj.GetId()]
     636            UseList[item[0]]['Extinction'][2][item[1]][1] = Obj.GetValue()
     637   
     638        def OnExtRef(event):
     639            Obj = event.GetEventObject()
     640            UseList[G2frame.hist]['Extinction'][1] = Obj.GetValue()
     641           
     642        def OnExtVal(event):
     643            Obj = event.GetEventObject()
     644            try:
     645                ext = float(Obj.GetValue())
     646                if ext >= 0:
     647                    UseList[G2frame.hist]['Extinction'][0] = ext
     648            except ValueError:
     649                pass
     650            Obj.SetValue("%.2f"%(UseList[G2frame.hist]['Extinction'][0]))
     651
     652        extSizer = wx.BoxSizer(wx.VERTICAL)
     653        if Type == 'HKLF':
     654            typeSizer = wx.BoxSizer(wx.HORIZONTAL)           
     655            typeSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Extinction type: '),0,WACV)
     656            Choices = ['None','Primary','Secondary Type I','Secondary Type II',]    # remove 'Secondary Type I & II'
     657            typeTxt = wx.ComboBox(DData,wx.ID_ANY,choices=Choices,value=UseList[G2frame.hist]['Extinction'][1],
     658                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     659            Indx[typeTxt.GetId()] = [G2frame.hist,1]
     660            typeTxt.Bind(wx.EVT_COMBOBOX,OnSCExtType)
     661            typeSizer.Add(typeTxt)
     662            typeSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Approx: '),0,WACV)
     663            Choices=['Lorentzian','Gaussian']
     664            approxTxT = wx.ComboBox(DData,wx.ID_ANY,choices=Choices,value=UseList[G2frame.hist]['Extinction'][0],
     665                style=wx.CB_READONLY|wx.CB_DROPDOWN)
     666            Indx[approxTxT.GetId()] = [G2frame.hist,0]
     667            approxTxT.Bind(wx.EVT_COMBOBOX,OnSCExtType)
     668            typeSizer.Add(approxTxT)
     669            if UseList[G2frame.hist]['Extinction'][1] == 'None':
     670                extSizer.Add(typeSizer,0,WACV)
     671            else:
     672                extSizer.Add(typeSizer,0,WACV|wx.BOTTOM,5)       
     673                if 'Tbar' in UseList[G2frame.hist]['Extinction'][2]:       #skipped for TOF   
     674                    valSizer =wx.BoxSizer(wx.HORIZONTAL)
     675                    valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Tbar(mm):'),0,WACV)
     676                    tbarVal = wx.TextCtrl(DData,wx.ID_ANY,
     677                        '%.3f'%(UseList[G2frame.hist]['Extinction'][2]['Tbar']),style=wx.TE_PROCESS_ENTER)
     678                    tbarVal.Bind(wx.EVT_TEXT_ENTER,OnTbarVal)
     679                    tbarVal.Bind(wx.EVT_KILL_FOCUS,OnTbarVal)
     680                    valSizer.Add(tbarVal,0,WACV)
     681                    valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' cos(2ThM):'),0,WACV)
     682                    cos2tm = wx.TextCtrl(DData,wx.ID_ANY,
     683                        '%.3f'%(UseList[G2frame.hist]['Extinction'][2]['Cos2TM']),style=wx.TE_PROCESS_ENTER)
     684                    cos2tm.Bind(wx.EVT_TEXT_ENTER,OnCos2TM)
     685                    cos2tm.Bind(wx.EVT_KILL_FOCUS,OnCos2TM)
     686                    valSizer.Add(cos2tm,0,WACV)
     687                    extSizer.Add(valSizer,0,WACV)
     688                val2Sizer =wx.BoxSizer(wx.HORIZONTAL)
     689                if 'Primary' in UseList[G2frame.hist]['Extinction'][1]:
     690                    Ekey = ['Ep',]
     691                elif 'Secondary Type II' == UseList[G2frame.hist]['Extinction'][1]:
     692                    Ekey = ['Es',]
     693                elif 'Secondary Type I' == UseList[G2frame.hist]['Extinction'][1]:
     694                    Ekey = ['Eg',]
     695                else:
     696                    Ekey = ['Eg','Es']
     697                for ekey in Ekey:
     698                    Eref = wx.CheckBox(DData,wx.ID_ANY,label=ekey+' : ')
     699                    Eref.SetValue(UseList[G2frame.hist]['Extinction'][2][ekey][1])
     700                    Indx[Eref.GetId()] = [G2frame.hist,ekey]
     701                    Eref.Bind(wx.EVT_CHECKBOX, OnEref)
     702                    val2Sizer.Add(Eref,0,WACV|wx.LEFT,5)
     703                    Eval = wx.TextCtrl(DData,wx.ID_ANY,
     704                        '%10.3e'%(UseList[G2frame.hist]['Extinction'][2][ekey][0]),style=wx.TE_PROCESS_ENTER)
     705                    Indx[Eval.GetId()] = [G2frame.hist,ekey]
     706                    Eval.Bind(wx.EVT_TEXT_ENTER,OnEval)
     707                    Eval.Bind(wx.EVT_KILL_FOCUS,OnEval)
     708                    val2Sizer.Add(Eval,0,WACV)
     709                extSizer.Add(val2Sizer,0,WACV)
     710        else:   #PWDR
     711            extRef = wx.CheckBox(DData,wx.ID_ANY,label=' Extinction: ')
     712            extRef.SetValue(UseList[G2frame.hist]['Extinction'][1])
     713            extRef.Bind(wx.EVT_CHECKBOX, OnExtRef)
     714            extSizer.Add(extRef,0,WACV|wx.LEFT,5)
     715            extVal = wx.TextCtrl(DData,wx.ID_ANY,
     716                '%.2f'%(UseList[G2frame.hist]['Extinction'][0]),style=wx.TE_PROCESS_ENTER)
     717            extVal.Bind(wx.EVT_TEXT_ENTER,OnExtVal)
     718            extVal.Bind(wx.EVT_KILL_FOCUS,OnExtVal)
     719            extSizer.Add(extVal,0,WACV)
     720
    723721        return extSizer
    724    
    725     def SCExtSizer():
    726         extSizer = wx.BoxSizer(wx.VERTICAL)
    727         typeSizer = wx.BoxSizer(wx.HORIZONTAL)           
    728         typeSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Extinction type: '),0,WACV)
    729         Choices = ['None','Primary','Secondary Type I','Secondary Type II',]    # remove 'Secondary Type I & II'
    730         typeTxt = wx.ComboBox(DData,wx.ID_ANY,choices=Choices,value=UseList[G2frame.hist]['Extinction'][1],
    731             style=wx.CB_READONLY|wx.CB_DROPDOWN)
    732         Indx[typeTxt.GetId()] = [G2frame.hist,1]
    733         typeTxt.Bind(wx.EVT_COMBOBOX,OnSCExtType)
    734         typeSizer.Add(typeTxt)
    735         typeSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Approx: '),0,WACV)
    736         Choices=['Lorentzian','Gaussian']
    737         approxTxT = wx.ComboBox(DData,wx.ID_ANY,choices=Choices,value=UseList[G2frame.hist]['Extinction'][0],
    738             style=wx.CB_READONLY|wx.CB_DROPDOWN)
    739         Indx[approxTxT.GetId()] = [G2frame.hist,0]
    740         approxTxT.Bind(wx.EVT_COMBOBOX,OnSCExtType)
    741         typeSizer.Add(approxTxT)
    742         if UseList[G2frame.hist]['Extinction'][1] == 'None':
    743             extSizer.Add(typeSizer,0,WACV)
    744         else:
    745             extSizer.Add(typeSizer,0,WACV|wx.BOTTOM,5)       
    746             if 'Tbar' in UseList[G2frame.hist]['Extinction'][2]:       #skipped for TOF   
    747                 valSizer =wx.BoxSizer(wx.HORIZONTAL)
    748                 valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' Tbar(mm):'),0,WACV)
    749                 tbarVal = wx.TextCtrl(DData,wx.ID_ANY,
    750                     '%.3f'%(UseList[G2frame.hist]['Extinction'][2]['Tbar']),style=wx.TE_PROCESS_ENTER)
    751                 tbarVal.Bind(wx.EVT_TEXT_ENTER,OnTbarVal)
    752                 tbarVal.Bind(wx.EVT_KILL_FOCUS,OnTbarVal)
    753                 valSizer.Add(tbarVal,0,WACV)
    754                 valSizer.Add(wx.StaticText(DData,wx.ID_ANY,' cos(2ThM):'),0,WACV)
    755                 cos2tm = wx.TextCtrl(DData,wx.ID_ANY,
    756                     '%.3f'%(UseList[G2frame.hist]['Extinction'][2]['Cos2TM']),style=wx.TE_PROCESS_ENTER)
    757                 cos2tm.Bind(wx.EVT_TEXT_ENTER,OnCos2TM)
    758                 cos2tm.Bind(wx.EVT_KILL_FOCUS,OnCos2TM)
    759                 valSizer.Add(cos2tm,0,WACV)
    760                 extSizer.Add(valSizer,0,WACV)
    761             val2Sizer =wx.BoxSizer(wx.HORIZONTAL)
    762             if 'Primary' in UseList[G2frame.hist]['Extinction'][1]:
    763                 Ekey = ['Ep',]
    764             elif 'Secondary Type II' == UseList[G2frame.hist]['Extinction'][1]:
    765                 Ekey = ['Es',]
    766             elif 'Secondary Type I' == UseList[G2frame.hist]['Extinction'][1]:
    767                 Ekey = ['Eg',]
    768             else:
    769                 Ekey = ['Eg','Es']
    770             for ekey in Ekey:
    771                 Eref = wx.CheckBox(DData,wx.ID_ANY,label=ekey+' : ')
    772                 Eref.SetValue(UseList[G2frame.hist]['Extinction'][2][ekey][1])
    773                 Indx[Eref.GetId()] = [G2frame.hist,ekey]
    774                 Eref.Bind(wx.EVT_CHECKBOX, OnEref)
    775                 val2Sizer.Add(Eref,0,WACV|wx.LEFT,5)
    776                 Eval = wx.TextCtrl(DData,wx.ID_ANY,
    777                     '%10.3e'%(UseList[G2frame.hist]['Extinction'][2][ekey][0]),style=wx.TE_PROCESS_ENTER)
    778                 Indx[Eval.GetId()] = [G2frame.hist,ekey]
    779                 Eval.Bind(wx.EVT_TEXT_ENTER,OnEval)
    780                 Eval.Bind(wx.EVT_KILL_FOCUS,OnEval)
    781                 val2Sizer.Add(Eval,0,WACV)
    782 
    783             extSizer.Add(val2Sizer,0,WACV)
    784         return extSizer
    785722       
    786723    def BabSizer():
     724       
     725        def OnBabVal(event):
     726            Obj = event.GetEventObject()
     727            item,bab = Indx[Obj.GetId()]
     728            try:
     729                val = float(Obj.GetValue())
     730                if val >= 0:
     731                    UseList[item]['Babinet']['Bab'+bab][0] = val
     732            except ValueError:
     733                pass
     734            Obj.SetValue("%.3f"%(UseList[item]['Babinet']['Bab'+bab][0]))
     735       
     736        def OnBabRef(event):
     737            Obj = event.GetEventObject()
     738            item,bab = Indx[Obj.GetId()]
     739            UseList[item]['Babinet']['Bab'+bab][1] = Obj.GetValue()
     740       
    787741        babSizer = wx.BoxSizer(wx.HORIZONTAL)
    788742        for bab in ['A','U']:
     
    801755       
    802756    def FlackSizer():
     757       
     758        def OnFlackVal(event):
     759            Obj = event.GetEventObject()
     760            try:
     761                flack = float(Obj.GetValue())
     762                UseList[G2frame.hist]['Flack'][0] = flack
     763            except ValueError:
     764                pass
     765            Obj.SetValue("%.3f"%(UseList[G2frame.hist]['Flack'][0]))
     766
     767        def OnFlackRef(event):
     768            Obj = event.GetEventObject()
     769            UseList[G2frame.hist]['Flack'][1] = Obj.GetValue()
     770               
    803771        flackSizer = wx.BoxSizer(wx.HORIZONTAL)
    804772        flackRef = wx.CheckBox(DData,wx.ID_ANY,label=' Flack parameter: ')
     
    831799       
    832800    def ShowHistogramInfo():
     801       
     802        def OnUseData(event):
     803            Obj = event.GetEventObject()
     804            UseList[G2frame.hist]['Use'] = Obj.GetValue()
     805       
     806        def OnResetSize(event):
     807            Obj = event.GetEventObject()
     808            Obj.SetValue(False)
     809            item,name = Indx[Obj.GetId()]
     810            if name == 'isotropic':
     811                UseList[item]['Size'][1][0] = 1.0
     812            elif name == 'uniaxial':
     813                UseList[item]['Size'][1][0] = 1.0
     814                UseList[item]['Size'][1][1] = 1.0
     815            elif name == 'ellipsoidal':
     816                for i in range(3):
     817                    UseList[item]['Size'][4][i] = 1.0
     818                    UseList[item]['Size'][4][i+3] = 0.0
     819            G2plt.PlotSizeStrainPO(G2frame,data,item)
     820            wx.CallLater(100,RepaintHistogramInfo)
     821           
     822        def OnSizeAxis(event):           
     823            Obj = event.GetEventObject()
     824            Saxis = Obj.GetValue().split()
     825            try:
     826                hkl = [int(Saxis[i]) for i in range(3)]
     827            except (ValueError,IndexError):
     828                hkl = UseList[G2frame.hist]['Size'][3]
     829            if not np.any(np.array(hkl)):
     830                hkl = UseList[G2frame.hist]['Size'][3]
     831            UseList[G2frame.hist]['Size'][3] = hkl
     832            h,k,l = hkl
     833            Obj.SetValue('%3d %3d %3d'%(h,k,l))
     834                       
    833835        try:
    834836            histData = UseList[G2frame.hist]
     
    930932                   
    931933            bottomSizer.Add(poSizer,0,WACV|wx.TOP|wx.BOTTOM,5)
    932             bottomSizer.Add(ExtSizer(),0,WACV|wx.TOP|wx.BOTTOM,5)
     934            bottomSizer.Add(ExtSizer('PWDR'),0,WACV|wx.TOP|wx.BOTTOM,5)
    933935            bottomSizer.Add(BabSizer(),0,WACV|wx.BOTTOM,5)
    934936        elif G2frame.hist[:4] == 'HKLF':
     
    937939                UseList[G2frame.hist]['Flack'] = [0.0,False]
    938940#end patch
    939             bottomSizer.Add(SCExtSizer(),0,WACV|wx.BOTTOM,5)
     941            bottomSizer.Add(ExtSizer('HKLF'),0,WACV|wx.BOTTOM,5)
    940942            bottomSizer.Add(BabSizer(),0,WACV|wx.BOTTOM,5)
    941 #            if not SGData['SGInv']:        #not operational yet - no test data
    942 #                bottomSizer.Add(FlackSizer(),0,WACV|wx.BOTTOM,5)
     943            if not SGData['SGInv']:        #not operational yet - no test data
     944                bottomSizer.Add(FlackSizer(),0,WACV|wx.BOTTOM,5)
    943945        return bottomSizer
    944946               
  • trunk/GSASIIgrid.py

    r1852 r1878  
    237237            self.force = wx.RadioBox(panel,-1,'Force to unit cell?',choices=choice)
    238238            self.force.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    239             mainSizer.Add(self.force,0,WACV)
    240         mainSizer.Add((5,5),0)
    241         if SGData['SGInv']:
    242             choice = ['No','Yes']
    243             self.inv = wx.RadioBox(panel,-1,'Choose inversion?',choices=choice)
    244             self.inv.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    245             mainSizer.Add(self.inv,0,WACV)
    246         mainSizer.Add((5,5),0)
     239            mainSizer.Add(self.force,0,WACV|wx.TOP,5)
     240#        if SGData['SGInv']:
     241        choice = ['No','Yes']
     242        self.inv = wx.RadioBox(panel,-1,'Choose inversion?',choices=choice)
     243        self.inv.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
     244        mainSizer.Add(self.inv,0,WACV)
    247245        if SGData['SGLatt'] != 'P':
    248246            LattOp = G2spc.Latt2text(SGData['SGLatt']).split(';')
     
    250248            self.latt.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    251249            mainSizer.Add(self.latt,0,WACV)
    252         mainSizer.Add((5,5),0)
    253250        if SGData['SGLaue'] in ['-1','2/m','mmm','4/m','4/mmm']:
    254251            Ncol = 2
     
    261258            majorDimension=Ncol)
    262259        self.oprs.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    263         mainSizer.Add(self.oprs,0,WACV)
    264         mainSizer.Add((5,5),0)
     260        mainSizer.Add(self.oprs,0,WACV|wx.BOTTOM,5)
    265261        mainSizer.Add(wx.StaticText(panel,-1,"   Choose unit cell?"),0,WACV)
    266         mainSizer.Add((5,5),0)
    267262        cellSizer = wx.BoxSizer(wx.HORIZONTAL)
    268         cellSizer.Add((5,0),0)
    269263        cellName = ['X','Y','Z']
    270264        self.cell = []
     
    275269            self.cell[-1].Bind(wx.EVT_SPINCTRL, self.OnOpSelect)
    276270            cellSizer.Add(self.cell[-1],0,WACV)
    277         mainSizer.Add(cellSizer,0,)
     271        mainSizer.Add(cellSizer,0,WACV|wx.BOTTOM,5)
    278272        if self.New:
    279273            choice = ['No','Yes']
     
    281275            self.new.Bind(wx.EVT_RADIOBOX, self.OnOpSelect)
    282276            mainSizer.Add(self.new,0,WACV)
    283         mainSizer.Add((5,5),0)
    284277
    285278        OkBtn = wx.Button(panel,-1,"Ok")
     
    300293
    301294    def OnOpSelect(self,event):
    302         if self.SGData['SGInv']:
    303             self.OpSelected[0] = self.inv.GetSelection()
     295#        if self.SGData['SGInv']:
     296        self.OpSelected[0] = self.inv.GetSelection()
    304297        if self.SGData['SGLatt'] != 'P':
    305298            self.OpSelected[1] = self.latt.GetSelection()
  • trunk/GSASIIpwd.py

    r1874 r1878  
    270270    MuR = Abs*data['Diam']/20.0
    271271    xydata['IofQ'][1][1] /= Absorb(data['Geometry'],MuR,Tth)
    272     xydata['IofQ'][1][1] /= Polarization(inst['Polariz.'][1],Tth,Azm=inst['Azimuth'][1])[0]
     272    if 'X' in inst['Type'][0]:
     273        xydata['IofQ'][1][1] /= Polarization(inst['Polariz.'][1],Tth,Azm=inst['Azimuth'][1])[0]
    273274    if data['DetType'] == 'Image plate':
    274275        xydata['IofQ'][1][1] *= Oblique(data['ObliqCoeff'],Tth)
     
    993994    for name in varyList:
    994995        if 'Debye' in name:
    995             parm,id = name.split(':')
     996            parm,id = name.split(';')
    996997            ip = names.index(parm)
    997998            dMdv[varyList.index(name)] = dMddb[3*int(id)+ip]
     
    12041205    debyeList = []
    12051206    for i in range(Debye['nDebye']):
    1206         debyeNames = ['DebyeA:'+str(i),'DebyeR:'+str(i),'DebyeU:'+str(i)]
     1207        debyeNames = ['DebyeA;'+str(i),'DebyeR;'+str(i),'DebyeU;'+str(i)]
    12071208        debyeDict.update(dict(zip(debyeNames,Debye['debyeTerms'][i][::2])))
    12081209        debyeList += zip(debyeNames,Debye['debyeTerms'][i][1::2])
     
    13321333        iDb = 0
    13331334        while True:
    1334             names = ['DebyeA:','DebyeR:','DebyeU:']
     1335            names = ['DebyeA;','DebyeR;','DebyeU;']
    13351336            try:
    13361337                for i,name in enumerate(names):
     
    13651366            print 'Background not refined'
    13661367        if Background[1]['nDebye']:
    1367             parms = ['DebyeA','DebyeR','DebyeU']
     1368            parms = ['DebyeA;','DebyeR;','DebyeU;']
    13681369            print 'Debye diffuse scattering coefficients'
    13691370            ptfmt = "%12.5f"
    1370             names =   'names :'
    1371             ptstr =  'values:'
    1372             sigstr = 'esds  :'
    1373             for item in sigDict:
    1374                 if 'Debye' in item:
    1375                     names += '%12s'%(item)
    1376                     sigstr += ptfmt%(sigDict[item])
    1377                     parm,id = item.split(':')
    1378                     ip = parms.index(parm)
    1379                     ptstr += ptfmt%(Background[1]['debyeTerms'][int(id)][2*ip])
    1380             print names
    1381             print ptstr
    1382             print sigstr
     1371            print ' term       DebyeA       esd        DebyeR       esd        DebyeU        esd'
     1372            for term in range(Background[1]['nDebye']):
     1373                line = ' term %d'%(term)
     1374                for ip,name in enumerate(parms):
     1375                    line += ptfmt%(Background[1]['debyeTerms'][term][2*ip])
     1376                    if name+str(term) in sigDict:
     1377                        line += ptfmt%(sigDict[name+str(term)])
     1378                print line
    13831379        if Background[1]['nPeaks']:
    13841380            parms = ['BkPkpos','BkPkint','BkPksig','BkPkgam']
     
    15301526                ptstr += ptfmt[name] % (parmDict[parName])
    15311527                if parName in varyList:
    1532 #                    ptstr += G2IO.ValEsd(parmDict[parName],sigDict[parName])
    15331528                    ptstr += ptfmt[name] % (sigDict[parName])
    15341529                else:
    1535 #                    ptstr += G2IO.ValEsd(parmDict[parName],0.0)
    1536                     ptstr += 10*' '
     1530                    if name in ['alp','bet']:
     1531                        ptstr += 8*' '
     1532                    else:
     1533                        ptstr += 10*' '
    15371534            print '%s'%(('Peak'+str(i+1)).center(8)),ptstr
    15381535               
  • trunk/GSASIIpwdGUI.py

    r1841 r1878  
    854854        bakSizer = wx.FlexGridSizer(0,5,5,5)
    855855        for i,value in enumerate(data[0][3:]):
    856             bakVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,'%10.4f'%(value),style=wx.TE_PROCESS_ENTER)
     856            bakVal = wx.TextCtrl(G2frame.dataDisplay,wx.ID_ANY,'%10.4g'%(value),style=wx.TE_PROCESS_ENTER)
    857857            bakSizer.Add(bakVal,0,WACV)
    858858            ValObj[bakVal.GetId()] = [i+3]
     
    41884188    global inst
    41894189    tth2q = lambda t,w:4.0*math.pi*sind(t/2.0)/w
     4190    tof2q = lambda t,C:2.0*math.pi*C/t
    41904191    dataFile = G2frame.PatternTree.GetItemText(G2frame.PatternId)
    41914192    powName = 'PWDR'+dataFile[4:]
     
    41934194    fullLimits,limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Limits'))[:2]
    41944195    inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Instrument Parameters'))[0]
    4195     if 'Lam' in inst:
    4196         keV = 12.397639/inst['Lam'][1]
    4197     else:
    4198         keV = 12.397639/inst['Lam1'][0]
    4199     wave = 12.397639/keV
    4200     qLimits = [tth2q(fullLimits[0],wave),tth2q(fullLimits[1],wave)]
     4196    if 'C' in inst['Type'][0]:
     4197        if 'Lam' in inst:
     4198            keV = 12.397639/inst['Lam'][1]
     4199        else:
     4200            keV = 12.397639/inst['Lam1'][0]
     4201        wave = 12.397639/keV
     4202        qLimits = [tth2q(fullLimits[0],wave),tth2q(fullLimits[1],wave)]
     4203        polariz = inst['Polariz.'][1]
     4204    else:   #'T'of
     4205        qLimits = [tof2q(fullLimits[1],inst['difC'][1]),tof2q(fullLimits[0],inst['difC'][1])]
     4206        polariz = 1.0
    42014207    data['QScaleLim'][1] = min(qLimits[1],data['QScaleLim'][1])
    42024208    if data['QScaleLim'][0]:
     
    42044210    else:                                #initial setting at 90% of max Q
    42054211        data['QScaleLim'][0] = 0.90*data['QScaleLim'][1]
    4206     polariz = inst['Polariz.'][1]
    42074212    azimuth = inst['Azimuth'][1]
    42084213    itemDict = {}
     
    44934498            El = PE.Elem
    44944499            if El not in ElList and El != 'None':
    4495                 ElemSym = El.strip().capitalize()               
    4496                 FpMu = G2elem.FPcalc(G2elem.GetXsectionCoeff(ElemSym), keV)
    4497                 ElData = G2elem.GetFormFactorCoeff(ElemSym)[0]
    4498                 ElData['FormulaNo'] = 0.0
    4499                 ElData.update(G2elem.GetAtomInfo(ElemSym))
    4500                 ElData.update(dict(zip(['fp','fpp','mu'],FpMu)))
    4501                 ElData.update(G2elem.GetFFC5(El))
     4500                ElemSym = El.strip().capitalize()
     4501                if 'X' in inst['Type'][0]:               
     4502                    FpMu = G2elem.FPcalc(G2elem.GetXsectionCoeff(ElemSym), keV)
     4503                    ElData = G2elem.GetFormFactorCoeff(ElemSym)[0]
     4504                    ElData['FormulaNo'] = 0.0
     4505                    ElData.update(G2elem.GetAtomInfo(ElemSym))
     4506                    ElData.update(dict(zip(['fp','fpp','mu'],FpMu)))
     4507                    ElData.update(G2elem.GetFFC5(El))
     4508                else: #'N'eutron
     4509                    ElData = {}
     4510                    ElData.update(G2elem.GetAtomInfo(ElemSym))
     4511                    ElData['FormulaNo'] = 0.0
     4512                    ElData.update({'mu':0.0,'fp':0.0,'fpp':0.0})
    45024513                data['ElList'][El] = ElData
    45034514            data['Form Vol'] = max(10.0,SumElementVolumes())
     
    45784589    mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' PDF data files: '),0,WACV)
    45794590    mainSizer.Add((5,5),0)
    4580     str = ' Sample file: PWDR %s   Wavelength, A: %.5f  Energy, keV: %.3f  Polariz.: %.2f '%(dataFile[3:],wave,keV,polariz)
    4581     mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,WACV)
     4591    if 'C' in inst['Type'][0]:
     4592        str = ' Sample file: PWDR %s   Wavelength, A: %.5f  Energy, keV: %.3f  Polariz.: %.2f '%(dataFile[3:],wave,keV,polariz)
     4593        mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=str),0,WACV)
    45824594#    dataSizer = wx.BoxSizer(wx.HORIZONTAL)
    45834595#    dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label='Azimuth'),0,WACV)
  • trunk/GSASIIstrMath.py

    r1877 r1878  
    816816    FFtables = calcControls['FFtables']
    817817    BLtables = calcControls['BLtables']
     818    Flack = 1.0
     819    if not SGData['SGInv'] and 'S' in calcControls[hfx+'histType']:
     820        Flack = 1.-2.*parmDict[phfx+'Flack']
    818821    Tdata,Mdata,Fdata,Xdata,dXdata,IAdata,Uisodata,Uijdata = GetAtomFXU(pfx,calcControls,parmDict)
    819822    FF = np.zeros(len(Tdata))
     
    856859            FPP = np.repeat(FPP.T,len(SGT),axis=0)
    857860        Bab = np.repeat(parmDict[phfx+'BabA']*np.exp(-parmDict[phfx+'BabU']*SQfactor),len(SGT))
    858         Flack = 1.0
    859 #        Flack = 1.-2.*parmDict[phfx+'Flack']
    860861        Tindx = np.array([refDict['FF']['El'].index(El) for El in Tdata])
    861862        FF = np.repeat(refDict['FF']['FF'][iBeg:iFin].T[Tindx].T,len(SGT),axis=0)
     
    912913    dFdua = np.zeros((nRef,mSize,6))
    913914    dFdbab = np.zeros((nRef,2))
     915    dFdfl = np.zeros(nRef)
     916    Flack = 1.0
     917    if not SGData['SGInv'] and 'S' in calcControls[hfx+'histType']:
     918        Flack = 1.-2.*parmDict[phfx+'Flack']
    914919    for iref,refl in enumerate(refDict['RefList']):
    915920        if 'T' in calcControls[hfx+'histType']:
     
    935940        Tuij = np.where(HbH<1.,np.exp(HbH),1.0)
    936941        Tcorr = Tiso*Tuij
    937         Flack = 1.0
    938 #        Flack = (1.-2.*parmDict[phfx+'Flack'])
    939942        fot = (FF+FP-Bab)*occ*Tcorr
    940         fotp = Flack*FPP*occ*Tcorr
    941         fa = np.array([fot[:,np.newaxis]*cosp,fotp[:,np.newaxis]*cosp])       #non positions
    942         fb = np.array([fot[:,np.newaxis]*sinp,-fotp[:,np.newaxis]*sinp])
     943        fotp = FPP*occ*Tcorr
     944        fa = np.array([fot[:,np.newaxis]*cosp,-Flack*fotp[:,np.newaxis]*sinp])       #non positions
     945        fb = np.array([fot[:,np.newaxis]*sinp,Flack*fotp[:,np.newaxis]*cosp])
    943946       
    944947        fas = np.sum(np.sum(fa,axis=1),axis=1)      #real sum over atoms & unique hkl
    945948        fbs = np.sum(np.sum(fb,axis=1),axis=1)      #imag sum over atoms & uniq hkl
    946         fax = np.array([-fot[:,np.newaxis]*sinp,-fotp[:,np.newaxis]*sinp])   #positions
    947         fbx = np.array([fot[:,np.newaxis]*cosp,-fot[:,np.newaxis]*cosp])
     949        fax = np.array([-fot[:,np.newaxis]*sinp,-fotp[:,np.newaxis]*cosp])   #positions
     950        fbx = np.array([fot[:,np.newaxis]*cosp,-fotp[:,np.newaxis]*sinp])
    948951        #sum below is over Uniq
    949952        dfadfr = np.sum(fa/occ[:,np.newaxis],axis=2)        #Fdata != 0 ever avoids /0. problem
     
    958961            dfbdua = np.sum(-Hij*fb[:,:,:,np.newaxis],axis=2)
    959962            dfbdba = np.sum(-sinp*(occ*Tcorr)[:,np.newaxis],axis=1)
     963            dfadfl = np.sum(fotp[:,np.newaxis]*cosp)
     964            dfbdfl = np.sum(-fotp[:,np.newaxis]*sinp)
    960965        else:
    961966            dfbdfr = np.zeros_like(dfadfr)
     
    964969            dfbdua = np.zeros_like(dfadua)
    965970            dfbdba = np.zeros_like(dfadba)
     971            dfadfl = 0.0
     972            dfbdfl = 0.0
    966973        #NB: the above have been checked against PA(1:10,1:2) in strfctr.for for Al2O3!   
    967974        if 'P' in calcControls[hfx+'histType']: #checked perfect for centro & noncentro
     
    982989            dFdui[iref] = 2.*SA*(dfadui[0]+dfbdui[1])+2.*SB*(dfbdui[0]+dfadui[1])
    983990            dFdua[iref] = 2.*SA*(dfadua[0]+dfbdua[1])+2.*SB*(dfbdua[0]+dfadua[1])
     991            dFdfl[iref] = -4.*SA*(dfadfl+dfbdfl)-4.*SB*(dfbdfl+dfadfl)
    984992        dFdbab[iref] = 2.*fas[0]*np.array([np.sum(dfadba*dBabdA),np.sum(-dfadba*parmDict[phfx+'BabA']*SQfactor*dBabdA)]).T+ \
    985993            2.*fbs[0]*np.array([np.sum(dfbdba*dBabdA),np.sum(-dfbdba*parmDict[phfx+'BabA']*SQfactor*dBabdA)]).T
     994           
    986995        #loop over atoms - each dict entry is list of derivatives for all the reflections
    987996    for i in range(len(Mdata)):
     
    9971006        dFdvDict[pfx+'AU13:'+str(i)] = 0.5*dFdua.T[4][i]
    9981007        dFdvDict[pfx+'AU23:'+str(i)] = 0.5*dFdua.T[5][i]
    999     dFdvDict[pfx+'BabA'] = dFdbab.T[0]
    1000     dFdvDict[pfx+'BabU'] = dFdbab.T[1]
     1008    dFdvDict[phfx+'BabA'] = dFdbab.T[0]
     1009    dFdvDict[phfx+'BabU'] = dFdbab.T[1]
     1010    dFdvDict[phfx+'Flack'] = dFdfl.T
    10011011    return dFdvDict
    10021012   
     
    11121122        dFdvDict[pfx+'AU23:'+str(i)] = .5*dFdua.T[5][i]
    11131123        #need dFdvDict[pfx+'Xsin:'+str[i]:str(m)], etc for modulations...
    1114     dFdvDict[pfx+'BabA'] = dFdbab.T[0]
    1115     dFdvDict[pfx+'BabU'] = dFdbab.T[1]
     1124    dFdvDict[phfx+'BabA'] = dFdbab.T[0]
     1125    dFdvDict[phfx+'BabU'] = dFdbab.T[1]
    11161126    return dFdvDict
    11171127   
  • trunk/imports/G2pwd_fxye.py

    r1834 r1878  
    433433    else:
    434434        return 0
     435
Note: See TracChangeset for help on using the changeset viewer.