Changeset 796
- Timestamp:
- Nov 7, 2012 2:54:48 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 1 deleted
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r795 r796 533 533 self.Bind(wx.EVT_MENU, self.OnImportPowder, id=item.GetId()) 534 534 535 def ReadPowderInstprm(self,instfile): 535 def ReadPowderInstprm(self,instfile): #fix the write routine for [inst1,inst2] style 536 536 '''Read a GSAS-II (new) instrument parameter file''' 537 537 if os.path.splitext(instfile)[1].lower() != '.instprm': # invalid file … … 656 656 data.extend([0.0,0.0,0.002,azm]) #OK defaults if fxn #3 not 1st in iprm file 657 657 codes.extend([0,0,0,0,0,0,0]) 658 return G2IO.makeInstDict(names,data,codes)658 return [G2IO.makeInstDict(names,data,codes),{}] 659 659 elif 'T' in DataType: 660 660 names = ['Type','2-theta','difC','difA','Zero','alpha','beta-0','beta-1','var-inst','X','Y','Azimuth'] … … 681 681 s = Iparm['INS 1PRCF12'].split() 682 682 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 = {} 684 685 if pfType < 0: 685 686 Ipab = 'INS 1PAB'+str(-pfType) 686 687 Npab = int(Iparm[Ipab+' '].strip()) 687 Inst ['Pdabc'] = []688 Inst2['Pdabc'] = [] 688 689 for i in range(Npab): 689 690 k = Ipab+str(i+1).rjust(2) 690 691 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 693 695 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 697 703 Icoeff = [] 698 704 Iesd = [] … … 706 712 s = Iparm['INS 1IECOR'+str(i+1)].split() 707 713 Icovar += [float(S) for S in s] 708 Inst ['Icoeff'] = Icoeff709 Inst ['Iesd'] = Iesd710 Inst ['Icovar'] = Icovar711 return Inst714 Inst2['Icoeff'] = Icoeff 715 Inst2['Iesd'] = Iesd 716 Inst2['Icovar'] = Icovar 717 return [Inst1,Inst2] 712 718 713 719 # stuff we might need from the reader … … 737 743 return SetPowderInstParms(Iparm,rd) 738 744 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) 743 747 # is there an instrument parameter file matching the current file 744 748 # with extension .inst or .prm? If so read it … … 851 855 for rd in rdlist: 852 856 # get instrument parameters for each dataset 853 instParmList= self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile)857 Iparm1,Iparm2 = self.GetPowderIparm(rd, Iparm, lastIparmfile, lastdatafile) 854 858 lastIparmfile = rd.instfile 855 859 lastdatafile = rd.powderentry[0] … … 860 864 Id = self.PatternTree.AppendItem(parent=self.root, 861 865 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]: 867 867 if not rd.clockWd and rd.GSAS: 868 868 rd.powderdata[0] *= 100. … … 870 870 rd.powderdata[0] = rd.powderdata[0][:-1]+cw/2. 871 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]) 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]) 878 885 Tmin = min(rd.powderdata[0]) 879 886 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) 880 891 self.PatternTree.SetItemPyData( 881 892 self.PatternTree.AppendItem(Id,text='Limits'), … … 888 899 self.PatternTree.SetItemPyData( 889 900 self.PatternTree.AppendItem(Id,text='Instrument Parameters'), 890 instParmList)901 [Iparm1,Iparm2]) 891 902 self.PatternTree.SetItemPyData( 892 903 self.PatternTree.AppendItem(Id,text='Sample Parameters'), … … 1159 1170 names = ['Type','Lam','Zero'] 1160 1171 codes = [0,0,0] 1161 inst = G2IO.makeInstDict(names,data,codes)1172 inst = [G2IO.makeInstDict(names,data,codes),{}] 1162 1173 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Instrument Parameters'),inst) 1163 1174 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),comments) … … 1470 1481 SumList = [] 1471 1482 Names = [] 1472 Inst = {}1483 Inst = None 1473 1484 SumItemList = [] 1474 1485 Comments = ['Sum equals: \n'] -
trunk/GSASIIIO.py
r795 r796 449 449 sub = G2frame.PatternTree.AppendItem(Id,datus[0]) 450 450 #patch 451 if datus[0] == 'Instrument Parameters' and not isinstance(datus[1],dict):451 if datus[0] == 'Instrument Parameters' and len(datus[1]) == 1: 452 452 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]))),{}] 454 454 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]) 458 458 #end patch 459 459 G2frame.PatternTree.SetItemPyData(sub,datus[1]) … … 532 532 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Background'),[['chebyschev',1,3,1.0,0.0,0.0], 533 533 {'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]) 537 537 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Instrument Parameters'),inst) 538 538 G2frame.PatternTree.SetItemPyData(G2gd.GetPatternTreeItemId(G2frame,Id,'Peak List'),[]) … … 546 546 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Background'),[['chebyschev',1,3,1.0,0.0,0.0], 547 547 {'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]) 551 551 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Instrument Parameters'),inst) 552 552 G2frame.PatternTree.SetItemPyData(G2frame.PatternTree.AppendItem(Id,text='Sample Parameters'),Sample) … … 569 569 PickId = G2gd.GetPatternTreeItemId(G2frame, G2frame.root, export) 570 570 Inst = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, \ 571 PickId, 'Instrument Parameters')) 571 PickId, 'Instrument Parameters'))[0] 572 572 prm.write( ' 123456789012345678901234567890123456789012345678901234567890 '+'\n') 573 573 prm.write( 'INS BANK 1 '+'\n') -
trunk/GSASIIgrid.py
r795 r796 2613 2613 G2frame.PatternId = G2frame.PatternTree.GetItemParent(item) 2614 2614 G2frame.PickId = item 2615 data = G2frame.PatternTree.GetItemPyData(item) 2615 data = G2frame.PatternTree.GetItemPyData(item)[0] 2616 2616 G2pdG.UpdateInstrumentGrid(G2frame,data) 2617 2617 G2plt.PlotPeakWidths(G2frame) -
trunk/GSASIImath.py
r795 r796 981 981 return Ind 982 982 983 def setPeakparms(Parms, pos,mag,ifQ=False):983 def setPeakparms(Parms,Parms2,pos,mag,ifQ=False): 984 984 ins = {} 985 985 if 'C' in Parms['Type'][0]: #CW data - TOF later in an elif … … 993 993 else: 994 994 dsp = pos/Parms['difC'][1] 995 if 'Pdabc' in Parms :995 if 'Pdabc' in Parms2: 996 996 for x in ['var-inst','X','Y']: 997 997 ins[x] = Parms[x][1] 998 Pdabc = Parms ['Pdabc'].T998 Pdabc = Parms2['Pdabc'].T 999 999 alp = np.interp(dsp,Pdabc[0],Pdabc[1]) 1000 1000 bet = np.interp(dsp,Pdabc[0],Pdabc[2]) -
trunk/GSASIIphsGUI.py
r795 r796 4033 4033 PatternId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,HistoNames[0]) 4034 4034 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] 4036 4036 Sample = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId,'Sample Parameters')) 4037 4037 wave = G2mth.getWave(Inst) … … 4137 4137 c = event.GetCol() 4138 4138 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) 4142 4142 else: 4143 4143 return -
trunk/GSASIIplot.py
r795 r796 164 164 class GSASIItoolbar(Toolbar): 165 165 ON_MPL_HELP = wx.NewId() 166 ON_MPL_KEY = wx.NewId() 166 167 def __init__(self,plotCanvas): 167 168 Toolbar.__init__(self,plotCanvas) 168 169 POSITION_OF_CONFIGURE_SUBPLOTS_BTN = 6 169 170 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) 170 175 help = os.path.join(os.path.split(__file__)[0],'help.ico') 171 176 self.AddSimpleTool(self.ON_MPL_HELP,_load_bitmap(help),'Help on','Show help on') … … 177 182 bookmark = bookmark.strip(')').replace('(','_') 178 183 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 179 194 180 195 ################################################################################ … … 233 248 xylim = Plot.get_xlim(),Plot.get_ylim() 234 249 Page.figure.clf() 250 Page.Choice = None 235 251 Plot = Page.figure.gca() #get a fresh plot after clf() 236 252 except ValueError: … … 241 257 Page.canvas.mpl_connect('pick_event', OnSCPick) 242 258 Page.canvas.mpl_connect('motion_notify_event', OnSCMotion) 259 Page.Choice = None 243 260 Page.SetFocus() 244 261 … … 318 335 def PlotPatterns(G2frame,newPlot=False): 319 336 '''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 I337 2-theta, q or TOF. Can display multiple patterns as "waterfall plots" or contour plots. Log I 321 338 plotting available. 322 339 ''' 323 340 global HKL 324 341 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 # 331 348 def OnPlotKeyPress(event): 332 349 newPlot = False … … 428 445 Page.canvas.SetCursor(wx.CROSS_CURSOR) 429 446 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')) 431 448 if 'C' in Parms['Type'][0]: 432 449 wave = G2mth.getWave(Parms) … … 474 491 PatternId = G2frame.PatternId 475 492 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')) 477 494 except TypeError: 478 495 return … … 491 508 if ind.all() != [0]: #picked a data point 492 509 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]) 494 511 data.append(XY) 495 512 G2pdG.UpdatePeakGrid(G2frame,data) … … 520 537 def OnRelease(event): 521 538 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')) 523 540 if 'C' in Parms['Type'][0]: 524 541 wave = G2mth.getWave(Parms) … … 594 611 G2frame.G2plotNB.status.DestroyChildren() 595 612 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', 597 614 'i: interpolation method','s: color scheme','c: contour off') 598 615 else: 599 616 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', 601 618 'c: contour on','q: toggle q plot','s: toggle single plot','+: no selection') 602 619 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', 605 622 '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 610 624 611 625 PickId = G2frame.PickId … … 617 631 Pattern.append(G2frame.PatternTree.GetItemText(PatternId)) 618 632 PlotList = [Pattern,] 619 Parms = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,633 Parms,Parms2 = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, 620 634 G2frame.PatternId, 'Instrument Parameters')) 621 635 ParmList = [Parms,] … … 631 645 PlotList.append(Pattern) 632 646 ParmList.append(G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, 633 item,'Instrument Parameters')) )647 item,'Instrument Parameters'))[0]) 634 648 item, cookie = G2frame.PatternTree.GetNextChild(G2frame.root, cookie) 635 649 Ymax = 1.0 … … 666 680 Plot.set_ylabel('Intensity',fontsize=14) 667 681 else: 668 Plot.set_ylabel(' Counts/$\mathsf{\mu}$s',fontsize=14)682 Plot.set_ylabel('Normalized intensity',fontsize=14) 669 683 if G2frame.Contour: 670 684 ContourZ = [] … … 765 779 Plot.plot(X,Y,colors[N%6],picker=False) 766 780 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')) 768 782 if 'C' in Parms['Type'][0]: 769 783 wave = G2mth.getWave(Parms) … … 834 848 plotNum = G2frame.G2plotNB.plotList.index('Error analysis') 835 849 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 850 Page.Choice = None 836 851 PatternId = G2frame.PatternId 837 852 Pattern = G2frame.PatternTree.GetItemPyData(PatternId) … … 991 1006 G2frame.G2plotNB.status.DestroyChildren() 992 1007 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', 994 1009 'i: interpolation method','s: color scheme','c: contour off') 995 1010 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', 997 1012 '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 1002 1014 PatternId = G2frame.PatternId 1003 1015 PickId = G2frame.PickId … … 1125 1137 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 1126 1138 1139 Page.Choice = None 1127 1140 Page.SetFocus() 1128 1141 G2frame.G2plotNB.status.DestroyChildren() … … 1183 1196 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 1184 1197 1198 Page.Choice = None 1185 1199 Page.SetFocus() 1186 1200 Plot.set_title('Powder Pattern Lines') … … 1216 1230 else: 1217 1231 return 1218 Parms = G2frame.PatternTree.GetItemPyData( \1232 Parms,Parms2 = G2frame.PatternTree.GetItemPyData( \ 1219 1233 G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Instrument Parameters')) 1220 1234 if 'C' in Parms['Type'][0]: … … 1251 1265 plotNum = G2frame.G2plotNB.plotList.index('Peak Widths') 1252 1266 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1267 Page.Choice = None 1253 1268 Page.SetFocus() 1254 1269 … … 1359 1374 plotNum = G2frame.G2plotNB.plotList.index(plotType) 1360 1375 Page = G2frame.G2plotNB.nb.GetPage(plotNum) 1376 Page.Choice = None 1361 1377 Page.SetFocus() 1362 1378 G2frame.G2plotNB.status.SetStatusText('',1) … … 1553 1569 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 1554 1570 1571 Page.Choice = None 1555 1572 Page.SetFocus() 1556 1573 G2frame.G2plotNB.status.SetFields(['','']) … … 1671 1688 msg = '%s - %s: %5.3f'%(varyList[xpos],varyList[ypos],covArray[xpos][ypos]) 1672 1689 Page.canvas.SetToolTipString(msg) 1673 G2frame.G2plotNB.status.SetFields([' Key: s to change colors',msg])1690 G2frame.G2plotNB.status.SetFields(['',msg]) 1674 1691 try: 1675 1692 plotNum = G2frame.G2plotNB.plotList.index('Covariance') … … 1686 1703 Page.canvas.mpl_connect('key_press_event', OnPlotKeyPress) 1687 1704 1705 Page.Choice = ['s: to change colors'] 1706 Page.keyPress = OnPlotKeyPress 1688 1707 Page.SetFocus() 1689 1708 G2frame.G2plotNB.status.SetFields(['','']) … … 1726 1745 Page.canvas.mpl_connect('key_press_event', OnKeyPress) 1727 1746 G2frame.xAxis = False 1747 Page.Choice = ['s to toggle x-axis = sample environment parameter'] 1748 Page.keyPress = OnKeyPress 1728 1749 1729 1750 def Draw(newPlot): 1730 1751 Page.SetFocus() 1731 G2frame.G2plotNB.status.SetFields(['','press s to toggle x-axis = sample environment parameter'])1752 G2frame.G2plotNB.status.SetFields(['','press ']) 1732 1753 if len(SeqData): 1733 1754 Plot.clear() … … 2034 2055 Page.canvas.mpl_connect('button_release_event', OnImRelease) 2035 2056 xylim = [] 2057 Page.Choice = None 2036 2058 if not event: #event from GUI TextCtrl - don't want focus to change to plot!!! 2037 2059 Page.SetFocus() … … 2043 2065 try: 2044 2066 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',) 2046 2068 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 2052 2071 except TypeError: 2053 2072 pass … … 2237 2256 Page.views = False 2238 2257 view = False 2258 Page.Choice = None 2239 2259 if not event: 2240 2260 Page.SetFocus() … … 2303 2323 Page.views = False 2304 2324 view = False 2325 Page.Choice = None 2305 2326 Page.SetFocus() 2306 2327 … … 3126 3147 altDown = False 3127 3148 Page.SetFocus() 3149 Page.Choice = None 3128 3150 if mapData['Flip']: 3129 3151 choice = [' save as/key:','jpeg','tiff','bmp','u: roll up','d: roll down','l: roll left','r: roll right'] -
trunk/GSASIIpwd.py
r795 r796 1215 1215 return bakType,backDict,backVary 1216 1216 1217 def DoPeakFit(FitPgm,Peaks,Background,Limits,Inst, data,oneCycle=False,controls=None,dlg=None):1217 def DoPeakFit(FitPgm,Peaks,Background,Limits,Inst,Inst2,data,oneCycle=False,controls=None,dlg=None): 1218 1218 1219 1219 … … 1511 1511 1512 1512 def 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']) 1516 1550 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 1530 1565 1531 1566 #testing data -
trunk/GSASIIpwdGUI.py
r795 r796 72 72 PickId = G2frame.PickId 73 73 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')) 75 75 profile = G2frame.PatternTree.GetItemPyData(PatternId)[1] 76 76 x0 = profile[0] … … 89 89 poss = x[indx] 90 90 for pos,mag in zip(poss,mags): 91 data.append(G2mth.setPeakparms(inst, pos,mag))91 data.append(G2mth.setPeakparms(inst,inst2,pos,mag)) 92 92 UpdatePeakGrid(G2frame,data) 93 93 G2plt.PlotPatterns(G2frame) … … 154 154 background = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Background')) 155 155 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')) 157 157 data = G2frame.PatternTree.GetItemPyData(PatternId)[1] 158 158 wx.BeginBusyCursor() … … 163 163 dlg.SetPosition(wx.Point(screenSize[2]-Size[0]-305,screenSize[1]+5)) 164 164 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) 166 166 finally: 167 167 wx.EndBusyCursor() … … 174 174 PatternId = G2frame.PatternId 175 175 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] 177 177 peaks = G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame,PatternId, 'Peak List')) 178 178 if not peaks: … … 281 281 rowLabels = [] 282 282 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] 284 284 for i in range(len(data)): rowLabels.append(str(i+1)) 285 285 if 'C' in Inst['Type'][0]: … … 648 648 649 649 def 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()) 651 661 if 'P' in data['Type'][0]: #powder data 652 662 insVal = dict(zip(keys,[data[key][1] for key in keys])) … … 674 684 def updateData(inst,ref): 675 685 return inst2data(inst,ref,G2frame.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(G2frame, 676 G2frame.PatternId,'Instrument Parameters')) )686 G2frame.PatternId,'Instrument Parameters'))[0]) 677 687 678 688 def RefreshInstrumentGrid(event,doAnyway=False): … … 1312 1322 def UpdateIndexPeaksGrid(G2frame, data): 1313 1323 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] 1315 1325 wave = G2mth.getWave(Inst) 1316 1326 … … 1414 1424 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', 1415 1425 '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] 1417 1427 wave = G2mth.getWave(Inst) 1418 1428 … … 1970 1980 powId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root, powName) 1971 1981 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] 1973 1983 if 'Lam' in inst: 1974 1984 keV = 12.397639/inst['Lam'][1] … … 2301 2311 powName = xydata['Sample'][2] 2302 2312 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] 2304 2314 auxPlot = G2pwd.CalcPDF(Data,inst,xydata) 2305 2315 PDFId = G2gd.GetPatternTreeItemId(G2frame,G2frame.root,'PDF '+powName[4:]) -
trunk/GSASIIstruct.py
r795 r796 1110 1110 if 'PWDR' in histogram: 1111 1111 limits = Histogram['Limits'][1] 1112 inst = Histogram['Instrument Parameters'] 1112 inst = Histogram['Instrument Parameters'][0] 1113 1113 Zero = inst['Zero'][1] 1114 1114 if 'C' in inst['Type'][1]: … … 1200 1200 Histogram['Reflection Lists'][phase] = refList 1201 1201 elif 'HKLF' in histogram: 1202 inst = Histogram['Instrument Parameters'] 1202 inst = Histogram['Instrument Parameters'][0] 1203 1203 hId = Histogram['hId'] 1204 1204 hfx = ':%d:'%(hId) … … 1663 1663 histVary += bakVary 1664 1664 1665 Inst = Histogram['Instrument Parameters'] 1665 Inst = Histogram['Instrument Parameters'][0] 1666 1666 Type,instDict,insVary = GetInstParms(hId,Inst) 1667 1667 controlDict[pfx+'histType'] = Type … … 1696 1696 pfx = ':'+str(hId)+':' 1697 1697 controlDict[pfx+'wtFactor'] =Histogram['wtFactor'] 1698 Inst = Histogram['Instrument Parameters'] 1698 Inst = Histogram['Instrument Parameters'][0] 1699 1699 controlDict[pfx+'histType'] = Inst['Type'][0] 1700 1700 histDict[pfx+'Lam'] = Inst['Lam'][1] … … 1870 1870 backSig = SetBackgroundParms(pfx,Background,parmDict,sigDict) 1871 1871 1872 Inst = Histogram['Instrument Parameters'] 1872 Inst = Histogram['Instrument Parameters'][0] 1873 1873 instSig = SetInstParms(pfx,Inst,parmDict,sigDict) 1874 1874
Note: See TracChangeset
for help on using the changeset viewer.