Changeset 395 for trunk/GSASIIgrid.py


Ignore:
Timestamp:
Oct 20, 2011 9:25:32 AM (10 years ago)
Author:
vondreele
Message:

Add goniometer omega, chi & phi to sample data
put SH texture in General
fix phase delete to remove it from reflection lists as well
continue development of constraints/restraints GUI
fixes to texture computations, GUI & least squares refinement

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r384 r395  
    1616import GSASIIimgGUI as G2imG
    1717import GSASIIphsGUI as G2phG
     18import GSASIIstruct as G2str
     19import GSASIImapvars as G2mv
    1820
    1921[ wxID_ATOMSEDITADD, wxID_ATOMSEDITINSERT, wxID_ATOMSEDITDELETE, wxID_ATOMSREFINE,
     
    630632           
    631633def UpdateConstraints(self,data):
    632    
    633    
     634    Histograms,Phases = self.GetUsedHistogramsAndPhasesfromTree()
     635    Natoms,phaseVary,phaseDict,pawleyLookup,FFtable = G2str.GetPhaseData(Phases,Print=False)       
     636    hapVary,hapDict,controlDict = G2str.GetHistogramPhaseData(Phases,Histograms,Print=False)
     637    histVary,histDict,controlDict = G2str.GetHistogramData(Histograms,Print=False)
     638   
     639    def FindEquivVarb(name,nameList):
     640        outList = []
     641        for item in nameList:
     642            key = item.split(':')[2]
     643            if key in name and item != name:
     644                outList.append(item)
     645        return outList
     646       
     647    def SelectVarbs(FrstVarb,varList,legend):
     648        #future -  add 'all:all:name', '0:all:name', etc. to the varList
     649        dlg = wx.MultiChoiceDialog(self,'Select more variables:'+legend,FrstVarb+' and:',varList)
     650        varbs = [FrstVarb,]
     651        if dlg.ShowModal() == wx.ID_OK:
     652            sel = dlg.GetSelections()
     653            for x in sel:
     654                varbs.append(varList[x])
     655        dlg.Destroy()
     656        if len(varbs) > 1:
     657            return map(list,zip(varbs,[1.0 for i in range(len(varbs))]))
     658        else:
     659            return [[FrstVarb,0.0],]
     660   
     661    def OnAddConstraint(event):
     662        constr = []
     663        plegend = '\n In p::name'
     664        hlegend = '\n In :h:name'
     665        phlegend = '\n In p:h:name'
     666        for phase in Phases:
     667            plegend += '\n p:: = '+str(Phases[phase]['pId'])+':: for '+phase
     668            for histogram in Phases[phase]['Histograms']:
     669                phlegend += '\n p:h: = '+str(Phases[phase]['pId'])+':'+str(Histograms[histogram]['hId'])+': for '+phase+' in '+histogram
     670        for histogram in Histograms:
     671            hlegend += '\n :h: = :'+str(Histograms[histogram]['hId'])+': for '+histogram
     672        page = self.dataDisplay.GetSelection()
     673        if 'Histogram ' in self.dataDisplay.GetPageText(page):
     674            dlg = wx.SingleChoiceDialog(self,'Select 1st variable:'+hlegend,'Histogram variables:',histVary)
     675            if dlg.ShowModal() == wx.ID_OK:
     676                sel = dlg.GetSelection()
     677                FrstVarb = histVary[sel]
     678                moreVarb = FindEquivVarb(FrstVarb,histVary)
     679                constr = SelectVarbs(FrstVarb,moreVarb,hlegend)
     680            dlg.Destroy()
     681        elif '/Phase' in self.dataDisplay.GetPageText(page):
     682            legend = 'Select 1st variable: \n '
     683            dlg = wx.SingleChoiceDialog(self,'Select 1st variable:'+phlegend,'HAP variables:',hapVary)
     684            if dlg.ShowModal() == wx.ID_OK:
     685                sel = dlg.GetSelection()
     686                FrstVarb = hapVary[sel]
     687                moreVarb = FindEquivVarb(FrstVarb,hapVary)
     688                constr = SelectVarbs(FrstVarb,moreVarb,phlegend)
     689            dlg.Destroy()
     690        elif 'Phase' in self.dataDisplay.GetPageText(page):
     691            dlg = wx.SingleChoiceDialog(self,'Select 1st variable:'+plegend,'Phase variables:',phaseVary)
     692            if dlg.ShowModal() == wx.ID_OK:
     693                sel = dlg.GetSelection()
     694                FrstVarb = phaseVary[sel]
     695                moreVarb = FindEquivVarb(FrstVarb,phaseVary)
     696                constr = SelectVarbs(FrstVarb,moreVarb,plegend)
     697            dlg.Destroy()
     698        if constr:
     699            constr += [0.0,True]
     700               
     701           
     702             
     703   
     704    def UpdateHAPConstr():
     705        HAPConstr.DestroyChildren()
     706        dataDisplay = wx.Panel(HAPConstr)
     707        mainSizer = wx.BoxSizer(wx.VERTICAL)
     708        mainSizer.Add((5,5),0)
     709        mainSizer.Add(wx.StaticText(dataDisplay,-1,'Histogram/Phase constraints:'),0,wx.ALIGN_CENTER_VERTICAL)
     710        mainSizer.Add((5,5),0)
     711       
     712
     713
     714        dataDisplay.SetSizer(mainSizer)
     715        Size = mainSizer.Fit(self.dataFrame)
     716        Size[1] += 26                           #compensate for status bar
     717        dataDisplay.SetSize(Size)
     718        self.dataFrame.setSizePosLeft(Size)
     719       
     720    def UpdateHistConstr():
     721        HistConstr.DestroyChildren()
     722        dataDisplay = wx.Panel(HistConstr)
     723        mainSizer = wx.BoxSizer(wx.VERTICAL)
     724        mainSizer.Add((5,5),0)
     725        mainSizer.Add(wx.StaticText(dataDisplay,-1,'Histogram constraints:'),0,wx.ALIGN_CENTER_VERTICAL)
     726        mainSizer.Add((5,5),0)
     727
     728
     729        dataDisplay.SetSizer(mainSizer)
     730        Size = mainSizer.Fit(self.dataFrame)
     731        Size[1] += 26                           #compensate for status bar
     732        dataDisplay.SetSize(Size)
     733        self.dataFrame.setSizePosLeft(Size)
     734       
     735    def UpdatePhaseConstr():
     736        PhaseConstr.DestroyChildren()
     737        dataDisplay = wx.Panel(PhaseConstr)
     738        mainSizer = wx.BoxSizer(wx.VERTICAL)
     739        mainSizer.Add((5,5),0)
     740        mainSizer.Add(wx.StaticText(dataDisplay,-1,'Phase constraints:'),0,wx.ALIGN_CENTER_VERTICAL)
     741        mainSizer.Add((5,5),0)
     742
     743
     744        dataDisplay.SetSizer(mainSizer)
     745        Size = mainSizer.Fit(self.dataFrame)
     746        Size[1] += 26                           #compensate for status bar
     747        dataDisplay.SetSize(Size)
     748        self.dataFrame.setSizePosLeft(Size)
     749   
     750    def OnPageChanged(event):
     751        page = event.GetSelection()
     752        text = self.dataDisplay.GetPageText(page)
     753        if text == 'Histogram/Phase constraints':
     754            self.dataFrame.SetMenuBar(self.dataFrame.ConstraintMenu)
     755            UpdateHAPConstr()
     756        elif text == 'Histogram constraints':
     757            UpdateHistConstr()
     758            self.dataFrame.SetMenuBar(self.dataFrame.ConstraintMenu)
     759        elif text == 'Phase constraints':
     760            UpdatePhaseConstr()
     761            self.dataFrame.SetMenuBar(self.dataFrame.ConstraintMenu)
     762        event.Skip()
     763
    634764    if self.dataDisplay:
    635765        self.dataDisplay.Destroy()
     766    self.dataFrame.SetMenuBar(self.dataFrame.ConstraintMenu)
    636767    self.dataFrame.SetLabel('Constraints')
    637     self.dataDisplay = wx.Panel(self.dataFrame)
    638     self.dataFrame.SetMenuBar(self.dataFrame.ConstraintMenu)
    639     mainSizer = wx.BoxSizer(wx.VERTICAL)
    640     mainSizer.Add((5,5),0)
    641     mainSizer.Add(wx.StaticText(self.dataDisplay,label=' Refinement constraints:'),0,wx.ALIGN_CENTER_VERTICAL)
    642    
    643    
    644     mainSizer.Layout()   
    645     self.dataDisplay.SetSizer(mainSizer)
    646     self.dataDisplay.SetSize(mainSizer.Fit(self.dataFrame))
    647     self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))
     768    self.dataFrame.CreateStatusBar()
     769    self.dataFrame.Bind(wx.EVT_MENU, OnAddConstraint, id=wxID_CONSTRAINTADD)
     770    self.dataDisplay = GSNoteBook(parent=self.dataFrame,size=self.dataFrame.GetClientSize())
     771   
     772    PhaseConstr = wx.ScrolledWindow(self.dataDisplay)
     773    self.dataDisplay.AddPage(PhaseConstr,'Phase constraints')
     774    HAPConstr = wx.ScrolledWindow(self.dataDisplay)
     775    self.dataDisplay.AddPage(HAPConstr,'Histogram/Phase constraints')
     776    HistConstr = wx.ScrolledWindow(self.dataDisplay)
     777    self.dataDisplay.AddPage(HistConstr,'Histogram constraints')
     778    UpdatePhaseConstr()
     779
     780    self.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)
    648781   
    649782   
    650783def UpdateRestraints(self,data):
    651784
     785    def OnAddRestraint(event):
     786        page = self.dataDisplay.GetSelection()
     787        print self.dataDisplay.GetPageText(page)
     788
     789    def UpdateAtomRestr():
     790        AtomRestr.DestroyChildren()
     791        dataDisplay = wx.Panel(AtomRestr)
     792        mainSizer = wx.BoxSizer(wx.VERTICAL)
     793        mainSizer.Add((5,5),0)
     794        mainSizer.Add(wx.StaticText(dataDisplay,-1,'Atom restraint data:'),0,wx.ALIGN_CENTER_VERTICAL)
     795        mainSizer.Add((5,5),0)
     796
     797
     798        dataDisplay.SetSizer(mainSizer)
     799        Size = mainSizer.Fit(self.dataFrame)
     800        Size[1] += 26                           #compensate for status bar
     801        dataDisplay.SetSize(Size)
     802        self.dataFrame.setSizePosLeft(Size)
     803       
     804    def UpdatePhaseRestr():
     805        PhaseRestr.DestroyChildren()
     806        dataDisplay = wx.Panel(PhaseRestr)
     807        mainSizer = wx.BoxSizer(wx.VERTICAL)
     808        mainSizer.Add((5,5),0)
     809        mainSizer.Add(wx.StaticText(dataDisplay,-1,'Phase restraint data:'),0,wx.ALIGN_CENTER_VERTICAL)
     810        mainSizer.Add((5,5),0)
     811
     812
     813        dataDisplay.SetSizer(mainSizer)
     814        Size = mainSizer.Fit(self.dataFrame)
     815        Size[1] += 26                           #compensate for status bar
     816        dataDisplay.SetSize(Size)
     817        self.dataFrame.setSizePosLeft(Size)
     818   
     819    def OnPageChanged(event):
     820        page = event.GetSelection()
     821        text = self.dataDisplay.GetPageText(page)
     822        if text == 'Atom restraints':
     823            self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)
     824            UpdateAtomRestr()
     825        elif text == 'Phase restraints':
     826            UpdatePhaseRestr()
     827            self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)
     828        event.Skip()
    652829
    653830    if self.dataDisplay:
    654831        self.dataDisplay.Destroy()
    655     self.dataFrame.SetLabel('Restraints')
    656     self.dataDisplay = wx.Panel(self.dataFrame)
    657832    self.dataFrame.SetMenuBar(self.dataFrame.RestraintMenu)
    658     mainSizer = wx.BoxSizer(wx.VERTICAL)
    659     mainSizer.Add((5,5),0)
    660     mainSizer.Add(wx.StaticText(self.dataDisplay,label=' Refinement restraints:'),0,wx.ALIGN_CENTER_VERTICAL)
    661    
    662    
    663     mainSizer.Layout()   
    664     self.dataDisplay.SetSizer(mainSizer)
    665     self.dataDisplay.SetSize(mainSizer.Fit(self.dataFrame))
    666     self.dataFrame.setSizePosLeft(mainSizer.Fit(self.dataFrame))
     833    self.dataFrame.SetLabel('restraints')
     834    self.dataFrame.CreateStatusBar()
     835    self.dataFrame.Bind(wx.EVT_MENU, OnAddRestraint, id=wxID_RESTRAINTADD)
     836    self.dataDisplay = GSNoteBook(parent=self.dataFrame,size=self.dataFrame.GetClientSize())
     837   
     838    PhaseRestr = wx.ScrolledWindow(self.dataDisplay)
     839    self.dataDisplay.AddPage(PhaseRestr,'Phase restraints')
     840    AtomRestr = wx.ScrolledWindow(self.dataDisplay)
     841    self.dataDisplay.AddPage(AtomRestr,'Atom restraints')
     842    UpdatePhaseRestr()
     843#    AtomRestrData = data['AtomRestr']
     844
     845    self.dataDisplay.Bind(wx.EVT_NOTEBOOK_PAGE_CHANGED, OnPageChanged)       
    667846             
    668847def UpdateHKLControls(self,data):
Note: See TracChangeset for help on using the changeset viewer.