Changeset 371


Ignore:
Timestamp:
Sep 13, 2011 12:59:50 PM (10 years ago)
Author:
vondreele
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r369 r371  
    13461346            finally:
    13471347                dlg.Destroy()
    1348 
     1348               
     1349    def GetPWDRdatafromTree(self,PWDRname):
     1350        ''' Returns powder data from GSASII tree
     1351        input:
     1352            PWDRname = powder histogram name as obtained from GetHistogramNames
     1353        return:
     1354            PWDRdata = powder data dictionary with:
     1355                Data - powder data arrays, Limits, Instrument Parameters, Sample Parameters           
     1356        '''
     1357        PWDRdata = {}
     1358        PWDRdata['Data'] = self.PatternTree.GetItemPyData(PWDRname)[1]          #powder data arrays
     1359        PWDRdata['Limits'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PWDRname,'Limits'))
     1360        PWDRdata['Background'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PWDRname,'Background'))
     1361        PWDRdata['Instrument Parameters'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PWDRname,'Instrument Parameters'))
     1362        PWDRdata['Sample Parameters'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PWDRname,'Sample Parameters'))
     1363        PWDRdata['Reflection Lists'] = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,PWDRname,'Reflection Lists'))
     1364        return PWDRdata
     1365
     1366    def GetHKLFdatafromTree(self,HKLFname):
     1367        ''' Returns single crystal data from GSASII tree
     1368        input:
     1369            HKLFname = single crystal histogram name as obtained from GetHistogramNames
     1370        return:
     1371            HKLFdata = single crystal data list of reflections: for each reflection:
     1372                HKLF = [np.array([h,k,l]),FoSq,sigFoSq,FcSq,Fcp,Fcpp,phase]
     1373        '''
     1374        HKLFdata = []
     1375        while True:
     1376            data = self.PatternTree.GetItemPyData(HKLFname)
     1377            datum = data[0]
     1378            if datum[0] == HKLFname:
     1379                HKLFdata = datum[1:][0]
     1380        return HKLFdata
     1381                   
     1382    def GetUsedHistogramsAndPhasesfromTree(self):
     1383        ''' Returns all histograms that are found in any phase
     1384        and any phase that uses a histogram
     1385        return:
     1386            Histograms = dictionary of histograms as {name:data,...}
     1387            Phases = dictionary of phases that use histograms
     1388        '''
     1389        phaseData = {}
     1390        if G2gd.GetPatternTreeItemId(self,self.root,'Phases'):
     1391            sub = G2gd.GetPatternTreeItemId(self,self.root,'Phases')
     1392        else:
     1393            print 'no phases to be refined'
     1394            return
     1395        if sub:
     1396            item, cookie = self.PatternTree.GetFirstChild(sub)
     1397            while item:
     1398                phaseData[self.PatternTree.GetItemText(item)] =  self.PatternTree.GetItemPyData(item)               
     1399                item, cookie = self.PatternTree.GetNextChild(sub, cookie)               
     1400        Histograms = {}
     1401        Phases = {}
     1402        pId = 0
     1403        hId = 0
     1404        for phase in phaseData:
     1405            Phase = phaseData[phase]
     1406            if Phase['Histograms']:
     1407                if phase not in Phases:
     1408                    Phase['pId'] = pId
     1409                    pId += 1
     1410                    Phases[phase] = Phase
     1411                for hist in Phase['Histograms']:
     1412                    if hist not in Histograms:
     1413                        item = G2gd.GetPatternTreeItemId(self,self.root,hist)
     1414                        if 'PWDR' in hist[:4]:
     1415                            Histograms[hist] = self.GetPWDRdatafromTree(item)
     1416                        elif 'HKLF' in hist[:4]:
     1417                            Histograms[hist] = self.GetHKLFdatafromTree(item)
     1418                        #future restraint, etc. histograms here           
     1419                        Histograms[hist]['hId'] = hId
     1420                        hId += 1
     1421        return Histograms,Phases
     1422       
     1423    class ViewParmDialog(wx.Dialog):
     1424        def __init__(self,parent,title,parmDict):
     1425            wx.Dialog.__init__(self,parent,-1,title,size=(250,430),
     1426                pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
     1427            panel = wx.Panel(self,size=(250,430))
     1428            parmNames = parmDict.keys()
     1429            parmNames.sort()
     1430            parmText = ' p:h:Parameter       refine?              value\n'
     1431            for name in parmNames:
     1432                parmData = parmDict[name]
     1433                try:
     1434                    parmText += ' %s \t%12.4g \n'%(name.ljust(20)+'\t'+parmData[1],parmData[0])
     1435                except TypeError:
     1436                    pass
     1437            parmTable = wx.TextCtrl(panel,-1,parmText,
     1438                style=wx.TE_MULTILINE|wx.TE_READONLY,size=(240,400))
     1439            mainSizer = wx.BoxSizer(wx.VERTICAL)
     1440            mainSizer.Add(parmTable)
     1441            panel.SetSizer(mainSizer)
     1442               
     1443           
    13491444    def OnViewLSParms(self,event):
    13501445        parmDict = {}
    1351         self.OnFileSave(event)
    1352         Histograms,Phases = G2str.GetUsedHistogramsAndPhases(self.GSASprojectfile)
    1353         phaseVary,phaseDict,pawleyLookup = G2str.GetPhaseData(Phases,Print=False)
     1446        Histograms,Phases = self.GetUsedHistogramsAndPhasesfromTree()
     1447        phaseVary,phaseDict,pawleyLookup = G2str.GetPhaseData(Phases,Print=False)       
    13541448        hapVary,hapDict,controlDict = G2str.GetHistogramPhaseData(Phases,Histograms,Print=False)
    13551449        histVary,histDict,controlDict = G2str.GetHistogramData(Histograms,Print=False)
     
    13581452        parmDict.update(hapDict)
    13591453        parmDict.update(histDict)
    1360         parmKeys = parmDict.keys()
    1361         parmKeys.sort()
    1362         for parm in parmKeys:
    1363             line = parm+str(parmDict[parm])
    1364             if parm in varyList:
    1365                 line += ' True'
     1454        for parm in parmDict:
     1455            if parm.split(':')[-1] in ['Azimuth','Gonio. radius','Lam1','Lam2']:
     1456                parmDict[parm] = [parmDict[parm],' ']
     1457            elif parm in varyList:
     1458                parmDict[parm] = [parmDict[parm],'True']
    13661459            else:
    1367                 line += ' False'
    1368             print line
     1460                parmDict[parm] = [parmDict[parm],'False']
     1461        dlg = self.ViewParmDialog(self,'Parameters for least squares',parmDict)
     1462        try:
     1463            if dlg.ShowModal() == wx.ID_OK:
     1464                print 'do something with changes??'
     1465        finally:
     1466            dlg.Destroy()
    13691467
    13701468
Note: See TracChangeset for help on using the changeset viewer.