def testMaxROI(self): """Test Max ROI""" origin1 = numpy.array([1., 10.]) size1 = numpy.array([10., 10.]) origin2 = numpy.array([2., 3.]) size2 = numpy.array([10., 10.]) manager = roi.InteractiveRegionOfInterestManager(self.plot) self.roiTableWidget.setRegionOfInterestManager(manager) self.assertEqual(manager.getRois(), ()) changedListener = SignalListener() manager.sigRoiChanged.connect(changedListener) # Add two point item = roi_items.RectangleROI() item.setGeometry(origin=origin1, size=size1) manager.addRoi(item) item = roi_items.RectangleROI() item.setGeometry(origin=origin2, size=size2) manager.addRoi(item) self.qapp.processEvents() self.assertEqual(changedListener.callCount(), 2) self.assertEqual(len(manager.getRois()), 2) # Try to set max ROI to 1 while there is 2 ROIs with self.assertRaises(ValueError): manager.setMaxRois(1) manager.clear() self.assertEqual(len(manager.getRois()), 0) self.assertEqual(changedListener.callCount(), 3) # Set max limit to 1 manager.setMaxRois(1) # Add a point item = roi_items.RectangleROI() item.setGeometry(origin=origin1, size=size1) manager.addRoi(item) self.qapp.processEvents() self.assertEqual(changedListener.callCount(), 4) # Add a 2nd point while max ROI is 1 item = roi_items.RectangleROI() item.setGeometry(origin=origin1, size=size1) manager.addRoi(item) self.qapp.processEvents() self.assertEqual(changedListener.callCount(), 6) self.assertEqual(len(manager.getRois()), 1)
def testRectangle_isIn(self): origin = numpy.array([0, 0]) size = numpy.array([10, 20]) item = roi_items.RectangleROI() item.setGeometry(origin=origin, size=size) self.assertTrue(item.contains(position=(0, 0))) self.assertTrue(item.contains(position=(2, 14))) self.assertFalse(item.contains(position=(14, 12)))
def testRectangle_centerGeometry(self): origin = numpy.array([0, 0]) size = numpy.array([10, 20]) center = numpy.array([5, 10]) item = roi_items.RectangleROI() item.setGeometry(center=center, size=size) numpy.testing.assert_allclose(item.getOrigin(), origin) numpy.testing.assert_allclose(item.getSize(), size) numpy.testing.assert_allclose(item.getCenter(), center)
def testRectangle_setOriginGeometry(self): origin = numpy.array([0, 0]) size = numpy.array([10, 20]) item = roi_items.RectangleROI() item.setGeometry(origin=origin, size=size) newOrigin = numpy.array([10, 10]) item.setOrigin(newOrigin) expectedCenter = numpy.array([15, 20]) numpy.testing.assert_allclose(item.getOrigin(), newOrigin) numpy.testing.assert_allclose(item.getCenter(), expectedCenter) numpy.testing.assert_allclose(item.getSize(), size)
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()