Skip to content

Commit

Permalink
use phil, wrap to create_dataset rather than setitem (which uses crea…
Browse files Browse the repository at this point in the history
…te_dataset anyway)
  • Loading branch information
GarethCabournDavies committed Jul 31, 2024
1 parent 0e29bd3 commit 540728c
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions pycbc/io/hdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,30 +39,30 @@ def create_group(self, name, track_order=None):
if track_order is None:
track_order = h5py.h5.get_config().track_order

# FIXME: use the h5py file locker? with h5py.phil:
name, lcpl = self._e(name, lcpl=True)
gcpl = HGroup._gcpl_crt_order if track_order else None
gid = h5py.h5g.create(self.id, name, lcpl=lcpl, gcpl=gcpl)
return HGroup(gid)

with h5py._objects.phil:
name, lcpl = self._e(name, lcpl=True)
gcpl = HGroup._gcpl_crt_order if track_order else None
gid = h5py.h5g.create(self.id, name, lcpl=lcpl, gcpl=gcpl)
return HGroup(gid)

def __setitem__(self, name, obj):
def create_dataset(self, name, shape=None, dtype=None, data=None, **kwds):
"""
Wrapper around h5py's __setitem__ so that checksums are used
Wrapper around h5py's create_dataset so that checksums are used
"""
if type(obj) not in [h5py.HLObject, h5py.SoftLink, h5py.ExternalLink, np.dtype]:
name, lcpl = self._e(name, lcpl=True)
print(f"Setting {name} while using fletcher32")
ds = self.create_dataset(None, data=obj, fletcher32=True)
h5py.h5o.link(ds.id, self.id, name, lcpl=lcpl)
else:
h5py.File.__setitem__(self, name, obj)
kwds['fletcher32'] = True
return h5py.Group.create_dataset(
self,
name,
shape=shape,
dtype=dtype,
data=data,
**kwds
)


class HFile(HGroup, h5py.File):
""" Low level extensions to the capabilities of reading an hdf5 File
"""

def select(self, fcn, *args, chunksize=10**6, derived=None, group='',
return_data=True, premask=None):
""" Return arrays from an hdf5 file that satisfy the given function
Expand Down

0 comments on commit 540728c

Please sign in to comment.