summaryrefslogtreecommitdiff
path: root/silx/gui/data/NXdataWidgets.py
diff options
context:
space:
mode:
Diffstat (limited to 'silx/gui/data/NXdataWidgets.py')
-rw-r--r--silx/gui/data/NXdataWidgets.py68
1 files changed, 15 insertions, 53 deletions
diff --git a/silx/gui/data/NXdataWidgets.py b/silx/gui/data/NXdataWidgets.py
index e5a2550..c3aefd3 100644
--- a/silx/gui/data/NXdataWidgets.py
+++ b/silx/gui/data/NXdataWidgets.py
@@ -29,7 +29,6 @@ __license__ = "MIT"
__date__ = "12/11/2018"
import logging
-import numbers
import numpy
from silx.gui import qt
@@ -533,10 +532,10 @@ class ArrayComplexImagePlot(qt.QWidget):
self._plot = ComplexImageView(self)
if colormap is not None:
- for mode in (ComplexImageView.Mode.ABSOLUTE,
- ComplexImageView.Mode.SQUARE_AMPLITUDE,
- ComplexImageView.Mode.REAL,
- ComplexImageView.Mode.IMAGINARY):
+ for mode in (ComplexImageView.ComplexMode.ABSOLUTE,
+ ComplexImageView.ComplexMode.SQUARE_AMPLITUDE,
+ ComplexImageView.ComplexMode.REAL,
+ ComplexImageView.ComplexMode.IMAGINARY):
self._plot.setColormap(colormap, mode)
self._plot.getPlot().getIntensityHistogramAction().setVisible(True)
@@ -893,28 +892,9 @@ class ArrayVolumePlot(qt.QWidget):
self.__x_axis = None
self.__x_axis_name = None
- from silx.gui.plot3d.ScalarFieldView import ScalarFieldView
- from silx.gui.plot3d import SFViewParamTree
+ from ._VolumeWindow import VolumeWindow
- self._view = ScalarFieldView(self)
-
- def computeIsolevel(data):
- data = data[numpy.isfinite(data)]
- if len(data) == 0:
- return 0
- else:
- return numpy.mean(data) + numpy.std(data)
-
- self._view.addIsosurface(computeIsolevel, '#FF0000FF')
-
- # Create a parameter tree for the scalar field view
- options = SFViewParamTree.TreeView(self._view)
- options.setSfView(self._view)
-
- # Add the parameter tree to the main window in a dock widget
- dock = qt.QDockWidget()
- dock.setWidget(options)
- self._view.addDockWidget(qt.Qt.RightDockWidgetArea, dock)
+ self._view = VolumeWindow(self)
self._hline = qt.QFrame(self)
self._hline.setFrameStyle(qt.QFrame.HLine)
@@ -935,24 +915,10 @@ class ArrayVolumePlot(qt.QWidget):
def getVolumeView(self):
"""Returns the plot used for the display
- :rtype: ScalarFieldView
+ :rtype: SceneWindow
"""
return self._view
- def normalizeComplexData(self, data):
- """
- Converts a complex data array to its amplitude, if necessary.
- :param data: the data to normalize
- :return:
- """
- if hasattr(data, "dtype"):
- isComplex = numpy.issubdtype(data.dtype, numpy.complexfloating)
- else:
- isComplex = isinstance(data, numbers.Complex)
- if isComplex:
- data = numpy.absolute(data)
- return data
-
def setData(self, signal,
x_axis=None, y_axis=None, z_axis=None,
signal_name=None,
@@ -977,7 +943,6 @@ class ArrayVolumePlot(qt.QWidget):
:param zlabel: Label for Z axis
:param title: Graph title
"""
- signal = self.normalizeComplexData(signal)
if self.__selector_is_connected:
self._selector.selectionChanged.disconnect(self._updateVolume)
self.__selector_is_connected = False
@@ -994,9 +959,6 @@ class ArrayVolumePlot(qt.QWidget):
self._selector.setData(signal)
self._selector.setAxisNames(["Y", "X", "Z"])
- self._view.setAxesLabels(self.__x_axis_name or 'X',
- self.__y_axis_name or 'Y',
- self.__z_axis_name or 'Z')
self._updateVolume()
# the legend label shows the selection slice producing the volume
@@ -1017,7 +979,6 @@ class ArrayVolumePlot(qt.QWidget):
def _updateVolume(self):
"""Update displayed stack according to the current axes selector
data."""
- data = self._selector.selectedData()
x_axis = self.__x_axis
y_axis = self.__y_axis
z_axis = self.__z_axis
@@ -1049,15 +1010,16 @@ class ArrayVolumePlot(qt.QWidget):
legend = legend[:-2] + "]"
self._legend.setText("Displayed data: " + legend)
- self._view.setData(data, copy=False)
- self._view.setScale(*scale)
- self._view.setTranslation(*offset)
- self._view.setAxesLabels(self.__x_axis_name,
- self.__y_axis_name,
- self.__z_axis_name)
+ # Update SceneWidget
+ data = self._selector.selectedData()
+
+ volumeView = self.getVolumeView()
+ volumeView.setData(data, offset=offset, scale=scale)
+ volumeView.setAxesLabels(
+ self.__x_axis_name, self.__y_axis_name, self.__z_axis_name)
def clear(self):
old = self._selector.blockSignals(True)
self._selector.clear()
self._selector.blockSignals(old)
- self._view.setData(None)
+ self.getVolumeView().clear()