Changeset 795 for trunk/GSASII.py


Ignore:
Timestamp:
Nov 3, 2012 3:22:36 PM (10 years ago)
Author:
vondreele
Message:

implement TOF input, peak search & fitting
auto peak search
convert instrument parms to dictionary
add charge flip on max rho

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r794 r795  
    6161import GSASIIgrid as G2gd
    6262import GSASIIplot as G2plt
     63import GSASIIpwd as G2pwd
    6364import GSASIIpwdGUI as G2pdG
    6465import GSASIIspc as G2spc
     
    169170            id=wx.ID_ANY, kind=wx.ITEM_NORMAL,text='Make new PDFs')
    170171        self.MakePDF.append(item)
    171         item.Enable(False)
     172#        item.Enable(False)
    172173        self.Bind(wx.EVT_MENU, self.OnMakePDFs, id=item.GetId())
    173174       
     
    557558            S = File.readline()               
    558559        File.close()
    559         inst = dict(zip(newItems,zip(newVals,newVals,len(newVals)*[False,])))
    560         for item in inst:
    561             inst[item] = list(inst[item])
    562         return inst
     560        return G2IO.makeInstDict(newItems,newVals,len(newVals)*[False,])
    563561       
    564562    def ReadPowderIparm(self,instfile,bank,databanks,rd):
     
    658656                    data.extend([0.0,0.0,0.002,azm])                                      #OK defaults if fxn #3 not 1st in iprm file
    659657                codes.extend([0,0,0,0,0,0,0])
    660                 inst = dict(zip(names,zip(data,data,codes)))
    661                 for item in inst:
    662                     inst[item] = list(inst[item])
    663                 return inst
     658                return G2IO.makeInstDict(names,data,codes)
    664659            elif 'T' in DataType:
    665660                names = ['Type','2-theta','difC','difA','Zero','alpha','beta-0','beta-1','var-inst','X','Y','Azimuth']
    666661                codes = [0,0,0,0,0,0,0,0,0,0,0,0]
    667                 azm = Iparm.get('INS  1DETAZM')
    668                 if azm is None: #not in this Iparm file
    669                     azm = 0.0
    670                 else:
    671                     azm = float(azm)
     662                azm = 0.
     663                if 'INS  1DETAZM' in Iparm:
     664                    azm = float(Iparm['INS  1DETAZM'])
    672665                s = Iparm['INS  1BNKPAR'].split()
    673666                data.extend([G2IO.sfloat(s[1]),])               #2-theta for bank
     
    677670                pfType = int(s[0])
    678671                s = Iparm['INS  1PRCF11'].split()
    679                 if pfType == 1:
     672                if abs(pfType) == 1:
    680673                    data.extend([G2IO.sfloat(s[1]),G2IO.sfloat(s[2]),G2IO.sfloat(s[3])])
    681674                    s = Iparm['INS  1PRCF12'].split()
    682675                    data.extend([G2IO.sfloat(s[1]),0.0,0.0,azm])
    683                 elif pfType in [3,4,5]:
     676                elif abs(pfType) in [3,4,5]:
    684677                    data.extend([G2IO.sfloat(s[0]),G2IO.sfloat(s[1]),G2IO.sfloat(s[2])])
    685                     if pfType == 4:
     678                    if abs(pfType) == 4:
    686679                        data.extend([G2IO.sfloat(s[3]),0.0,0.0,azm])
    687680                    else:
    688681                        s = Iparm['INS  1PRCF12'].split()
    689                         data.extend([G2IO.sfloat(s[0]),0.0,0.0,azm])
    690                 inst = dict(zip(names,zip(data,data,codes)))
    691                 for item in inst:
    692                     inst[item] = list(inst[item])
    693                 return inst
     682                        data.extend([G2IO.sfloat(s[0]),0.0,0.0,azm])                       
     683                Inst = G2IO.makeInstDict(names,data,codes)
     684                if pfType < 0:
     685                    Ipab = 'INS  1PAB'+str(-pfType)
     686                    Npab = int(Iparm[Ipab+'  '].strip())
     687                    Inst['Pdabc'] = []
     688                    for i in range(Npab):
     689                        k = Ipab+str(i+1).rjust(2)
     690                        s = Iparm[k].split()
     691                        Inst['Pdabc'].append([float(t) for t in s])
     692                    Inst['Pdabc'] = np.array(Inst['Pdabc'])
     693                if 'INS  1I ITYP' in Iparm:
     694                    Ityp = int(Iparm['INS  1I ITYP'].split()[0])
     695                    if Ityp in [1,2,3,4,5]:
     696                        Inst['Itype'] = Ityp
     697                        Icoeff = []
     698                        Iesd = []
     699                        Icovar = []                   
     700                        for i in range(3):
     701                            s = Iparm['INS  1ICOFF'+str(i+1)].split()
     702                            Icoeff += [float(S) for S in s]
     703                            s = Iparm['INS  1IECOF'+str(i+1)].split()
     704                            Iesd += [float(S) for S in s]
     705                        for i in range(8):
     706                            s = Iparm['INS  1IECOR'+str(i+1)].split()
     707                            Icovar += [float(S) for S in s]
     708                        Inst['Icoeff'] = Icoeff
     709                        Inst['Iesd'] = Iesd
     710                        Inst['Icovar'] = Icovar
     711                return Inst
    694712
    695713        # stuff we might need from the reader
     
    846864                self.PatternTree.AppendItem(Id,text='Comments'),
    847865                rd.comments)
     866            if 'T' in instParmList['Type'][0]:
     867                if not rd.clockWd and rd.GSAS:
     868                    rd.powderdata[0] *= 100.
     869                cw = np.diff(rd.powderdata[0])
     870                rd.powderdata[0] = rd.powderdata[0][:-1]+cw/2.
     871                rd.powderdata[1] = rd.powderdata[1][:-1]/cw
     872                rd.powderdata[2] = rd.powderdata[2][:-1]
     873                rd.powderdata[3] = rd.powderdata[3][:-1]
     874                rd.powderdata[4] = rd.powderdata[4][:-1]
     875                rd.powderdata[5] = rd.powderdata[5][:-1]
     876                if 'Itype' in instParmList:
     877                    incident = G2pwd.calcIncident(instParmList,rd.powderdata[0])
    848878            Tmin = min(rd.powderdata[0])
    849879            Tmax = max(rd.powderdata[0])
     
    11291159                names = ['Type','Lam','Zero']
    11301160                codes = [0,0,0]
    1131                 inst = dict(zip(names,zip(data,data,codes)))
    1132                 for item in inst:
    1133                     inst[item] = list(inst[item])
     1161                inst = G2IO.makeInstDict(names,data,codes)
    11341162                self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),inst)
    11351163                self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),comments)
Note: See TracChangeset for help on using the changeset viewer.