ScalarFieldView: 3D volume scalar data viewer¶
This module provides a window to view a 3D scalar field.
It supports iso-surfaces, a cutting plane and the definition of a region of interest.
For sample code using ScalarFieldView, see silx.gui.plot3d sample code
ScalarFieldView¶
- 
class ScalarFieldView(parent=None)[source]¶
- Bases: - silx.gui.plot3d.Plot3DWindow.Plot3DWindow- Widget computing and displaying an iso-surface from a 3D scalar dataset. - Limitation: Currently, iso-surfaces are generated with higher values than the iso-level ‘inside’ the surface. - Parameters: - parent – See - QMainWindow- 
sigDataChanged¶
- Signal emitted when the scalar data field has changed. 
 - 
sigTransformChanged¶
- Signal emitted when the transformation has changed. - It is emitted by - setTranslation(),- setTransformMatrix(),- setScale().
 - 
sigSelectedRegionChanged¶
- Signal emitted when the selected region has changed. - This signal provides the new selected region. 
 - 
saveConfig(ioDevice)[source]¶
- Saves this view state. Only isosurfaces at the moment. Does not save the isosurface’s function. - Parameters: - ioDevice (qt.QIODevice) – A qt.QIODevice. 
 - 
loadConfig(ioDevice)[source]¶
- Loads this view state. See ScalarFieldView.saveView to know what is supported at the moment. - Parameters: - ioDevice (qt.QIODevice) – A qt.QIODevice. 
 - 
setInteractiveMode(mode)[source]¶
- Choose the current interaction. - Parameters: - mode (str) – Either rotate, pan or plane 
 - 
getInteractiveMode()[source]¶
- Returns the current interaction mode, see - setInteractiveMode()
 - 
setData(data, copy=True)[source]¶
- Set the 3D scalar data set to use for building the iso-surface. - Dataset order is zyx (i.e., first dimension is z). - Parameters: - data (3D numpy.ndarray of float32 with shape at least (2, 2, 2)) – scalar field from which to extract the iso-surface
- copy (bool) – True (default) to make a copy, False to avoid copy (DO NOT MODIFY data afterwards)
 
 - 
getData(copy=True)[source]¶
- Get the 3D scalar data currently used to build the iso-surface. - Parameters: - copy (bool) – True (default) to get a copy, False to get the internal data (DO NOT modify!) - Returns: - The data set (or None if not set) 
 - 
getDataRange()[source]¶
- Return the range of the data as a 3-tuple of values. - positive min is NaN if no data is positive. - Returns: - (min, positive min, max) or None. 
 - 
setOuterScale(sx=1.0, sy=1.0, sz=1.0)[source]¶
- Set the scale to apply to the whole scene including the axes. - This is useful when axis lengths in data space are really different. - Parameters: - sx (float) – Scale factor along the X axis
- sy (float) – Scale factor along the Y axis
- sz (float) – Scale factor along the Z axis
 
 - 
getOuterScale()[source]¶
- Returns the scales provided by - setOuterScale().- Return type: - numpy.ndarray 
 - 
setScale(sx=1.0, sy=1.0, sz=1.0)[source]¶
- Set the scale of the 3D scalar field (i.e., size of a voxel). - Parameters: - sx (float) – Scale factor along the X axis
- sy (float) – Scale factor along the Y axis
- sz (float) – Scale factor along the Z axis
 
 - 
getScale()[source]¶
- Returns the scales provided by - setScale()as a numpy.ndarray.
 - 
setTranslation(x=0.0, y=0.0, z=0.0)[source]¶
- Set the translation of the origin of the data array in data coordinates. - Parameters: - x (float) – Offset of the data origin on the X axis
- y (float) – Offset of the data origin on the Y axis
- z (float) – Offset of the data origin on the Z axis
 
 - 
getTranslation()[source]¶
- Returns the offset set by - setTranslation()as a numpy.ndarray.
 - 
setTransformMatrix(matrix3x3)[source]¶
- Set the transform matrix applied to the data. - Parameters: - matrix (numpy.ndarray) – 3x3 transform matrix 
 - 
getTransformMatrix()[source]¶
- Returns the transform matrix applied to the data. - See - setTransformMatrix().- Return type: - numpy.ndarray 
 - 
isBoundingBoxVisible()[source]¶
- Returns axes labels, grid and bounding box visibility. - Return type: - bool 
 - 
setBoundingBoxVisible(visible)[source]¶
- Set axes labels, grid and bounding box visibility. - Parameters: - visible (bool) – True to show axes, False to hide 
 - 
setAxesLabels(xlabel=None, ylabel=None, zlabel=None)[source]¶
- Set the text labels of the axes. - Parameters: - xlabel (str) – Label of the X axis, None to leave unchanged.
- ylabel (str) – Label of the Y axis, None to leave unchanged.
- zlabel (str) – Label of the Z axis, None to leave unchanged.
 
 - 
