Warning
This document is for an in-development version of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.
Source code for galaxy.tool_util.verify.asserts.hdf5
import io
try:
import h5py
except ImportError:
h5py = None
IMPORT_MISSING_MESSAGE = "h5 assertion requires unavailable optional dependency h5py"
def _assert_h5py():
if h5py is None:
raise Exception(IMPORT_MISSING_MESSAGE)
[docs]def assert_has_h5_attribute(output_bytes, key, value):
"""Asserts the specified HDF5 output has a given key-value pair as HDF5
attribute"""
_assert_h5py()
output_temp = io.BytesIO(output_bytes)
local_attrs = h5py.File(output_temp, 'r').attrs
assert key in local_attrs and str(local_attrs[key]) == value, (
"Not a HDF5 file or H5 attributes do not match:\n\t{}\n\n\t({} : {})".format(local_attrs.items(), key, value))
[docs]def assert_has_h5_keys(output_bytes, keys):
""" Asserts the specified HDF5 output has the given keys."""
_assert_h5py()
keys = [k.strip() for k in keys.strip().split(',')]
h5_keys = sorted(keys)
output_temp = io.BytesIO(output_bytes)
local_keys = []
def append_keys(key):
local_keys.append(key)
return None
h5py.File(output_temp, 'r').visit(append_keys)
missing = 0
for key in h5_keys:
if key not in local_keys:
missing += 1
assert missing == 0, "Not a HDF5 file or H5 keys missing:\n\t{}\n\t{}".format(local_keys, h5_keys)