Changeset 796


Ignore:
Timestamp:
Nov 7, 2012 2:54:48 PM (10 years ago)
Author:
vondreele
Message:

revise instrument parameters (again); now two dictionaries
revise key stroke options on plots

Location:
trunk
Files:
3 added
1 deleted
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r795 r796  
    533533        self.Bind(wx.EVT_MENU, self.OnImportPowder, id=item.GetId())
    534534           
    535     def ReadPowderInstprm(self,instfile):
     535    def ReadPowderInstprm(self,instfile):       #fix the write routine for [inst1,inst2] style
    536536        '''Read a GSAS-II (new) instrument parameter file'''
    537537        if os.path.splitext(instfile)[1].lower() != '.instprm': # invalid file
     
    656656                    data.extend([0.0,0.0,0.002,azm])                                      #OK defaults if fxn #3 not 1st in iprm file
    657657                codes.extend([0,0,0,0,0,0,0])
    658                 return G2IO.makeInstDict(names,data,codes)
     658                return [G2IO.makeInstDict(names,data,codes),{}]
    659659            elif 'T' in DataType:
    660660                names = ['Type','2-theta','difC','difA','Zero','alpha','beta-0','beta-1','var-inst','X','Y','Azimuth']
     
    681681                        s = Iparm['INS  1PRCF12'].split()
    682682                        data.extend([G2IO.sfloat(s[0]),0.0,0.0,azm])                       
    683                 Inst = G2IO.makeInstDict(names,data,codes)
     683                Inst1 = G2IO.makeInstDict(names,data,codes)
     684                Inst2 = {}
    684685                if pfType < 0:
    685686                    Ipab = 'INS  1PAB'+str(-pfType)
    686687                    Npab = int(Iparm[Ipab+'  '].strip())
    687                     Inst['Pdabc'] = []
     688                    Inst2['Pdabc'] = []
    688689                    for i in range(Npab):
    689690                        k = Ipab+str(i+1).rjust(2)
    690691                        s = Iparm[k].split()
    691                         Inst['Pdabc'].append([float(t) for t in s])
    692                     Inst['Pdabc'] = np.array(Inst['Pdabc'])
     692                        Inst2['Pdabc'].append([float(t) for t in s])
     693                    Inst2['Pdabc'] = np.array(Inst2['Pdabc'])
     694                    Inst2['Pdabc'][3] += Inst2['Pdabc'][0]*Inst1['difC'][0] #turn 3rd col into TOF
    693695                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
     696                    s = Iparm['INS  1I ITYP'].split()
     697                    Ityp = int(s[0])
     698                    Tminmax = [float(s[1])*1000.,float(s[2])*1000.]
     699                    Itypes = ['Exponential','Maxwell/Exponential','','Maxwell/Chebyschev','']
     700                    if Ityp in [1,2,4]:
     701                        Inst2['Itype'] = Itypes[Ityp-1]
     702                        Inst2['Tminmax'] = Tminmax
    697703                        Icoeff = []
    698704                        Iesd = []
     
    706712                            s = Iparm['INS  1IECOR'+str(i+1)].split()
    707713                            Icovar += [float(S) for S in s]
    708                         Inst['Icoeff'] = Icoeff
    709                         Inst['Iesd'] = Iesd
    710                         Inst['Icovar'] = Icovar
    711                 return Inst
     714                        Inst2['Icoeff'] = Icoeff
     715                        Inst2['Iesd'] = Iesd
     716                        Inst2['Icovar'] = Icovar
     717                return [Inst1,Inst2]
    712718
    713719        # stuff we might need from the reader
     
    737743                    return SetPowderInstParms(Iparm,rd)
    738744            else:
    739                 self.ErrorDialog('Open Error',
    740                                  'Error opening instrument parameter file '
    741                                  +str(instfile)
    742                                  +' requested by file '+ filename)
     745                self.ErrorDialog('Open Error','Error opening instrument parameter file '
     746                    +str(instfile)+' requested by file '+ filename)
    743747        # is there an instrument parameter file matching the current file
    744748        # with extension .inst or .prm? If so read it
     
    851855        for rd in rdlist:
    852856            # get instrument parameters for each dataset
    853             instParmList = self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile)
     857            Iparm1,Iparm2 = self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile)
    854858            lastIparmfile = rd.instfile
    855859            lastdatafile = rd.powderentry[0]
     
    860864            Id = self.PatternTree.AppendItem(parent=self.root,
    861865                text='PWDR '+rd.idstring)
    862             self.PatternTree.SetItemPyData(Id,[{'wtFactor':1.0},rd.powderdata])
    863             self.PatternTree.SetItemPyData(
    864                 self.PatternTree.AppendItem(Id,text='Comments'),
    865                 rd.comments)
    866             if 'T' in instParmList['Type'][0]:
     866            if 'T' in Iparm1['Type'][0]:
    867867                if not rd.clockWd and rd.GSAS:
    868868                    rd.powderdata[0] *= 100.
     
    870870                rd.powderdata[0] = rd.powderdata[0][:-1]+cw/2.
    871871                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])
     872                rd.powderdata[2] = rd.powderdata[2][:-1]/cw**2
     873                if 'Itype' in Iparm2:
     874                    Ibeg = np.searchsorted(rd.powderdata[0],Iparm2['Tminmax'][0])
     875                    Ifin = np.searchsorted(rd.powderdata[0],Iparm2['Tminmax'][1])
     876                    print Ibeg,Ifin,Iparm2['Tminmax']
     877                    rd.powderdata[0] = rd.powderdata[0][Ibeg:Ifin]
     878                    YI,WYI = G2pwd.calcIncident(Iparm2,rd.powderdata[0])
     879                    rd.powderdata[1] = rd.powderdata[1][Ibeg:Ifin]/YI
     880                    rd.powderdata[2] = rd.powderdata[2][Ibeg:Ifin]+(rd.powderdata[1]**2+WYI)
     881                    rd.powderdata[2] /= YI**2
     882                rd.powderdata[3] = np.zeros_like(rd.powderdata[0])                                       
     883                rd.powderdata[4] = np.zeros_like(rd.powderdata[0])                                       
     884                rd.powderdata[5] = np.zeros_like(rd.powderdata[0])                                       
    878885            Tmin = min(rd.powderdata[0])
    879886            Tmax = max(rd.powderdata[0])
     887            self.PatternTree.SetItemPyData(Id,[{'wtFactor':1.0},rd.powderdata])
     888            self.PatternTree.SetItemPyData(
     889                self.PatternTree.AppendItem(Id,text='Comments'),
     890                rd.comments)
    880891            self.PatternTree.SetItemPyData(
    881892                self.PatternTree.AppendItem(Id,text='Limits'),
     
    888899            self.PatternTree.SetItemPyData(
    889900                self.PatternTree.AppendItem(Id,text='Instrument Parameters'),
    890                 instParmList)
     901                [Iparm1,Iparm2])
    891902            self.PatternTree.SetItemPyData(
    892903                self.PatternTree.AppendItem(Id,text='Sample Parameters'),
     
    11591170                names = ['Type','Lam','Zero']
    11601171                codes = [0,0,0]
    1161                 inst = G2IO.makeInstDict(names,data,codes)
     1172                inst = [G2IO.makeInstDict(names,data,codes),{}]
    11621173                self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),inst)
    11631174                self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),comments)
     
    14701481        SumList = []
    14711482        Names = []
    1472         Inst = {}
     1483        Inst = None
    14731484        SumItemList = []
    14741485        Comments = ['Sum equals: \n']
  • trunk/GSASIIIO.py

    r795 r796  
    449449                sub = G2frame.PatternTree.AppendItem(Id,datus[0])
    450450#patch
    451                 if datus[0] == 'Instrument Parameters' and not isinstance(datus[1],dict):
     451                if datus[0] == 'Instrument Parameters' and len(datus[1]) == 1:
    452452                    if 'PWDR' in datum[0]:
    453                         datus[1] = dict(zip(datus[1][3],zip(datus[1][0],datus[1][1],datus[1][2])))
     453                        datus[1] = [dict(zip(datus[1][3],zip(datus[1][0],datus[1][1],datus[1][2]))),{}]
    454454                    else:
    455                         datus[1] = dict(zip(datus[1][2],zip(datus[1][0],datus[1][1])))
    456                     for item in datus[1]:               #zip makes tuples - now make lists!
    457                         datus[1][item] = list(datus[1][item])
     455                        datus[1] = [dict(zip(datus[1][2],zip(datus[1][0],datus[1][1]))),{}]
     456                    for item in datus[1][0]:               #zip makes tuples - now make lists!
     457                        datus[1][0][item] = list(datus[1][0][item])
    458458#end patch
    459459                G2frame.PatternTree.SetItemPyData(sub,datus[1])
     
    532532            G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Background'),[['chebyschev',1,3,1.0,0.0,0.0],
    533533                            {'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]}])
    534             inst = dict(zip(names,zip(parms,parms,codes)))
    535             for item in inst:
    536                 inst[item] = list(inst[item])
     534            inst = [dict(zip(names,zip(parms,parms,codes))),{}]
     535            for item in inst[0]:
     536                inst[0][item] = list(inst[0][item])
    537537            G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Instrument Parameters'),inst)
    538538            G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Peak List'),[])
     
    546546            G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Background'),[['chebyschev',1,3,1.0,0.0,0.0],
    547547                            {'nDebye':0,'debyeTerms':[],'nPeaks':0,'peaksList':[]}])
    548             inst = dict(zip(names,zip(parms,parms,codes)))
    549             for item in inst:
    550                 inst[item] = list(inst[item])
     548            inst = [dict(zip(names,zip(parms,parms,codes))),{}]
     549            for item in inst[0]:
     550                inst[0][item] = list(inst[0][item])
    551551            G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Instrument Parameters'),inst)
    552552            G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Sample Parameters'),Sample)
     
    569569        PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export)
    570570        Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, \
    571             PickId, 'Instrument Parameters'))
     571            PickId, 'Instrument Parameters'))[0]
    572572        prm.write( '            123456789012345678901234567890123456789012345678901234567890        '+'\n')
    573573        prm.write( 'INS   BANK      1                                                               '+'\n')
  • trunk/GSASIIgrid.py

    r795 r796  
    26132613        G2frame.PatternId = G2frame.PatternTree.GetItemParent(item)
    26142614        G2frame.PickId = item
    2615         data = G2frame.PatternTree.GetItemPyData(item)
     2615        data = G2frame.PatternTree.GetItemPyData(item)[0]
    26162616        G2pdG.UpdateInstrumentGrid(G2frame,data)
    26172617        G2plt.PlotPeakWidths(G2frame)
  • trunk/GSASIImath.py

    r795 r796  
    981981    return Ind
    982982   
    983 def setPeakparms(Parms,pos,mag,ifQ=False):
     983def setPeakparms(Parms,Parms2,pos,mag,ifQ=False):
    984984    ins = {}
    985985    if 'C' in Parms['Type'][0]:                            #CW data - TOF later in an elif
     
    993993    else:
    994994        dsp = pos/Parms['difC'][1]
    995         if 'Pdabc' in Parms:
     995        if 'Pdabc' in Parms2:
    996996            for x in ['var-inst','X','Y']:
    997997                ins[x] = Parms[x][1]
    998             Pdabc = Parms['Pdabc'].T
     998            Pdabc = Parms2['Pdabc'].T
    999999            alp = np.interp(dsp,Pdabc[0],Pdabc[1])
    10001000            bet = np.interp(dsp,Pdabc[0],Pdabc[2])
  • trunk/GSASIIphsGUI.py

    r795 r796  
    40334033        PatternId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,HistoNames[0])
    40344034        xdata = G2frame.PatternTree.GetItemPyData(PatternId)[1]
    4035         Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Instrument Parameters'))
     4035        Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Instrument Parameters'))[0]
    40364036        Sample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Sample Parameters'))
    40374037        wave = G2mth.getWave(Inst)
     
    41374137                c =  event.GetCol()
    41384138                if colLabels[c] == 'mag':
    4139                     mapPeaks = G2mth.sortArray(mapPeaks,0,reverse=True)
    4140                 elif colLabels[c] == 'dzero':
    4141                     mapPeaks = G2mth.sortArray(mapPeaks,4)
     4139                    mapPeaks = G2mth.sortArray(mapPeaks,c,reverse=True)
     4140                elif colLabels[c] in ['x','y','z','dzero']:
     4141                    mapPeaks = G2mth.sortArray(mapPeaks,c)
    41424142                else:
    41434143                    return
  • trunk/GSASIIplot.py

    r795 r796  
    164164class GSASIItoolbar(Toolbar):
    165165    ON_MPL_HELP = wx.NewId()
     166    ON_MPL_KEY = wx.NewId()
    166167    def __init__(self,plotCanvas):
    167168        Toolbar.__init__(self,plotCanvas)
    168169        POSITION_OF_CONFIGURE_SUBPLOTS_BTN = 6
    169170        self.DeleteToolByPos(POSITION_OF_CONFIGURE_SUBPLOTS_BTN)
     171        parent = self.GetParent()
     172        key = os.path.join(os.path.split(__file__)[0],'key.ico')
     173        self.AddSimpleTool(self.ON_MPL_KEY,_load_bitmap(key),'Key press','Select key press')
     174        wx.EVT_TOOL(self,self.ON_MPL_KEY,self.OnKey)
    170175        help = os.path.join(os.path.split(__file__)[0],'help.ico')
    171176        self.AddSimpleTool(self.ON_MPL_HELP,_load_bitmap(help),'Help on','Show help on')
     
    177182        bookmark = bookmark.strip(')').replace('(','_')
    178183        G2gd.ShowHelp(bookmark,self.TopLevelParent)
     184    def OnKey(self,event):
     185        parent = self.GetParent()
     186        if parent.Choice:
     187            dlg = wx.SingleChoiceDialog(parent,'Select','Key press',list(parent.Choice))
     188            if dlg.ShowModal() == wx.ID_OK:
     189                sel = dlg.GetSelection()
     190                event.key = parent.Choice[sel][0]
     191                parent.keyPress(event)
     192            dlg.Destroy()
     193   
    179194
    180195################################################################################
     
    233248            xylim = Plot.get_xlim(),Plot.get_ylim()
    234249        Page.figure.clf()
     250        Page.Choice = None
    235251        Plot = Page.figure.gca()          #get a fresh plot after clf()
    236252    except ValueError:
     
    241257        Page.canvas.mpl_connect('pick_event', OnSCPick)
    242258        Page.canvas.mpl_connect('motion_notify_event', OnSCMotion)
     259    Page.Choice = None
    243260    Page.SetFocus()
    244261   
     
    318335def PlotPatterns(G2frame,newPlot=False):
    319336    '''Powder pattern plotting package - displays single or multiple powder patterns as intensity vs
    320     2-theta or q (future TOF). Can display multiple patterns as "waterfall plots" or contour plots. Log I
     337    2-theta, q or TOF. Can display multiple patterns as "waterfall plots" or contour plots. Log I
    321338    plotting available.
    322339    '''
    323340    global HKL
    324341
    325     def OnKeyBox(event):
    326         if G2frame.G2plotNB.nb.GetSelection() == G2frame.G2plotNB.plotList.index('Powder Patterns'):
    327             event.key = cb.GetValue()[0]
    328             cb.SetValue(' key press')
    329             wx.CallAfter(OnPlotKeyPress,event)
    330                        
     342#    def OnKeyBox(event):
     343#        if G2frame.G2plotNB.nb.GetSelection() == G2frame.G2plotNB.plotList.index('Powder Patterns'):
     344#            event.key = cb.GetValue()[0]
     345#            cb.SetValue(' key press')
     346#            wx.CallAfter(OnPlotKeyPress,event)
     347#                       
    331348    def OnPlotKeyPress(event):
    332349        newPlot = False
     
    428445            Page.canvas.SetCursor(wx.CROSS_CURSOR)
    429446            try:
    430                 Parms = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
     447                Parms,Parms2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
    431448                if 'C' in Parms['Type'][0]:
    432449                    wave = G2mth.getWave(Parms)
     
    474491        PatternId = G2frame.PatternId
    475492        try:
    476             Parms = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
     493            Parms,Parms2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
    477494        except TypeError:
    478495            return
     
    491508            if ind.all() != [0]:                                    #picked a data point
    492509                data = G2frame.PatternTree.GetItemPyData(G2frame.PickId)
    493                 XY = G2mth.setPeakparms(Parms,xy[0],xy[1])
     510                XY = G2mth.setPeakparms(Parms,Parms2,xy[0],xy[1])
    494511                data.append(XY)
    495512                G2pdG.UpdatePeakGrid(G2frame,data)
     
    520537    def OnRelease(event):
    521538        if G2frame.itemPicked is None: return
    522         Parms = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
     539        Parms,Parms2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
    523540        if 'C' in Parms['Type'][0]:
    524541            wave = G2mth.getWave(Parms)
     
    594611    G2frame.G2plotNB.status.DestroyChildren()
    595612    if G2frame.Contour:
    596         Choice = (' key press','d: lower contour max','u: raise contour max',
     613        Page.Choice = (' key press','d: lower contour max','u: raise contour max',
    597614            'i: interpolation method','s: color scheme','c: contour off')
    598615    else:
    599616        if G2frame.logPlot:
    600             Choice = (' key press','n: log(I) off','l: offset left','r: offset right',
     617            Page.Choice = (' key press','n: log(I) off','l: offset left','r: offset right',
    601618                'c: contour on','q: toggle q plot','s: toggle single plot','+: no selection')
    602619        else:
    603             Choice = (' key press','l: offset left','r: offset right','d: offset down',
    604                 'u: offset up','o: reset offset','b: toggle subtr. backgnd','n: log(I) on','c: contour on',
     620            Page.Choice = (' key press','l: offset left','r: offset right','d: offset down',
     621                'u: offset up','o: reset offset','b: toggle subtract background','n: log(I) on','c: contour on',
    605622                'q: toggle q plot','s: toggle single plot','w: toggle divide by sig','+: no selection')
    606     cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,
    607         choices=Choice)
    608     cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
    609     cb.SetValue(' key press')
     623    Page.keyPress = OnPlotKeyPress
    610624   
    611625    PickId = G2frame.PickId
     
    617631        Pattern.append(G2frame.PatternTree.GetItemText(PatternId))
    618632        PlotList = [Pattern,]
    619         Parms = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,
     633        Parms,Parms2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,
    620634            G2frame.PatternId, 'Instrument Parameters'))
    621635        ParmList = [Parms,]
     
    631645                PlotList.append(Pattern)
    632646                ParmList.append(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,
    633                     item,'Instrument Parameters')))
     647                    item,'Instrument Parameters'))[0])
    634648            item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie)               
    635649    Ymax = 1.0
     
    666680            Plot.set_ylabel('Intensity',fontsize=14)
    667681        else:
    668             Plot.set_ylabel('Counts/$\mathsf{\mu}$s',fontsize=14)
     682            Plot.set_ylabel('Normalized intensity',fontsize=14)
    669683    if G2frame.Contour:
    670684        ContourZ = []
     
    765779                    Plot.plot(X,Y,colors[N%6],picker=False)
    766780    if PickId and not G2frame.Contour:
    767         Parms = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
     781        Parms,Parms2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
    768782        if 'C' in Parms['Type'][0]:
    769783            wave = G2mth.getWave(Parms)
     
    834848        plotNum = G2frame.G2plotNB.plotList.index('Error analysis')
    835849        Page = G2frame.G2plotNB.nb.GetPage(plotNum)
     850    Page.Choice = None
    836851    PatternId = G2frame.PatternId
    837852    Pattern = G2frame.PatternTree.GetItemPyData(PatternId)
     
    9911006    G2frame.G2plotNB.status.DestroyChildren()
    9921007    if G2frame.Contour:
    993         Choice = (' key press','d: lower contour max','u: raise contour max',
     1008        Page.Choice = (' key press','d: lower contour max','u: raise contour max',
    9941009            'i: interpolation method','s: color scheme','c: contour off')
    9951010    else:
    996         Choice = (' key press','l: offset left','r: offset right','d: offset down','u: offset up',
     1011        Page.Choice = (' key press','l: offset left','r: offset right','d: offset down','u: offset up',
    9971012            'o: reset offset','t: toggle legend','c: contour on','s: toggle single plot')
    998     cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,
    999         choices=Choice)
    1000     cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
    1001     cb.SetValue(' key press')
     1013    Page.keyPress = OnPlotKeyPress
    10021014    PatternId = G2frame.PatternId
    10031015    PickId = G2frame.PickId
     
    11251137        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    11261138   
     1139    Page.Choice = None
    11271140    Page.SetFocus()
    11281141    G2frame.G2plotNB.status.DestroyChildren()
     
    11831196        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    11841197       
     1198    Page.Choice = None
    11851199    Page.SetFocus()
    11861200    Plot.set_title('Powder Pattern Lines')
     
    12161230    else:
    12171231        return
    1218     Parms = G2frame.PatternTree.GetItemPyData( \
     1232    Parms,Parms2 = G2frame.PatternTree.GetItemPyData( \
    12191233        G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
    12201234    if 'C' in Parms['Type'][0]:
     
    12511265        plotNum = G2frame.G2plotNB.plotList.index('Peak Widths')
    12521266        Page = G2frame.G2plotNB.nb.GetPage(plotNum)
     1267    Page.Choice = None
    12531268    Page.SetFocus()
    12541269   
     
    13591374    plotNum = G2frame.G2plotNB.plotList.index(plotType)
    13601375    Page = G2frame.G2plotNB.nb.GetPage(plotNum)
     1376    Page.Choice = None
    13611377    Page.SetFocus()
    13621378    G2frame.G2plotNB.status.SetStatusText('',1)
     
    15531569        Page.canvas.mpl_connect('motion_notify_event', OnMotion)
    15541570
     1571    Page.Choice = None
    15551572    Page.SetFocus()
    15561573    G2frame.G2plotNB.status.SetFields(['',''])   
     
    16711688                    msg = '%s - %s: %5.3f'%(varyList[xpos],varyList[ypos],covArray[xpos][ypos])
    16721689                Page.canvas.SetToolTipString(msg)
    1673                 G2frame.G2plotNB.status.SetFields(['Key: s to change colors',msg])
     1690                G2frame.G2plotNB.status.SetFields(['',msg])
    16741691    try:
    16751692        plotNum = G2frame.G2plotNB.plotList.index('Covariance')
     
    16861703        Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress)
    16871704
     1705    Page.Choice = ['s: to change colors']
     1706    Page.keyPress = OnPlotKeyPress
    16881707    Page.SetFocus()
    16891708    G2frame.G2plotNB.status.SetFields(['',''])   
     
    17261745        Page.canvas.mpl_connect('key_press_event', OnKeyPress)
    17271746        G2frame.xAxis = False
     1747    Page.Choice = ['s to toggle x-axis = sample environment parameter']
     1748    Page.keyPress = OnKeyPress
    17281749       
    17291750    def Draw(newPlot):
    17301751        Page.SetFocus()
    1731         G2frame.G2plotNB.status.SetFields(['','press s to toggle x-axis = sample environment parameter'])
     1752        G2frame.G2plotNB.status.SetFields(['','press '])
    17321753        if len(SeqData):
    17331754            Plot.clear()
     
    20342055        Page.canvas.mpl_connect('button_release_event', OnImRelease)
    20352056        xylim = []
     2057    Page.Choice = None
    20362058    if not event:                       #event from GUI TextCtrl - don't want focus to change to plot!!!
    20372059        Page.SetFocus()
     
    20432065    try:
    20442066        if G2frame.PatternTree.GetItemText(G2frame.PickId) in ['Image Controls',]:
    2045             Choice = (' key press','l: log(I) on',)
     2067            Page.Choice = (' key press','l: log(I) on',)
    20462068            if G2frame.logPlot:
    2047                 Choice[1] = 'l: log(I) off'
    2048             cb = wx.ComboBox(G2frame.G2plotNB.status,style=wx.CB_DROPDOWN|wx.CB_READONLY,
    2049                 choices=Choice)
    2050             cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
    2051             cb.SetValue(' key press')
     2069                Page.Choice[1] = 'l: log(I) off'
     2070            Page.keyPress = OnImPlotKeyPress
    20522071    except TypeError:
    20532072        pass
     
    22372256        Page.views = False
    22382257        view = False
     2258    Page.Choice = None
    22392259    if not event:
    22402260        Page.SetFocus()
     
    23032323        Page.views = False
    23042324        view = False
     2325    Page.Choice = None
    23052326    Page.SetFocus()
    23062327       
     
    31263147        altDown = False
    31273148    Page.SetFocus()
     3149    Page.Choice = None
    31283150    if mapData['Flip']:
    31293151        choice = [' save as/key:','jpeg','tiff','bmp','u: roll up','d: roll down','l: roll left','r: roll right']
  • trunk/GSASIIpwd.py

    r795 r796  
    12151215    return bakType,backDict,backVary
    12161216           
    1217 def DoPeakFit(FitPgm,Peaks,Background,Limits,Inst,data,oneCycle=False,controls=None,dlg=None):
     1217def DoPeakFit(FitPgm,Peaks,Background,Limits,Inst,Inst2,data,oneCycle=False,controls=None,dlg=None):
    12181218   
    12191219       
     
    15111511
    15121512def calcIncident(Iparm,xdata):
    1513     Itype = Iparm['Itype']
    1514     Icoef = Iparm['Icoeff']
    1515     Iesd = Iparm['Iesd']
     1513
     1514    def IfunAdv(Iparm,xdata):
     1515        Itype = Iparm['Itype']
     1516        Icoef = Iparm['Icoeff']
     1517        DYI = np.ones((12,xdata.shape[0]))
     1518        YI = np.ones_like(xdata)*Icoef[0]
     1519       
     1520        x = xdata/1000.                 #expressions are in ms
     1521        if Itype == 'Exponential':
     1522            for i in range(1,10,2):
     1523                Eterm = np.exp(-Icoef[i+1]*x**((i+1)/2))
     1524                YI += Icoef[i]*Eterm
     1525                DYI[i] *= Eterm
     1526                DYI[i+1] *= -Icoef[i]*x**((i+1)/2)           
     1527        elif 'Maxwell'in Itype:
     1528            Eterm = np.exp(-Icoef[2]/x**2)
     1529            DYI[1] = Eterm/x**5
     1530            DYI[2] = -Icoef[1]*DYI[1]/x**2
     1531            YI += (Icoef[1]*Eterm/x**5)
     1532            if 'Exponential' in Itype:
     1533                for i in range(3,12,2):
     1534                    Eterm = np.exp(-Icoef[i+1]*x**((i+1)/2))
     1535                    YI += Icoef[i]*Eterm
     1536                    DYI[i] *= Eterm
     1537                    DYI[i+1] *= -Icoef[i]*x**((i+1)/2)
     1538            else:   #Chebyschev
     1539                T = (2./x)-1.
     1540                Ccof = np.ones((12,xdata.shape[0]))
     1541                Ccof[1] = T
     1542                for i in range(2,12):
     1543                    Ccof[i] = 2*T*Ccof[i-1]-Ccof[i-2]
     1544                for i in range(1,10):
     1545                    YI += Ccof[i]*Icoef[i+2]
     1546                    DYI[i+2] =Ccof[i]
     1547        return YI,DYI
     1548       
     1549    Iesd = np.array(Iparm['Iesd'])
    15161550    Icovar = Iparm['Icovar']
    1517     intens = np.zeros_like(xdata)
    1518     x = xdata/1000.
    1519     if Itype == 1:
    1520         intens = Icoef[0]
    1521         for i in range(1,10,2):
    1522             intens += Icoef[i]*np.exp(-Icoef[i+1]*x**((i+1)/2))
    1523        
    1524     elif Itype == 4:
    1525         intens = Icoef[0]
    1526         intens += (Icoef[1]/x**5)*np.exp(-Icoef[2]/(x**2))
    1527        
    1528     return intens
    1529 
     1551    YI,DYI = IfunAdv(Iparm,xdata)
     1552    YI = np.where(YI>0,YI,1.)
     1553    WYI = np.zeros_like(xdata)
     1554    vcov = np.zeros((12,12))
     1555    k = 0
     1556    for i in range(12):
     1557        for j in range(i,12):
     1558            vcov[i][j] = Icovar[k]*Iesd[i]*Iesd[j]
     1559            vcov[j][i] = Icovar[k]*Iesd[i]*Iesd[j]
     1560            k += 1
     1561    M = np.inner(vcov,DYI.T)
     1562    WYI = np.sum(M*DYI,axis=0)
     1563    WYI = np.where(WYI>0.,WYI,0.)
     1564    return YI,WYI
    15301565   
    15311566#testing data
  • trunk/GSASIIpwdGUI.py

    r795 r796  
    7272        PickId = G2frame.PickId
    7373        limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits'))[1]
    74         inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
     74        inst,inst2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
    7575        profile = G2frame.PatternTree.GetItemPyData(PatternId)[1]
    7676        x0 = profile[0]
     
    8989        poss = x[indx]
    9090        for pos,mag in zip(poss,mags):
    91             data.append(G2mth.setPeakparms(inst,pos,mag))
     91            data.append(G2mth.setPeakparms(inst,inst2,pos,mag))
    9292        UpdatePeakGrid(G2frame,data)
    9393        G2plt.PlotPatterns(G2frame)       
     
    154154        background = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Background'))
    155155        limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Limits'))[1]
    156         inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
     156        inst,inst2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
    157157        data = G2frame.PatternTree.GetItemPyData(PatternId)[1]
    158158        wx.BeginBusyCursor()
     
    163163        dlg.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5))
    164164        try:
    165             G2pwd.DoPeakFit(FitPgm,peaks,background,limits,inst,data,oneCycle,controls,dlg)
     165            G2pwd.DoPeakFit(FitPgm,peaks,background,limits,inst,inst2,data,oneCycle,controls,dlg)
    166166        finally:
    167167            wx.EndBusyCursor()   
     
    174174        PatternId = G2frame.PatternId
    175175        PickId = G2frame.PickId
    176         Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
     176        Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))[0]
    177177        peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List'))
    178178        if not peaks:
     
    281281    rowLabels = []
    282282    PatternId = G2frame.PatternId
    283     Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))
     283    Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters'))[0]
    284284    for i in range(len(data)): rowLabels.append(str(i+1))
    285285    if 'C' in Inst['Type'][0]:
     
    648648       
    649649def UpdateInstrumentGrid(G2frame,data):
    650     keys = data.keys()
     650   
     651    def keycheck(keys):
     652        good = []
     653        for key in keys:
     654            if key in ['Type','U','V','W','X','Y','SH/L','I(L2)/I(L1)','alpha',
     655                'beta-0','beta-1','var-inst','Polariz.','Lam','Azimuth','2-theta',
     656                'difC','difA','Zero']:
     657                good.append(key)
     658        return good
     659       
     660    keys = keycheck(data.keys())
    651661    if 'P' in data['Type'][0]:          #powder data
    652662        insVal = dict(zip(keys,[data[key][1] for key in keys]))
     
    674684    def updateData(inst,ref):
    675685        return inst2data(inst,ref,G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,
    676             G2frame.PatternId,'Instrument Parameters')))       
     686            G2frame.PatternId,'Instrument Parameters'))[0])       
    677687   
    678688    def RefreshInstrumentGrid(event,doAnyway=False):
     
    13121322def UpdateIndexPeaksGrid(G2frame, data):
    13131323    IndexId = G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Index Peak List')
    1314     Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
     1324    Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[0]
    13151325    wave = G2mth.getWave(Inst)
    13161326   
     
    14141424    spaceGroups = ['F m 3 m','I m 3 m','P m 3 m','R 3 m','P 6/m m m','I 4/m m m',
    14151425        'P 4/m m m','F m m m','I m m m','C m m m','P m m m','C 2/m','P 2/m','P -1']
    1416     Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))
     1426    Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,G2frame.PatternId, 'Instrument Parameters'))[0]
    14171427    wave = G2mth.getWave(Inst)
    14181428   
     
    19701980    powId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root, powName)
    19711981    fullLimits,limits = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Limits'))
    1972     inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Instrument Parameters'))
     1982    inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId, 'Instrument Parameters'))[0]
    19731983    if 'Lam' in inst:
    19741984        keV = 12.397639/inst['Lam'][1]
     
    23012311        powName = xydata['Sample'][2]
    23022312        powId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,powName)
    2303         inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId,'Instrument Parameters'))
     2313        inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,powId,'Instrument Parameters'))[0]
    23042314        auxPlot = G2pwd.CalcPDF(Data,inst,xydata)
    23052315        PDFId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'PDF '+powName[4:])
  • trunk/GSASIIstruct.py

    r795 r796  
    11101110            if 'PWDR' in histogram:
    11111111                limits = Histogram['Limits'][1]
    1112                 inst = Histogram['Instrument Parameters']
     1112                inst = Histogram['Instrument Parameters'][0]
    11131113                Zero = inst['Zero'][1]
    11141114                if 'C' in inst['Type'][1]:
     
    12001200                Histogram['Reflection Lists'][phase] = refList
    12011201            elif 'HKLF' in histogram:
    1202                 inst = Histogram['Instrument Parameters']
     1202                inst = Histogram['Instrument Parameters'][0]
    12031203                hId = Histogram['hId']
    12041204                hfx = ':%d:'%(hId)
     
    16631663            histVary += bakVary
    16641664           
    1665             Inst = Histogram['Instrument Parameters']
     1665            Inst = Histogram['Instrument Parameters'][0]
    16661666            Type,instDict,insVary = GetInstParms(hId,Inst)
    16671667            controlDict[pfx+'histType'] = Type
     
    16961696            pfx = ':'+str(hId)+':'
    16971697            controlDict[pfx+'wtFactor'] =Histogram['wtFactor']
    1698             Inst = Histogram['Instrument Parameters']
     1698            Inst = Histogram['Instrument Parameters'][0]
    16991699            controlDict[pfx+'histType'] = Inst['Type'][0]
    17001700            histDict[pfx+'Lam'] = Inst['Lam'][1]
     
    18701870            backSig = SetBackgroundParms(pfx,Background,parmDict,sigDict)
    18711871           
    1872             Inst = Histogram['Instrument Parameters']
     1872            Inst = Histogram['Instrument Parameters'][0]
    18731873            instSig = SetInstParms(pfx,Inst,parmDict,sigDict)
    18741874       
Note: See TracChangeset for help on using the changeset viewer.