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)
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)
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()
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()
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)
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())