getAxesLabels()[source]¶
- Returns the text labels of the axes - >>> widget = ScalarFieldView() >>> widget.setAxesLabels(xlabel='X') - You can get the labels either as a 3-tuple: - >>> xlabel, ylabel, zlabel = widget.getAxesLabels() - Or as an object with methods getXLabel, getYLabel and getZLabel: - >>> labels = widget.getAxesLabels() >>> labels.getXLabel() ... 'X' - Returns: - object describing the labels 
 - 
setForegroundColor(color)[source]¶
- Set the foreground color. - Parameters: - color (QColor, str or array-like of 3 or 4 float in [0., 1.] or uint8) – RGB color: name, #RRGGBB or RGB values 
 - 
setHighlightColor(color)[source]¶
- Set hightlighted item color. - Parameters: - color (QColor, str or array-like of 3 or 4 float in [0., 1.] or uint8) – RGB color: name, #RRGGBB or RGB values 
 - 
getCutPlanes()[source]¶
- Return an iterable of all cut planes of the view. - This includes hidden cut planes. - For now, there is always one cut plane. 
 - 
setSelectedRegion(zrange=None, yrange=None, xrange_=None)[source]¶
- Set the 3D selected region aligned with the axes. - Provided range are array indices range. The provided ranges are clipped to the data. If a range is None, the range of the array on this dimension is used. - Parameters: - zrange – (zmin, zmax) range of the selection
- yrange – (ymin, ymax) range of the selection
- xrange – (xmin, xmax) range of the selection
 
 - 
sigIsosurfaceAdded¶
- Signal emitted when a new iso-surface is added to the view. - The newly added iso-surface is provided by this signal 
 - 
sigIsosurfaceRemoved¶
- Signal emitted when an iso-surface is removed from the view - The removed iso-surface is provided by this signal. 
 - 
addIsosurface(level, color)[source]¶
- Add an iso-surface to the view. - Parameters: - level (float or callable) – The value at which to build the iso-surface or a callable (e.g., a function) taking a 3D numpy.ndarray as input and returning a float. Example: numpy.mean(data) + numpy.std(data)
- color (str or array-like of 4 float in [0., 1.]) – RGBA color of the isosurface
 - Returns: - Isosurface object describing this isosurface 
 
- 
Helper classes¶
Those classes are used by ScalarFieldView.
CutPlane¶
- 
class CutPlane(sfView)[source]¶
- Bases: - silx.gui.qt._qt.QObject- Class representing a cutting plane - Parameters: - sfView (ScalarFieldView) – Widget in which the cut plane is applied. - 
sigVisibilityChanged¶
- Signal emitted when the cut visibility has changed. - This signal provides the new visibility status. 
 - 
sigDataChanged¶
- Signal emitted when the data this plane is cutting has changed. 
 - 
sigPlaneChanged¶
- Signal emitted when the cut plane has moved 
 - 
sigColormapChanged¶
- Signal emitted when the colormap has changed - This signal provides the new colormap. 
 - 
sigTransparencyChanged¶
- Signal emitted when the transparency of the plane has changed. - This signal is emitted when calling - setDisplayValuesBelowMin().
 - 
sigInterpolationChanged¶
- Signal emitted when the cut plane interpolation has changed - This signal provides the new interpolation mode. 
 - 
getNormal(coordinates='array')[source]¶
- Returns the normal of the plane (as a unit vector) - Parameters: - coordinates (str) – The coordinate system to use: Either ‘scene’ or ‘array’ (default) - Returns: - Normal (nx, ny, nz), vector is 0 if no plane is defined - Return type: - numpy.ndarray - Raises: - ValueError – If coordinates is not correct 
 - 
setNormal(normal, coordinates='array')[source]¶
- Set the normal of the plane. - Parameters: - normal – 3-tuple of float: nx, ny, nz
- coordinates (str) – The coordinate system to use: Either ‘scene’ or ‘array’ (default)
 - Raises: - ValueError – If coordinates is not correct 
 - 
getPoint(coordinates='array')[source]¶
- Returns a point on the plane. - Parameters: - coordinates (str) – The coordinate system to use: Either ‘scene’ or ‘array’ (default) - Returns: - (x, y, z) - Return type: - numpy.ndarray - Raises: - ValueError – If coordinates is not correct 
 - 
setPoint(point, constraint=True, coordinates='array')[source]¶
- Set a point contained in the plane. - Warning: The plane might not intersect the bounding box of the data. - Parameters: - point (3-tuple of float) – (x, y, z) position
- constraint (bool) – True (default) to make sure the plane intersect data bounding box, False to set the plane without any constraint.
 - Raises: - ValueError – If coordinates is not correc 
 - 
getParameters(coordinates='array')[source]¶
- Returns the plane equation parameters: a*x + b*y + c*z + d = 0 - Parameters: - coordinates (str) – The coordinate system to use: Either ‘scene’ or ‘array’ (default) - Returns: - Plane equation parameters: (a, b, c, d) - Return type: - numpy.ndarray - Raises: - ValueError – If coordinates is not correct 
 - 
