Source code for est.io.utils.readers.fabio_reader
import fabio
from silx.io.url import DataUrl
[docs]
def read_data(url: DataUrl):
data_slice = url.data_slice()
if data_slice is None:
data_slice = (0,)
if data_slice is None or len(data_slice) != 1:
raise ValueError("Fabio slice expect a single frame, but %s found" % data_slice)
index = data_slice[0]
if not isinstance(index, int):
raise ValueError(
"Fabio slice expect a single integer, but %s found" % data_slice
)
try:
try:
fabio_file = fabio.open(url.file_path())
except Exception:
raise IOError(
"Error while opening %s with fabio (use debug for more information)"
% url.path()
)
if fabio_file.nframes == 1:
if index != 0:
raise ValueError(
"Only a single frame available. Slice %s out of range" % index
)
return fabio_file.data
return fabio_file.getframe(index).data
finally:
# There is no explicit close
fabio_file = None