def make_fid(name, mode, userblock_size, fapl, fcpl=None): """ Get a new FileID by opening or creating a file. Also validates mode argument.""" if userblock_size is not None: if mode in ("r", "r+"): raise ValueError("User block may only be specified " "when creating a file") try: userblock_size = int(userblock_size) except (TypeError, ValueError): raise ValueError("User block size must be an integer") if fcpl is None: fcpl = h5p.create(h5p.FILE_CREATE) fcpl.set_userblock(userblock_size) if mode == "r": fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl) elif mode == "r+": fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) elif mode == "w-": fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) elif mode == "w": fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl) elif mode == "a": # Open in append mode (read/write). # If that fails, create a new file only if it won't clobber an # existing one (ACC_EXCL) try: fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) except IOError: fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) elif mode is None: # Try to open in append mode (read/write). # If that fails, try readonly, and finally create a new file only # if it won't clobber an existing file (ACC_EXCL). try: fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) except IOError: try: fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl) except IOError: fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) else: raise ValueError("Invalid mode; must be one of r, r+, w, w-, a") try: if userblock_size is not None: existing_fcpl = fid.get_create_plist() if existing_fcpl.get_userblock() != userblock_size: raise ValueError( "Requested userblock size (%d) does not match that of existing file (%d)" % (userblock_size, existing_fcpl.get_userblock()) ) except: fid.close() raise return fid
def make_fid(name, mode, userblock_size, fapl, fcpl=None): """ Get a new FileID by opening or creating a file. Also validates mode argument.""" if userblock_size is not None: if mode in ('r', 'r+'): raise ValueError("User block may only be specified " "when creating a file") try: userblock_size = int(userblock_size) except (TypeError, ValueError): raise ValueError("User block size must be an integer") if fcpl is None: fcpl = h5p.create(h5p.FILE_CREATE) fcpl.set_userblock(userblock_size) if mode == 'r': fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl) elif mode == 'r+': fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) elif mode == 'w-': fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) elif mode == 'w': fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl) elif mode == 'a': # Open in append mode (read/write). # If that fails, create a new file only if it won't clobber an # existing one (ACC_EXCL) try: fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) except IOError: fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) elif mode is None: # Try to open in append mode (read/write). # If that fails, try readonly, and finally create a new file only # if it won't clobber an existing file (ACC_EXCL). try: fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) except IOError: try: fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl) except IOError: fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) else: raise ValueError("Invalid mode; must be one of r, r+, w, w-, a") try: if userblock_size is not None: existing_fcpl = fid.get_create_plist() if existing_fcpl.get_userblock() != userblock_size: raise ValueError( "Requested userblock size (%d) does not match that of existing file (%d)" % (userblock_size, existing_fcpl.get_userblock())) except: fid.close() raise return fid
def main(): a = DetPulseCoord() fileid = h5f.create(b"test.h5") x = [1, 3, 3] y = [1., 3., 3, 4., 5, 3., 33.] x = ones((100, 3), dtype=int32) y = ones((100, 7), dtype=float32) z = ones((100, 2), dtype=float32) c = [(x[i], y[i], z[i]) for i in range(100)] data = {a.names[0]: x, a.names[1]: y} dspaceid = h5s.create_simple((1, ), (h5s.UNLIMITED, )) # dset = h5d.create(fileid, a.name, a.type, dspaceid) # dset.write() file = File("test.h5") numpytype = dtype([("coord", int32, (3, )), ("pulse", float32, (7, )), ("EZ", float32, (2, ))]) data = array(c, dtype=numpytype) tid = h5t.C_S1.copy() tid.set_size(6) H5T6 = Datatype(tid) tid.set_size(4) H5T_C_S1_4 = Datatype(tid) file.create_dataset("DetPulseCoord", data=data) file.attrs.create("CLASS", "TABLE", dtype=H5T6) file.attrs.create("FIELD_0_NAME", a.names[0]) file.attrs.create("FIELD_1_NAME", a.names[1]) file.attrs.create("TITLE", "Detpulse coord pair data") file.attrs.create("VERSION", "3.0", dtype=H5T_C_S1_4) file.attrs.create("abstime", 1.45e9, dtype=float64, shape=(1, )) file.attrs.create("nevents", 122421, dtype=float64, shape=(1, )) file.attrs.create("runtime", 125000, dtype=float64, shape=(1, )) file.flush()
def make_fid(name, mode, plist): """ Get a new FileID by opening or creating a file. Also validates mode argument.""" if mode == 'r': fid = h5f.open(name, h5f.ACC_RDONLY, fapl=plist) elif mode == 'r+': fid = h5f.open(name, h5f.ACC_RDWR, fapl=plist) elif mode == 'w-': fid = h5f.create(name, h5f.ACC_EXCL, fapl=plist) elif mode == 'w': fid = h5f.create(name, h5f.ACC_TRUNC, fapl=plist) elif mode == 'a' or mode is None: try: fid = h5f.open(name, h5f.ACC_RDWR, fapl=plist) except IOError: fid = h5f.create(name, h5f.ACC_EXCL, fapl=plist) else: raise ValueError("Invalid mode; must be one of r, r+, w, w-, a") return fid
def make_fid(name, mode, userblock_size, fapl): """ Get a new FileID by opening or creating a file. Also validates mode argument.""" fcpl = None if userblock_size is not None: if mode in ('r', 'r+'): raise ValueError( "User block may only be specified when creating a file") try: userblock_size = int(userblock_size) except (TypeError, ValueError): raise ValueError("User block size must be an integer") fcpl = h5p.create(h5p.FILE_CREATE) fcpl.set_userblock(userblock_size) if mode == 'r': fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl) elif mode == 'r+': fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) elif mode == 'w-': fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) elif mode == 'w': fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl) elif mode == 'a' or mode is None: try: fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) try: existing_fcpl = fid.get_create_plist() if userblock_size is not None and existing_fcpl.get_userblock( ) != userblock_size: raise ValueError( "Requested userblock size (%d) does not match that of existing file (%d)" % (userblock_size, existing_fcpl.get_userblock())) except: fid.close() raise except IOError: fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) else: raise ValueError("Invalid mode; must be one of r, r+, w, w-, a") return fid
def make_fid(name, mode, userblock_size, fapl): """ Get a new FileID by opening or creating a file. Also validates mode argument.""" fcpl = None if userblock_size is not None: if mode in ('r', 'r+'): raise ValueError("User block may only be specified " "when creating a file") try: userblock_size = int(userblock_size) except (TypeError, ValueError): raise ValueError("User block size must be an integer") fcpl = h5p.create(h5p.FILE_CREATE) fcpl.set_userblock(userblock_size) if mode == 'r': fid = h5f.open(name, h5f.ACC_RDONLY, fapl=fapl) elif mode == 'r+': fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) elif mode == 'w-': fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) elif mode == 'w': fid = h5f.create(name, h5f.ACC_TRUNC, fapl=fapl, fcpl=fcpl) elif mode == 'a' or mode is None: try: fid = h5f.open(name, h5f.ACC_RDWR, fapl=fapl) try: existing_fcpl = fid.get_create_plist() if (userblock_size is not None and existing_fcpl.get_userblock() != userblock_size): raise ValueError("Requested userblock size (%d) does not match that of existing file (%d)" % (userblock_size, existing_fcpl.get_userblock())) except: fid.close() raise except IOError: fid = h5f.create(name, h5f.ACC_EXCL, fapl=fapl, fcpl=fcpl) else: raise ValueError("Invalid mode; must be one of r, r+, w, w-, a") return fid
def main(): sec2j.init() fapl = h5p.create(h5p.FILE_ACCESS) print fapl print 'fapl.id:', fapl.id sec2j.set_fapl(fapl.id) fname = "test.h5" if os.path.exists(fname): print 'Opening the file...' fid = h5f.open(fname, fapl=fapl) else: fid = h5f.create(fname, flags=h5f.ACC_TRUNC, fapl=fapl) print 'fid ready:', fid.id #return f = h5py.File(fid) sec2j.tx_start(fid.id) g = f.require_group('bbic/volume/0') for i in range(10000): g.attrs.create('a%d' % i, 640) f.flush() os._exit(-1)