def testDetectSquaresParallel(self): image = np.zeros((200, 250), dtype=np.uint8) image = draw_square_by_corner(image, 10, (10, 10), 85) image = draw_square_by_corner(image, 30, (10, 90), 85) image = draw_square_by_corner(image, 50, (70, 150), 190) image = draw_square_by_corner(image, 20, (130, 50), 190) image = draw_square_by_corner(image, 15, (50, 150), 255) builder = SSLWorkflowBuilder() builder.set_segmenter(BasicSemanticSegmenter()) builder.set_default_tile_builder() builder.set_tile_size(100, 90) builder.set_background_class(0) builder.set_n_jobs(2) workflow = builder.get() results = workflow.process(NumpyImage(image)) self.assertEqual(len(results), 5) idx = np.argsort([p.area for p in results.polygons]) self.assertEqual(100, int(results.polygons[idx[0]].area)) self.assertEqual(225, int(results.polygons[idx[1]].area)) self.assertEqual(400, int(results.polygons[idx[2]].area)) self.assertEqual(900, int(results.polygons[idx[3]].area)) self.assertEqual(2500, int(results.polygons[idx[4]].area)) self.assertEqual(85, results.labels[idx[0]]) self.assertEqual(255, results.labels[idx[1]]) self.assertEqual(190, results.labels[idx[2]]) self.assertEqual(85, results.labels[idx[3]]) self.assertEqual(190, results.labels[idx[4]])
def testSSLWorkflowBuilder(self): segmenter = DumbSegmenter() builder = SSLWorkflowBuilder() builder.set_n_jobs(5) builder.set_tile_size(512, 768) builder.set_overlap(3) builder.set_distance_tolerance(7) builder.set_background_class(5) builder.set_logger(StandardOutputLogger(Logger.DEBUG)) with self.assertRaises(MissingComponentException): builder.get() builder.set_segmenter(segmenter) builder.set_default_tile_builder() workflow = builder.get() self.assertIsInstance(workflow, SSLWorkflow) self.assertEqual(workflow._n_jobs, 5) self.assertEqual(workflow._tile_overlap, 3) self.assertEqual(workflow._tile_max_height, 512) self.assertEqual(workflow._tile_max_width, 768) self.assertIsInstance(workflow._tile_builder, DefaultTileBuilder) self.assertIsInstance(workflow.logger, StandardOutputLogger) self.assertEqual(workflow._locator._background, 5)
def testWorkflowChainBuilder(self): segmenter = DumbSegmenter() dispatcher = DumbDispatcher() classifier = DumbClassifier() builder = SLDCWorkflowBuilder() builder.set_segmenter(segmenter) builder.set_default_tile_builder() builder.set_one_shot_dispatcher(dispatcher, {"default": classifier}) workflow1 = builder.get() builder2 = SSLWorkflowBuilder() builder2.set_segmenter(segmenter) builder2.set_default_tile_builder() workflow2 = builder2.get() _filter = DefaultFilter() logger = StandardOutputLogger(Logger.DEBUG) chain_builder = WorkflowChainBuilder() chain_builder.set_logger(logger) with self.assertRaises(MissingComponentException): chain_builder.get() chain_builder.set_first_workflow(workflow1, label="first") chain_builder.add_executor(workflow2, label="second", filter=_filter, n_jobs=2, logger=logger) chain = chain_builder.get() self.assertIsInstance(chain, WorkflowChain) self.assertEqual(chain.logger, logger) self.assertEqual(chain._first_workflow, workflow1) self.assertEqual(len(chain._executors), 1) self.assertEqual(chain._executors[0]._workflow, workflow2) self.assertEqual(len(chain._labels), 2) self.assertEqual(tuple(chain._labels), ("first", "second")) self.assertEqual(len(chain._filters), 1) self.assertEqual(chain._filters[0], _filter)