Changeset 2152 for trunk/GSASII.py


Ignore:
Timestamp:
Feb 18, 2016 1:01:27 PM (6 years ago)
Author:
vondreele
Message:

all PWDR exporters will make file name from histogram name
allow read of multibank data
alert user to duplicate histograms (by name)
rename data will not change Bank or Azm part of histogram name
fix L&R plotting commands for TOF data

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r2151 r2152  
    441441            filelist1.append(filename)
    442442        filelist = filelist1
     443        Start = True    #1st time read - clear selections below
    443444        for filename in filelist:
    444445            # is this a zip file?
     
    476477            errorReport = ''
    477478            for rd in primaryReaders+secondaryReaders:
     479                if Start:   #clear old bank selections to allow new ones to be selected by user
     480                    rd.selections = []
     481                    Start = False
    478482                rd.ReInitialize() # purge anything from a previous read
    479483                fp.seek(0)  # rewind
     
    948952        return lines       
    949953           
    950     def ReadPowderInstprm(self,instLines,bank):
     954    def ReadPowderInstprm(self,instLines,bank,databanks,rd):
    951955        '''Read lines from a GSAS-II (new) instrument parameter file
    952956        similar to G2pwdGUI.OnLoad
     
    11491153                s = Iparm['INS   FPATH1'].split()
    11501154                fltPath0 = G2IO.sfloat(s[0])
     1155                if 'INS  1BNKPAR' not in Iparm:     #bank missing from Iparm file
     1156                    return []
    11511157                s = Iparm['INS  1BNKPAR'].split()
    11521158                fltPath1 = G2IO.sfloat(s[0])
     
    12511257                        prompts=['Total FP','2-theta',],values=[25.0,150.,],
    12521258                            limits=[[6.,200.],[5.,175.],],formats=['%6.2f','%6.1f',])
    1253                     if dlg.ShowModal() == wx.ID_OK:
     1259                    if dlg.ShowModal() == wx.ID_OK: #strictly empirical approx.
    12541260                        FP,tth = dlg.GetValues()
    1255                         difC = 252.816*2.*FP*sind(tth/2.)
     1261                        difC = 505.632*FP*sind(tth/2.)
    12561262                        sig1 = 50.+2.5e-6*(difC/tand(tth/2.))**2
     1263                        bet1 = .00226+7.76e+11/difC**4
    12571264                        rd.instmsg = 'default: '+dI.defaultIparm_lbl[res]
    12581265                        Inst = self.ReadPowderInstprm(dI.defaultIparms[res],bank)
    12591266                        Inst[0]['difC'] = [difC,difC,0]
    12601267                        Inst[0]['sig-1'] = [sig1,sig1,0]
     1268                        Inst[0]['beta-1'] = [bet1,bet1,0]
    12611269                        return Inst    #this is [Inst1,Inst2] a pair of dicts
    12621270                    dlg.Destroy()
     
    12821290            if 'instprm' in instfile:
    12831291                Lines = self.OpenPowderInstprm(instfile)
    1284                 instParmList = self.ReadPowderInstprm(Lines,bank)    #this is [Inst1,Inst2] a pair of dicts
     1292                instParmList = self.ReadPowderInstprm(Lines,bank,numbanks,rd)    #this is [Inst1,Inst2] a pair of dicts
    12851293                if 'list' in str(type(instParmList)):
    12861294                    rd.instfile = instfile
     
    13031311        #2nd priority: is there an instrument parameter file defined for the current data set?
    13041312        # or if this is a read on a set of set of files, use the last one again
    1305         #if rd.instparm or (lastdatafile == filename and lastIparmfile):
     1313        #if rd.instparm as found in data file header or (lastdatafile == filename and lastIparmfile):
    13061314        if rd.instparm or lastIparmfile:
    13071315            if rd.instparm:
     
    13181326                    Lines = self.OpenPowderInstprm(instfile)
    13191327                    if Lines is not None:
    1320                         instParmList = self.ReadPowderInstprm(Lines,bank)   #this is [Inst1,Inst2] a pair of dicts
     1328                        instParmList = self.ReadPowderInstprm(Lines,bank,numbanks,rd)   #this is [Inst1,Inst2] a pair of dicts
    13211329                else:   #old GSAS style iparm file - could be named anything!
    13221330                    Iparm = self.ReadPowderIparm(instfile,bank,numbanks,rd)
     
    13861394                Lines = self.OpenPowderInstprm(instfile)
    13871395                if Lines is not None:
    1388                     instParmList = self.ReadPowderInstprm(Lines,bank)    #this is [Inst1,Inst2] a pair of dicts
     1396                    instParmList = self.ReadPowderInstprm(Lines,bank,numbanks,rd)    #this is [Inst1,Inst2] a pair of dicts
    13891397                if 'list' in str(type(instParmList)):
    13901398                    rd.instfile = instfile
     
    14371445        for rd in rdlist:
    14381446            if 'Instrument Parameters' not in rd.pwdparms:
    1439                 # get instrument parameters for each dataset, unless already set
    1440                 Iparm1,Iparm2 = self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile)
     1447                # get instrument parameters for each dataset, unless already set
     1448                Iparms = self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile)
     1449                if not Iparms:
     1450                    continue
     1451                Iparm1,Iparm2 = Iparms
    14411452                if rd.repeat_instparm:
    14421453                    lastIparmfile = rd.instfile
     
    14511462            HistName = 'PWDR '+HistName
    14521463            # make new histogram names unique
     1464            if HistName in PWDRlist:
     1465                dlg = wx.MessageDialog(self,'Skip %s?'%(HistName),'Duplicate data name',wx.YES_NO)
     1466                try:
     1467                    if dlg.ShowModal() == wx.ID_YES:
     1468                        Id = 0
     1469                        continue
     1470                finally:
     1471                    dlg.Destroy()
    14531472            HistName = G2obj.MakeUniqueLabel(HistName,PWDRlist)
    14541473            print 'Read powder data '+str(HistName)+ \
     
    15281547            Controls.update(rd.Controls)
    15291548            newHistList.append(HistName)
     1549            rd.repeat_instparm = False  #clear the iparm reuse flag
    15301550        else:
    15311551            self.EnablePlot = True
    1532             self.PatternTree.Expand(Id)
    1533             self.PatternTree.SelectItem(Id)
    1534            
     1552            if Id:
     1553                self.PatternTree.Expand(Id)
     1554                self.PatternTree.SelectItem(Id)
     1555
    15351556        if not newHistList: return # somehow, no new histograms
    15361557        # make a list of phase names
     
    29472968        name = self.PatternTree.GetItemText(self.PickId)     
    29482969        if 'PWDR' in name or 'HKLF' in name or 'IMG' in name:
    2949             dataType = name[:name.index(' ')+1]                 #includes the ' '
    2950             dlg = wx.TextEntryDialog(self,'Data name: '+dataType,'Change data name',
    2951                 defaultValue=name[name.index(' ')+1:])
     2970            if 'Bank' in name:
     2971                names = name.split('Bank')
     2972                names[1] = ' Bank'+names[1]
     2973            elif 'Azm' in name:
     2974                names = name.split('Azm')
     2975                names[1] = ' Azm'+names[1]
     2976            else:
     2977                names = [name,'']
     2978            dataType = names[0][:names[0].index(' ')+1]                 #includes the ' '
     2979            dlg = wx.TextEntryDialog(self,'Data name: '+name,'Change data name',
     2980                defaultValue=names[0][names[0].index(' ')+1:])
    29522981            try:
    29532982                if dlg.ShowModal() == wx.ID_OK:
    2954                     self.PatternTree.SetItemText(self.PickId,dataType+dlg.GetValue())
     2983                    name = dataType+dlg.GetValue()+names[1]
     2984                    self.PatternTree.SetItemText(self.PickId,name)
    29552985            finally:
    29562986                dlg.Destroy()
Note: See TracChangeset for help on using the changeset viewer.