Changeset 240
- Timestamp:
- Jan 20, 2011 3:56:37 PM (11 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/GSASII.py
r239 r240 407 407 self.CheckNotebook() 408 408 dlg = wx.FileDialog(self, 'Choose image files', '.', '',\ 409 'MAR345 (*.mar3450;*.mar2300)|*.mar3450;*.mar2300|ADSC Image (*.img)\ 410 |*.img|Detector tif (*.tif;*.tiff)|*.tif;*.tiff|GE Image sum (*.sum)\ 411 |*.sum|GE Image avg (*.avg)\ 412 |*.avg|Any image file (*.mar3450;*.mar2300;*.img;*.tif;*.tiff;*.sum)\ 413 |*.mar3450;*.mar2300;*.img;*.tif;*.tiff;*.sum|All files (*.*)|*.*', 409 'Any image file (*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img)\ 410 |*.tif;*.tiff;*.mar*;*.avg;*.sum;*.img|\ 411 Any detector tif (*.tif;*.tiff)|*.tif;*.tiff|\ 412 MAR file (*.mar*)|*.mar*|\ 413 GE Image (*.avg;*.sum)|*.avg;*.sum|\ 414 ADSC Image (*.img)|*.img|\ 415 All files (*.*)|*.*', 414 416 wx.OPEN | wx.MULTIPLE) 415 417 if self.dirname: … … 421 423 imagefiles.sort() 422 424 for imagefile in imagefiles: 423 Comments,Data, Size,Image = G2IO.GetImageData(self,imagefile)425 Comments,Data,Npix,Image = G2IO.GetImageData(self,imagefile) 424 426 if Comments: 425 427 Id = self.PatternTree.AppendItem(parent=self.root,text='IMG '+ospath.basename(imagefile)) … … 463 465 Masks = {'Points':[],'Rings':[],'Arcs':[],'Polygons':[],'Thresholds':[(Imin,Imax),[Imin,Imax]]} 464 466 self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='Masks'),Masks) 465 self.PatternTree.SetItemPyData(Id,[ Size,imagefile])467 self.PatternTree.SetItemPyData(Id,[Npix,imagefile]) 466 468 self.PickId = Id 467 469 self.Image = Id … … 766 768 Found = True 767 769 Comments.append("%10.3f %s" % (scale,' * '+name)) 768 size,imagefile = data770 Npix,imagefile = data 769 771 image = G2IO.GetImageData(self,imagefile,imageOnly=True) 770 772 if First: … … 772 774 First = False 773 775 if imSize: 774 if imSize != size:776 if imSize != Npix: 775 777 self.ErrorDialog('Image size error','Images to be summed must be same size'+ \ 776 778 '\nExpected:'+str(imSize)+ \ 777 '\nFound: '+str( size)+'\nfor '+name)779 '\nFound: '+str(Npix)+'\nfor '+name) 778 780 return 779 781 newImage = newImage+scale*image 780 782 else: 781 imSize = size783 imSize = Npix 782 784 newImage = newImage+scale*image 783 785 del(image) -
trunk/GSASIIIO.py
r239 r240 435 435 Comments = [] 436 436 if ext == '.tif': 437 Comments,Data, Size,Image = GetTifData(imagefile)437 Comments,Data,Npix,Image = GetTifData(imagefile) 438 438 elif ext == '.img': 439 Comments,Data, Size,Image = GetImgData(imagefile)439 Comments,Data,Npix,Image = GetImgData(imagefile) 440 440 Image[0][0] = 0 441 441 elif ext == '.mar3450' or ext == '.mar2300': 442 Comments,Data, Size,Image = GetMAR345Data(imagefile)442 Comments,Data,Npix,Image = GetMAR345Data(imagefile) 443 443 elif ext in ['.sum','.avg','']: 444 Comments,Data, Size,Image = GetGEsumData(imagefile)444 Comments,Data,Npix,Image = GetGEsumData(imagefile) 445 445 elif ext == '.G2img': 446 446 return GetG2Image(imagefile) … … 448 448 return Image 449 449 else: 450 return Comments,Data, Size,Image450 return Comments,Data,Npix,Image 451 451 452 452 def PutG2Image(filename,image): … … 467 467 print 'Read GE sum file: ',filename 468 468 File = open(filename,'rb') 469 size = 2048470 row = 0471 pos = 0472 469 if '.sum' in filename: 473 470 head = ['GE detector sum data from APS 1-ID',] 474 if '.avg' in filename: 471 sizexy = [2048,2047] 472 elif '.avg' in filename: 475 473 head = ['GE detector avg data from APS 1-ID',] 474 sizexy = [2048,2048] 476 475 else: 477 476 head = ['GE detector raw data from APS 1-ID',] 477 sizexy = [2048,2048] 478 478 pos = 8192 479 image = np.zeros(shape=(size,size),dtype=np.int32)480 while row < size:481 479 File.seek(pos) 482 if '.sum' in filename: 483 line = ar.array('f',File.read(4*size)) 484 pos += 4*size 485 elif '.avg' in filename: 486 line = ar.array('H',File.read(2*size)) 487 pos += 2*size 488 else: 489 line = ar.array('H',File.read(2*size)) 490 pos += 2*size 491 image[row] = np.asarray(line) 492 row += 1 493 data = {'pixelSize':(200,200),'wavelength':0.15,'distance':250.0,'center':[204.8,204.8],'size':[size,size]} 480 Npix = sizexy[0]*sizexy[1] 481 if '.sum' in filename: 482 image = np.array(ar.array('f',File.read(4*Npix)),dtype=np.int32) 483 elif '.avg' in filename: 484 image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 485 else: 486 image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 487 image = np.reshape(image,(sizexy[1],sizexy[0])) 488 data = {'pixelSize':(200,200),'wavelength':0.15,'distance':250.0,'center':[204.8,204.8],'size':sizexy} 494 489 File.close() 495 490 if imageOnly: 496 491 return image 497 492 else: 498 return head,data, size,image493 return head,data,Npix,image 499 494 500 495 def GetImgData(filename,imageOnly=False): … … 513 508 if 'SIZE1' in line: 514 509 size = int(line.split('=')[1]) 510 Npix = size*size 515 511 elif 'WAVELENGTH' in line: 516 512 wave = float(line.split('=')[1]) … … 531 527 row = 0 532 528 pos = 512 533 image = np.zeros(shape=(size,size),dtype=np.int32) 534 while row < size: 535 File.seek(pos) 536 line = ar.array('H',File.read(2*size)) 537 image[row] = np.asarray(line) 538 row += 1 539 pos += 2*size 529 File.seek(pos) 530 image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 531 image = np.reshape(image,(sizexy[1],sizexy[0])) 532 # image = np.zeros(shape=(size,size),dtype=np.int32) 533 # while row < size: 534 # File.seek(pos) 535 # line = ar.array('H',File.read(2*size)) 536 # image[row] = np.asarray(line) 537 # row += 1 538 # pos += 2*size 540 539 File.close() 541 540 if imageOnly: 542 541 return image 543 542 else: 544 return lines[1:-2],data, size,image543 return lines[1:-2],data,Npix,image 545 544 546 545 def GetMAR345Data(filename,imageOnly=False): … … 582 581 items = line.split() 583 582 size = int(items[1]) 583 Npix = size*size 584 584 pos = 4096 585 585 data['size'] = [size,size] … … 598 598 return image.T #transpose to get it right way around 599 599 else: 600 return head,data, size,image.T601 600 return head,data,Npix,image.T 601 602 602 def GetTifData(filename,imageOnly=False): 603 # only works for APS Perkin-Elmer or MAR detector data files in "TIFF" format that are readable by Fit2D604 603 import struct as st 605 604 import array as ar … … 616 615 except IOError: 617 616 print 'no metadata file found - will try to read file anyway' 618 head = 'no metadata file found'617 head = ['no metadata file found',] 619 618 tag = File.read(3) 620 619 if tag != 'II*': … … 658 657 if not imageOnly: 659 658 print 'Read APS PE-detector tiff file: ',filename 659 elif Ityp == 3072: 660 tifType = 'Sect 5' 661 sizexy = [finalSize,finalSize] 662 pixy = [158,158] 663 pos = 512 664 if not imageOnly: 665 print 'Read Sect 5 tiff file: ',filename 660 666 elif Ityp == 3328: 661 667 tifType = 'MAR' … … 668 674 lines = 'unknown tif type' 669 675 return lines,0,0 670 image = np.zeros(shape=(sizexy[1],sizexy[0]),dtype=np.int32) 671 row = 0 672 while row < sizexy[1]: 673 File.seek(pos) 674 if 'PE' in tifType or 'Pilatus' in tifType: 675 if dataType == 5: 676 line = ar.array('f',File.read(4*sizexy[0])) 677 else: 678 line = ar.array('L',File.read(4*sizexy[0])) 679 pos += 4*sizexy[0] 680 elif 'MAR' in tifType or 'Gold' in tifType: 681 line = ar.array('H',File.read(2*sizexy[0])) 682 pos += 2*sizexy[0] 683 image[row] = np.asarray(line) 684 row += 1 676 Npix = sizexy[0]*sizexy[1] 677 File.seek(pos) 678 if 'PE' in tifType or 'Pilatus' in tifType: 679 if dataType == 5: 680 image = np.array(ar.array('f',File.read(4*Npix)),dtype=np.int32) 681 else: 682 image = ar.array('L',File.read(4*Npix)) 683 image = np.array(np.asarray(image),dtype=np.int32) 684 elif 'MAR' in tifType or 'Gold' in tifType or 'Sect 5' in tifType: 685 image = np.array(ar.array('H',File.read(2*Npix)),dtype=np.int32) 686 image = np.reshape(image,(sizexy[1],sizexy[0])) 685 687 center = [pixy[0]*sizexy[0]/2000,pixy[1]*sizexy[1]/2000] 686 688 data = {'pixelSize':pixy,'wavelength':0.10,'distance':100.0,'center':center,'size':sizexy} … … 689 691 return image 690 692 else: 691 return head,data, sizexy[0],image693 return head,data,Npix,image 692 694 693 695 def ProjFileOpen(self): -
trunk/GSASIIimgGUI.py
r239 r240 234 234 if ifintegrate: 235 235 id = G2gd.GetPatternTreeItemId(self, self.root, name) 236 size,imagefile = self.PatternTree.GetItemPyData(id)236 Npix,imagefile = self.PatternTree.GetItemPyData(id) 237 237 print imagefile 238 238 image = G2IO.GetImageData(self,imagefile,True) … … 292 292 if ifcopy: 293 293 oldData = self.PatternTree.GetItemPyData(G2gd.GetPatternTreeItemId(self,id, 'Image Controls')) 294 Data['range'] = oldData['range'] 294 Data['range'] = oldData['range'] 295 Data['size'] = oldData['size'] 295 296 Data['ring'] = [] 296 297 Data['rings'] = [] -
trunk/GSASIIplot.py
r239 r240 832 832 import numpy.ma as ma 833 833 Dsp = lambda tth,wave: wave/(2.*sind(tth/2.)) 834 global Data,Masks 835 Data = self.PatternTree.GetItemPyData( 836 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls')) 837 Masks = self.PatternTree.GetItemPyData( 838 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks')) 834 839 835 840 def OnImMotion(event): 836 Data = self.PatternTree.GetItemPyData(837 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))838 841 Page.canvas.SetToolTipString('') 839 842 sizexy = Data['size'] … … 843 846 pixelSize = Data['pixelSize'] 844 847 scalex = 1000./pixelSize[0] 845 scaley = 1000./pixelSize[1] 848 scaley = 1000./pixelSize[1] 846 849 if item and self.PatternTree.GetItemText(self.PickId) == 'Image Controls': 847 850 if 'Text' in str(item): … … 874 877 875 878 def OnImPlotKeyPress(event): 876 Data = self.PatternTree.GetItemPyData(877 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))878 Masks = self.PatternTree.GetItemPyData(879 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks'))880 879 if self.PatternTree.GetItemText(self.PickId) == 'Masks': 881 880 Xpos = event.xdata … … 915 914 return 916 915 if self.setPoly: 917 Masks = self.PatternTree.GetItemPyData(918 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks'))919 916 polygon = Masks['Polygons'][-1] 920 917 xpos,ypos = event.mouseevent.xdata,event.mouseevent.ydata … … 938 935 if PickName not in ['Image Controls','Masks']: 939 936 return 940 Data = self.PatternTree.GetItemPyData(941 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))942 Masks = self.PatternTree.GetItemPyData(943 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks'))944 937 pixelSize = Data['pixelSize'] 945 938 scalex = 1000./pixelSize[0] … … 979 972 itemPicked = str(self.itemPicked) 980 973 if 'Line2D' in itemPicked and PickName == 'Image Controls': 981 print int(itemPicked.split('_line')[1].strip(')'))982 974 if 'line1' in itemPicked: 983 975 Data['IOtth'][0] = tth … … 1073 1065 self.ImageZ = G2IO.GetImageData(self,imagefile,imageOnly=True) 1074 1066 self.oldImagefile = imagefile 1075 Data = self.PatternTree.GetItemPyData(1076 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))1077 Masks = self.PatternTree.GetItemPyData(1078 G2gd.GetPatternTreeItemId(self,self.Image, 'Masks'))1079 1067 1080 1068 imScale = 1 … … 1083 1071 sizexy = Data['size'] 1084 1072 pixelSize = Data['pixelSize'] 1085 # print sizexy,pixelSize,len(self.ImageZ),len(self.ImageZ[0])1086 1073 scalex = 1000./pixelSize[0] 1087 1074 scaley = 1000./pixelSize[1] 1088 1075 Xmax = sizexy[0]*pixelSize[0]/1000. 1089 1076 Ymax = sizexy[1]*pixelSize[1]/1000. 1090 xlim = ( -0.5,Xmax-.5)1091 ylim = (Ymax -.5,-0.5,)1077 xlim = (0,Xmax) 1078 ylim = (Ymax,0) 1092 1079 Imin,Imax = Data['range'][1] 1093 1080 acolor = mpl.cm.get_cmap(Data['color']) … … 1107 1094 interpolation='nearest',vmin=0,vmax=2,extent=[0,Xmax,Xmax,0]) 1108 1095 Img = Plot.imshow(A,aspect='equal',cmap=acolor, 1109 interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax, Xmax,0])1096 interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Ymax,0]) 1110 1097 if self.setPoly: 1111 1098 Img.set_picker(True) -
trunk/ImageCalibrants.py
r239 r240 2 2 #calibrations. Each entry consists of: 3 3 # 'name':(Bravais no,(a,b,c,alpha,beta,gamma),no. lines skipped,(dmin,pixLimit,cutOff) 4 #Useful Bravais nos.: F-cubic=0,I-cubic=1,P-cubic=2,R3/m(hex)=3, P6=4 4 #Useful Bravais nos.: F-cubic=0,I-cubic=1,P-cubic=2,R3/m(hex)=3, P6=4, P4mmm=6 5 5 Calibrants={ 6 6 '':(0,(0,0,0,0,0,0),0,(0,0,0)), … … 15 15 'NaCl @ 298K':(0,(5.6402,5.6402,5.6402,90,90,90),0,(0.5,20,10)), 16 16 'CeO2 SRM674b skip 8':(0,(5.411651,5.411651,5.411651,90,90,90),8,(0.5,2,1)), 17 'Ag behenate':(6,(1.0,1.0,58.380,90,90,90),0,(7.0,5,1)), 18 'Spun Si grating':(6,(1.0,1.0,2777.78,90,90,90),2,(200.,5,1)) 17 19 }
Note: See TracChangeset
for help on using the changeset viewer.