Package scm_confocal
Sub-modules
scm_confocal.util
Classes
class sp8_image (filename, image)
-
Subclass of
sp8_lif
for relevant attributes and functions for a specific image in the .lif file. Should not be called directly, but rather be obtained throughsp8_lif.get_image()
Parameters
filename
:str
- file name of the parent .lif file
image
:int
- index number of the image in the parent .lif file
Attributes
image
:int
- index number of the image in the parent .lif file
lifimage
:readlif.LifImage class instance
- The underlying class instance of the readlif library.
Additionally, attributes and functions of the parent
sp8_lif
instance are inherited and directly accessible, as well as all attributes of thereadlif.LifImage
instance.inherit all functions and attributes from parent sp8_lif class and add some image specific ones
Ancestors
- scm_confocal.sp8.sp8_lif
Methods
def export_with_scalebar(self, frame=0, channel=0, filename=None, **kwargs)
-
saves an exported image of the confocal slice with a scalebar in one of the four corners, where barsize is the scalebar size in data units (e.g. µm) and scale the overall size of the scalebar and text with respect to the width of the image. Additionally, a colormap is applied to the data for better visualisation.
Parameters
frame
:int
, optional- index of the frame to export. The default is 0.
channel
:int
orlist
ofint
, optional- the channel to pull the image data from. For displaying multiple
channels in a single image, a list of channel indices can be given,
as well as a list of colormaps for each channel through the
cmap
parameter. The default is0
. filename
:string
orNone
, optional- Filename + extension to use for the export file. The default is the filename sans extension of the original .lif file, with image name and '_exported.png' appended.
crop
:tuple
orNone
, optional-
range describing a area of the original image (before rescaling the resolution) to crop out for the export image. Can have two forms:
-
((xmin,ymin),(xmax,ymax))
, with the integer indices of the top left and bottom right corners respectively. -
(xmin,ymin,w,h)
with the integer indices of the top left corner and the width and heigth of the cropped image in pixels (prior to optional rescaling usingresolution
).
The default is
None
which takes the entire image. -
crop_unit
:'pixels'
or'data'
, optional- sets the unit in which the width and height in
crop
are specified when using the (x,y,w,h) format, with'pixels'
to give the size in pixels or'data'
to specify the size in the physical unit used for the scalebar (after optional unit conversion via theconvert
parameter). Note that the position of the top left corner is given in pixels. The((xmin,ymin),(xmax,ymax))
format must be always given in pixels, andcrop_unit
is ignored ifcrop
is given in this format. The default is'pixels'
. resolution
:int
, optional- the resolution along the x-axis (i.e. image width in pixels) to use
for the exported image. The default is
None
, which uses the size of the original image (after optional cropping usingcrop
). cmap
:str
orcallable
orlist
ofstr
orlist
ofcallable
, optional-
name of a named Matplotlib colormap used to color the data. see the Matplotlib documentation for more information. The default is
'inferno'
.In addition to the colormaps listed there, the following maps for linearly incrementing pure RGB channels are available, useful for e.g. displaying multichannel data with complementary colors (no overlap between between colormaps possible):
['pure_reds', 'pure_greens', 'pure_blues', 'pure_yellows', 'pure_cyans', 'pure_purples','pure_greys']
where for example'pure_reds'
scales between RGB values(0,0,0)
and(255,0,0)
, and'pure_cyans'
between(0,0,0)
and(0,255,255)
.Alternatively, a fully custom colormap may be used by entering a ListedColormap or LinearSegmentedColormap object from the Matplotlib.colors module. For more information on creating colormaps, see the Matplotlib documentation linked above.
For multichannel data, a list of colormaps must be provided, with a separate colormap for each channel.
cmap_range
:tuple
ofform (min,max)
orNone
or'automatic'
, optional- sets the scaling of the colormap. The minimum and maximum
values to map the colormap to, values outside of this range will
be colored according to the min and max value of the colormap. The
default is
None
, which is to take the lowest and highest value in the image. Alternatively'automatic'
may be specified which scales between the 10th and 99th percentile. For multichannel data a list of cmap_range options per channel may be provided. draw_bar
:boolean
, optional- whether to draw a scalebar on the image, such that this function
may be used to put other text on the image or just to apply a
colormap (by setting
draw_bar=False
anddraw_text=False
). The default isTrue
. barsize
:float
orNone
, optional- size (in data units matching the original scale bar, e.g. nm) of
the scale bar to use. The default
None
, wich takes the desired length for the current scale (ca. 15% of the width of the image forscale=1
) and round this to the nearest option from a list of "nice" values. scale
:float
, optional- factor to change the size of the scalebar+text with respect to the
width of the image. Scale is chosen such, that at
scale=1
the font size of the scale bar text is approximately 10 pt when the image is printed at half the width of the text in a typical A4 paper document (e.g. two images side-by-side). Note that this is with respect to the output image, so after optional cropping and/or up/down sampling has been applied. The default is1
. loc
:int, one
of[
0,
1,
2,
3]
, optional- Location of the scalebar on the image, where
0
,1
,2
and3
refer to the top left, top right, bottom left and bottom right respectively. The default is2
, which is the bottom left corner. convert
:str, one
of[
'fm',
'pm',
'Å'or
A,
'nm',
'µm'or
'um',
'mm',
'cm',
'dm',
'm']
, optional- Unit that will be used for the scale bar, the value will be
automatically converted if this unit differs from the pixel size
unit. The default is
None
, which uses micrometers. barcolor
:tuple
ofints
, optional- RGB color to use for the scalebar and text, given as a tuple of
form (R,G,B) or (R,G,B,A) where R, G B and A are values between 0
and 255 for red, green, blue and alpha respectively. The default is
(255,255,255)
, which gives a white scalebar. barthickness
:int
, optional- thickness in printer points of the scale bar itself. The default is 16.
barpad
:int
, optional- size in printer points of the padding between the scale bar and the surrounding box. The default is 10.
draw_text
:bool
, optional- whether to draw the text specified in
text
on the image, the text is place above the scale bar ifdraw_bar=True
. The default isTrue
. text
:str
, optional- the text to draw on the image (above the scale bar if
draw_bar=True
). The default isNone
, which gives the size and unit of the scale bar (e.g.'10 µm'
). font
:str
, optional- filename of an installed TrueType font ('.ttf' file) to use for the
text on the scalebar. The default is
'arialbd.ttf'
. fontsize
:int
, optional- base font size to use for the scale bar text. The default is 16.
Note that this size will be re-scaled according to
resolution
andscale
. fontcolor
:tuple
ofint
, optional- (R,G,B) tuple where R, G and B are red, green and blue values from 0 to 255. The default is (255,255,255) giving white text.
fontbaseline
:int
, optional- vertical offset for the baseline of the scale bar text in from the top of the scale bar in printer points. The default is 10.
fontpad
:int
, optional- minimum size in printer points of the space/padding between the text and surrounding box. The default is 10.
draw_box
:bool
, optional- Whether to put a colored box behind the scalebar and text to
enhance contrast on busy images. The default is
False
. boxcolor
:tuple
ofints
, optional- RGB color to use for the box behind/around the scalebar and text,
given as a tuple of form (R,G,B) or (R,G,B,A) where R, G B and A
are values between 0 and 255 for red, green and blue respectively.
If no A is given,
boxopacity
is used. The default is (0,0,0) which gives a black box. boxopacity
:int
, optional- value between 0 and 255 for the opacity/alpha of the box, useful for creating a semitransparent box. The default is 255.
boxpad
:int
, optional- size of the space/padding around the box (with respect to the sides of the image) in printer points. The default is 10.
save
:bool
, optional- whether to save the image as file. The default is True.
show_figure
:bool
, optional- whether to open matplotlib figure windows. The default is True.
Returns
Y×X×4 numpy.array containing the BGRA pixel data
def get_channel(self, chl)
-
get info from the metadata on a specific channel
Parameters
chl
:int
- index number of the channel.
Returns
channel
:dict
- dictionary containing all metadata for that channel
def get_channels(self)
-
parse the images xml data for the channels.
Returns
list
ofdictionaries
def get_detector_settings(self)
-
Parses the xml metadata for the detector settings.
Returns
dictionary
or(in case
ofmultichannel data) a list thereof
def get_dimension(self, dim)
-
Gets the dimension data for a particular dimension of an image. Dimension can be given both as integer index (as specified by the Leica MetaData which may not correspond to the indexing order of the data stack) or as string containing the physical meaning, e.g. 'x-axis', 'time', 'excitation wavelength', etc.
Parameters
dim
:int
orstr
- dimension to get metadata of specified as integer or as name.
Returns
dimension
:dict
- dictionary containing all metadata for that dimension
def get_dimension_steps(self, dim, load_stack_indices=False)
-
returns a list of corresponding physical values for all steps along a given dimension, e.g. a list of time steps or x coordinates. Dimension can be given both as integer index (as specified by the Leica MetaData, which may not correspond to the indexing order of the data stack), or as string containing the physical meaning, e.g. 'x-axis', 'time', 'excitation wavelength', etc.
Parameters
dim
:int
orstr
- dimension to get metadata of specified as integer or as name.
Returns
steps
:list
offloat
- physical values of the steps along the chosen dimension, (e.g. a list of pixel x-coordinates, list of time stamps, …).
unit
:str
- physical unit of the data.
def get_dimension_stepsize(self, dim)
-
returns the step size along a dimension, e.g. time interval, pixel size, etc, as (value, unit) tuple. Dimension can be given both as integer index (as specified by the Leica MetaData, which may not correspond to the indexing order of the data stack), or as string containing the physical meaning, e.g. 'x-axis', 'time', 'excitation wavelength', etc.
Parameters
dim
:int
orstr
- dimension to get metadata of specified as integer or as name.
Returns
stepsize
:float
- physical size of one step (e.g. pixel, time interval, …).
unit
:str
- physical unit of the data.
def get_dimensions(self)
-
parse the images xml data for the dimensions.
Returns
list
ofdictionaries
def get_laser_settings(self)
-
Parses the xml metadata for the laser settings.
Returns
dictionary with laser data
def get_name(self)
-
shortcut for getting the name of the dataset / image for e.g. automatically generating filenames for stored results.
The format is:
<lif file name (without file extension)>_<image name>
def get_pixelsize(self)
-
shorthand for
get_dimension_stepsize()
to get the pixel/voxel size converted to micrometer, along whatever spatial dimensions are present in the data in order of slowest to fastest axis, i.e. typically (z,y,x) but e.g. (y,z,x) for an xzy scan. data are skipped.Returns
pixelsize
:tuple
offloat
- physical size in µm of the pixels/voxels along (z,y,x)
def get_stage_position(self)
-
Returns base (z,y,x) position of the stage in micrometer
def load_frame(self, i=0, channel=None)
-
returns specified image frame where a frame is considered a 2D image in the plane of the two fastes axes in the recording order (typically xy).
Parameters
i
:int
, optional- the index number of the requested image. The default is 0.
channel
:int
orlist
ofint
, optional- which channel(s) to return. For multiple channels, a tuple with an numpy.ndarray for each image is returned, for a single channel a single numpy.ndarray is returned. The default is to return all channels.
Returns
frame
:numpy.ndarray
ortuple
ofnumpy.ndarray
- the raw image data values for the requested frame / channel(s)
def load_plane(self, display_dims=None, indices=None)
-
load 2D plane / slice of arbitrary orientation from the data
Parameters
display_dims
:tuple
oflength 2
, optional- the 2 dimensions defining the 2D image plane to load. The default is the imaging plane (the two fastest axes, typically xy).
indices
:dict
, optional- index values for all other planes. The default is 0 for all dims.
Returns
np.ndarray
- array containing the pixel values of the selected plane.
def load_stack(self, dim_range=None, dtype=None, quiet=False)
-
Similar to sp8_series.load_data(), but converts the 3D array of images automatically to a np.ndarray of the appropriate dimensionality.
Array dimensions are specified as follows:
-
If the number of detector channels is 2 or higher, the first array axis is the detector channel index (named 'channel').
-
If the number of channels is 1, the first array axis is the first available dimension (instead of 'channel').
-
Each subsequent array axis corresponds to a dimension as specified by and in reversed order of the metadata exported by the microscope software, excluding dimensions which are not available. The default order of dimensions in the metadata is:
-
'channel'
(excluded for single channel data) -
'x-axis'
-
'y-axis'
-
'z-axis'
-
'time'
-
'detection wavelength'
-
'excitation wavelength'
-
'mosaic'
-
-
As an example, a 2 channel xyt measurement would result in a 4-d array with axis order ('channel','time','y-axis', 'x-axis'), and a single channel xyz scan would be returned as ('z-axis','y-axis','x-axis')
For loading only part of the total dataset, the dim_range parameter can be used to specify a range along any of the dimensions. This will be more memory efficient than loading the entire stack and then discarding part of the data. For slicing along the x or y axis this is not possible and whole (xy) images must be loaded prior to discarding data outside the specified x or y axis range.
Parameters
dim_range
:dict
, optional-
dict, with keys corresponding to channel/dimension labels as above and int or slice objects as values. This allows you to only load part of the data along any of the dimensions, such as only loading one channel of multichannel data or a particular z-range. An example use for only taking time steps up to 5 and z-slice 20 to 30 would be:
dim_range={'time':slice(None,5), 'z-axis':slice(20,30)}.
When an int is given, only that slice along the dimension is taken and the dimensionis squeezed out of the data. The default is {}.
dtype
:(numpy) datatype
, optional- type to scale data to. The default is None which uses the same bit depth as the original image (either 8- or 16-bit unsigned int).
Returns
data
:numpy.ndarray
- ndarray with the pixel values
dimorder
:tuple
- tuple with lenght data.ndim specifying the ordering of dimensions in the data with labels from the metadata of the microscope.
-
def print_metadata(self)
-
Prints a somewhat formatted version of the full image metadata, the xml hierarchy is indicated with prepended dashes.
def save_metadata(self, filename=None)
-
stores the image xml metadata to a file
Parameters
filename
:str
, optional- filename to use. The default is the result of
get_name()
'_metadata.xml' appended.
class sp8_lif (filename=None, quiet=False)
-
Class of functions related to the sp8 microscope, for data saved as .lif files, the default file format for the Leica LAS-X software. Essentially a wrapper around the
readlif
library, which provides access to the data and metadata directly in Python.The underlying
readlif.LifFile
instance can be accessed directly using thesp8_lif.liffile
attribute, and any of it attributes are accessible throughsp8_lif
directly.Parameters
filename
:str
- Filename of the
.lif
file. Extension may be (but is not required to be) included. quiet
:bool
, optional- can be used to suppress printing the contents of the file. The default is False.
Returns
sp8_lif
class instanceAttributes
liffile
:readlif.LifFile instance
- The underlying class instance of the readlif library.
filename
:str
- filename of the loaded .lif file with file extention included, even if it was not given when initializing the class.
See Also
Subclasses
- scm_confocal.sp8.sp8_image
Methods
def get_image(self, image=0)
-
returns an sp8_image instance containing relevant attributes and functions for the specific image in the dataset, which provides the "bread and butter" of data access.
Parameters
image
:int
orstr
, optional- The image (or image series) to obtain. May be given as index number (int) or as the name of the series (string). The default is the first image in the file.
Returns
sp8_image
class instance def get_liffile_image(self, image=0)
-
returns the
readlif.LifImage
instance for a particular image in the dataset.Parameters
image
:int
orstr
, optional- The image (or image series) to obtain. May be given as index number (int) or as the name of the series (string). The default is the first image in the file.
Returns
readlif.LifImage
class instance def get_name(self)
-
shortcut for getting the name (filename sans extention) of the dataset for e.g. automatically generating filenames for stored results.
def save_metadata(self, filename=None)
-
stores the xml metadata to a file
Parameters
filename
:str
, optional- filename to use. The default is the name of the Lif file with '_metadata.xml' appended.
class sp8_series (fmt='*.tif')
-
Class of functions related to the sp8 microscope. The functions assume that the data are exported as .tif files and placed in a own folder per series. The current working directory is assumed to be that folder. For several functions it is required that the xml metadata is present in a subfolder of the working directory called 'MetaData', which is normally generated automatically when exporting tif files as raw data.
Attributes
filenames
:list
ofstr
- the filenames loaded associated with the series
data
:numpy array
- the image data as loaded on the most recent call of sp8_series.load_data()
metadata
:xml.Elementtree root
- the recording parameters associated with the image series
Initialize the class instance and assign the filenames of the data.
Parameters
fmt
:str
, optional- format to use for finding the files. Uses the notation of the glob library. The default is '*.tif'.
Methods
def export_with_scalebar(self, frame=0, channel=0, filename=None, **kwargs)
-
saves an exported image of the confocal slice with a scalebar in one of the four corners, where barsize is the scalebar size in data units (e.g. µm) and scale the overall size of the scalebar and text with respect to the width of the image. Additionally, a colormap is applied to the data for better visualisation.
Parameters
frame
:int
, optional- index of the frame to export. The default is 0.
channel
:int
orlist
ofint
, optional- the channel to pull the image data from. For displaying multiple
channels in a single image, a list of channel indices can be given,
as well as a list of colormaps for each channel through the
cmap
parameter. The default is0
. filename
:string
orNone
, optional- Filename + extension to use for the export file. The default is the filename sans extension of the original TEM file, with '_exported.png' appended.
crop
:tuple
orNone
, optional-
range describing a area of the original image (before rescaling the resolution) to crop out for the export image. Can have two forms:
-
((xmin,ymin),(xmax,ymax))
, with the integer indices of the top left and bottom right corners respectively. -
(xmin,ymin,w,h)
with the integer indices of the top left corner and the width and heigth of the cropped image in pixels (prior to optional rescaling usingresolution
).
The default is
None
which takes the entire image. -
crop_unit
:'pixels'
or'data'
, optional- sets the unit in which the width and height in
crop
are specified when using the (x,y,w,h) format, with'pixels'
to give the size in pixels or'data'
to specify the size in the physical unit used for the scalebar (after optional unit conversion via theconvert
parameter). Note that the position of the top left corner is given in pixels. The((xmin,ymin),(xmax,ymax))
format must be always given in pixels, andcrop_unit
is ignored ifcrop
is given in this format. The default is'pixels'
. resolution
:int
, optional- the resolution along the x-axis (i.e. image width in pixels) to use
for the exported image. The default is
None
, which uses the size of the original image (after optional cropping usingcrop
). cmap
:str
orcallable
orlist
ofstr
orlist
ofcallable
, optional-
name of a named Matplotlib colormap used to color the data. see the Matplotlib documentation for more information. The default is
'inferno'
.In addition to the colormaps listed there, the following maps for linearly incrementing pure RGB channels are available, useful for e.g. displaying multichannel data with complementary colors (no overlap between between colormaps possible):
['pure_reds', 'pure_greens', 'pure_blues', 'pure_yellows', 'pure_cyans', 'pure_purples','pure_greys']
where for example'pure_reds'
scales between RGB values(0,0,0)
and(255,0,0)
, and'pure_cyans'
between(0,0,0)
and(0,255,255)
.Alternatively, a fully custom colormap may be used by entering a ListedColormap or LinearSegmentedColormap object from the Matplotlib.colors module. For more information on creating colormaps, see the Matplotlib documentation linked above.
For multichannel data, a list of colormaps must be provided, with a separate colormap for each channel.
cmap_range
:tuple
ofform (min,max)
orNone
or'automatic'
, optional- sets the scaling of the colormap. The minimum and maximum
values to map the colormap to, values outside of this range will
be colored according to the min and max value of the colormap. The
default is
None
, which is to take the lowest and highest value in the image. Alternatively'automatic'
may be specified which scales between the 10th and 99th percentile. For multichannel data a list of cmap_range options per channel may be provided. draw_bar
:boolean
, optional- whether to draw a scalebar on the image, such that this function
may be used to put other text on the image or just to apply a
colormap (by setting
draw_bar=False
anddraw_text=False
). The default isTrue
. barsize
:float
orNone
, optional- size (in data units matching the original scale bar, e.g. nm) of
the scale bar to use. The default
None
, wich takes the desired length for the current scale (ca. 15% of the width of the image forscale=1
) and round this to the nearest option from a list of "nice" values. scale
:float
, optional- factor to change the size of the scalebar+text with respect to the
width of the image. Scale is chosen such, that at
scale=1
the font size of the scale bar text is approximately 10 pt when the image is printed at half the width of the text in a typical A4 paper document (e.g. two images side-by-side). Note that this is with respect to the output image, so after optional cropping and/or up/down sampling has been applied. The default is1
. loc
:int, one
of[
0,
1,
2,
3]
, optional- Location of the scalebar on the image, where
0
,1
,2
and3
refer to the top left, top right, bottom left and bottom right respectively. The default is2
, which is the bottom left corner. convert
:str, one
of[
'fm',
'pm',
'Å'or
A,
'nm',
'µm'or
'um',
'mm',
'cm',
'dm',
'm']
, optional- Unit that will be used for the scale bar, the value will be
automatically converted if this unit differs from the pixel size
unit. The default is
None
, which uses micrometers. barcolor
:tuple
ofints
, optional- RGB color to use for the scalebar and text, given as a tuple of
form (R,G,B) or (R,G,B,A) where R, G B and A are values between 0
and 255 for red, green, blue and alpha respectively. The default is
(255,255,255)
, which gives a white scalebar. barthickness
:int
, optional- thickness in printer points of the scale bar itself. The default is 16.
barpad
:int
, optional- size in printer points of the padding between the scale bar and the surrounding box. The default is 10.
draw_text
:bool
, optional- whether to draw the text specified in
text
on the image, the text is place above the scale bar ifdraw_bar=True
. The default isTrue
. text
:str
, optional- the text to draw on the image (above the scale bar if
draw_bar=True
). The default isNone
, which gives the size and unit of the scale bar (e.g.'10 µm'
). font
:str
, optional- filename of an installed TrueType font ('.ttf' file) to use for the
text on the scalebar. The default is
'arialbd.ttf'
. fontsize
:int
, optional- base font size to use for the scale bar text. The default is 16.
Note that this size will be re-scaled according to
resolution
andscale
. fontcolor
:tuple
ofint
, optional- (R,G,B) tuple where R, G and B are red, green and blue values from 0 to 255. The default is (255,255,255) giving white text.
fontbaseline
:int
, optional- vertical offset for the baseline of the scale bar text in from the top of the scale bar in printer points. The default is 10.
fontpad
:int
, optional- minimum size in printer points of the space/padding between the text and surrounding box. The default is 10.
draw_box
:bool
, optional- Whether to put a colored box behind the scalebar and text to
enhance contrast on busy images. The default is
False
. boxcolor
:tuple
ofints
, optional- RGB color to use for the box behind/around the scalebar and text,
given as a tuple of form (R,G,B) or (R,G,B,A) where R, G B and A
are values between 0 and 255 for red, green and blue respectively.
If no A is given,
boxopacity
is used. The default is (0,0,0) which gives a black box. boxopacity
:int
, optional- value between 0 and 255 for the opacity/alpha of the box, useful for creating a semitransparent box. The default is 255.
boxpad
:int
, optional- size of the space/padding around the box (with respect to the sides of the image) in printer points. The default is 10.
save
:bool
, optional- whether to save the image as file. The default is True.
show_figure
:bool
, optional- whether to open matplotlib figure windows. The default is True.
Returns
Y×X×4 numpy.array containing the BGRA pixel data
def get_dimension_steps(self, dim, load_stack_indices=False)
-
Gets a list of values for each step along the specified dimension, e.g. a list of timestamps for the images or a list of height values for all slices of a z-stack. For specification of dimensions, see sp8_series.get_metadata_dimension()
Parameters
dim
:int
orstr
- dimension to get steps for
load_stack_indices
:bool
- if True, trims down the list of steps based on the dim_range used when last loading data with load_stack
Returns
steps
:list
- list of values for every logical step in the data
unit
:str
- physical unit of the step values
def get_dimension_stepsize(self, dim)
-
Get the size of a single step along the specified dimension, e.g. the pixelsize in x, y or z, or the time between timesteps. For specification of dimensions, see sp8_series.get_metadata_dimension()
Parameters
dim
:int
orstr
- dimension to get stepsize for
Returns
value
:float
- stepsize
unit
:int
- physical unit of value
def get_laser_settings(self)
-
Parses the xml metadata for the laser settings.
Returns
dictionary with laser data
def get_metadata_channels(self)
-
Gets the channel information from the metadata
Returns
channels
:list
ofdict
- list of dictionaries with length equal to number of channels where each dict contains the metadata for one channel
def get_metadata_dimension(self, dim)
-
Gets the dimension data for a particular dimension. Dimension can be given both as integer index (as specified by the Leica exported MetaData which may not correspond to the indexing order of the data stack) or as string containing the physical meaning, e.g. 'x-axis', 'time', 'excitation wavelength', etc.
Parameters
dim
:int
orstr
- dimension to get metadata of specified as integer or as name.
Returns
dimension
:dict
- dictionary containing all metadata for that dimension
def get_metadata_dimensions(self)
-
Gets the dimension information from the metadata
Returns
dimensions
:list
ofdict
- list of dictionaries with length number of dimensions where each dict contains the metadata for one data dimension
def get_name(self)
-
Returns a string containing the filename (sans file extension) under which the series is saved.
Returns
name
:str
- name of the series
def get_pixelsize(self)
-
shorthand for
get_dimension_stepsize()
to get the pixel/voxel size converted to micrometer, along whatever spatial dimensions are present in the data. Is given as (z,y,x) where dimensions not present in the data are skipped.Returns
pixelsize
:tuple
offloat
- physical size in µm of the pixels/voxels along (z,y,x)
def get_series_name(self)
-
Deprecated, renamed to
get_name()
def load_data(self, filenames=None, first=None, last=None, dtype=numpy.uint8)
-
Loads the sequence of images into ndarray of form (files,y,x) and converts the data to dtype
Parameters
filenames
:list
ofstr
, optional- filenames of images to load. The default is what is passed from init, which by default is all .tif images in the current working directory.
first
:None
orint
, optional- index of first image to load. The default is None.
last
:None
orint
, optional- index of last image to load plus one. The default is None.
dtype
:(numpy) datatype
, optional- type to scale data to. The default is np.uint8.
Returns
data
:numpy.ndarray
- 3d numpy array with dimension order (filenames,y,x).
def load_metadata(self)
-
Load the xml metadata exported with the files as xml_root object which can be indexed with xml.etree.ElementTree
Returns
metadata
:xml.etree.ElementTree object
- Parsable xml tree object containing all the metadata
def load_stack(self, dim_range=None, dtype=numpy.uint8)
-
Similar to sp8_series.load_data(), but converts the 3D array of images automatically to a np.ndarray of the appropriate dimensionality.
Array dimensions are specified as follows:
-
If the number of detector channels is 2 or higher, the first array axis is the detector channel index (named 'channel').
-
If the number of channels is 1, the first array axis is the first available dimension (instead of 'channel').
-
Each subsequent array axis corresponds to a dimension as specified by and in reversed order of the metadata exported by the microscope software, excluding dimensions which are not available. The default order of dimensions in the metadata is:
-
'channel'
(excluded for single channel data) -
'x-axis'
-
'y-axis'
-
'z-axis'
-
'time'
-
'detection wavelength'
-
'excitation wavelength'
-
-
As an example, a 2 channel xyt measurement would result in a 4-d array with axis order ('channel','time','y-axis', 'x-axis'), and a single channel xyz scan would be returned as ('z-axis','y-axis','x-axis')
For loading only part of the total dataset, the dim_range parameter can be used to specify a range along any of the dimensions. This will be more memory efficient than loading the entire stack and then discarding part of the data. For slicing along the x or y axis this is not possible and whole (xy) images must be loaded prior to discarding data outside the specified x or y axis range.
Parameters
dim_range
:dict
, optional-
dict, with keys corresponding to channel/dimension labels as above and int or slice objects as values. This allows you to only load part of the data along any of the dimensions, such as only loading one channel of multichannel data or a particular z-range. An example use for only taking time steps up to 5 and z-slice 20 to 30 would be:
dim_range={'time':slice(None,5), 'z-axis':slice(20,30)}.
When an int is given, only that slice along the dimension is taken and the dimensionis squeezed out of the data. The default is {}.
dtype
:(numpy) datatype
, optional- type to scale data to. The default is np.uint8.
Returns
data
:numpy.ndarray
- ndarray with the pixel values
dimorder
:tuple
- tuple with lenght data.ndim specifying the ordering of dimensions in the data with labels from the metadata of the microscope.
-
class visitech_faststack (filename, zsize, zstep, zbacksteps, zstart=0, magnification=63, binning=1)
-
functions for fast stacks taken with the custom MicroManager Visitech driver, saved to multipage .ome.tiff files containing entire stack
initialize class (lazy-loads data)
Parameters
filenames
:string
- name of first ome.tiff file (extension optional)
zsize
:float
- z size (in um) of stack (first im to last)
zstep
:float
- step size in z
zbacksteps
:int
- number of backwards steps in z direction after each stack
zstart
:float
- actual height of bottom of stack/lowest slice. The default is 0.
magnification
:float
, optional- magnification of objective lens used. The default is 63.
binning
:int
- binning factor performed at the detector level, e.g. in MicroManager software, in XY
Methods
def export_with_scalebar(self, stack=0, zslice=0, filename=None, **kwargs)
-
saves an exported image of the confocal slice with a scalebar in one of the four corners, where barsize is the scalebar size in data units (e.g. µm) and scale the overall size of the scalebar and text with respect to the width of the image. Additionally, a colormap is applied to the data for better visualisation.
Parameters
stack
:int
, optional- integer index of the z-stack to take the frame to export from. The
default is
0
. zslice
:int
, optional- integer index of the frame within
stack
to export. The default is0
. filename
:string
orNone
, optional- Filename + extension to use for the export file. The default is the filename sans extension of the original TEM file, with '_exported.png' appended.
crop
:tuple
orNone
, optional-
range describing a area of the original image (before rescaling the resolution) to crop out for the export image. Can have two forms:
-
((xmin,ymin),(xmax,ymax))
, with the integer indices of the top left and bottom right corners respectively. -
(xmin,ymin,w,h)
with the integer indices of the top left corner and the width and heigth of the cropped image in pixels (prior to optional rescaling usingresolution
).
The default is
None
which takes the entire image. -
crop_unit
:'pixels'
or'data'
, optional- sets the unit in which the width and height in
crop
are specified when using the (x,y,w,h) format, with'pixels'
to give the size in pixels or'data'
to specify the size in the physical unit used for the scalebar (after optional unit conversion via theconvert
parameter). Note that the position of the top left corner is given in pixels. The((xmin,ymin),(xmax,ymax))
format must be always given in pixels, andcrop_unit
is ignored ifcrop
is given in this format. The default is'pixels'
. resolution
:int
, optional- the resolution along the x-axis (i.e. image width in pixels) to use
for the exported image. The default is
None
, which uses the size of the original image (after optional cropping usingcrop
). cmap
:str
orcallable
orlist
ofstr
orlist
ofcallable
, optional-
name of a named Matplotlib colormap used to color the data. see the Matplotlib documentation for more information. The default is
'inferno'
.In addition to the colormaps listed there, the following maps for linearly incrementing pure RGB channels are available, useful for e.g. displaying multichannel data with complementary colors (no overlap between between colormaps possible):
['pure_reds', 'pure_greens', 'pure_blues', 'pure_yellows', 'pure_cyans', 'pure_purples','pure_greys']
where for example'pure_reds'
scales between RGB values(0,0,0)
and(255,0,0)
, and'pure_cyans'
between(0,0,0)
and(0,255,255)
.Alternatively, a fully custom colormap may be used by entering a ListedColormap or LinearSegmentedColormap object from the Matplotlib.colors module. For more information on creating colormaps, see the Matplotlib documentation linked above.
For multichannel data, a list of colormaps must be provided, with a separate colormap for each channel.
cmap_range
:tuple
ofform (min,max)
orNone
or'automatic'
, optional- sets the scaling of the colormap. The minimum and maximum
values to map the colormap to, values outside of this range will
be colored according to the min and max value of the colormap. The
default is
None
, which is to take the lowest and highest value in the image. Alternatively'automatic'
may be specified which scales between the 10th and 99th percentile. For multichannel data a list of cmap_range options per channel may be provided. draw_bar
:boolean
, optional- whether to draw a scalebar on the image, such that this function
may be used to put other text on the image or just to apply a
colormap (by setting
draw_bar=False
anddraw_text=False
). The default isTrue
. barsize
:float
orNone
, optional- size (in data units matching the original scale bar, e.g. nm) of
the scale bar to use. The default
None
, wich takes the desired length for the current scale (ca. 15% of the width of the image forscale=1
) and round this to the nearest option from a list of "nice" values. scale
:float
, optional- factor to change the size of the scalebar+text with respect to the
width of the image. Scale is chosen such, that at
scale=1
the font size of the scale bar text is approximately 10 pt when the image is printed at half the width of the text in a typical A4 paper document (e.g. two images side-by-side). Note that this is with respect to the output image, so after optional cropping and/or up/down sampling has been applied. The default is1
. loc
:int, one
of[
0,
1,
2,
3]
, optional- Location of the scalebar on the image, where
0
,1
,2
and3
refer to the top left, top right, bottom left and bottom right respectively. The default is2
, which is the bottom left corner. convert
:str, one
of[
'fm',
'pm',
'Å'or
A,
'nm',
'µm'or
'um',
'mm',
'cm',
'dm',
'm']
, optional- Unit that will be used for the scale bar, the value will be
automatically converted if this unit differs from the pixel size
unit. The default is
None
, which uses micrometers. barcolor
:tuple
ofints
, optional- RGB color to use for the scalebar and text, given as a tuple of
form (R,G,B) or (R,G,B,A) where R, G B and A are values between 0
and 255 for red, green, blue and alpha respectively. The default is
(255,255,255)
, which gives a white scalebar. barthickness
:int
, optional- thickness in printer points of the scale bar itself. The default is 16.
barpad
:int
, optional- size in printer points of the padding between the scale bar and the surrounding box. The default is 10.
draw_text
:bool
, optional- whether to draw the text specified in
text
on the image, the text is place above the scale bar ifdraw_bar=True
. The default isTrue
. text
:str
, optional- the text to draw on the image (above the scale bar if
draw_bar=True
). The default isNone
, which gives the size and unit of the scale bar (e.g.'10 µm'
). font
:str
, optional- filename of an installed TrueType font ('.ttf' file) to use for the
text on the scalebar. The default is
'arialbd.ttf'
. fontsize
:int
, optional- base font size to use for the scale bar text. The default is 16.
Note that this size will be re-scaled according to
resolution
andscale
. fontcolor
:tuple
ofint
, optional- (R,G,B) tuple where R, G and B are red, green and blue values from 0 to 255. The default is (255,255,255) giving white text.
fontbaseline
:int
, optional- vertical offset for the baseline of the scale bar text in from the top of the scale bar in printer points. The default is 10.
fontpad
:int
, optional- minimum size in printer points of the space/padding between the text and surrounding box. The default is 10.
draw_box
:bool
, optional- Whether to put a colored box behind the scalebar and text to
enhance contrast on busy images. The default is
False
. boxcolor
:tuple
ofints
, optional- RGB color to use for the box behind/around the scalebar and text,
given as a tuple of form (R,G,B) or (R,G,B,A) where R, G B and A
are values between 0 and 255 for red, green and blue respectively.
If no A is given,
boxopacity
is used. The default is (0,0,0) which gives a black box. boxopacity
:int
, optional- value between 0 and 255 for the opacity/alpha of the box, useful for creating a semitransparent box. The default is 255.
boxpad
:int
, optional- size of the space/padding around the box (with respect to the sides of the image) in printer points. The default is 10.
save
:bool
, optional- whether to save the image as file. The default is True.
show_figure
:bool
, optional- whether to open matplotlib figure windows. The default is True.
Returns
Y×X×4 numpy.array containing the BGRA pixel data
def get_metadata(self)
-
loads OME metadata from visitech .ome.tif file and returns xml tree object
Returns
xml.etree.ElementTree
- formatted XML metadata. Can be indexed with
xml_root.find('
')
def get_pixelsize(self)
-
shortcut to get (z,y,x) pixelsize with unit
def get_series_name(self)
-
Returns a name for the series based on the filename.
Returns
str
def get_timestamps(self, load_stack_indices=False)
-
loads OME metadata from visitech .ome.tif file and returns timestamps
Parameters
load_stack_indices
:boolean
- if True, only returns timestamps from frames which were loaded at call to visitech_faststack.load_stack(), and using the same dimension order / stack shape
Returns
times
:numpy (nd)array
offloats
- list/stack of timestamps for each of the the frames in the data
def load_data(self, indices=slice(None, None, None), dtype=numpy.uint16, xslice=None, yslice=None)
-
load images from datafile into 3D numpy array
Parameters
indices
:slice object
orlist
ofints
, optional- which images from tiffstack to load. The default is slice(None,None,None).
Returns
numpy.ndarray containing image data in dim order (im,y,x)
def load_stack(self, dim_range={}, dtype=numpy.uint16, remove_backsteps=True, offset=0, force_reshape=False)
-
Load the data and reshape into 4D stack with the following dimension order: ('time','z-axis','y-axis','x-axis')
For loading only part of the total dataset, the dim_range parameter can be used to specify a range along any of the dimensions. This will be more memory efficient than loading the entire stack and then discarding part of the data. For slicing along the
x
ory
axis this is not possible and whole (xy) images must be loaded prior to discarding data outside the specifiedx
ory
axis range.Parameters
dim_range
:dict
, optional-
dict, with keys corresponding to channel/dimension labels as above and slice objects as values. This allows you to only load part of the data along any of the dimensions, such as only loading two time steps or a particular z-range. An example use for only taking time steps up to 5 and z-slice 20 to 30 would be:
dim_range={'time':slice(None,5), 'z-axis':slice(20,30)}.
The default is {} which corresponds to the full file.
dtype
:(numpy) datatype
, optional- type to scale data to. The default is np.uint16.
remove_backsteps
:bool
- whether to discard the frames which were recorded on the backsteps downwards
offset
:int
- offset the indices by a constant number of frames in case the first im is not the first slice of the first stack
force_reshape
:bool
- in case of incorrect number of steps during acquisition, you can use this to ignore the reshape-error occuring upon trying to sort 2d images into 4d stack series
Returns
data
:numpy.ndarray
- ndarray with the pixel values
def save_stack(self, data, filename_prefix='visitech_faststack', sequence_type='multipage')
-
save stacks to tiff files
Parameters
data
:numpy ndarray with 3
or4 dimensions
- image series pixel values with dimension order (z,y,x) or (t,z,y,x)
filename_prefix
:string
, optional- prefix to use for filename. The time/z-axis index is appended if relevant. The default is 'visitech_faststack'.
sequence_type
:{'multipage','image_sequence','multipage_sequence'}
, optional-
The way to store the data. The following options are available:
- 'image_sequence' : stores as a series of 2D images with time and or frame number appended - 'multipage' : store all data in a single multipage tiff file - 'multipage_sequence' : stores a multipage tiff file for each time step
The default is 'multipage'.
Returns
None, but writes file(s) to working directory.
def yield_stack(self, dim_range={}, dtype=numpy.uint16, remove_backsteps=True, offset=0, force_reshape=False)
-
Lazy-load the data and reshape into 4D stack with the following dimension order: ('time','z-axis','y-axis','x-axis'). Returns a generator which yields a z-stack for each call, which is loaded upon calling it.
For loading only part of the total dataset, the dim_range parameter can be used to specify a range along any of the dimensions. This will be more memory efficient than loading the entire stack and then discarding part of the data. For slicing along the x or y axis this is not possible and whole (xy) images must be loaded prior to discarding data outside the specified x or y axis range. The shape of the stack can be accessed without loading data using the stack_shape attribute after creating the yield_stack object.
Parameters
dim_range
:dict
, optional-
dict, with keys corresponding to channel/dimension labels as above and slice objects as values. This allows you to only load part of the data along any of the dimensions, such as only loading two time steps or a particular z-range. An example use for only taking time steps up to 5 and z-slice 20 to 30 would be:
dim_range={'time':slice(None,5), 'z-axis':slice(20,30)}.
The default is {} which corresponds to the full file.
dtype
:(numpy) datatype
, optional- type to scale data to. The default is np.uint16.
remove_backsteps
:bool
- whether to discard the frames which were recorded on the backsteps downwards
offset
:int
- offset the indices by a constant number of frames in case the first im is not the first slice of the first stack
force_reshape
:bool
- in case of incorrect number of steps during acquisition, you can use this to ignore the reshape-error occuring upon trying to sort 2d images into 4d stack series
Returns
zstack
:iterable/generator yielding numpy.ndarray
- list of time steps, with for each time step a z-stack as np.ndarray with the pixel values
class visitech_series (filename, magnification=63, binning=1)
-
Functions for image series taken with the multi-D acquisition menu in MicroManager with the Visitech saved to multipage .ome.tiff files. For the custom fast stack sequence use visitech_faststack.
initialize class (lazy-loads data)
Parameters
filenames
:string
- name of first ome.tiff file (extension optional)
magnification
:float
, optional- magnification of objective lens used. The default is 63.
binning
:int
- binning factor performed at the detector level, e.g. in MicroManager software, in XY
Methods
def export_with_scalebar(self, frame=0, filename=None, **kwargs)
-
saves an exported image of the confocal slice with a scalebar in one of the four corners, where barsize is the scalebar size in data units (e.g. µm) and scale the overall size of the scalebar and text with respect to the width of the image. Additionally, a colormap is applied to the data for better visualisation.
Parameters
frame
:int
, optional- index of the frame to export. The default is 0.
filename
:string
orNone
, optional- Filename + extension to use for the export file. The default is the filename sans extension of the original TEM file, with '_exported.png' appended.
crop
:tuple
orNone
, optional-
range describing a area of the original image (before rescaling the resolution) to crop out for the export image. Can have two forms:
-
((xmin,ymin),(xmax,ymax))
, with the integer indices of the top left and bottom right corners respectively. -
(xmin,ymin,w,h)
with the integer indices of the top left corner and the width and heigth of the cropped image in pixels (prior to optional rescaling usingresolution
).
The default is
None
which takes the entire image. -
crop_unit
:'pixels'
or'data'
, optional- sets the unit in which the width and height in
crop
are specified when using the (x,y,w,h) format, with'pixels'
to give the size in pixels or'data'
to specify the size in the physical unit used for the scalebar (after optional unit conversion via theconvert
parameter). Note that the position of the top left corner is given in pixels. The((xmin,ymin),(xmax,ymax))
format must be always given in pixels, andcrop_unit
is ignored ifcrop
is given in this format. The default is'pixels'
. resolution
:int
, optional- the resolution along the x-axis (i.e. image width in pixels) to use
for the exported image. The default is
None
, which uses the size of the original image (after optional cropping usingcrop
). cmap
:str
orcallable
orlist
ofstr
orlist
ofcallable
, optional-
name of a named Matplotlib colormap used to color the data. see the Matplotlib documentation for more information. The default is
'inferno'
.In addition to the colormaps listed there, the following maps for linearly incrementing pure RGB channels are available, useful for e.g. displaying multichannel data with complementary colors (no overlap between between colormaps possible):
['pure_reds', 'pure_greens', 'pure_blues', 'pure_yellows', 'pure_cyans', 'pure_purples','pure_greys']
where for example'pure_reds'
scales between RGB values(0,0,0)
and(255,0,0)
, and'pure_cyans'
between(0,0,0)
and(0,255,255)
.Alternatively, a fully custom colormap may be used by entering a ListedColormap or LinearSegmentedColormap object from the Matplotlib.colors module. For more information on creating colormaps, see the Matplotlib documentation linked above.
For multichannel data, a list of colormaps must be provided, with a separate colormap for each channel.
cmap_range
:tuple
ofform (min,max)
orNone
or'automatic'
, optional- sets the scaling of the colormap. The minimum and maximum
values to map the colormap to, values outside of this range will
be colored according to the min and max value of the colormap. The
default is
None
, which is to take the lowest and highest value in the image. Alternatively'automatic'
may be specified which scales between the 10th and 99th percentile. For multichannel data a list of cmap_range options per channel may be provided. draw_bar
:boolean
, optional- whether to draw a scalebar on the image, such that this function
may be used to put other text on the image or just to apply a
colormap (by setting
draw_bar=False
anddraw_text=False
). The default isTrue
. barsize
:float
orNone
, optional- size (in data units matching the original scale bar, e.g. nm) of
the scale bar to use. The default
None
, wich takes the desired length for the current scale (ca. 15% of the width of the image forscale=1
) and round this to the nearest option from a list of "nice" values. scale
:float
, optional- factor to change the size of the scalebar+text with respect to the
width of the image. Scale is chosen such, that at
scale=1
the font size of the scale bar text is approximately 10 pt when the image is printed at half the width of the text in a typical A4 paper document (e.g. two images side-by-side). Note that this is with respect to the output image, so after optional cropping and/or up/down sampling has been applied. The default is1
. loc
:int, one
of[
0,
1,
2,
3]
, optional- Location of the scalebar on the image, where
0
,1
,2
and3
refer to the top left, top right, bottom left and bottom right respectively. The default is2
, which is the bottom left corner. convert
:str, one
of[
'fm',
'pm',
'Å'or
A,
'nm',
'µm'or
'um',
'mm',
'cm',
'dm',
'm']
, optional- Unit that will be used for the scale bar, the value will be
automatically converted if this unit differs from the pixel size
unit. The default is
None
, which uses micrometers. barcolor
:tuple
ofints
, optional- RGB color to use for the scalebar and text, given as a tuple of
form (R,G,B) or (R,G,B,A) where R, G B and A are values between 0
and 255 for red, green, blue and alpha respectively. The default is
(255,255,255)
, which gives a white scalebar. barthickness
:int
, optional- thickness in printer points of the scale bar itself. The default is 16.
barpad
:int
, optional- size in printer points of the padding between the scale bar and the surrounding box. The default is 10.
draw_text
:bool
, optional- whether to draw the text specified in
text
on the image, the text is place above the scale bar ifdraw_bar=True
. The default isTrue
. text
:str
, optional- the text to draw on the image (above the scale bar if
draw_bar=True
). The default isNone
, which gives the size and unit of the scale bar (e.g.'10 µm'
). font
:str
, optional- filename of an installed TrueType font ('.ttf' file) to use for the
text on the scalebar. The default is
'arialbd.ttf'
. fontsize
:int
, optional- base font size to use for the scale bar text. The default is 16.
Note that this size will be re-scaled according to
resolution
andscale
. fontcolor
:tuple
ofint
, optional- (R,G,B) tuple where R, G and B are red, green and blue values from 0 to 255. The default is (255,255,255) giving white text.
fontbaseline
:int
, optional- vertical offset for the baseline of the scale bar text in from the top of the scale bar in printer points. The default is 10.
fontpad
:int
, optional- minimum size in printer points of the space/padding between the text and surrounding box. The default is 10.
draw_box
:bool
, optional- Whether to put a colored box behind the scalebar and text to
enhance contrast on busy images. The default is
False
. boxcolor
:tuple
ofints
, optional- RGB color to use for the box behind/around the scalebar and text,
given as a tuple of form (R,G,B) or (R,G,B,A) where R, G B and A
are values between 0 and 255 for red, green and blue respectively.
If no A is given,
boxopacity
is used. The default is (0,0,0) which gives a black box. boxopacity
:int
, optional- value between 0 and 255 for the opacity/alpha of the box, useful for creating a semitransparent box. The default is 255.
boxpad
:int
, optional- size of the space/padding around the box (with respect to the sides of the image) in printer points. The default is 10.
save
:bool
, optional- whether to save the image as file. The default is True.
show_figure
:bool
, optional- whether to open matplotlib figure windows. The default is True.
Returns
Y×X×4 numpy.array containing the BGRA pixel data
def get_dimension_steps(self, dim, use_stack_indices=False)
-
return a list of physical values along a certain dimension, e.g. the x-coordinates or timesteps.
def get_image_metadata(self, indices=slice(None, None, None))
-
loads the part of the metadata containing information about the time, position etc. for each frame of the series and returns a dataframe indexes by image frame
Parameters
indices
:slice object
, optional- which image frames to load the metadata for. The default is all frames.
Returns
imagedata
:pandas.DataFrame
- the metadata for the images, indexed by frame number.
def get_metadata(self)
-
loads OME metadata from visitech .ome.tif file and returns xml tree object
Returns
xml.etree.ElementTree
- formatted XML metadata. Can be indexed with
xml_root.find('
')
def get_metadata_dimensions(self)
-
finds the stack's dimensionality and logical shape based on the embedded metadata
Returns
shape
:tuple
ofints
- logical sizes of the stack
dimorder
:tuple
ofstrings
- order of the dimensions corresponding to the shape
def get_pixelsize(self)
-
shortcut to get
(z,y,x)
pixelsize with unit def get_series_name(self)
-
Returns a name for the series based on the filename.
Returns
str
def load_data(self, indices=slice(None, None, None), dtype=numpy.uint16)
-
load images from datafile into 3D numpy array
Parameters
indices
:slice object
orlist
ofints
, optional- which images from tiffstack to load. The default is slice(None,None,None).
dtype
:np int datatype
- data type / bit depth to rescale data to.
Returns
numpy.ndarray containing image data in dim order (im,y,x)
def load_stack(self, dim_range={}, dtype=numpy.uint16)
-
Load the data and reshape into 4D stack with the following dimension order: ('channel','time','z-axis','y-axis','x-axis') where dimensions with len 1 are omitted.
For loading only part of the total dataset, the dim_range parameter can be used to specify a range along any of the dimensions. This will be more memory efficient than loading the entire stack and then discarding part of the data. For slicing along the x or y axis this is not possible and whole (xy) images must be loaded prior to discarding data outside the specified x or y axis range.
Parameters
dim_range
:dict
, optional- dict, with keys corresponding to channel/dimension labels as above and slice objects as values. This allows you to only load part of the data along any of the dimensions, such as only loading two time steps or a particular z-range. An example use for only taking time steps up to 5 and z-slice 20 to 30 would be: dim_range={'time':slice(None,5), 'z-axis':slice(20,30)}. The default is {} which corresponds to the full file.
dtype
:(numpy) datatype
, optional- type to scale data to. The default is np.uint16.
remove_backsteps
:bool
- whether to discard the frames which were recorded on the backsteps downwards
Returns
data
:numpy.ndarray
- ndarray with the pixel values
def yield_stack(self, dim_range={}, dtype=numpy.uint16, remove_backsteps=True)
-
Lazy-load the data and reshape into 4D stack with the following dimension order: ('time','z-axis','y-axis','x-axis'). Returns a generator which yields a z-stack for each call, which is loaded upon calling it.
For loading only part of the total dataset, the dim_range parameter can be used to specify a range along any of the dimensions. This will be more memory efficient than loading the entire stack and then discarding part of the data. For slicing along the x or y axis this is not possible and whole (xy) images must be loaded prior to discarding data outside the specified x or y axis range. The shape of the stack can be accessed without loading data using the stack_shape attribute after creating the yield_stack object.
Parameters
dim_range
:dict
, optional-
dict, with keys corresponding to channel/dimension labels as above and slice objects as values. This allows you to only load part of the data along any of the dimensions, such as only loading two time steps or a particular z-range. An example use for only taking time steps up to 5 and z-slice 20 to 30 would be:
dim_range={'time':slice(None,5), 'z-axis':slice(20,30)}.
The default is {} which corresponds to the full file.
dtype
:(numpy) datatype
, optional- type to scale data to. The default is np.uint16.
remove_backsteps
:bool
- whether to discard the frames which were recorded on the backsteps downwards
Returns
zstack
:iterable/generator yielding numpy.ndarray
- list of time steps, with for each time step a z-stack as np.ndarray with the pixel values