Changeset 4345 for trunk/G2compare.py


Ignore:
Timestamp:
Mar 6, 2020 3:05:22 PM (20 months ago)
Author:
toby
Message:

Add more image settings to preferences; prevent save of config.py after "no save"

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/G2compare.py

    r4339 r4345  
    278278        wx.CallAfter(oldmenu.Destroy)
    279279        if self.getMode() == "Histogram":
    280             pass
     280            item = modeMenu.Append(wx.ID_ANY,'Prince test')
     281            self.Bind(wx.EVT_MENU, self.onHistPrinceTest, id=item.GetId())
    281282        elif self.getMode() == "Phase":
    282283            pass
     
    568569            item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
    569570        if len(items) < 2:
    570             G2G.G2MessageBox(self,'F-test requires two more more projects','Need more projects')
     571            G2G.G2MessageBox(self,'F-test requires two projects','Need more projects')
    571572            return
    572573        elif len(items) == 2:
     
    666667        msg += postmsg
    667668        G2G.G2MessageBox(self,msg,'F-test result')
    668    
     669       
     670    def onHistPrinceTest(self,event):
     671        '''Compare two histograms (selected here if more than two are present)
     672        using the statistical test proposed by Ted Prince in
     673        Acta Cryst. B35 1099-1100. (1982). Also see Int. Tables Vol. C
     674        (1st Ed.) chapter 8.4, 618-621 (1995).
     675        '''
     676        items = []
     677        item, cookie = self.GPXtree.GetFirstChild(self.root)
     678        while item:
     679            items.append(item)
     680            item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
     681
     682        if len(items) < 2:
     683            G2G.G2MessageBox(self,'Prince test requires two histograms','Need more')
     684            return
     685        elif len(items) == 2:
     686            s0,s1 = items
     687        else:
     688            # need to make selection here
     689            sel = []
     690            for i in items:
     691                sel.append(self.GPXtree.GetItemText(i))
     692            dlg = G2G.G2SingleChoiceDialog(self,'Select one refinement',
     693                                             'Choose refinement',sel)
     694            if dlg.ShowModal() == wx.ID_OK:
     695                s0 = dlg.GetSelection()
     696                dlg.Destroy()
     697            else:
     698                dlg.Destroy()
     699                return
     700            inds = list(range(len(items)))
     701            del sel[s0]
     702            del inds[s0]
     703            dlg = G2G.G2SingleChoiceDialog(self,'Select comparison refinement',
     704                                             'Choose refinement',sel)
     705            if dlg.ShowModal() == wx.ID_OK:
     706                s1 = dlg.GetSelection()
     707                s1 = inds[s1]
     708                dlg.Destroy()
     709            else:
     710                dlg.Destroy()
     711                return
     712        model0 = self.GPXtree.GetItemPyData(s0)
     713        data0 = model0[1]
     714        model1 = self.GPXtree.GetItemPyData(s1)
     715        data1 = model1[1]
     716        if len(data0[0]) != len(data1[0]):
     717            G2G.G2MessageBox(self,'Unable to test: differing numbers of data points','Comparison not valid')
     718            return
     719        if max(abs((data0[0]-data1[0])/data0[0])) > 0.01:
     720            G2G.G2MessageBox(self,'Unable to use test: "X" values differ','Comparison not valid')
     721            return
     722        X = data0[3] - data1[3]
     723        #Z = np.sqrt(data0[3]) * (data0[1] - (data0[3] + data1[3])/2)
     724        X = (data0[3] - data1[3]) / np.sqrt(data0[1])
     725        Z = (data0[1] - (data0[3] + data1[3])/2) / np.sqrt(data0[1])
     726        lam = np.sum(X*Z) / np.sum(X)
     727        sig = np.sqrt(
     728            (np.sum(Z*Z) - lam*lam*np.sum(X*X)) /
     729            ((len(data0[0]) - 1) * np.sum(X*X))
     730            )
     731           
     732    0 the x-postions (two-theta in degrees),
     733    1 the intensity values (Yobs),
     734    2 the weights for each Yobs value
     735    3 the computed intensity values (Ycalc)
     736    4 the background values
     737    5 Yobs-Ycalc
     738       
     739        GSASIIpath.IPyBreak_base()
     740               
     741#======================================================================   
    669742if __name__ == '__main__':
    670743    #if sys.platform == "darwin":
Note: See TracChangeset for help on using the changeset viewer.