Changeset 5025


Ignore:
Timestamp:
Sep 14, 2021 11:55:59 AM (3 months ago)
Author:
vondreele
Message:

Add shell plots to 3D reflection plots.
Fix escape character issues in CopyRietveld2Origin
Revise LeBail? operation - now works in sequential refinements. Remove "Fit LeBail?" from Calculate menu.
OnLeBail? does 10 cycles instead of 3 in the "zero cycle" step.
Initial FOSQ set to Scale*Phase fr. instead of 1.0 - improves initial LeBaill? fit.
Put newLeBail flag in Controls - as more global.
Allow LeBail? refinements in sequential refinements.
Remove a wx.Yield() - obsolete
Disable deletion of selected parameters in a LeBail? refinement & let the LS handle any singularities that may ensue
Derivatives no longer controlled by LeBail? flag.

Location:
trunk
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIdataGUI.py

    r5021 r5025  
    760760        self.Refine.append(item)
    761761        self.Bind(wx.EVT_MENU, self.OnRefine, id=item.GetId())
    762         item = parent.Append(wx.ID_ANY,'&Le Bail fit\tCTRL+B','Fit Le Bail intensities only')
    763         item.Enable(state)
    764         self.Refine.append(item)
    765         self.Bind(wx.EVT_MENU, self.OnLeBail, id=item.GetId())
     762        # item = parent.Append(wx.ID_ANY,'&Le Bail fit\tCTRL+B','Fit Le Bail intensities only')
     763        # item.Enable(state)
     764        # self.Refine.append(item)
     765        # self.Bind(wx.EVT_MENU, self.OnLeBail, id=item.GetId())
    766766
    767767        item = parent.Append(wx.ID_ANY,'&Run Fprime','X-ray resonant scattering')
     
    51735173        #    imp.reload(G2G)
    51745174        # end debug stuff   
    5175         dlg = G2G.ShowLSParms(self,'Least Squares Parameters',parmValDict,
    5176                     varyList,reqVaryList,Controls)
     5175        dlg = G2G.ShowLSParms(self,'Least Squares Parameters',parmValDict,varyList,reqVaryList,Controls)
    51775176        dlg.CenterOnParent()
    51785177        dlg.ShowModal()
     
    51835182        Called from the Calculate/Refine menu.
    51845183        '''
     5184        Controls = self.GPXtree.GetItemPyData(GetGPXtreeItemId(self,self.root, 'Controls'))
    51855185        if self.testSeqRefineMode():
    51865186            self.OnSeqRefine(event)
    51875187            return
     5188        if Controls.get('newLeBail',False):
     5189            G2G.G2MessageBox(self,'Doing a zero cycle Le Bail refinement first','Le Bail Refinement')           
     5190            self.OnLeBail(event)
    51885191        G2cnstG.CheckAllScalePhaseFractions(self) # can be slow for sequential fits, skip
    51895192        self.OnFileSave(event)
     
    52065209            dlg.SetSize((int(Size[0]*1.2),Size[1])) # increase size a bit along x
    52075210        dlg.CenterOnParent()
    5208         #dlg.Raise()  # dangerous, crashes on some platforms
    52095211        Rw = 100.00
    52105212        self.SaveTreeSetting() # save the current tree selection
     
    52585260                msg = ''
    52595261            try:
    5260                 dlg = wx.MessageDialog(self, msg,'Note singularities',
    5261                     wx.OK)
     5262                dlg = wx.MessageDialog(self, msg,'Note singularities',wx.OK)
    52625263                dlg.CenterOnParent()
    52635264                dlg.SetSize((700,300)) # does not resize on Mac
     
    52695270           
    52705271    def OnLeBail(self,event):
    5271         seqList = self.testSeqRefineMode()
    5272         if seqList:
    5273             self.ErrorDialog('Not for Sequential Fits',
    5274                 'This command is not yet implemented for sequential fitting')
    5275             return
     5272        Controls = self.GPXtree.GetItemPyData(GetGPXtreeItemId(self,self.root, 'Controls'))
     5273        # seqList = self.testSeqRefineMode()
     5274        # if seqList:
     5275        #     self.ErrorDialog('Not for Sequential Fits',
     5276        #         'This command is not yet implemented for sequential fitting')
     5277        #     return
    52765278        self.OnFileSave(event)
    52775279        item = GetGPXtreeItemId(self,self.root,'Covariance')
     
    53115313                rtext += txt
    53125314            text += '\nLoad new result?'
    5313             dlg2 = wx.MessageDialog(self,text,'Le Bail fit: Rwp={:.3f}'
    5314                                             .format(Rwp),wx.OK|wx.CANCEL)
     5315            dlg2 = wx.MessageDialog(self,text,'Le Bail fit: Rwp={:.3f}'.format(Rwp),wx.OK|wx.CANCEL)
    53155316            dlg2.CenterOnParent()
    53165317            try:
    53175318                if dlg2.ShowModal() == wx.ID_OK:
     5319                    Controls['newLeBail'] = False
    53185320                    if refPlotUpdate: refPlotUpdate({},restore=True)
    53195321                    wx.CallAfter(self.reloadFromGPX,rtext)
     
    54075409        Called from self.OnRefine (Which is called from the Calculate/Refine menu)
    54085410        '''
     5411        Controls = self.GPXtree.GetItemPyData(GetGPXtreeItemId(self,self.root, 'Controls'))
    54095412        seqList = self.testSeqRefineMode()
    5410         if not seqList:
    5411             self.OnRefine(event)
    5412             return
     5413        # if not seqList:
     5414        #     self.OnRefine(event)
     5415        #     return
    54135416        #plotHist = self.GPXtree.GetItemText(self.PatternId)
    54145417        Id = GetGPXtreeItemId(self,self.root,'Sequential results')
     
    54175420            self.GPXtree.SetItemPyData(Id,{})           
    54185421        self.G2plotNB.Delete('Sequential refinement')    #clear away probably invalid plot
    5419         Controls = self.GPXtree.GetItemPyData(GetGPXtreeItemId(self,self.root, 'Controls'))
    54205422        Controls['ShowCell'] = True
    54215423        for key in ('parmMinDict','parmMaxDict','parmFrozen'):
     
    54465448                  warnmsg+u'\nRefinement not possible')
    54475449            self.ErrorDialog('Refinement Flag Error',
    5448                              u'Conflict between refinment flag settings and constraints:\n'+
    5449                              warnmsg+u'\nRefinement not possible')
     5450                 u'Conflict between refinment flag settings and constraints:\n'+
     5451                 warnmsg+u'\nRefinement not possible')
    54505452            return
    54515453        self.GPXtree.SaveExposedItems()       
     
    54765478            dlg.Update(101.) # forces the Auto_Hide; needed after move w/Win & wx3.0
    54775479            dlg.Destroy()
    5478             wx.Yield()
    54795480        if OK:
    54805481            lst = os.path.splitext(os.path.abspath(self.GSASprojectfile))[0]
     
    66476648    if 'Marquardt' not in data:
    66486649        data['Marquardt'] = -3
     6650    if 'newLeBail' not in data:
     6651        data['newLeBail'] = False
    66496652   
    66506653    #end patch
  • trunk/GSASIIddataGUI.py

    r5003 r5025  
    830830        G2frame.dataWindow.SendSizeEvent()
    831831        if LeBailMsg:
    832             G2G.G2MessageBox(G2frame,LeBailMsg,
    833                                  title='LeBail refinement changes')
     832            G2G.G2MessageBox(G2frame,LeBailMsg,title='LeBail refinement changes')
    834833       
    835834    def ShowHistogramInfo():
     
    845844            Obj = event.GetEventObject()
    846845            if not UseList[G2frame.hist]['LeBail']:
    847                 UseList[G2frame.hist]['newLeBail'] = True
    848                 Obj.SetLabel('Do new Le Bail extraction?')
     846                Controls['newLeBail'] = True
     847            else:
     848                Controls['newLeBail'] = False
    849849            UseList[G2frame.hist]['LeBail'] = not UseList[G2frame.hist]['LeBail']
    850850            wx.CallLater(100,RepaintHistogramInfo,DData.GetScrollPos(wx.VERTICAL))
     
    892892        if 'LeBail' not in UseList[G2frame.hist]:
    893893            UseList[G2frame.hist]['LeBail'] = False
    894         if 'newLeBail' not in UseList[G2frame.hist]:
    895             UseList[G2frame.hist]['newLeBail'] = True
    896894        if 'Babinet' not in UseList[G2frame.hist]:
    897895            UseList[G2frame.hist]['Babinet'] = {'BabA':[0.0,False],'BabU':[0.0,False]}
     
    915913        useBox.Add(useData,0,WACV)
    916914        if not generalData['doPawley'] and 'PWDR' in G2frame.hist[:4]:
    917             lbLabel = 'Redo Le Bail extraction?   '
    918             if UseList[G2frame.hist]['newLeBail']:
    919                 lbLabel = 'Do new Le Bail extraction?'
    920             lebail = wx.CheckBox(DData,wx.ID_ANY,label=lbLabel)
    921             lebail.Bind(wx.EVT_CHECKBOX, OnLeBail)
    922             lebail.SetValue(UseList[G2frame.hist]['LeBail'])
     915            lbLabel = 'Start Le Bail extraction?   '
     916            if UseList[G2frame.hist]['LeBail']:
     917                lbLabel = 'Stop Le Bail extraction?'
     918                G2frame.SetStatusText('To reset Le Bail extracted intensities, cycle Le Bail button.',1)
     919            lebail = wx.Button(DData,wx.ID_ANY,label=lbLabel)
     920            lebail.Bind(wx.EVT_BUTTON, OnLeBail)
    923921            useBox.Add(lebail,0,WACV)
    924             if UseList[G2frame.hist]['LeBail']:
    925                 G2frame.SetStatusText('To reset Le Bail, cycle Le Bail check box.',1)
    926922        bottomSizer.Add(useBox,0,wx.TOP|wx.BOTTOM|wx.LEFT,5)
    927923        if G2frame.testSeqRefineMode() and not UseList[G2frame.hist]['LeBail']:
     
    10351031                if generalData['Type'] != 'magnetic':
    10361032                    bottomSizer.Add(BabSizer(),0,wx.BOTTOM,5)
    1037             else:   #turn off PWDR intensity related paramters for LeBail refinement
    1038                 if UseList[G2frame.hist]['Scale'][1]:
    1039                     offMsg = "Phase fraction"
    1040                     UseList[G2frame.hist]['Scale'][1] = False
    1041                 if UseList[G2frame.hist]['Pref.Ori.'][2]:
    1042                     UseList[G2frame.hist]['Pref.Ori.'][2] = False
    1043                     if offMsg: offMsg += ', '
    1044                     offMsg += 'Preferred orientation'
    1045                 if UseList[G2frame.hist]['Extinction'][1]:
    1046                     UseList[G2frame.hist]['Extinction'][1] = False
    1047                     if offMsg: offMsg += ', '
    1048                     offMsg += 'Extinction'
    1049                 flag = False
    1050                 for item in UseList[G2frame.hist]['Babinet']:
    1051                     if UseList[G2frame.hist]['Babinet'][item][1]:
    1052                         UseList[G2frame.hist]['Babinet'][item][1] = False
    1053                         flag = True
    1054                 if flag:
    1055                     if offMsg: offMsg += ', '
    1056                     offMsg += 'Babinet'
    1057                 # make sure that the at least one phase uses the histogram...
    1058                 allLeBail = True
    1059                 hists,phases = G2frame.GetUsedHistogramsAndPhasesfromTree()
    1060                 for key in phases:
    1061                     d = phases[key]
    1062                     if G2frame.hist not in d['Histograms']: continue
    1063                     if not d['Histograms'][G2frame.hist]['Use']: continue
    1064                     if not d['Histograms'][G2frame.hist]['LeBail']:
    1065                         #print('Phase',key,'is used as non-LeBail')
    1066                         allLeBail = False
    1067                         break
    1068                 # ...or turn off scale
    1069                 if allLeBail:
    1070                     if hists[G2frame.hist]['Sample Parameters']['Scale'][1]:
    1071                         hists[G2frame.hist]['Sample Parameters']['Scale'][1] = False
    1072                         if offMsg: offMsg += ', '
    1073                         offMsg += 'Histogram scale factor'
    1074                 if offMsg:
    1075                     offMsg = "Refinement flags turned for: " + offMsg
     1033            # else:   #turn off PWDR intensity related paramters for LeBail refinement
     1034            #     if UseList[G2frame.hist]['Scale'][1]:
     1035            #         offMsg = "Phase fraction"
     1036            #         UseList[G2frame.hist]['Scale'][1] = False
     1037            #     if UseList[G2frame.hist]['Pref.Ori.'][2]:
     1038            #         UseList[G2frame.hist]['Pref.Ori.'][2] = False
     1039            #         if offMsg: offMsg += ', '
     1040            #         offMsg += 'Preferred orientation'
     1041            #     if UseList[G2frame.hist]['Extinction'][1]:
     1042            #         UseList[G2frame.hist]['Extinction'][1] = False
     1043            #         if offMsg: offMsg += ', '
     1044            #         offMsg += 'Extinction'
     1045            #     flag = False
     1046            #     for item in UseList[G2frame.hist]['Babinet']:
     1047            #         if UseList[G2frame.hist]['Babinet'][item][1]:
     1048            #             UseList[G2frame.hist]['Babinet'][item][1] = False
     1049            #             flag = True
     1050            #     if flag:
     1051            #         if offMsg: offMsg += ', '
     1052            #         offMsg += 'Babinet'
     1053            #     # make sure that the at least one phase uses the histogram...
     1054            #     allLeBail = True
     1055            #     hists,phases = G2frame.GetUsedHistogramsAndPhasesfromTree()
     1056            #     for key in phases:
     1057            #         d = phases[key]
     1058            #         if G2frame.hist not in d['Histograms']: continue
     1059            #         if not d['Histograms'][G2frame.hist]['Use']: continue
     1060            #         if not d['Histograms'][G2frame.hist]['LeBail']:
     1061            #             #print('Phase',key,'is used as non-LeBail')
     1062            #             allLeBail = False
     1063            #             break
     1064            #     # ...or turn off scale
     1065            #     if allLeBail:
     1066            #         if hists[G2frame.hist]['Sample Parameters']['Scale'][1]:
     1067            #             hists[G2frame.hist]['Sample Parameters']['Scale'][1] = False
     1068            #             if offMsg: offMsg += ', '
     1069            #             offMsg += 'Histogram scale factor'
     1070            #     if offMsg:
     1071            #         offMsg = "Refinement flags turned for: " + offMsg
    10761072        elif G2frame.hist[:4] == 'HKLF':
    10771073            bottomSizer.Add(ExtSizer('HKLF'),0,wx.BOTTOM,5)
     
    10851081    #### Beginning of UpdateDData execution here
    10861082    ######################################################################
     1083    Controls = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame,G2frame.GPXtree.root, 'Controls'))
    10871084    G2frame.SetStatusText('',1)
    10881085    keyList = G2frame.GetHistogramNames(['PWDR','HKLF'])
     
    13121309            copyNames = ['Extinction','Babinet','Flack','Twins']
    13131310        else:  #PWDR 
    1314             copyNames = ['Pref.Ori.','Size','Mustrain','HStrain','Extinction','Babinet','LeBail','newLeBail','Layer Disp']
     1311            copyNames = ['Pref.Ori.','Size','Mustrain','HStrain','Extinction','Babinet','LeBail','Layer Disp']
    13151312        copyNames += ['Scale','Fix FXU','FixedSeqVars']
    13161313        copyDict = {}
     
    13631360                for bab in babNames:
    13641361                    copyDict[name][bab] = sourceDict[name][bab][1]
    1365             elif name == 'Fix FXU' or name == 'FixedSeqVars':
     1362            elif name in ['Fix FXU','FixedSeqVars']:
    13661363                copyDict[name] = copy.deepcopy(sourceDict[name])                   
    13671364        keyList = G2frame.dataWindow.HistsInPhase[:]
     
    14051402                            for bab in babNames:
    14061403                                data['Histograms'][item][name][bab][1] = copy.deepcopy(copyDict[name][bab])
    1407                         elif name == 'Fix FXU' or name == 'FixedSeqVars':
     1404                        elif name in ['Fix FXU','FixedSeqVars']:
    14081405                            data['Histograms'][item][name] = copy.deepcopy(sourceDict[name])                     
    14091406        finally:
     
    14221419            copyNames = ['Extinction','Babinet','Flack','Twins']
    14231420        else:  #PWDR 
    1424             copyNames = ['Pref.Ori.','Size','Mustrain','HStrain','Extinction','Babinet','LeBail','newLeBail','Layer Disp']
     1421            copyNames = ['Pref.Ori.','Size','Mustrain','HStrain','Extinction','Babinet','LeBail','Layer Disp']
    14251422        copyNames += ['Scale','Fix FXU','FixedSeqVars']           
    14261423        dlg = G2G.G2MultiChoiceDialog(G2frame,'Select which parameters to copy',
     
    14751472                    for histoName in newList:
    14761473                        Id = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,histoName)
    1477                         data['Histograms'][histoName] = {'Histogram':histoName,'Show':False,'LeBail':False,'newLeBail':True,
     1474                        data['Histograms'][histoName] = {'Histogram':histoName,'Show':False,'LeBail':False,
    14781475                            'Scale':[1.0,False],'Pref.Ori.':['MD',1.0,False,[0,0,1],0,{},['',],0.1],
    14791476                            'Size':['isotropic',[1.,1.,1.],[False,False,False],[0,0,1],
  • trunk/GSASIIobj.py

    r5021 r5025  
    313313                                5. (list) Ellipsoidal refinement flags - list of bools, corresponding to the parameters of (4)
    314314\\           Use                 (bool) True if this histogram is to be used in refinement
    315 \\           newLeBail           (bool) Whether to perform a new LeBail extraction
    316315MCSA            \\               (dict) Monte-Carlo simulated annealing parameters
    317316==========  ===============     =====================================================================================================
     
    13421341    'UsrReject':{'minF/sig':0.,'MinExt':0.01,'MaxDF/F':100.,'MaxD':500.,'MinD':0.05},
    13431342    'Copy2Next':False,'Reverse Seq':False,'HatomFix':False,
    1344     'Author':'no name',
     1343    'Author':'no name','newLeBail':False,
    13451344    'FreePrm1':'Sample humidity (%)',
    13461345    'FreePrm2':'Sample voltage (V)',
     
    19161915        #Histogram vars (:h:<var>)
    19171916        'Absorption' : 'Absorption coef.',
     1917        'LayerDisp'  : 'Bragg-Brentano Layer displacement',
    19181918        'Displace([XY])' : ('Debye-Scherrer sample displacement \\1',0.1),
    19191919        'Lam' : ('Wavelength',1e-6),
     
    20062006        'Gonio. radius': 'Distance from sample to detector, mm',
    20072007        }.items():
    2008         # Needs documentation: HAP: LayerDisp, LeBail, newLeBail
     2008        # Needs documentation: HAP: LeBail, newLeBail
    20092009        # hist: Azimuth, Chi, Omega, Phi, Bank, nDebye, nPeaks
    20102010       
  • trunk/GSASIIplot.py

    r5023 r5025  
    15391539        elif key in 'Z':
    15401540            Data['Zone'] = not Data['Zone']
     1541            if Data['Zone']:
     1542                Data['Shell'] = [.0,False]
    15411543        elif key in 'B':
    15421544            ifBox = not ifBox
     1545        elif key in 'R':
     1546            Data['Shell'][1] = not Data['Shell'][1]
    15431547        elif key in ['+','=']:
    1544             Data['Scale'] *= 1.25
     1548            if Data['Shell'][1]:
     1549                Data['Shell'][0] += 0.1
     1550            else:
     1551                Data['Scale'] *= 1.25
    15451552        elif key == '-':
    1546             Data['Scale'] /= 1.25
     1553            if Data['Shell'][1]:
     1554                Data['Shell'][0] = max(Data['Shell'][0]-0.1,0.0)
     1555            else:
     1556                Data['Scale'] /= 1.25
    15471557        elif key == 'P':
    15481558            vec = viewChoice[Data['viewKey']][0]
     
    15541564            drawingData['viewPoint'][0] = np.array([0,0,0])
    15551565            Data['Scale'] = 1.0
     1566            Data['Shell'][0] = 0.0
    15561567        elif key == 'I':
    15571568            Data['Iscale'] = not Data['Iscale']
     
    15741585    if Super:
    15751586        SuperVec = np.array(Data['SuperVec'][0])
     1587    if 'Shell' not in Data:
     1588        Data['Shell'] = [0.0,False]
    15761589    Amat,Bmat = G2lat.cell2AB(cell)         #Amat - crystal to cartesian, Bmat - inverse
    15771590    Gmat,gmat = G2lat.cell2Gmat(cell)
     
    15981611        HKL = []
    15991612        for i,refl in enumerate(hklRef):
     1613            if Data['Shell'][1]:
     1614                if not (Data['Shell'][0] <= 0.5/refl[4+Super] <= Data['Shell'][0]+.1):
     1615                    continue
    16001616            H = refl[:3]
    16011617            if 'HKLF' in Name:
     
    18691885        if Data['Zone']:
    18701886            G2frame.G2plotNB.status.SetStatusText   \
    1871                 ('Plot type = %s for %s; RF = %6.2f%%, RF%s = %6.2f%% layer %s'%    \
    1872                 (Data['Type'],Name,RF,super2,RF2,str(list(drawingData['viewPoint'][0]))),1)           
     1887                ('Plot type = %s for %s; N = %d, RF = %6.2f%%, RF%s = %6.2f%% layer %s'%    \
     1888                (Data['Type'],Name,len(HKL),RF,super2,RF2,str(list(drawingData['viewPoint'][0]))),1)
     1889        elif Data['Shell'][1]:
     1890            G2frame.G2plotNB.status.SetStatusText   \
     1891                ('Plot type = %s for %s; N = %d, RF = %6.2f%%, RF%s = %6.2f%% shell %.1f'%    \
     1892                (Data['Type'],Name,len(HKL),RF,super2,RF2,Data['Shell'][0]),1)
    18731893        else:
    18741894            G2frame.G2plotNB.status.SetStatusText   \
    1875                 ('Plot type = %s for %s; RF = %6.2f%%, RF%s = %6.2f%%'%(Data['Type'],Name,RF,super2,RF2),1)
     1895                ('Plot type = %s for %s; N = %d, RF = %6.2f%%, RF%s = %6.2f%%'%     \
     1896                (Data['Type'],Name,len(HKL),RF,super2,RF2),1)
    18761897       
    18771898        SetBackground()
     
    19121933    Font = Page.GetFont()
    19131934    Page.Choice = None
    1914     choice = [' save as/key:','jpeg','tiff','bmp','h: view down h','k: view down k','l: view down l',
     1935    choice = [' save as/key:','jpeg','tiff','bmp','h: view down h','k: view down k','l: view down l','r: plot radial shell',
    19151936    'z: zero zone toggle','p: increment layer','m: decrement layer','c: reset to default','o: set view point = 0,0,0','b: toggle box ','+: increase scale','-: decrease scale',
    19161937    'f: Fobs','s: Fobs**2','u: unit','d: Fo-Fc','w: DF/sig','i: toggle intensity scaling']
     
    43524373            plot.symbol_kind = 10
    43534374            plot.color = 4 + j
    4354             refLegendText = refLegendText + "\l(" + str(4 + k) + ") " + lblList[i] + " "
     4375            refLegendText = refLegendText + "\\l(" + str(4 + k) + ") " + lblList[i] + " "
    43554376            # Increment phase counter
    43564377            k += 1
     
    43804401        # Set up legend
    43814402        label = gl.label('Legend')
    4382         label.text = '\l(1) %(1)\l(2) %(2)\l(3) %(3)\l(4) %(4) %(CRLF)' + refLegendText
     4403        label.text = '\\l(1) %(1)\\l(2) %(2)\\l(3) %(3\\l(4) %(4) %(CRLF)' + refLegendText
    43834404
    43844405    def CopyRietveld2Igor(Pattern,Plot,Page,plotOpt,filename,G2frame):
  • trunk/GSASIIpwdGUI.py

    r5021 r5025  
    340340        if dataType == 'Debye-Scherrer':
    341341            if 'T' in histType:
    342                 parms += [['Absorption',u'Sample absorption (\xb5\xb7r/l): ',[10,4]],]
     342                parms += [['Absorption',u'Sample absorption (\xb5r/'+Gklambda+'): ',[10,4]],]
    343343            else:
    344344                parms += [['DisplaceX',u'Sample X displ. perp. to beam (\xb5m): ',[10,3]],
  • trunk/GSASIIscriptable.py

    r5003 r5025  
    19351935                break
    19361936    if conv: print("Applying patch to Controls['parmFrozen']")
     1937    if 'newLeBail' not in Controls:
     1938        Controls['newLeBail'] = False
    19371939    # end patch
    19381940
     
    24472449            UseList[hist.name]['hId'] = hist.id
    24482450            for key, val in [('Use', True), ('LeBail', False),
    2449                              ('newLeBail', True),
    24502451                             ('Babinet', {'BabA': [0.0, False],
    24512452                                          'BabU': [0.0, False]})]:
     
    51335134                hists = self.data['Histograms']
    51345135                for hname, hoptions in hists.items():
    5135                     if 'LeBail' not in hoptions:
    5136                         hoptions['newLeBail'] = bool(True)
    51375136                    hoptions['LeBail'] = bool(value)
    51385137            else:
     
    51585157                hists = self.data['Histograms']
    51595158                for hname, hoptions in hists.items():
    5160                     if 'LeBail' not in hoptions:
    5161                         hoptions['newLeBail'] = True
    51625159                    hoptions['LeBail'] = False
    51635160            else:
  • trunk/GSASIIstrIO.py

    r4974 r5025  
    706706            if 'parmFrozen' not in Controls:
    707707                Controls['parmFrozen'] = {}
    708             Controls['parmFrozen']['FrozenList'] = [
    709                     i if type(i) is G2obj.G2VarObj
    710                     else G2obj.G2VarObj(i)
    711                     for i in parmFrozenList]
     708            Controls['parmFrozen']['FrozenList'] = [i if type(i) is G2obj.G2VarObj
     709                else G2obj.G2VarObj(i) for i in parmFrozenList]
    712710        try:
    713711            histogram = Histograms[datum[0]]
     
    24542452################################################################################       
    24552453                   
    2456 def GetHistogramPhaseData(Phases,Histograms,Print=True,pFile=None,resetRefList=True):
     2454def GetHistogramPhaseData(Phases,Histograms,Controls={},Print=True,pFile=None,resetRefList=True):
    24572455    '''Loads the HAP histogram/phase information into dicts
    24582456
     
    26022600                if Phases[phase]['General']['doPawley']:
    26032601                    hapDict[pfx+'LeBail'] = False           #Pawley supercedes LeBail
    2604                     hapDict[pfx+'newLeBail'] = True
    26052602                    Tmin = G2lat.Dsp2pos(inst,dmin)
    26062603                    if 'T' in inst['Type'][1]:
     
    26102607                else:
    26112608                    hapDict[pfx+'LeBail'] = hapData.get('LeBail',False)
    2612                     hapDict[pfx+'newLeBail'] = hapData.get('newLeBail',True)
    26132609                if Phases[phase]['General']['Type'] == 'magnetic':
    26142610                    dmin = max(dmin,Phases[phase]['General'].get('MagDmin',0.))
    26152611                for item in ['Scale','Extinction']:
    26162612                    hapDict[pfx+item] = hapData[item][0]
    2617                     if hapData[item][1] and not hapDict[pfx+'LeBail']:
     2613                    # if hapData[item][1] and not hapDict[pfx+'LeBail']:
     2614                    if hapData[item][1]:
    26182615                        hapVary.append(pfx+item)
    26192616                names = G2spc.HStrainNames(SGData)
     
    26342631                    hapDict[pfx+'MD'] = hapData['Pref.Ori.'][1]
    26352632                    controlDict[pfx+'MDAxis'] = hapData['Pref.Ori.'][3]
    2636                     if hapData['Pref.Ori.'][2] and not hapDict[pfx+'LeBail']:
     2633                    if hapData['Pref.Ori.'][2]:     # and not hapDict[pfx+'LeBail']:
    26372634                        hapVary.append(pfx+'MD')
    26382635                else:                           #'SH' spherical harmonics
     
    26502647                    for item in hapData['Pref.Ori.'][5]:
    26512648                        hapDict[pfx+item] = hapData['Pref.Ori.'][5][item]
    2652                         if hapData['Pref.Ori.'][2] and not hapDict[pfx+'LeBail']:
     2649                        if hapData['Pref.Ori.'][2]:         # and not hapDict[pfx+'LeBail']:
    26532650                            hapVary.append(pfx+item)
    26542651                for item in ['Mustrain','Size']:
     
    26832680                    for bab in ['BabA','BabU']:
    26842681                        hapDict[pfx+bab] = hapData['Babinet'][bab][0]
    2685                         if hapData['Babinet'][bab][1] and not hapDict[pfx+'LeBail']:
     2682                        if hapData['Babinet'][bab][1]:      # and not hapDict[pfx+'LeBail']:
    26862683                            hapVary.append(pfx+bab)
    26872684                               
     
    27092706                        if hapData['Babinet']['BabA'][0]:
    27102707                            PrintBabinet(hapData['Babinet'])
    2711                 if phase in Histogram['Reflection Lists'] and 'RefList' not in Histogram['Reflection Lists'][phase] and hapData.get('LeBail',False):
    2712                     hapData['newLeBail'] = True
    2713                 if resetRefList and (not hapDict[pfx+'LeBail'] or (hapData.get('LeBail',False) and hapData['newLeBail'])):
    2714                     if hapData.get('LeBail',True):         #stop regeneating reflections for LeBail
    2715                         hapData['newLeBail'] = False
     2708                if resetRefList and (not hapDict[pfx+'LeBail'] or (hapData.get('LeBail',False) and Controls.get('newLeBail',False))):
     2709                    Scale = Histogram['Sample Parameters']['Scale'][0]      #for initializing reflection structure factors.
     2710                    StartI = hapData['Scale'][0]*Scale
    27162711                    refList = []
    2717 #                    Uniq = []
    2718 #                    Phi = []
    27192712                    useExt = 'magnetic' in Phases[phase]['General']['Type'] and 'N' in inst['Type'][0]
    27202713                    if Phases[phase]['General'].get('Modulated',False):
     
    27292722                                    pos = G2lat.Dsp2pos(inst,d)
    27302723                                    if limits[0] < pos < limits[1]:
    2731                                         refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,1., 0.0,0.0,1.0,1.0,1.0])
     2724                                        refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,StartI, 0.0,0.0,1.0,1.0,1.0])
    27322725                                        #... sig,gam,fotsq,fctsq, phase,icorr,prfo,abs,ext
    2733 #                                        Uniq.append(uniq)
    2734 #                                        Phi.append(phi)
    27352726                                elif 'T' in inst['Type'][0]:
    27362727                                    pos = G2lat.Dsp2pos(inst,d)
    27372728                                    if limits[0] < pos < limits[1]:
    27382729                                        wave = inst['difC'][1]*d/(252.816*inst['fltPath'][0])
    2739                                         refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,1., 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
     2730                                        refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,StartI, 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
    27402731                                        # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet,wave, prfo,abs,ext
    27412732                                        #TODO - if tabulated put alp & bet in here
    2742 #                                        Uniq.append(uniq)
    2743 #                                        Phi.append(phi)
    27442733                                elif 'B' in inst['Type'][0]:
    27452734                                    pos = G2lat.Dsp2pos(inst,d)
    27462735                                    if limits[0] < pos < limits[1]:
    2747                                         refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,1., 0.0,0.0,0.0,0.0, 1.0,1.0,1.0])
     2736                                        refList.append([h,k,l,m,mul,d, pos,0.0,0.0,0.0,StartI, 0.0,0.0,0.0,0.0, 1.0,1.0,1.0])
    27482737                                        # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet, prfo,abs,ext
    27492738                    else:
     
    27612750                                pos = G2lat.Dsp2pos(inst,d)
    27622751                                if limits[0] < pos < limits[1]:
    2763                                     refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,1., 0.0,0.0,1.0,1.0,1.0])
     2752                                    refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,StartI, 0.0,0.0,1.0,1.0,1.0])
    27642753                                    #... sig,gam,fotsq,fctsq, phase,icorr,prfo,abs,ext
    2765 #                                    Uniq.append(uniq)
    2766 #                                    Phi.append(phi)
    27672754                            elif 'T' in inst['Type'][0]:
    27682755                                pos = G2lat.Dsp2pos(inst,d)
    27692756                                if limits[0] < pos < limits[1]:
    27702757                                    wave = inst['difC'][1]*d/(252.816*inst['fltPath'][0])
    2771                                     refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,1., 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
     2758                                    refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,StartI, 0.0,0.0,0.0,0.0,wave, 1.0,1.0,1.0])
    27722759                                    # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet,wave, prfo,abs,ext
    2773 #                                    Uniq.append(uniq)
    2774 #                                    Phi.append(phi)
    27752760                            elif 'B' in inst['Type'][0]:
    27762761                                pos = G2lat.Dsp2pos(inst,d)
    27772762                                if limits[0] < pos < limits[1]:
    2778                                     refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,1., 0.0,0.0,0.0,0.0, 1.0,1.0,1.0])
     2763                                    refList.append([h,k,l,mul,d, pos,0.0,0.0,0.0,StartI, 0.0,0.0,0.0,0.0, 1.0,1.0,1.0])
    27792764                                    # ... sig,gam,fotsq,fctsq, phase,icorr,alp,bet, prfo,abs,ext
    27802765                    Histogram['Reflection Lists'][phase] = {'RefList':np.array(refList),'FF':{},'Type':inst['Type'][0],'Super':ifSuper}
  • trunk/GSASIIstrMain.py

    r5004 r5025  
    3838import GSASIIfiles as G2fil
    3939import GSASIIElem as G2elem
     40import GSASIIscriptable as G2sc
    4041import atmdata
    4142
     
    148149    '''
    149150    #patch (added Oct 2020) convert variable names for parm limits to G2VarObj
    150     import GSASIIscriptable as G2sc
    151151    G2sc.patchControls(Controls)
    152152    # end patch
     
    345345    calcControls['MFtables'] = MFtables
    346346    calcControls['maxSSwave'] = maxSSwave
    347     hapVary,hapDict,controlDict = G2stIO.GetHistogramPhaseData(Phases,Histograms,pFile=printFile)
     347    hapVary,hapDict,controlDict = G2stIO.GetHistogramPhaseData(Phases,Histograms,Controls=calcControls,pFile=printFile)
    348348    TwConstr,TwFixed = G2stIO.makeTwinFrConstr(Phases,Histograms,hapVary)
    349349    constrDict += TwConstr
     
    513513    return False
    514514       
    515 def DoLeBail(GPXfile,dlg=None,cycles=3,refPlotUpdate=None):
     515def DoLeBail(GPXfile,dlg=None,cycles=10,refPlotUpdate=None):
    516516    '''Fit LeBail intensities without changes to any other refined parameters.
    517517    This is a stripped-down version of :func:`Refine` that does not perform
     
    552552    calcControls['MFtables'] = MFtables
    553553    calcControls['maxSSwave'] = maxSSwave
    554     hapVary,hapDict,controlDict = G2stIO.GetHistogramPhaseData(Phases,Histograms,Print=False)
     554    hapVary,hapDict,controlDict = G2stIO.GetHistogramPhaseData(Phases,Histograms,Controls=calcControls,Print=False)
    555555    calcControls.update(controlDict)
    556556    histVary,histDict,controlDict = G2stIO.GetHistogramData(Histograms,Print=False)
     
    697697        redphaseVary = phaseCheck(phaseVary,Phases,histogram)
    698698        Histo = {histogram:Histograms[histogram],}
    699         hapVary,hapDict,controlDict = G2stIO.GetHistogramPhaseData(Phases,Histo,Print=False)
     699        hapVary,hapDict,controlDict = G2stIO.GetHistogramPhaseData(Phases,Histo,Controls=calcControls,Print=False)
    700700        calcControls.update(controlDict)
    701701        histVary,histDict,controlDict = G2stIO.GetHistogramData(Histo,False)
  • trunk/GSASIIstrMath.py

    r5016 r5025  
    30763076                                refl[8+im] = icod[0]
    30773077                                sumInt += icod[1]
    3078                                 if parmDict[phfx+'LeBail']: refl[9+im] = refl[8+im]
     3078                                if parmDict[phfx+'LeBail']:
     3079                                    refl[9+im] = refl[8+im]
    30793080                            elif icod == -1:
    30803081                                refl[3+im] *= -1
     
    31023103                                refl[8+im] = icod[0]
    31033104                                sumInt += icod[1]
    3104                                 if parmDict[phfx+'LeBail']: refl[9+im] = refl[8+im]
     3105                                if parmDict[phfx+'LeBail']:
     3106                                    refl[9+im] = refl[8+im]
    31053107                            elif icod == -1:
    31063108                                refl[3+im] *= -1
     
    31283130                                refl[8+im] = icod[0]
    31293131                                sumInt += icod[1]
    3130                                 if parmDict[phfx+'LeBail']: refl[9+im] = refl[8+im]
     3132                                if parmDict[phfx+'LeBail']:
     3133                                    refl[9+im] = refl[8+im]
    31313134                            elif icod == -1:
    31323135                                refl[3+im] *= -1
Note: See TracChangeset for help on using the changeset viewer.