Changeset 62
- Timestamp:
- May 5, 2010 10:36:36 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r56 r62 140 140 141 141 def _init_coll_Export_Items(self,parent): 142 self.ExportPattern = parent.Append(help=' ',id=wxID_GSASIIEXPORTPATTERN, kind=wx.ITEM_NORMAL,142 self.ExportPattern = parent.Append(help='Select PWDR item to enable',id=wxID_GSASIIEXPORTPATTERN, kind=wx.ITEM_NORMAL, 143 143 text='Export Powder Pattern') 144 144 self.ExportPeakList = parent.Append(help='',id=wxID_GSASIIEXPORTPEAKLIST, kind=wx.ITEM_NORMAL, … … 236 236 self.plotView = 0 237 237 self.Image = 0 238 self.oldImagefile = '' 238 239 self.Img = 0 239 self.TA = 0240 240 self.Integrate = 0 241 241 self.Pwdr = False … … 254 254 pltPage = self.G2plotNB.nb.GetPage(pltNum) 255 255 pltPlot = pltPage.figure.gca() 256 # pltPage.xylim = [pltPlot.get_xlim(),pltPlot.get_ylim()]257 # print pltPage.xylim258 # pltPage.views = copy.deepcopy(pltPage.toolbar._views)259 256 item = event.GetItem() 260 257 G2gd.MovePatternTreeToGrid(self,item) … … 370 367 def OnImageRead(self,event): 371 368 self.CheckNotebook() 372 dlg = wx.FileDialog(self, 'Choose image file ', '.', '',\369 dlg = wx.FileDialog(self, 'Choose image files', '.', '',\ 373 370 'MAR345 (*.mar3450;*.mar2300)|*.mar3450;*.mar2300|ADSC Image (*.img)\ 374 371 |*.img|Perkin-Elmer TIF (*.tif)|*.tif|GE Image sum (*.sum)\ 375 |*.sum|GE Image avg (*.avg)|*.avg|All files (*.*)|*.*',wx.OPEN )372 |*.sum|GE Image avg (*.avg)|*.avg|All files (*.*)|*.*',wx.OPEN | wx.MULTIPLE) 376 373 if self.dirname: 377 374 dlg.SetDirectory(self.dirname) 378 375 try: 379 376 if dlg.ShowModal() == wx.ID_OK: 380 imagefile = dlg.GetPath()381 377 self.dirname = dlg.GetDirectory() 382 Comments,Data,Size,Image = G2IO.GetImageData(imagefile) 383 if Comments: 384 Id = self.PatternTree.AppendItem(parent=self.root,text='IMG '+ospath.basename(imagefile)) 385 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),Comments) 386 Imax = np.amax(Image) 387 Imin = np.amin(Image) 388 if self.imageDefault: 389 Data = copy.copy(self.imageDefault) 390 Data['refine'] = [False,False,False,False,False] 391 Data['showLines'] = True 392 else: 393 Data['color'] = 'binary' 394 Data['tilt'] = 0.0 395 Data['rotation'] = 0.0 396 Data['showLines'] = False 397 Data['ring'] = [] 398 Data['rings'] = [] 399 Data['cutoff'] = 10 400 Data['pixLimit'] = 20 401 Data['ellipses'] = [] 402 Data['masks'] = [] 403 Data['calibrant'] = '' 404 Data['IOtth'] = [2.0,5.0] 405 Data['LRazimuth'] = [-135,-45] 406 Data['outChannels'] = 2500 407 Data['outAzimuths'] = 1 408 Data['fullIntegrate'] = False 409 Data['setRings'] = False 410 Data['setDefault'] = False 411 Data['range'] = [(Imin,Imax),[Imin,Imax]] 412 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Image Controls'),Data) 413 self.PatternTree.SetItemPyData(Id,[Size,imagefile]) 414 self.PickId = Id 415 self.Image = Id 416 self.PatternTree.SelectItem(Id) 417 self.PatternTree.Expand(Id) 378 imagefiles = dlg.GetPaths() 379 imagefiles.sort() 380 for imagefile in imagefiles: 381 Comments,Data,Size,Image = G2IO.GetImageData(imagefile) 382 if Comments: 383 Id = self.PatternTree.AppendItem(parent=self.root,text='IMG '+ospath.basename(imagefile)) 384 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),Comments) 385 Imax = np.amax(Image) 386 Imin = np.amin(Image) 387 if self.imageDefault: 388 Data = copy.copy(self.imageDefault) 389 Data['showLines'] = True 390 Data['ring'] = [] 391 Data['rings'] = [] 392 Data['cutoff'] = 10 393 Data['pixLimit'] = 20 394 Data['ellipses'] = [] 395 Data['masks'] = [] 396 Data['calibrant'] = '' 397 else: 398 Data['color'] = 'binary' 399 Data['tilt'] = 0.0 400 Data['rotation'] = 0.0 401 Data['showLines'] = False 402 Data['ring'] = [] 403 Data['rings'] = [] 404 Data['cutoff'] = 10 405 Data['pixLimit'] = 20 406 Data['ellipses'] = [] 407 Data['masks'] = [] 408 Data['calibrant'] = '' 409 Data['IOtth'] = [2.0,5.0] 410 Data['LRazimuth'] = [-135,-45] 411 Data['outChannels'] = 2500 412 Data['outAzimuths'] = 1 413 Data['fullIntegrate'] = False 414 Data['setRings'] = False 415 Data['setDefault'] = False 416 Data['range'] = [(Imin,Imax),[Imin,Imax]] 417 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Image Controls'),Data) 418 self.PatternTree.SetItemPyData(Id,[Size,imagefile]) 419 self.PickId = Id 420 self.Image = Id 421 self.PatternTree.SelectItem(Id) #show last one 422 self.PatternTree.Expand(Id) 418 423 finally: 419 424 dlg.Destroy() … … 463 468 sub = self.PatternTree.AppendItem(parent=self.root,text='Controls') 464 469 self.PatternTree.SetItemPyData(sub,[0]) 465 466 470 467 471 class SumDialog(wx.Dialog): 468 472 def __init__(self,parent,title,text,type,data): … … 514 518 try: 515 519 self.data[id][0] = float(value) 520 self.FindWindowById(id).SetValue('%.3f'%(self.data[id][0])) 516 521 except ValueError: 517 522 if value and '-' not in value[0]: … … 650 655 if dlg.ShowModal() == wx.ID_OK: 651 656 imSize = 0 652 newImage = []653 657 result = dlg.GetData() 658 First = True 654 659 for i,item in enumerate(result[:-1]): 655 660 scale,name = item 656 661 data = DataList[i] 657 if scale: 662 if scale: 658 663 Comments.append("%10.3f %s" % (scale,' * '+name)) 659 size,image = data 664 size,imagefile = data 665 image = G2IO.GetImageData(imagefile,imageOnly=True) 666 if First: 667 newImage = np.zeros_like(image) 668 First = False 660 669 if imSize: 661 670 if imSize != size: … … 664 673 '\nFound: '+str(size)+'\nfor '+name) 665 674 return 666 newImage +=scale*image675 newImage = newImage+scale*image 667 676 else: 668 677 imSize = size 669 newImage = scale*image 678 newImage = newImage+scale*image 679 newImage = np.asfarray(newImage,dtype=np.float32) 680 print 'result dtype',newImage.dtype 670 681 outname = 'IMG '+result[-1] 671 682 Id = 0 … … 680 691 Id = self.PatternTree.AppendItem(parent=self.root,text=outname) 681 692 if Id: 682 self.PatternTree.SetItemPyData(Id,[imSize,newImage]) 683 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),Comments) 684 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Image Controls'),Data) 685 self.PatternTree.SelectItem(Id) 686 self.PatternTree.Expand(Id) 687 self.PickId = Id 688 self.Image = Id 693 dlg = wx.FileDialog(self, 'Choose sum image filename', '.', '', 694 'G2img files (*.G2img)|*.G2img', 695 wx.SAVE|wx.FD_OVERWRITE_PROMPT) 696 if self.dirname: dlg.SetDirectory(self.dirname) 697 if dlg.ShowModal() == wx.ID_OK: 698 self.dirname = dlg.GetDirectory() 699 newimagefile = dlg.GetPath() 700 G2IO.PutG2Image(newimagefile,newImage) 701 newImage = [] 702 self.PatternTree.SetItemPyData(Id,[imSize,newimagefile]) 703 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Comments'),Comments) 704 if self.imageDefault: 705 Data = copy.copy(self.imageDefault) 706 Data['showLines'] = True 707 Data['ring'] = [] 708 Data['rings'] = [] 709 Data['cutoff'] = 10 710 Data['pixLimit'] = 20 711 Data['ellipses'] = [] 712 Data['masks'] = [] 713 Data['calibrant'] = '' 714 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Image Controls'),Data) 715 self.PatternTree.SelectItem(Id) 716 self.PatternTree.Expand(Id) 717 self.PickId = Id 718 self.Image = Id 689 719 finally: 690 720 dlg.Destroy() -
trunk/GSASIIIO.py
r56 r62 400 400 elif ext in ['.sum','.avg']: 401 401 Comments,Data,Size,Image = GetGEsumData(imagefile) 402 elif ext == '.G2img': 403 return GetG2Image(imagefile) 402 404 if imageOnly: 403 405 return Image 404 406 else: 405 407 return Comments,Data,Size,Image 406 408 409 def PutG2Image(filename,image): 410 File = open(filename,'wb') 411 cPickle.dump(image,File,1) 412 File.close() 413 return 414 415 def GetG2Image(filename): 416 File = open(filename,'rb') 417 image = cPickle.load(File) 418 File.close() 419 return image 407 420 408 421 def GetGEsumData(filename,imageOnly=False): 409 422 import array as ar 410 print 'Read GE sum file: ',filename 423 if not imageOnly: 424 print 'Read GE sum file: ',filename 411 425 File = open(filename,'rb') 412 426 size = 2048 … … 438 452 import struct as st 439 453 import array as ar 440 print 'Read ADSC img file: ',filename 454 if not imageOnly: 455 print 'Read ADSC img file: ',filename 441 456 File = open(filename,'rb') 442 457 head = File.read(511) … … 492 507 return None,None,None,None 493 508 494 print 'Read Mar345 file: ',filename 509 if not imageOnly: 510 print 'Read Mar345 file: ',filename 495 511 File = open(filename,'rb') 496 512 head = File.read(4095) … … 530 546 image = pf.pack_f(len(raw),raw,size,image) 531 547 if imageOnly: 532 return image.T 548 return image.T #transpose to get it right way around 533 549 else: 534 550 return head,data,size,image.T … … 538 554 import struct as st 539 555 import array as ar 540 print 'Read APS PE-detector tiff file: ',filename 556 if not imageOnly: 557 print 'Read APS PE-detector tiff file: ',filename 541 558 File = open(filename,'Ur') 542 559 dataType = 5 … … 576 593 return head,data,size,image 577 594 578 579 595 def ProjFileOpen(self): 580 596 file = open(self.GSASprojectfile,'rb') … … 589 605 datum = data[0] 590 606 print 'load: ',datum[0] 591 if 'PWDR' in datum[0] and 'list' in str(type(datum[1][1][0])): #fix to convert old style list arrays to numpy arrays 607 608 #temporary fixes to old project files 609 #fix to convert old style list arrays to numpy arrays 610 if 'PWDR' in datum[0] and 'list' in str(type(datum[1][1][0])): 592 611 X = datum[1][1] 593 612 X = [np.array(X[0]),np.array(X[1]),np.array(X[2]),np.array(X[3]),np.array(X[4]),np.array(X[5])] 594 613 datum[1] = [datum[1][0],X] 595 614 print 'powder data converted to numpy arrays' 615 #temporary fix to insert 'PWDR' in front of powder names 596 616 if 'PKS' not in datum[0] and 'IMG' not in datum[0] and 'SNGL' not in datum[0]: 597 if datum[0] not in ['Notebook','Controls','Phases'] and 'PWDR' not in datum[0]: #temporary fix617 if datum[0] not in ['Notebook','Controls','Phases'] and 'PWDR' not in datum[0]: 598 618 datum[0] = 'PWDR '+datum[0] 619 print 'add PWDR to powder names' 620 #end of temporary fixes 621 599 622 Id = self.PatternTree.AppendItem(parent=self.root,text=datum[0]) 600 623 self.PatternTree.SetItemPyData(Id,datum[1]) 601 624 for datus in data[1:]: 602 625 print ' load: ',datus[0] 626 627 #temporary fix to add azimuthal angle to instrument parameters 603 628 if 'PWDR' in datum[0] and 'Instrument Parameters' in datus[0]: 604 629 if len(datus[1][0]) == 10 or len(datus[1][0]) == 12: … … 607 632 datus[1][2].append(0.0) 608 633 datus[1][3].append('Azimuth') 634 print 'add azimuth to instrument parameters' 635 #end of temporary fix 636 609 637 sub = self.PatternTree.AppendItem(Id,datus[0]) 610 638 self.PatternTree.SetItemPyData(sub,datus[1]) 639 640 #temporary fix to add Comments to powder data sets 611 641 if 'PWDR' in datum[0] and not G2gd.GetPatternTreeItemId(self,Id, 'Comments'): 612 642 print 'no comments - add comments' 613 643 sub = self.PatternTree.AppendItem(Id,'Comments') 614 644 self.PatternTree.SetItemPyData(sub,['no comments']) 645 #end of temporary fix 646 647 if 'IMG' in datum[0]: #retreive image default flag & data if set 648 Data = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,Id,'Image Controls')) 649 if Data['setDefault']: 650 self.imageDefault = Data 615 651 616 652 file.close() 653 654 #temporary fix to add Notebook & Controls to project 617 655 if not G2gd.GetPatternTreeItemId(self,self.root,'Notebook'): 618 656 sub = self.PatternTree.AppendItem(parent=self.root,text='Notebook') … … 620 658 sub = self.PatternTree.AppendItem(parent=self.root,text='Controls') 621 659 self.PatternTree.SetItemPyData(sub,[0]) 660 print 'add Notebook and Controls to project' 622 661 623 662 finally: … … 653 692 def powderFxyeSave(self,powderfile): 654 693 file = open(powderfile,'w') 694 prm = open(powderfile.strip('fxye')+'prm','w') #old style GSAS parm file 655 695 print 'save powder pattern to file: ',powderfile 656 696 wx.BeginBusyCursor() 697 Inst = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self, \ 698 self.PickId, 'Instrument Parameters'))[1] 699 if len(Inst) == 11: #single wavelength 700 lam1 = Inst[1] 701 lam2 = 0.0 702 GU,GV,GW = Inst[4:7] 703 LX,LY = Inst[7:9] 704 SL = HL = Inst[9]/2.0 705 else: #Ka1 & Ka2 706 lam1 = Inst[1] 707 lam2 = Inst[2] 708 GU,GV,GW = Inst[6:9] 709 LX,LY = Inst[9:11] 710 SL = HL = Inst[11]/2.0 711 prm.write( ' 123456789012345678901234567890123456789012345678901234567890 '+'\n') 712 prm.write( 'INS BANK 1 '+'\n') 713 prm.write( 'INS HTYPE PXCR '+'\n') 714 prm.write(('INS 1 ICONS%10.7f%10.7f 0.0000 0.990 0 0.500 '+'\n')%(lam1,lam2)) 715 prm.write( 'INS 1 IRAD 0 '+'\n') 716 prm.write( 'INS 1I HEAD '+'\n') 717 prm.write( 'INS 1I ITYP 0 0.0000 180.0000 1 '+'\n') 718 prm.write( 'INS 1PRCF1 3 8 0.00100 '+'\n') 719 prm.write(('INS 1PRCF11 %15.6g%15.6g%15.6g%15.6g '+'\n')%(GU,GV,GW,0.0)) 720 prm.write(('INS 1PRCF12 %15.6g%15.6g%15.6g%15.6g '+'\n')%(LX,LY,SL,HL)) 721 prm.close() 657 722 try: 658 723 x,y,w,yc,yb,yd = self.PatternTree.GetItemPyData(self.PickId)[1] 659 x = x*100. 724 file.write(powderfile+'\n') 725 file.write('BANK 1 %d %d CONS %.2f %.2f 0 0 FXYE\n'%(len(x),len(x),\ 726 100.*x[0],100.*(x[1]-x[0]))) 660 727 XYW = zip(x,y,w) 661 728 for X,Y,W in XYW: 662 file.write("%15.6g %15.6g %15.6g\n" % ( X,Y,W))729 file.write("%15.6g %15.6g %15.6g\n" % (100.*X,Y,W)) 663 730 file.close() 664 731 finally: -
trunk/GSASIIcomp.py
r56 r62 1166 1166 cycle = 0 1167 1167 while cycle < 5: 1168 dlg = wx.ProgressDialog("Generated reflections",tries[cycle]+" cell search for "+bravaisNames[ibrav],ncMax, \1168 dlg = wx.ProgressDialog("Generated reflections",tries[cycle]+" cell search for "+bravaisNames[ibrav],ncMax, 1169 1169 style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE|wx.PD_REMAINING_TIME|wx.PD_CAN_ABORT) 1170 1170 screenSize = wx.DisplaySize() … … 1587 1587 tiltSum += numZ*abs(Tilt) 1588 1588 cent = data['center'] 1589 print 'for ring # %2i dist %.3f rotate %6.2f tilt %6.2f Xcent %.3f Ycent %.3f Npts %d' \1590 %(i,dist,phi,Tilt,cent[0],cent[1],numZ) 1589 print ('for ring # %2i dist %.3f rotate %6.2f tilt %6.2f Xcent %.3f Ycent %.3f Npts %d' 1590 %(i,dist,phi,Tilt,cent[0],cent[1],numZ)) 1591 1591 data['ellipses'].append(copy.deepcopy(ellipse+('r',))) 1592 1592 G2plt.PlotImage(self) … … 1636 1636 1637 1637 def ImageIntegrate(self,data): 1638 import matplotlib as mpl 1639 import numpy.ma as ma 1638 1640 print 'image integrate' 1639 1641 pixelSize = data['pixelSize'] … … 1647 1649 numAzms = data['outAzimuths'] 1648 1650 numChans = data['outChannels'] 1649 outGrid = np.zeros(shape=(numAzms,numChans))1650 outNum = np.zeros(shape=(numAzms,numChans))1651 1651 imageN = len(self.ImageZ) 1652 1652 t0 = time.time() 1653 1653 print 'Create ',imageN,' X ',imageN,' 2-theta,azimuth map' 1654 1654 tax,tay = np.mgrid[0:imageN,0:imageN] 1655 tax = np.asfarray(tax) 1656 tay = np.asfarray(tay) 1657 tax *= scalex 1658 tay *= scaley 1655 tax = np.asfarray(tax*scalex,dtype=np.float32) 1656 tay = np.asfarray(tay*scaley,dtype=np.float32) 1659 1657 t1 = time.time() 1660 1658 print "Elapsed time:","%8.3f"%(t1-t0), "s" 1661 1659 print 'Fill map with 2-theta/azimuth values' 1662 self.TA = GetTthAzm(tay,tax,data) #2-theta & azimuth arrays 1663 self.TA = np.reshape(self.TA,(2,imageN,imageN)) 1664 self.TA = np.dstack((self.TA[1],self.TA[0])) #azimuth, 2-theta 1660 TA = GetTthAzm(tay,tax,data) #2-theta & azimuth arrays 1661 del tax,tay 1662 TA = np.reshape(TA,(2,imageN,imageN)) 1663 TA = np.dstack((ma.getdata(TA[1]),ma.getdata(TA[0]))) #azimuth, 2-theta 1665 1664 t2 = time.time() 1665 tax,tay = np.dsplit(TA,2) #azimuth, 2-theta 1666 tax = ma.masked_outside(tax.flatten(),LRazm[0],LRazm[1]) 1667 tay = ma.masked_outside(tay.flatten(),LUtth[0],LUtth[1]) 1668 tam = ma.getmask(tax)+ma.getmask(tay) 1669 taz = ma.masked_where(tam,self.ImageZ.flatten()) 1670 G2plt.PlotTRImage(self,np.reshape(tax,(imageN,imageN)), 1671 np.reshape(tay,(imageN,imageN)),np.reshape(taz,(imageN,imageN)),newPlot=True) 1672 del TA 1666 1673 print "Elapsed time:","%8.3f"%(t2-t1), "s" 1667 # G2plt.PlotTRImage(self,newPlot=True)1668 1674 print 'Form 1-D histograms for ',numAzms,' azimuthal angles' 1669 1675 print 'Integration limits:',LUtth,LRazm 1670 tax,tay = np.dsplit(self.TA,2) #azimuth, 2-theta, intensity 1671 NST = np.histogram2d(tax.flatten(),tay.flatten(),normed=False, \ 1672 bins=(numAzms,numChans),range=[LRazm,LUtth]) 1673 HST = np.histogram2d(tax.flatten(),tay.flatten(),normed=False, \ 1674 bins=(numAzms,numChans),weights=self.ImageZ.flatten(),range=[LRazm,LUtth]) 1676 NST = np.histogram2d(tax,tay,normed=False,bins=(numAzms,numChans),range=[LRazm,LUtth]) 1677 HST = np.histogram2d(tax,tay,normed=False,bins=(numAzms,numChans),range=[LRazm,LUtth],weights=taz) 1678 del tax,tay,taz 1675 1679 t3 = time.time() 1676 1680 print "Elapsed time:","%8.3f"%(t3-t2), "s" 1677 1681 self.Integrate = [HST[0]/NST[0],HST[1],HST[2]] 1682 del NST,HST 1678 1683 G2plt.PlotIntegration(self,newPlot=True) 1679 1684 -
trunk/GSASIIgrid.py
r55 r62 1365 1365 cutOff = wx.TextCtrl(parent=self.dataDisplay,value=("%.1f" % (data['cutoff'])), 1366 1366 style=wx.TE_PROCESS_ENTER) 1367 cutOff.Bind(wx.EVT_TEXT _ENTER,OnCutOff)1367 cutOff.Bind(wx.EVT_TEXT,OnCutOff) 1368 1368 comboSizer.Add(cutOff,0,wx.ALIGN_CENTER_VERTICAL) 1369 1369 … … 1411 1411 waveSel = wx.TextCtrl(parent=self.dataDisplay,value=("%6.5f" % (data['wavelength'])), 1412 1412 style=wx.TE_PROCESS_ENTER) 1413 waveSel.Bind(wx.EVT_TEXT _ENTER,OnWavelength)1413 waveSel.Bind(wx.EVT_TEXT,OnWavelength) 1414 1414 dataSizer.Add(waveSel,0,wx.ALIGN_CENTER_VERTICAL) 1415 1415 … … 1437 1437 littleSizer = wx.BoxSizer(wx.HORIZONTAL) 1438 1438 outChan = wx.TextCtrl(parent=self.dataDisplay,value=str(data['outChannels']),style=wx.TE_PROCESS_ENTER) 1439 outChan.Bind(wx.EVT_TEXT _ENTER,OnNumOutChans)1439 outChan.Bind(wx.EVT_TEXT,OnNumOutChans) 1440 1440 littleSizer.Add(outChan,0,wx.ALIGN_CENTER_VERTICAL) 1441 1441 outAzim = wx.TextCtrl(parent=self.dataDisplay,value=str(data['outAzimuths']),style=wx.TE_PROCESS_ENTER) 1442 outAzim.Bind(wx.EVT_TEXT _ENTER,OnNumOutAzms)1442 outAzim.Bind(wx.EVT_TEXT,OnNumOutAzms) 1443 1443 littleSizer.Add(outAzim,0,wx.ALIGN_CENTER_VERTICAL) 1444 1444 dataSizer.Add(littleSizer,0,) … … 1861 1861 self.dataFrame.Raise() 1862 1862 self.PickId = 0 1863 self.PatternId = 01864 1863 parentID = self.root 1864 self.ExportPattern.Enable(False) 1865 1865 if item != self.root: 1866 1866 parentID = self.PatternTree.GetItemParent(item) 1867 1867 if self.PatternTree.GetItemParent(item) == self.root: 1868 1868 self.PatternId = item 1869 self.ExportPattern.Enable(True)1870 1869 self.PickId = item 1871 1870 if self.PatternTree.GetItemText(item) == 'Notebook': … … 1886 1885 G2plt.PlotPowderLines(self) 1887 1886 elif 'PWDR' in self.PatternTree.GetItemText(item): 1887 self.ExportPattern.Enable(True) 1888 1888 G2plt.PlotPatterns(self,newPlot=True) 1889 1889 elif 'SXTL' in self.PatternTree.GetItemText(item): -
trunk/GSASIIplot.py
r56 r62 46 46 self.SetSizer(sizer) 47 47 self.status = parent.CreateStatusBar() 48 # self.Bind(wx.aui.EVT_AUI_PAGE_CHANGED, self.OnPageChanged) 48 49 49 50 self.plotList = [] … … 56 57 57 58 return page.figure 59 60 def OnPageChanged(self,event): 61 print 'page changed' 58 62 59 63 def PlotSngl(self,newPlot=False): … … 248 252 if xpos: #avoid out of frame mouse position 249 253 ypos = event.ydata 250 wave = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self, \251 self.PatternId, 'Instrument Parameters'))[0][1]252 dsp = 0.0253 if abs(xpos) > 0.:254 dsp = wave/(2.*sind(abs(xpos)/2.0))255 254 Page.canvas.SetCursor(wx.CROSS_CURSOR) 256 self.G2plotNB.status.SetFields(['2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos),]) 257 if self.itemPicked: 258 Page.canvas.SetToolTipString('%9.3f'%(xpos)) 255 try: 256 wave = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self, \ 257 self.PatternId, 'Instrument Parameters'))[0][1] 258 dsp = 0.0 259 if abs(xpos) > 0.: #avoid possible singularity at beam center 260 dsp = wave/(2.*sind(abs(xpos)/2.0)) 261 self.G2plotNB.status.SetFields(['2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos),]) 262 if self.itemPicked: 263 Page.canvas.SetToolTipString('%9.3f'%(xpos)) 264 except TypeError: 265 self.G2plotNB.status.SetFields(['Select PWDR powder pattern first',]) 266 259 267 260 268 def OnRelease(event): … … 656 664 Plot.set_title(self.PatternTree.GetItemText(self.Image)[4:]) 657 665 size,imagefile = self.PatternTree.GetItemPyData(self.Image) 658 self.ImageZ = G2IO.GetImageData(imagefile,True) 666 if imagefile != self.oldImagefile: 667 self.ImageZ = G2IO.GetImageData(imagefile,imageOnly=True) 668 self.oldImagefile = imagefile 659 669 Data = self.PatternTree.GetItemPyData( \ 660 670 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls')) … … 731 741 Page.canvas.draw() 732 742 733 def PlotTRImage(self, newPlot=False):743 def PlotTRImage(self,tax,tay,taz,newPlot=False): 734 744 735 745 def OnMotion(event): … … 741 751 self.G2plotNB.status.SetFields(\ 742 752 ['Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm),]) 743 744 def OnPick(event): 745 if self.PatternTree.GetItemText(self.PickId) != 'Image Controls': 746 return 747 if self.itemPicked is not None: return 748 pick = event.artist 749 self.itemPicked = pick 750 751 def OnRelease(event): 752 if self.PatternTree.GetItemText(self.PickId) != 'Image Controls': 753 return 754 Data = self.PatternTree.GetItemPyData(self.PickId) 755 if self.itemPicked: 756 xpos = event.xdata 757 if xpos: #avoid out of frame mouse position 758 ypos = event.ydata 759 if 'Line2D' in str(self.itemPicked): 760 if 'line0' in str(self.itemPicked): 761 Data['IOtth'][0] = ypos 762 elif 'line1' in str(self.itemPicked): 763 Data['IOtth'][1] = ypos 764 elif 'line2' in str(self.itemPicked) and not Data['fullIntegrate']: 765 Data['LRazimuth'][0] = int(xpos) 766 elif 'line3' in str(self.itemPicked) and not Data['fullIntegrate']: 767 Data['LRazimuth'][1] = int(xpos) 768 769 if Data['LRazimuth'][1] < Data['LRazimuth'][0]: 770 Data['LRazimuth'][1] += 360 771 if Data['IOtth'][0] > Data['IOtth'][1]: 772 Data['IOtth'] = G2cmp.SwapXY(Data['IOtth'][0],Data['IOtth'][1]) 773 774 self.InnerTth.SetValue("%8.2f" % (Data['IOtth'][0])) 775 self.OuterTth.SetValue("%8.2f" % (Data['IOtth'][1])) 776 self.Lazim.SetValue("%6d" % (Data['LRazimuth'][0])) 777 self.Razim.SetValue("%6d" % (Data['LRazimuth'][1])) 778 else: 779 print event.xdata,event.ydata,event.button 780 PlotTRImage(self) 781 self.itemPicked = None 782 753 783 754 try: 784 755 plotNum = self.G2plotNB.plotList.index('2D Transformed Powder Image') … … 795 766 Page = self.G2plotNB.nb.GetPage(plotNum) 796 767 Page.canvas.mpl_connect('motion_notify_event', OnMotion) 797 Page.canvas.mpl_connect('pick_event', OnPick)798 Page.canvas.mpl_connect('button_release_event', OnRelease)799 768 Page.views = False 800 769 view = False … … 803 772 Data = self.PatternTree.GetItemPyData( \ 804 773 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls')) 805 size,imagefile = self.PatternTree.GetItemPyData(self.Image)806 self.ImageZ = G2IO.GetImageData(imagefile,True)807 image = self.ImageZ808 Iz = len(image)809 774 Imin,Imax = Data['range'][1] 810 775 step = (Imax-Imin)/5. … … 813 778 Plot.set_xlabel('azimuth',fontsize=12) 814 779 Plot.set_ylabel('2-theta',fontsize=12) 815 Plot.contour( self.TA[:,:,0],self.TA[:,:,1],image,V,cmap=acolor)780 Plot.contour(tax,tay,taz,V,cmap=acolor) 816 781 if Data['showLines']: 817 782 IOtth = Data['IOtth'] … … 847 812 def PlotExposedImage(self,newPlot=False): 848 813 plotNo = self.G2plotNB.nb.GetSelection() 849 if self.G2plotNB.nb.GetPageText(plotNo) == '2D Transformed Powder Image': 850 PlotTRImage(self,newPlot) 851 elif self.G2plotNB.nb.GetPageText(plotNo) == '2D Powder Image': 814 if self.G2plotNB.nb.GetPageText(plotNo) == '2D Powder Image': 852 815 PlotImage(self,newPlot) 853 816 elif self.G2plotNB.nb.GetPageText(plotNo) == '2D Integration':
Note: See TracChangeset
for help on using the changeset viewer.