Changeset 696


Ignore:
Timestamp:
Jul 30, 2012 12:54:13 PM (9 years ago)
Author:
vondreele
Message:

begin implementation of image strain analysis - GUI stuff first
make image plot respond & clean up display some.
fix atom selection so N can be selected from periodic table
remove crash when Pawley refl not found in reflection set - it's now skipped

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r691 r696  
    12091209                        Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]}
    12101210                        self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks)
     1211                        self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Stress/Strain'),{})
    12111212                        self.PatternTree.SetItemPyData(Id,[Npix,imagefile])
    12121213                        self.PickId = Id
     
    15911592                        Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]}
    15921593                        self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks)
     1594                        self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Stress/Strain'),{})
    15931595                        self.PatternTree.SelectItem(Id)
    15941596                        self.PatternTree.Expand(Id)
  • trunk/GSASIIgrid.py

    r687 r696  
    7070[ wxID_MASKCOPY, wxID_MASKSAVE, wxID_MASKLOAD,
    7171] = [wx.NewId() for item in range(3)]
     72
     73[ wxID_STRSTACOPY, wxID_STRSTAFIT, wxID_STRSTASAVE, wxID_STRSTALOAD,
     74] = [wx.NewId() for item in range(4)]
    7275
    7376[ wxID_BACKCOPY,wxID_LIMITCOPY,wxID_SAMPLECOPY, wxID_BACKFLAGCOPY, wxID_SAMPLEFLAGCOPY,
     
    436439        self.MaskEdit.Append(help='Load mask from file',
    437440            id=wxID_MASKLOAD, kind=wx.ITEM_NORMAL,text='Load mask')
     441           
     442# IMG / Stress/Strain
     443
     444        self.StrStaMenu = wx.MenuBar()
     445        self.StrStaEdit = wx.Menu(title='')
     446        self.StrStaMenu.Append(menu=self.StrStaEdit, title='Operations')
     447        self.StrStaMenu.Append(menu=MyHelp(self,helpType='Stress/Strain'),title='&Help')
     448        self.StrStaEdit.Append(help='Fit stress/strain data',
     449            id=wxID_STRSTAFIT, kind=wx.ITEM_NORMAL,text='Fit stress/strain')
     450        self.StrStaEdit.Append(help='Copy stress/strain data to other images',
     451            id=wxID_STRSTACOPY, kind=wx.ITEM_NORMAL,text='Copy stress/strain')
     452        self.StrStaEdit.Append(help='Save stress/strain data to file',
     453            id=wxID_STRSTASAVE, kind=wx.ITEM_NORMAL,text='Save stress/strain')
     454        self.StrStaEdit.Append(help='Load stress/strain data from file',
     455            id=wxID_STRSTALOAD, kind=wx.ITEM_NORMAL,text='Load stress/strain')
    438456           
    439457# PDF / PDF Controls
     
    22002218        G2imG.UpdateMasks(G2frame,data)
    22012219        G2plt.PlotImage(G2frame)
     2220    elif G2frame.PatternTree.GetItemText(item) == 'Stress/Strain':
     2221        G2frame.dataFrame.SetTitle('Stress/Strain')
     2222        G2frame.PickId = item
     2223        G2frame.Image = G2frame.PatternTree.GetItemParent(item)
     2224        data = G2frame.PatternTree.GetItemPyData(item)
     2225        G2imG.UpdateStressStrain(G2frame,data)
     2226        G2plt.PlotImage(G2frame)
    22022227    elif G2frame.PatternTree.GetItemText(item) == 'HKL Plot Controls':
    22032228        G2frame.PickId = item
  • trunk/GSASIIimgGUI.py

    r683 r696  
    10731073    G2frame.dataDisplay.SetSize(mainSizer.Fit(G2frame.dataFrame))
    10741074    G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame))   
     1075
     1076################################################################################
     1077##### Stress/Strain
     1078################################################################################
     1079
     1080def UpdateStressStrain(G2frame,data):
     1081   
     1082    def OnCopyStrSta(event):
     1083        print 'Copy stress/strain data - does nothing yet'
     1084        event.Skip()
     1085
     1086    def OnLoadStrSta(event):
     1087        print 'Load stress/strain data - does nothing yet'
     1088        event.Skip()
     1089
     1090    def OnSaveStrSta(event):
     1091        print 'Save stress/strain data - does nothing yet'
     1092        event.Skip()
     1093
     1094    def OnFitStrSta(event):
     1095        print 'Fit stress/strain data - does nothing yet'
     1096        event.Skip()
     1097
     1098
     1099    if G2frame.dataDisplay:
     1100        G2frame.dataDisplay.Destroy()
     1101    G2frame.dataFrame.SetMenuBar(G2frame.dataFrame.StrStaMenu)
     1102    G2frame.dataFrame.Bind(wx.EVT_MENU, OnFitStrSta, id=G2gd.wxID_STRSTAFIT)
     1103    G2frame.dataFrame.Bind(wx.EVT_MENU, OnCopyStrSta, id=G2gd.wxID_STRSTACOPY)
     1104    G2frame.dataFrame.Bind(wx.EVT_MENU, OnLoadStrSta, id=G2gd.wxID_STRSTALOAD)
     1105    G2frame.dataFrame.Bind(wx.EVT_MENU, OnSaveStrSta, id=G2gd.wxID_STRSTASAVE)   
     1106    if not G2frame.dataFrame.GetStatusBar():
     1107        Status = G2frame.dataFrame.CreateStatusBar()
     1108        Status.SetStatusText(" test  ")
     1109    G2frame.dataDisplay = wx.Panel(G2frame.dataFrame)
     1110    if not data:
     1111        data = {'d-zero':[],'Sample phi':0.0,'Sample z':0.0,'strain':np.zeros((3,3))}
     1112    mainSizer = wx.BoxSizer(wx.VERTICAL)
     1113    mainSizer.Add((5,10),0)
     1114
     1115
     1116
     1117    mainSizer.Layout()   
     1118    G2frame.dataDisplay.SetSizer(mainSizer)
     1119    G2frame.dataDisplay.SetSize(mainSizer.Fit(G2frame.dataFrame))
     1120    G2frame.dataFrame.setSizePosLeft(mainSizer.Fit(G2frame.dataFrame))   
  • trunk/GSASIIphsGUI.py

    r690 r696  
    10691069                PE = G2elemGUI.PickElement(G2frame)
    10701070                if PE.ShowModal() == wx.ID_OK:
    1071                     if PE.Elem not in 'None':                       
     1071                    if PE.Elem != 'None':                       
    10721072                        atomData[r][c] = PE.Elem.strip()
    10731073                        name = atomData[r][c]
  • trunk/GSASIIplot.py

    r687 r696  
    17201720    Masks = G2frame.PatternTree.GetItemPyData(
    17211721        G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Masks'))
     1722    try:    #may be absent
     1723        StrSta = G2frame.PatternTree.GetItemPyData(
     1724            G2gd.GetPatternTreeItemId(G2frame,G2frame.Image, 'Stress/Strain'))
     1725    except TypeError:   #is missing
     1726        StrSta = {}
    17221727
    17231728    def OnImMotion(event):
     
    20432048   
    20442049        Plot.plot(xcent,ycent,'x')
     2050        #G2frame.PatternTree.GetItemText(item)
    20452051        if Data['showLines']:
    20462052            LRAzim = Data['LRazimuth']                  #NB: integers
     
    20792085                Plot.plot([arcxI[ind],arcxO[ind]],[arcyI[ind],arcyO[ind]],color='k',dashes=(5,5))
    20802086                   
    2081         for xring,yring in Data['ring']:
    2082             Plot.plot(xring,yring,'r+',picker=3)
    2083         if Data['setRings']:
    2084 #            rings = np.concatenate((Data['rings']),axis=0)
    2085             N = 0
    2086             for ring in Data['rings']:
    2087                 xring,yring = np.array(ring).T[:2]
    2088                 Plot.plot(xring,yring,'+',color=colors[N%6])
    2089                 N += 1           
    2090         for ellipse in Data['ellipses']:
    2091             cent,phi,[width,height],col = ellipse
    2092             Plot.add_artist(Ellipse([cent[0],cent[1]],2*width,2*height,phi,ec=col,fc='none'))
    2093             Plot.text(cent[0],cent[1],'+',color=col,ha='center',va='center')
     2087        if G2frame.PatternTree.GetItemText(G2frame.PickId) in 'Image Controls':
     2088            for xring,yring in Data['ring']:
     2089                Plot.plot(xring,yring,'r+',picker=3)
     2090            if Data['setRings']:
     2091    #            rings = np.concatenate((Data['rings']),axis=0)
     2092                N = 0
     2093                for ring in Data['rings']:
     2094                    xring,yring = np.array(ring).T[:2]
     2095                    Plot.plot(xring,yring,'+',color=colors[N%6])
     2096                    N += 1           
     2097            for ellipse in Data['ellipses']:
     2098                cent,phi,[width,height],col = ellipse
     2099                Plot.add_artist(Ellipse([cent[0],cent[1]],2*width,2*height,phi,ec=col,fc='none'))
     2100                Plot.text(cent[0],cent[1],'+',color=col,ha='center',va='center')
     2101        if G2frame.PatternTree.GetItemText(G2frame.PickId) in 'Stress/Strain':
     2102            print 'plot stress/strain stuff'
     2103            print StrSta
    20942104        #masks - mask lines numbered after integration limit lines
    20952105        spots = Masks['Points']
  • trunk/GSASIIstruct.py

    r695 r696  
    27902790                                dMdpw[iBeg2:iFin2] += 2.*dervDict['int']/refl[9]
    27912791                        dMdv[idx] = dMdpw
    2792                     except ValueError:
     2792                    except: # ValueError:
    27932793                        pass
    27942794                dpdA,dpdw,dpdZ,dpdSh,dpdTr,dpdX,dpdY = GetReflPosDerv(refl,wave,A,hfx,calcControls,parmDict)
Note: See TracChangeset for help on using the changeset viewer.