Changeset 792 for trunk/GSASII.py


Ignore:
Timestamp:
Oct 24, 2012 8:54:20 AM (10 years ago)
Author:
vondreele
Message:

change instrument parameters to dict from lists
chase down effects - got them all?
start on TOF; read TimeMap? style data - not complete

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r776 r792  
    557557            S = File.readline()               
    558558        File.close()
    559         return [tuple(newVals),newVals,len(newVals)*[False,],newItems]
     559        return dict(zip(newItems,zip(newVals,newVals,len(newVals)*[False,])))
    560560       
    561561    def ReadPowderIparm(self,instfile,bank,databanks,rd):
     
    577577        except:
    578578            ibanks = 1
     579        hType = Iparm['INS   HTYPE '].strip()
    579580        if ibanks == 1: # there is only one bank here, return it
    580581            rd.instbank = 1
    581582            return Iparm
    582         if ibanks != databanks:
     583        if 'PNT' in hType:
     584            rd.instbank = bank
     585        elif ibanks != databanks:
    583586            # number of banks in data and prm file not not agree, need a
    584587            # choice from a human here
     
    588591            bank = rd.BlockSelector(
    589592                choices, self,
    590                 title='Select an instrument parameter block for '+
    591                 os.path.split(rd.powderentry[0])[1]+' block '+str(bank)+
     593                title='Select an instrument parameter bank for '+
     594                os.path.split(rd.powderentry[0])[1]+' BANK '+str(bank)+
    592595                '\nOr use Cancel to select from the default parameter sets',
    593596                header='Block Selector')
     
    612615            Create and return the contents of the instrument parameter tree entry.
    613616            '''
    614             DataType = Iparm['INS   HTYPE '].strip()[0:3]  # take 1st 3 chars
     617            DataType = Iparm['INS   HTYPE '].strip()[:3]  # take 1st 3 chars
    615618            # override inst values with values read from data file
    616619            if rd.instdict.get('type'):
    617620                DataType = rd.instdict.get('type')
    618             wave1 = None
    619             wave2 = 0.0
    620             if rd.instdict.get('wave'):
    621                 wl = rd.instdict.get('wave')
    622                 wave1 = wl[0]
    623                 if len(wl) > 1: wave2 = wl[1]
    624621            data = [DataType,]
    625622            if 'C' in DataType:
     623                wave1 = None
     624                wave2 = 0.0
     625                if rd.instdict.get('wave'):
     626                    wl = rd.instdict.get('wave')
     627                    wave1 = wl[0]
     628                    if len(wl) > 1: wave2 = wl[1]
    626629                s = Iparm['INS  1 ICONS']
    627630                if not wave1:
     
    652655                    data.extend([0.0,0.0,0.002,azm])                                      #OK defaults if fxn #3 not 1st in iprm file
    653656                codes.extend([0,0,0,0,0,0,0])
    654                 return [tuple(data),data,codes,names]
     657                return dict(zip(names,zip(data,data,codes)))
     658            elif 'T' in DataType:
     659                names = ['Type','2-theta','difC','difA','Zero','alpha','beta-0','beta-1','var-inst','X','Y','Azimuth']
     660                codes = [0,0,0,0,0,0,0,0,0,0,0,0]
     661                azm = Iparm.get('INS  1DETAZM')
     662                if azm is None: #not in this Iparm file
     663                    azm = 0.0
     664                else:
     665                    azm = float(azm)
     666                s = Iparm['INS  1BNKPAR'].split()
     667                data.extend([G2IO.sfloat(s[1]),])               #2-theta for bank
     668                s = Iparm['INS  1 ICONS'].split()
     669                data.extend([G2IO.sfloat(s[0]),G2IO.sfloat(s[1]),G2IO.sfloat(s[2])])    #difC, difA, Zero
     670                s = Iparm['INS  1PRCF1 '].split()
     671                pfType = int(s[0])
     672                s = Iparm['INS  1PRCF11'].split()
     673                if pfType == 1:
     674                    data.extend([G2IO.sfloat(s[1]),G2IO.sfloat(s[2]),G2IO.sfloat(s[3])])
     675                    s = Iparm['INS  1PRCF12'].split()
     676                    data.extend([G2IO.sfloat(s[1]),0.0,0.0,azm])
     677                elif pfType in [3,4,5]:
     678                    data.extend([G2IO.sfloat(s[0]),G2IO.sfloat(s[1]),G2IO.sfloat(s[2])])
     679                    if pfType == 4:
     680                        data.extend([G2IO.sfloat(s[3]),0.0,0.0,azm])
     681                    else:
     682                        s = Iparm['INS  1PRCF12'].split()
     683                        data.extend([G2IO.sfloat(s[0]),0.0,0.0,azm])
     684                return dict(zip(names,zip(data,data,codes)))
    655685
    656686        # stuff we might need from the reader
     
    785815        '''
    786816        reqrdr = self.ImportMenuId.get(event.GetId())  # look up which format was requested
    787         rdlist = self.OnImportGeneric(reqrdr,
    788                                       self.ImportPowderReaderlist,
    789                                       'Powder Data',multiple=True)
     817        rdlist = self.OnImportGeneric(reqrdr,self.ImportPowderReaderlist,
     818            'Powder Data',multiple=True)
    790819        if len(rdlist) == 0: return
    791820        self.CheckNotebook()
     
    798827            lastIparmfile = rd.instfile
    799828            lastdatafile = rd.powderentry[0]
    800             print 'Read powder data '+str(
    801                 rd.idstring)+' from file '+str(
    802                 self.lastimport) + ' with parameters from '+str(
    803                 rd.instmsg)
     829            print 'Read powder data '+str(rd.idstring)+ \
     830                ' from file '+str(self.lastimport) + \
     831                ' with parameters from '+str(rd.instmsg)
    804832            # data are read, now store them in the tree
    805             Id = self.PatternTree.AppendItem(
    806                 parent=self.root,
     833            Id = self.PatternTree.AppendItem(parent=self.root,
    807834                text='PWDR '+rd.idstring)
    808835            self.PatternTree.SetItemPyData(Id,[{'wtFactor':1.0},rd.powderdata])
     
    10181045        self.Legend = False
    10191046        self.SinglePlot = False
     1047        self.SubBack = False
    10201048        self.plotView = 0
    10211049        self.Image = 0
     
    10921120                names = ['Type','Lam','Zero']
    10931121                codes = [0,0]
    1094                 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),[tuple(data),data,codes,names])
     1122                self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),dict(zip(names,zip(data,data,codes))))
    10951123                self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),comments)
    10961124                self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Index Peak List'),peaks)
Note: See TracChangeset for help on using the changeset viewer.