Changeset 2095
- Timestamp:
- Dec 16, 2015 3:20:26 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/imports/G2img_HDF5.py
r2087 r2095 16 16 ''' 17 17 18 import numpy as np18 import h5py 19 19 import GSASIIIO as G2IO 20 20 import GSASIIpath 21 21 GSASIIpath.SetVersionNumber("$Revision: $") 22 22 23 class H DF5_Reader(G2IO.ImportImage):23 class Hdf5_Reader(G2IO.ImportImage): 24 24 '''Routine to read a HD5 image, typically from APS Sector 6. 25 25 B. Frosik/SDM. Initial version. 26 26 Refactored. 27 27 ''' 28 28 dsetlist = [] 29 buffer = {} 30 init = False 29 31 30 32 def __init__(self): 31 # check if HDF5 library is present, if not importer cannot be used 32 try: 33 import h5py 34 except: 35 self.UseReader = False 36 print 'HDF5 Reader skipped because h5py library not installed' 33 print 'start' 37 34 super(self.__class__,self).__init__( # fancy way to self-reference 38 35 extensionlist=('.hdf5','.hd5','.h5','.hdf'), … … 43 40 44 41 def ContentsValidator(self, filepointer): 45 '''test by using the HDF5 open 46 ''' 47 import h5py 42 '''no test at this time 43 ''' 48 44 try: 49 45 # the following does not work, filepointer is not a filename … … 57 53 '''Read using HDF5 file reader, :func:`ReadData` 58 54 ''' 59 import h5py60 55 imagenum = kwarg.get('blocknum') 61 if imagenum is None: imagenum = 1 62 f = None 63 try: 64 f = h5py.File(filename, 'r') 65 #print f.keys() 66 self.visit(f) 67 self.Comments,self.Data,self.Npix,self.Image,more = self.read_set(f,imagenum=imagenum) 68 self.LoadImage(ParentFrame,filename,imagenum) 69 self.repeatcount = imagenum 70 self.repeat = more 71 print('Read image #'+str(imagenum)+' from file '+filename) 72 return True 73 except IOError: 74 print 'cannot open file ', filename 56 #self.buffer = kwarg.get('buffer') 57 58 if self.init is False: 59 self.init = True 60 self.readDataset(filename) 61 62 len = self.buffer['len'] 63 if len is 1: 64 image = self.buffer['image'] 65 else: 66 images = self.buffer['image'] 67 image = images[imagenum-1] 68 69 self.Comments,self.Data,self.Npix,self.Image = self.read_set(image,imagenum=imagenum) 70 if self.Npix == 0 or not self.Comments: 75 71 return False 76 finally: 77 if f is not None: 78 f.close() 79 80 def visit(self, f): 81 import h5py 72 self.LoadImage(ParentFrame,filename,imagenum) 73 self.repeatcount = imagenum 74 self.repeat = imagenum < len 75 #print('Read image #'+str(imagenum)+' from file '+filename) 76 return True 77 78 def readDataset(self,filename): 79 imagenum = 1 80 try: 81 f = h5py.File(filename, 'r') 82 self.visit(f, imagenum) 83 except IOError: 84 print 'cannot open file ', filename 85 return False 86 finally: 87 if f is not None: 88 f.close() 89 90 91 def visit(self, f, imagenum): 92 #GSASIIpath.IPyBreak() 93 print 'visiting' 82 94 def func(name, dset): 83 95 datakeyword = 'data' … … 88 100 index = len(dset.name)-len(datakeyword) 89 101 if index == lastindex: 90 self.image = np.array(f[dset.name],dtype=np.int32) 102 if self.buffer is not None: 103 if len(dset.shape) > 2: 104 image = dset[0,...] 105 self.buffer['image'] = dset[0,...] 106 self.buffer['len'] = image.shape[0] 107 else: 108 self.buffer['image'] = dset[()] 109 self.buffer['len'] = 1 110 self.buffer['name'] = dset.name 111 #GSASIIpath.IPyBreak() 91 112 f.visititems(func) 92 113 93 def read_set(self, f,imagenum=1):94 more = False114 def read_set(self,image,imagenum=1): 115 #more = False 95 116 head = ['raw data'] 96 #if multiple frames the array size is 1 x number_frames x 2048 x 204897 num_dim = len(self.image.shape)98 #GSASIIpath.IPyBreak()99 if num_dim > 2:100 image = self.image[0,imagenum-1]101 more = self.image.shape[1] > imagenum102 else:103 image = self.image104 117 x_dim = image.shape[0] 105 118 y_dim = image.shape[1] … … 107 120 Npix = sizexy[0]*sizexy[1] 108 121 data = {'pixelSize':[200,200],'wavelength':0.15,'distance':250.0,'center':[204.8,204.8],'size':sizexy} 109 return head,data,Npix,image ,more122 return head,data,Npix,image
Note: See TracChangeset
for help on using the changeset viewer.