setParameters(parameters, constraint=True, coordinates='array')[source]¶
- Set the plane equation parameters: a*x + b*y + c*z + d = 0 - Warning: The plane might not intersect the bounding box of the data. - Parameters: - parameters (4-tuple of float) – (a, b, c, d) plane equation parameters.
- constraint (bool) – True (default) to make sure the plane intersect data bounding box, False to set the plane without any constraint.
 - Raises: - ValueError – If coordinates is not correc 
 - 
setVisible(visible)[source]¶
- Set the visibility of the plane - Parameters: - visible (bool) – True to make plane visible 
 - 
setStrokeColor(color)[source]¶
- Set the color of the plane border. - Parameters: - color (QColor, str or array-like of 3 or 4 float in [0., 1.] or uint8) – RGB color: name, #RRGGBB or RGB values 
 - 
getImageData()[source]¶
- Returns the data and information corresponding to the cut plane. - The returned data is not interpolated, it is a slice of the 3D scalar field. - Image data axes are so that plane normal is towards the point of view. - Returns: - An object containing the 2D data slice and information 
 - 
getInterpolation()[source]¶
- Returns the interpolation used to display to cut plane. - Returns: - ‘nearest’ or ‘linear’ - Return type: - str 
 - 
setInterpolation(interpolation)[source]¶
- Set the interpolation used to display to cut plane - The default interpolation is ‘linear’ - Parameters: - interpolation (str) – ‘nearest’ or ‘linear’ 
 - 
getDisplayValuesBelowMin()[source]¶
- Return whether values <= colormap min are displayed or not. - Return type: - bool 
 - 
setDisplayValuesBelowMin(display)[source]¶
- Set whether to display values <= colormap min. - Parameters: - display (bool) – True to show values below min, False to discard them 
 - 
getColormap()[source]¶
- Returns the colormap set by - setColormap().- Returns: - The colormap - Return type: - Colormap 
 - 
setColormap(name='gray', norm=None, vmin=None, vmax=None)[source]¶
- Set the colormap to use. - By either providing a - Colormapobject or its name, normalization and range.- Parameters: - name (str or Colormap) – Name of the colormap in ‘gray’, ‘reversed gray’, ‘temperature’, ‘red’, ‘green’, ‘blue’. Or Colormap object.
- norm (str) – Colormap mapping: ‘linear’ or ‘log’.
- vmin (float) – The minimum value of the range or None for autoscale
- vmax (float) – The maximum value of the range or None for autoscale
 
 
- 
IsoSurface¶
- 
class Isosurface(parent)[source]¶
- Bases: - silx.gui.qt._qt.QObject- Class representing an iso-surface - Parameters: - parent – The View widget this iso-surface belongs to - 
sigLevelChanged¶
- Signal emitted when the iso-surface level has changed. - This signal provides the new level value (might be nan). 
 - 
sigColorChanged¶
- Signal emitted when the iso-surface color has changed 
 - 
sigVisibilityChanged¶
- Signal emitted when the iso-surface visibility has changed. - This signal provides the new visibility status. 
 - 
setVisible(visible)[source]¶
- Set the visibility of the iso-surface in the view. - Parameters: - visible (bool) – True to show the iso-surface, False to hide 
 - 
setLevel(level)[source]¶
- Set the value at which to build the iso-surface. - Setting this value reset auto-level function - Parameters: - level (float) – The value at which to build the iso-surface 
 - 
setAutoLevelFunction(autoLevel)[source]¶
- Set the function used to compute the iso-level. - WARNING: The function might get called in a thread. - Parameters: - autoLevel (callable) – A function taking a 3D numpy.ndarray of float32 and returning a float used as iso-level. Example: numpy.mean(data) + numpy.std(data) 
 
- 
SelectedRegion¶
- 
class SelectedRegion(arrayRange, dataBBox, translation=(0.0, 0.0, 0.0), scale=(1.0, 1.0, 1.0))[source]¶
- Bases: - object- Selection of a 3D region aligned with the axis. - Parameters: - arrayRange – Range of the selection in the array ((zmin, zmax), (ymin, ymax), (xmin, xmax))
- dataBBox – Bounding box of the selection in data coordinates ((xmin, xmax), (ymin, ymax), (zmin, zmax))
- translation – Offset from array to data coordinates (ox, oy, oz)
- scale – Scale from array to data coordinates (sx, sy, sz)
 - 
getArrayRange()[source]¶
- Returns array ranges of the selection: 3x2 array of int - Returns: - A numpy array with ((zmin, zmax), (ymin, ymax), (xmin, xmax)) - Return type: - numpy.ndarray 
 - 
getArraySlices()[source]¶
- Slices corresponding to the selected range in the array - Returns: - A numpy array with (zslice, yslice, zslice) - Return type: - numpy.ndarray 
 - 
getDataRange()[source]¶
- Range in the data coordinates of the selection: 3x2 array of float - When the transform matrix is not the identity matrix (e.g., rotation, skew) the returned range is the one of the selected region bounding box in data coordinates. - Returns: - A numpy array with ((xmin, xmax), (ymin, ymax), (zmin, zmax)) - Return type: - numpy.ndarray 
 
