tomoscan.volumebase.VolumeBase

class tomoscan.volumebase.VolumeBase(url: Optional[DataUrl] = None, data: Optional[ndarray] = None, source_scan: Optional[TomoScanBase] = None, metadata: Optional[dict] = None, data_url: Optional[DataUrl] = None, metadata_url: Optional[DataUrl] = None, overwrite: bool = False, data_extension: Optional[str] = None, metadata_extension: Optional[str] = None)

Bases: TomoObject

context: we aim at having a common way of saving and loading volumes through the tomotools suite. The goal is to aim handling of volumes when creating them or doing some operations with those like stitching…

Parameters:
  • url (DataUlr) – url of the volume. Could be path to a master file if we can provide one per each volume. Otherwise could be a pattern of edf files or tiff file with a data range

  • source_scan (Optional[TomoScanBase]) – potential instance of TomoScanBase in order to get extra information. This could be saved in the volume file to (external link)

  • data (Optional[nump.ndarray]) – volume data. Expected to be 3D

  • metadata (Optional[dict]) – metadata associated to the volume. Must be a dict of serializable object

  • data_url (Optional[DataUrl]) – url to save the data. If provided url must not be provided. If an object is constructed from data and metadta url then no rule to create a VolumeIdentifier can be created and call to et_identifier will raise an error.

  • metadata_url (Optional[DataUrl]) – url to save the metadata. If provided url must not be provided. If an object is constructed from data and metadta url then no rule to create a VolumeIdentifier can be created and call to et_identifier will raise an error.

  • overwrite (str) – when save the data if encounter a ressource already existing overwrite it (if True) or not.

  • overwrite – when save the data if encounter a ressource already existing overwrite it (if True) or not.

Raises:
  • TypeError

  • ValueError

    • if data is a numpy array and not 3D.

  • OSError

__init__(url: Optional[DataUrl] = None, data: Optional[ndarray] = None, source_scan: Optional[TomoScanBase] = None, metadata: Optional[dict] = None, data_url: Optional[DataUrl] = None, metadata_url: Optional[DataUrl] = None, overwrite: bool = False, data_extension: Optional[str] = None, metadata_extension: Optional[str] = None) None

Methods

__init__([url, data, source_scan, metadata, ...])

browse_data_files([url])

param url:

data url. If not provided will take self.data_url

browse_data_urls([url])

generator on data urls used.

browse_metadata_files([url])

param url:

metadata url. If not provided will take self.metadata_url

browse_slices([url])

generator of 2D numpy array representing a slice

check_can_provide_identifier()

clear_cache()

remove object stored in data and medatada

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' :return: data_url: Optional[DataUrl], metadata_url: Optional[DataUrl]

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])

get_volume_shape()

load()

load_chunk(chunk[, url])

Load a sub-volume.

load_data([url, store])

load_metadata([url, store])

save([url])

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])

Attributes

EXTENSION

data

data_extension

data_url

extension

metadata

metadata_extension

metadata_url

overwrite

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)
Parameters:

url – data url. If not provided will take self.data_url

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)
Parameters:

url – metadata url. If not provided will take self.metadata_url

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

clear_cache()

remove object stored in data and medatada

data_file_saver_generator(n_frames, data_url: DataUrl, overwrite: bool)

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

Parameters:
  • n_frames (int) – 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: Optional[DataUrl]) tuple

compute data and metadata urls from ‘parent url’ :return: data_url: Optional[DataUrl], metadata_url: Optional[DataUrl]

static example_defined_from_str_identifier() str

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

static from_identifier(identifier: Union[str, VolumeIdentifier])

Return the Dataset from a identifier

get_bounding_box(axis: Optional[Union[str, int]] = 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() VolumeIdentifier

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

get_min_max() tuple

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

get_min_max_values(url=None) tuple

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

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

property position: Optional[tuple]

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_data(url: Optional[DataUrl] = None, **kwargs) None

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

save_metadata(url: Optional[DataUrl] = None) None

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

property voxel_size: Optional[tuple]

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