Changeset 5330


Ignore:
Timestamp:
Aug 31, 2022 10:43:06 AM (15 months ago)
Author:
vondreele
Message:

improvements to cluster analysis - data members & outlier members can be plotted upon selection from list.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIseqGUI.py

    r5325 r5330  
    18681868            wx.CallAfter(UpdateClusterAnalysis,G2frame,ClusData,shoNum)
    18691869           
     1870        def OnSelection(event):
     1871            name = cluslist.GetStringSelection()
     1872            item = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,name)
     1873            G2frame.PatternId = item
     1874            if 'PWDR' in name:
     1875                G2plt.PlotPatterns(G2frame,newPlot=False,plotType='PWDR')
     1876            else: #PDF
     1877                data = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame, item,'PDF Controls'))
     1878                G2plt.PlotISFG(G2frame,data,plotType='G(R)')
     1879           
    18701880        NClust = np.max(ClusData['codes'])
    18711881        memSizer = wx.BoxSizer(wx.VERTICAL)
     
    18821892        memSizer.Add(headSizer)       
    18831893        if shoNum >= 0:
    1884             memSizer.Add(wx.StaticText(G2frame.dataWindow,label='Members of cluster %d:'%shoNum))
    1885             text = ''
     1894            memSizer.Add(wx.StaticText(G2frame.dataWindow,label='Members of cluster %d (select to show data plot):'%shoNum))
     1895            ClusList = []
    18861896            for i,item in enumerate(ClusData['Files']):
    1887                 if ClusData['codes'][i] == shoNum:
    1888                     text += '(%d) %s\n'%(i,item)
    1889             memSizer.Add(wx.StaticText(G2frame.dataWindow,label=text))       
     1897                 if ClusData['codes'][i] == shoNum:
     1898                     ClusList.append(item)               
     1899            cluslist = wx.ListBox(G2frame.dataWindow, choices=ClusList)
     1900            cluslist.Bind(wx.EVT_LISTBOX,OnSelection)
     1901            memSizer.Add(cluslist)
    18901902        return memSizer
    18911903   
     
    19051917            wx.CallAfter(UpdateClusterAnalysis,G2frame,ClusData,shoNum)
    19061918       
     1919           
    19071920        outSizer = wx.BoxSizer(wx.VERTICAL)
    19081921        outSizer.Add(wx.StaticText(G2frame.dataWindow,label='Outlier (bad data) analysis with Scikit-learn:'))
     
    19201933        return outSizer
    19211934           
     1935    def OnSelection(event):
     1936        name = outlist.GetStringSelection()
     1937        item = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,name)
     1938        G2frame.PatternId = item
     1939        if 'PWDR' in name:
     1940            G2frame.PatternId = G2gd.GetGPXtreeItemId(G2frame,G2frame.root,name)
     1941            G2plt.PlotPatterns(G2frame,newPlot=False,plotType='PWDR')
     1942        else:
     1943            data = G2frame.GPXtree.GetItemPyData(G2gd.GetGPXtreeItemId(G2frame, item,'PDF Controls'))
     1944            G2plt.PlotISFG(G2frame,data,plotType='G(R)')
     1945
    19221946    #patch
    19231947    ClusData['SKLearn'] = ClusData.get('SKLearn',False)
     
    20002024            Nout = len(ClusData['codes'])-np.count_nonzero(ClusData['codes']+1)
    20012025            if Nout > 0:
    2002                 mainSizer.Add(wx.StaticText(G2frame.dataWindow,label='%d Probable outlier data found by %s:'%(Nout,ClusData['OutMethod'])))
    2003                 text = ''
     2026                mainSizer.Add(wx.StaticText(G2frame.dataWindow,
     2027                    label='%d Probable outlier data found by %s (select to show data plot):'%(Nout,ClusData['OutMethod'])))
     2028                OutList = []
    20042029                for i,item in enumerate(ClusData['Files']):
    2005                     if ClusData['codes'][i] < 0:
    2006                         text += '(%d) %s\n'%(i,item)
    2007                 mainSizer.Add(wx.StaticText(G2frame.dataWindow,label=text))       
     2030                     if ClusData['codes'][i] < 0:
     2031                         OutList.append(item)               
     2032                outlist = wx.ListBox(G2frame.dataWindow, choices=OutList)
     2033                outlist.Bind(wx.EVT_LISTBOX,OnSelection)
     2034                mainSizer.Add(outlist)       
    20082035            else:
    20092036                mainSizer.Add(wx.StaticText(G2frame.dataWindow,label='No outlier data found'))
Note: See TracChangeset for help on using the changeset viewer.