summaryrefslogtreecommitdiff
path: root/examples/plotROIStats.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/plotROIStats.py')
-rw-r--r--examples/plotROIStats.py122
1 files changed, 70 insertions, 52 deletions
diff --git a/examples/plotROIStats.py b/examples/plotROIStats.py
index 53a45dc..36f23c3 100644
--- a/examples/plotROIStats.py
+++ b/examples/plotROIStats.py
@@ -75,7 +75,7 @@ class UpdateThread(threading.Thread):
self.plot2d.addImage,
numpy.random.random(10000).reshape(100, 100),
resetzoom=False,
- legend=random.choice(('img1', 'img2'))
+ legend=random.choice(("img1", "img2")),
)
def stop(self):
@@ -88,6 +88,7 @@ class _RoiStatsWidget(qt.QMainWindow):
"""
Window used to associate ROIStatsWidget and UpdateModeWidget
"""
+
def __init__(self, parent=None, plot=None, mode=None):
assert plot is not None
qt.QMainWindow.__init__(self, parent)
@@ -98,15 +99,16 @@ class _RoiStatsWidget(qt.QMainWindow):
self._updateModeControl = UpdateModeWidget(parent=self)
self._docker = qt.QDockWidget(parent=self)
self._docker.setWidget(self._updateModeControl)
- self.addDockWidget(qt.Qt.TopDockWidgetArea,
- self._docker)
+ self.addDockWidget(qt.Qt.TopDockWidgetArea, self._docker)
self.setWindowFlags(qt.Qt.Widget)
# connect signal / slot
self._updateModeControl.sigUpdateModeChanged.connect(
- self._roiStatsWindow._setUpdateMode)
- callback = functools.partial(self._roiStatsWindow._updateAllStats,
- is_request=True)
+ self._roiStatsWindow._setUpdateMode
+ )
+ callback = functools.partial(
+ self._roiStatsWindow._updateAllStats, is_request=True
+ )
self._updateModeControl.sigUpdateRequested.connect(callback)
# expose API
@@ -117,13 +119,14 @@ class _RoiStatsWidget(qt.QMainWindow):
self.setUpdateMode = self._updateModeControl.setUpdateMode
# setup
- self._updateModeControl.setUpdateMode('auto')
+ self._updateModeControl.setUpdateMode("auto")
class _RoiStatsDisplayExWindow(qt.QMainWindow):
"""
Simple window to group the different statistics actors
"""
+
def __init__(self, parent=None, mode=None):
qt.QMainWindow.__init__(self, parent)
self.plot = Plot2D()
@@ -144,7 +147,7 @@ class _RoiStatsDisplayExWindow(qt.QMainWindow):
# tabWidget for displaying the rois
self._roisTabWidget = qt.QTabWidget(parent=self)
- if hasattr(self._roisTabWidget, 'setTabBarAutoHide'):
+ if hasattr(self._roisTabWidget, "setTabBarAutoHide"):
self._roisTabWidget.setTabBarAutoHide(True)
# widget for displaying stats results and update mode
@@ -153,17 +156,14 @@ class _RoiStatsDisplayExWindow(qt.QMainWindow):
# create Dock widgets
self._roisTabWidgetDockWidget = qt.QDockWidget(parent=self)
self._roisTabWidgetDockWidget.setWidget(self._roisTabWidget)
- self.addDockWidget(qt.Qt.RightDockWidgetArea,
- self._roisTabWidgetDockWidget)
+ self.addDockWidget(qt.Qt.RightDockWidgetArea, self._roisTabWidgetDockWidget)
# create Dock widgets
self._roiStatsWindowDockWidget = qt.QDockWidget(parent=self)
self._roiStatsWindowDockWidget.setWidget(self._statsWidget)
# move the docker contain in the parent widget
- self.addDockWidget(qt.Qt.RightDockWidgetArea,
- self._statsWidget._docker)
- self.addDockWidget(qt.Qt.RightDockWidgetArea,
- self._roiStatsWindowDockWidget)
+ self.addDockWidget(qt.Qt.RightDockWidgetArea, self._statsWidget._docker)
+ self.addDockWidget(qt.Qt.RightDockWidgetArea, self._roiStatsWindowDockWidget)
# expose API
self.setUpdateMode = self._statsWidget.setUpdateMode
@@ -181,9 +181,9 @@ class _RoiStatsDisplayExWindow(qt.QMainWindow):
# update manage tab visibility
if len(rois2D) > 0:
- self._roisTabWidget.addTab(self._2DRoiWidget, '2D roi(s)')
+ self._roisTabWidget.addTab(self._2DRoiWidget, "2D roi(s)")
if len(rois1D) > 0:
- self._roisTabWidget.addTab(self._curveRoiWidget, '1D roi(s)')
+ self._roisTabWidget.addTab(self._curveRoiWidget, "1D roi(s)")
def setStats(self, stats):
self._statsWidget.setStats(stats=stats)
@@ -194,15 +194,15 @@ class _RoiStatsDisplayExWindow(qt.QMainWindow):
# define stats to display
STATS = [
- ('sum', numpy.sum),
- ('mean', numpy.mean),
+ ("sum", numpy.sum),
+ ("mean", numpy.mean),
]
def get_1D_rois():
"""return some ROI instance"""
- roi1D = ROI(name='range1', fromdata=0, todata=4, type_='energy')
- roi2D = ROI(name='range2', fromdata=-2, todata=6, type_='energy')
+ roi1D = ROI(name="range1", fromdata=0, todata=4, type_="energy")
+ roi2D = ROI(name="range2", fromdata=-2, todata=6, type_="energy")
return roi1D, roi2D
@@ -210,13 +210,13 @@ def get_2D_rois():
"""return some RectangleROI instance"""
rectangle_roi = RectangleROI()
rectangle_roi.setGeometry(origin=(0, 100), size=(20, 20))
- rectangle_roi.setName('Initial ROI')
+ rectangle_roi.setName("Initial ROI")
polygon_roi = PolygonROI()
polygon_points = numpy.array([(0, 10), (10, 20), (45, 30), (35, 0)])
polygon_roi.setPoints(polygon_points)
- polygon_roi.setName('polygon ROI')
+ polygon_roi.setName("polygon ROI")
arc_roi = ArcROI()
- arc_roi.setName('arc ROI')
+ arc_roi.setName("arc ROI")
arc_roi.setFirstShapePoints(numpy.array([[50, 10], [80, 120]]))
arc_roi.setGeometry(*arc_roi.getGeometry())
return rectangle_roi, polygon_roi, arc_roi
@@ -230,18 +230,23 @@ def example_curve(mode):
window.setRois(rois1D=(roi_2, roi_1))
# define some image and curve
- window.plot.addCurve(x=numpy.linspace(0, 10, 56), y=numpy.arange(56),
- legend='curve1', color='blue')
- window.plot.addCurve(x=numpy.linspace(0, 10, 56), y=numpy.random.random_sample(size=56),
- legend='curve2', color='red')
+ window.plot.addCurve(
+ x=numpy.linspace(0, 10, 56), y=numpy.arange(56), legend="curve1", color="blue"
+ )
+ window.plot.addCurve(
+ x=numpy.linspace(0, 10, 56),
+ y=numpy.random.random_sample(size=56),
+ legend="curve2",
+ color="red",
+ )
window.setStats(STATS)
# add some couple (plotItem, roi) to be displayed by default
- curve1_item = window.plot.getCurve('curve1')
+ curve1_item = window.plot.getCurve("curve1")
window.addItem(item=curve1_item, roi=roi_1)
window.addItem(item=curve1_item, roi=roi_2)
- curve2_item = window.plot.getCurve('curve2')
+ curve2_item = window.plot.getCurve("curve2")
window.addItem(item=curve2_item, roi=roi_2)
window.setUpdateMode(mode)
@@ -262,14 +267,15 @@ def example_image(mode):
updateThread.start() # Start updating the plot
# define some image and curve
- window.plot.addImage(numpy.arange(10000).reshape(100, 100), legend='img1')
- window.plot.addImage(numpy.random.random(10000).reshape(100, 100), legend='img2',
- origin=(0, 100))
+ window.plot.addImage(numpy.arange(10000).reshape(100, 100), legend="img1")
+ window.plot.addImage(
+ numpy.random.random(10000).reshape(100, 100), legend="img2", origin=(0, 100)
+ )
window.setStats(STATS)
# add some couple (plotItem, roi) to be displayed by default
- img1_item = window.plot.getImage('img1')
- img2_item = window.plot.getImage('img2')
+ img1_item = window.plot.getImage("img1")
+ img2_item = window.plot.getImage("img2")
window.addItem(item=img2_item, roi=rectangle_roi)
window.addItem(item=img1_item, roi=polygon_roi)
window.addItem(item=img1_item, roi=arc_roi)
@@ -289,21 +295,28 @@ def example_curve_image(mode):
rectangle_roi, polygon_roi, arc_roi = get_2D_rois()
window = _RoiStatsDisplayExWindow()
- window.setRois(rois1D=(roi1D_1, roi1D_2,),
- rois2D=(rectangle_roi, polygon_roi, arc_roi))
+ window.setRois(
+ rois1D=(
+ roi1D_1,
+ roi1D_2,
+ ),
+ rois2D=(rectangle_roi, polygon_roi, arc_roi),
+ )
# define some image and curve
- window.plot.addImage(numpy.arange(10000).reshape(100, 100), legend='img1')
- window.plot.addImage(numpy.random.random(10000).reshape(100, 100),
- legend='img2', origin=(0, 100))
- window.plot.addCurve(x=numpy.linspace(0, 10, 56), y=numpy.arange(56),
- legend='curve1')
+ window.plot.addImage(numpy.arange(10000).reshape(100, 100), legend="img1")
+ window.plot.addImage(
+ numpy.random.random(10000).reshape(100, 100), legend="img2", origin=(0, 100)
+ )
+ window.plot.addCurve(
+ x=numpy.linspace(0, 10, 56), y=numpy.arange(56), legend="curve1"
+ )
window.setStats(STATS)
# add some couple (plotItem, roi) to be displayed by default
- img_item = window.plot.getImage('img2')
+ img_item = window.plot.getImage("img2")
window.addItem(item=img_item, roi=rectangle_roi)
- curve_item = window.plot.getCurve('curve1')
+ curve_item = window.plot.getCurve("curve1")
window.addItem(item=curve_item, roi=roi1D_1)
window.setUpdateMode(mode)
@@ -319,22 +332,27 @@ def example_curve_image(mode):
def main(argv):
parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument("--items", dest="items", default='curves+images',
- help="items type(s), can be curve, image, curves+images")
- parser.add_argument('--mode', dest='mode', default='auto',
- help='valid modes are `auto` or `manual`')
+ parser.add_argument(
+ "--items",
+ dest="items",
+ default="curves+images",
+ help="items type(s), can be curve, image, curves+images",
+ )
+ parser.add_argument(
+ "--mode", dest="mode", default="auto", help="valid modes are `auto` or `manual`"
+ )
options = parser.parse_args(argv[1:])
items = options.items.lower()
- if items == 'curves':
+ if items == "curves":
example_curve(mode=options.mode)
- elif items == 'images':
+ elif items == "images":
example_image(mode=options.mode)
- elif items == 'curves+images':
+ elif items == "curves+images":
example_curve_image(mode=options.mode)
else:
- raise ValueError('invalid entry for item type')
+ raise ValueError("invalid entry for item type")
-if __name__ == '__main__':
+if __name__ == "__main__":
main(sys.argv)