tomoscan.esrf.volume.hdf5volume.HDF5Volume#

class tomoscan.esrf.volume.hdf5volume.HDF5Volume(file_path=None, data_path=None, data=None, source_scan=None, metadata=None, data_url=None, metadata_url=None, overwrite=False)#

Bases: VolumeBase

Volume where both data and metadata are store in a HDF5 file but at a different location.

__init__(file_path=None, data_path=None, data=None, source_scan=None, metadata=None, data_url=None, metadata_url=None, overwrite=False)#

Methods

__init__([file_path, data_path, data, ...])

browse_data_files([url])

return a generator go through all the existings files associated to the data volume

browse_data_urls([url])

generator on data urls used.

browse_metadata_files([url])

return a generator go through all the existings files associated to the data volume

browse_slices([url])

generator of 2D numpy array representing a slice

build_drac_metadata()

build the drac (successor of icat) metadata dict from existing volume metadata.

check_can_provide_identifier()

clear_cache()

remove object stored in data and metadata

data_file_saver_generator(n_frames, ...[, mode])

Provide a helper class to dump data frame by frame.

deduce_data_and_metadata_urls(url)

compute data and metadata urls from 'parent url' :return: data_url: DataUrl | None, metadata_url: DataUrl | None

example_defined_from_str_identifier()

example as string to explain how users can defined identifiers from a string

from_identifier(identifier)

Return the Dataset from a identifier

get_bounding_box([axis])

Return the bounding box covered by the Tomo object axis is expected to be in (0, 1, 2) or (x==0, y==1, z==2)

get_identifier()

dataset unique identifier.

get_min_max()

compute min max of the volume.

get_min_max_values([url])

compute min max over 'data' if exists else browsing the volume slice by slice

get_slice([index, axis, xy, xz, yz, url])

read a single slice of the volume

get_slices(slices)

retrieve a couple of slices along any axis:

get_volume_shape([url])

return volume shape as a tuple

load()

load_chunk(chunk[, url])

Load a sub-volume.

load_data([url, store])

load volume data from disk

load_metadata([url, store])

load volume metadata from disk

save([url])

save volume data and metadata to disk

save_data([url, mode])

save data to the provided url or existing one if none is provided

save_metadata([url])

save metadata to the provided url or existing one if none is provided

select(volume[, xy, xz, yz, axis, index])

select a slice at 'index' along an axis (axis)

select_slices(volume, slices)

Attributes

DATA_DATASET_NAME

EXTENSION

METADATA_GROUP_NAME

data

data_extension

data_path

data_url

extension

rtype

str

file_path

metadata

metadata_extension

metadata_url

overwrite

rtype

bool

pixel_size

position

position are provided as a tuple using the same reference for axis as the volume data.

source_scan

url

voxel_size

voxel size as (axis 0 dim - aka z, axis 1 dim - aka y, axis 2 dim aka z)

browse_data_files(url=None)#

return a generator go through all the existings files associated to the data volume

browse_data_urls(url=None)#

generator on data urls used.

Parameters

url – data url to be used. If not provided will take self.data_url

browse_metadata_files(url=None)#

return a generator go through all the existings files associated to the data volume

browse_slices(url=None)#

generator of 2D numpy array representing a slice

Parameters

url – data url to be used. If not provided will browse self.data if exists else self.data_url

Warning

this will get the slice from the data on disk and never use data property. so before browsing slices you might want to check if data is already loaded

build_drac_metadata()#

build the drac (successor of icat) metadata dict from existing volume metadata.

Return type

dict

clear_cache()#

remove object stored in data and metadata

data_file_saver_generator(n_frames, data_url, overwrite, mode='a', **kwargs)#

Provide a helper class to dump data frame by frame. For know the only possible interaction is Helper[:] = frame

Parameters
  • n_frames – number of frame the final volume will contain

  • data_url (DataUrl) – url to dump data

  • overwrite (bool) – overwrite existing file ?

deduce_data_and_metadata_urls(url)#

compute data and metadata urls from ‘parent url’ :return: data_url: DataUrl | None, metadata_url: DataUrl | None

static example_defined_from_str_identifier()#

example as string to explain how users can defined identifiers from a string

Return type

str

static from_identifier(identifier)#

Return the Dataset from a identifier

get_bounding_box(axis=None)#

Return the bounding box covered by the Tomo object axis is expected to be in (0, 1, 2) or (x==0, y==1, z==2)

get_identifier()#

dataset unique identifier. Can be for example a hdf5 and en entry from which the dataset can be rebuild

Return type

HDF5VolumeIdentifier

get_min_max()#

compute min max of the volume. Can take some time but avoid to load the full volume in memory

Return type

tuple

get_min_max_values(url=None)#

compute min max over ‘data’ if exists else browsing the volume slice by slice

Parameters

url – data url to be used. If not provided will take self.data_url

Return type

tuple

get_slice(index=None, axis=None, xy=None, xz=None, yz=None, url=None)#

read a single slice of the volume

get_slices(slices)#

retrieve a couple of slices along any axis:

For example, if you want to retrieve slice number 2 of axis 0 and slice number 56 of axis 1:

slices = volume.get_slices(
    (0, 2),
    (1, 56),
)
for (axis, slice), data in slices:
    ...
get_volume_shape(url=None)#

return volume shape as a tuple

load_chunk(chunk, url=None)#

Load a sub-volume.

Parameters
  • chunk – tuple of slice objects indicating which chunk of the volume has to be loaded.

  • url – data url to be used. If not provided will take self.data_url

load_data(url=None, store=True)#

load volume data from disk

load_metadata(url=None, store=True)#

load volume metadata from disk

property position#

position are provided as a tuple using the same reference for axis as the volume data. position is returned as (axis_0_pos, axis_1_pos, axis_2_pos). Can also be see as (z_position, y_position, x_position)

save(url=None, **kwargs)#

save volume data and metadata to disk

save_data(url=None, mode='a', **kwargs)#

save data to the provided url or existing one if none is provided

save_metadata(url=None)#

save metadata to the provided url or existing one if none is provided

static select(volume, xy=None, xz=None, yz=None, axis=None, index=None)#

select a slice at ‘index’ along an axis (axis)

property voxel_size#

voxel size as (axis 0 dim - aka z, axis 1 dim - aka y, axis 2 dim aka z)