示例#1
0
 def testArc_special_donut(self):
     item = roi_items.ArcROI()
     center = numpy.array([10, 20])
     innerRadius, outerRadius, startAngle, endAngle = 1, 100, numpy.pi, 3 * numpy.pi
     item.setGeometry(center, innerRadius, outerRadius, startAngle, endAngle)
     numpy.testing.assert_allclose(item.getCenter(), center)
     self.assertAlmostEqual(item.getInnerRadius(), innerRadius)
     self.assertAlmostEqual(item.getOuterRadius(), outerRadius)
     self.assertAlmostEqual(item.getStartAngle(), item.getEndAngle() - numpy.pi * 2.0)
     self.assertAlmostEqual(item.isClosed(), True)
示例#2
0
 def testArc_anticlockwiseGeometry(self):
     """Test that we can use getGeometry as input to setGeometry"""
     item = roi_items.ArcROI()
     center = numpy.array([10, 20])
     innerRadius, outerRadius, startAngle, endAngle = 1, 100, numpy.pi * 0.5, -numpy.pi * 0.5
     item.setGeometry(center, innerRadius, outerRadius, startAngle, endAngle)
     numpy.testing.assert_allclose(item.getCenter(), center)
     self.assertAlmostEqual(item.getInnerRadius(), innerRadius)
     self.assertAlmostEqual(item.getOuterRadius(), outerRadius)
     self.assertAlmostEqual(item.getStartAngle(), startAngle)
     self.assertAlmostEqual(item.getEndAngle(), endAngle)
     self.assertAlmostEqual(item.isClosed(), False)
示例#3
0
    def testArcRoiSwitchMode(self):
        """Make sure we can switch mode by clicking on the ROI"""
        xlimit = self.plot.getXAxis().getLimits()
        ylimit = self.plot.getYAxis().getLimits()
        points = numpy.array([xlimit, ylimit]).T
        center = numpy.mean(points, axis=0)
        size = numpy.abs(points[1] - points[0])

        # Create the line
        manager = roi.RegionOfInterestManager(self.plot)
        item = roi_items.ArcROI()
        item.setGeometry(center, size[1] / 10, size[1] / 2, 0, 3)
        item.setEditable(True)
        item.setSelectable(True)
        manager.addRoi(item)
        self.qapp.processEvents()

        # Initial state
        self.assertIs(item.getInteractionMode(),
                      roi_items.ArcROI.ThreePointMode)
        self.qWait(500)

        # Click on the center
        widget = self.plot.getWidgetHandle()
        mx, my = self.plot.dataToPixel(*center)

        # Select the ROI
        self.mouseMove(widget, pos=(mx, my))
        self.mouseClick(widget, qt.Qt.LeftButton, pos=(mx, my))
        self.qWait(500)
        self.assertIs(item.getInteractionMode(),
                      roi_items.ArcROI.ThreePointMode)

        # Change the mode
        self.mouseMove(widget, pos=(mx, my))
        self.mouseClick(widget, qt.Qt.LeftButton, pos=(mx, my))
        self.qWait(500)
        self.assertIs(item.getInteractionMode(), roi_items.ArcROI.PolarMode)

        manager.clear()
        self.qapp.processEvents()
示例#4
0
    def testRoiDisplay(self):
        rois = []

        # Line
        item = roi_items.LineROI()
        startPoint = numpy.array([1, 2])
        endPoint = numpy.array([3, 4])
        item.setEndPoints(startPoint, endPoint)
        rois.append(item)
        # Horizontal line
        item = roi_items.HorizontalLineROI()
        item.setPosition(15)
        rois.append(item)
        # Vertical line
        item = roi_items.VerticalLineROI()
        item.setPosition(15)
        rois.append(item)
        # Point
        item = roi_items.PointROI()
        point = numpy.array([1, 2])
        item.setPosition(point)
        rois.append(item)
        # Rectangle
        item = roi_items.RectangleROI()
        origin = numpy.array([0, 0])
        size = numpy.array([10, 20])
        item.setGeometry(origin=origin, size=size)
        rois.append(item)
        # Polygon
        item = roi_items.PolygonROI()
        points = numpy.array([[10, 10], [12, 10], [50, 1]])
        item.setPoints(points)
        rois.append(item)
        # Degenerated polygon: No points
        item = roi_items.PolygonROI()
        points = numpy.empty((0, 2))
        item.setPoints(points)
        rois.append(item)
        # Degenerated polygon: A single point
        item = roi_items.PolygonROI()
        points = numpy.array([[5, 10]])
        item.setPoints(points)
        rois.append(item)
        # Degenerated arc: it's a point
        item = roi_items.ArcROI()
        center = numpy.array([10, 20])
        innerRadius, outerRadius, startAngle, endAngle = 0, 0, 0, 0
        item.setGeometry(center, innerRadius, outerRadius, startAngle,
                         endAngle)
        rois.append(item)
        # Degenerated arc: it's a line
        item = roi_items.ArcROI()
        center = numpy.array([10, 20])
        innerRadius, outerRadius, startAngle, endAngle = 0, 100, numpy.pi, numpy.pi
        item.setGeometry(center, innerRadius, outerRadius, startAngle,
                         endAngle)
        rois.append(item)
        # Special arc: it's a donut
        item = roi_items.ArcROI()
        center = numpy.array([10, 20])
        innerRadius, outerRadius, startAngle, endAngle = 1, 100, numpy.pi, 3 * numpy.pi
        item.setGeometry(center, innerRadius, outerRadius, startAngle,
                         endAngle)
        rois.append(item)
        # Arc
        item = roi_items.ArcROI()
        center = numpy.array([10, 20])
        innerRadius, outerRadius, startAngle, endAngle = 1, 100, numpy.pi * 0.5, numpy.pi
        item.setGeometry(center, innerRadius, outerRadius, startAngle,
                         endAngle)
        rois.append(item)
        # Horizontal Range
        item = roi_items.HorizontalRangeROI()
        item.setRange(-1, 3)
        rois.append(item)

        manager = roi.RegionOfInterestManager(self.plot)
        self.roiTableWidget.setRegionOfInterestManager(manager)
        for item in rois:
            with self.subTest(roi=str(item)):
                manager.addRoi(item)
                self.qapp.processEvents()
                item.setEditable(True)
                self.qapp.processEvents()
                item.setEditable(False)
                self.qapp.processEvents()
                manager.removeRoi(item)
                self.qapp.processEvents()
示例#5
0
 def testArc_degenerated_line(self):
     item = roi_items.ArcROI()
     center = numpy.array([10, 20])
     innerRadius, outerRadius, startAngle, endAngle = 0, 100, numpy.pi, numpy.pi
     item.setGeometry(center, innerRadius, outerRadius, startAngle,
                      endAngle)
示例#6
0
 def testArc_getToSetGeometry(self):
     """Test that we can use getGeometry as input to setGeometry"""
     item = roi_items.ArcROI()
     item.setFirstShapePoints(numpy.array([[5, 10], [50, 100]]))
     item.setGeometry(*item.getGeometry())