tomoscan.esrf.volume.tiffvolume.MultiTIFFVolume#

class tomoscan.esrf.volume.tiffvolume.MultiTIFFVolume(file_path=None, data=None, source_scan=None, metadata=None, data_url=None, metadata_url=None, overwrite=False, append=False, data_extension='tiff', metadata_extension='txt')#

Bases: VolumeBase

Save tiff into a single tiff file

Parameters:

file_path (Optional[str]) – path to the multiframe tiff file

__init__(file_path=None, data=None, source_scan=None, metadata=None, data_url=None, metadata_url=None, overwrite=False, append=False, data_extension='tiff', metadata_extension='txt')#

Methods

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

browse_data_files([url])

return a generator go through all the existing 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 existing 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[, ...])

Provide a helper class to dump data frame by frame.

deduce_data_and_metadata_urls(url)

compute data and metadata urls from 'parent url' :rtype: tuple :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])

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)

rtype:

dict

Attributes

DEFAULT_DATA_EXTENSION

DEFAULT_METADATA_EXTENSION

EXTENSION

data

rtype:

Optional[ndarray]

data_extension

data_url

extension

rtype:

str

file_path

metadata

rtype:

Optional[dict]

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

rtype:

Optional[TomoScanBase]

url

voxel_size

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

browse_data_files(url=None)#

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

browse_data_urls(url=None)#

generator on data urls used.

Parameters:

urlDeprecated 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 existing files associated to the data volume

browse_slices(url=None)#

generator of 2D numpy array representing a slice

Parameters:

urlDeprecated 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=None, overwrite=False)#

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) – Deprecated url to dump data

  • overwrite (bool) – overwrite existing file ?

deduce_data_and_metadata_urls(url)#

compute data and metadata urls from ‘parent url’ :rtype: tuple :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:

MultiTiffVolumeIdentifier

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:

urlDeprecated 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

Return type:

Optional[ndarray]

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:
    ...
Return type:

dict[SliceTuple, ndarray]

get_volume_shape(url=None)#

return volume shape as a tuple

Parameters:

url – Deprecated

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.

Parameters:

url (Optional[DataUrl]) – Deprecated

Return type:

ndarray

load_metadata(url=None, store=True)#

Load volume metadata from disk

Parameters:

url (Optional[DataUrl]) – Deprecated

Return type:

dict

property position: tuple | None#

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)

Return type:

Optional[tuple]

save(url=None, **kwargs)#

save volume data and metadata to disk

Parameters:

url (Optional[DataUrl]) – Deprecated

save_data(url=None)#

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

Parameters:

url (Optional[DataUrl]) – Deprecated

Return type:

None

save_metadata(url=None)#

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

Parameters:

url (Optional[DataUrl]) – Deprecated

Return type:

None

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

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

Return type:

array

property voxel_size: tuple[float] | None#

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

Return type:

Optional[tuple[float]]