Ejemplo n.º 1
0
 def test_02_03_clean_pipeline(self):
     pipeline = cpp.Pipeline()
     load_images = LoadImages()
     load_images.module_num = 1
     load_images.add_imagecb()
     load_images.images[0].channels[0].image_name.value = "Foo"
     load_images.images[1].channels[0].image_name.value = "Bar"
     pipeline.add_module(load_images)
     identify = IdentifyPrimaryObjects()
     identify.module_num = 2
     identify.x_name.value = "Foo"
     identify.y_name.value = "dizzy"
     pipeline.add_module(identify)
     saveimages = SaveImages()
     saveimages.module_num = 3
     saveimages.image_name.value = "Foo"
     pipeline.add_module(saveimages)
     measureobjectsizeshape = MeasureObjectSizeShape()
     measureobjectsizeshape.module_num = 4
     measureobjectsizeshape.object_groups[0].name.value = "dizzy"
     pipeline.add_module(measureobjectsizeshape)
     pipeline_txt = StringIO()
     pipeline.savetxt(pipeline_txt)
     module_names = json.dumps([SaveImages.module_name])
     message = [
         zmq.Frame(self.session_id),
         zmq.Frame(),
         zmq.Frame(CLEAN_PIPELINE_REQ_1),
         zmq.Frame(pipeline_txt.getvalue()),
         zmq.Frame(module_names)
     ]
     self.socket.send_multipart(message)
     message = self.socket.recv_multipart()
     self.assertEqual(message.pop(0), self.session_id)
     self.assertEqual(message.pop(0), "")
     self.assertEqual(message.pop(0), CLEAN_PIPELINE_REPLY_1)
     pipeline_txt = message.pop(0)
     pipeline = cpp.Pipeline()
     pipeline.loadtxt(StringIO(pipeline_txt))
     self.assertEqual(len(pipeline.modules()), 3)
     self.assertIsInstance(pipeline.modules()[0], LoadImages)
     self.assertIsInstance(pipeline.modules()[1], IdentifyPrimaryObjects)
     self.assertIsInstance(pipeline.modules()[2], MeasureObjectSizeShape)
Ejemplo n.º 2
0
 def test_02_03_clean_pipeline(self):
     pipeline = cpp.Pipeline()
     load_images = LoadImages()
     load_images.module_num = 1
     load_images.add_imagecb()
     load_images.images[0].channels[0].image_name.value = "Foo"
     load_images.images[1].channels[0].image_name.value = "Bar"
     pipeline.add_module(load_images)
     identify = IdentifyPrimaryObjects()
     identify.module_num = 2
     identify.image_name.value = "Foo"
     identify.object_name.value = "dizzy"
     pipeline.add_module(identify)
     saveimages = SaveImages()
     saveimages.module_num = 3
     saveimages.image_name.value = "Foo"
     pipeline.add_module(saveimages)
     measureobjectsizeshape = MeasureObjectSizeShape()
     measureobjectsizeshape.module_num = 4
     measureobjectsizeshape.object_groups[0].name.value = "dizzy"
     pipeline.add_module(measureobjectsizeshape)
     pipeline_txt = StringIO()
     pipeline.savetxt(pipeline_txt)
     module_names = json.dumps([SaveImages.module_name])
     message = [
         zmq.Frame(self.session_id),
         zmq.Frame(),
         zmq.Frame(CLEAN_PIPELINE_REQ_1),
         zmq.Frame(pipeline_txt.getvalue()),
         zmq.Frame(module_names),
     ]
     self.socket.send_multipart(message)
     message = self.socket.recv_multipart()
     self.assertEqual(message.pop(0), self.session_id)
     self.assertEqual(message.pop(0), "")
     self.assertEqual(message.pop(0), CLEAN_PIPELINE_REPLY_1)
     pipeline_txt = message.pop(0)
     pipeline = cpp.Pipeline()
     pipeline.loadtxt(StringIO(pipeline_txt))
     self.assertEqual(len(pipeline.modules()), 3)
     self.assertIsInstance(pipeline.modules()[0], LoadImages)
     self.assertIsInstance(pipeline.modules()[1], IdentifyPrimaryObjects)
     self.assertIsInstance(pipeline.modules()[2], MeasureObjectSizeShape)
Ejemplo n.º 3
0
    def test_03_03_run_missing_measurement(self):
        # Regression test of knime-bridge issue #6
        #
        # Missing measurement causes exception
        #
        pipeline = cpp.Pipeline()
        load_images = LoadImages()
        load_images.module_num = 1
        load_images.images[0].channels[0].image_name.value = "Foo"
        pipeline.add_module(load_images)
        identify = IdentifyPrimaryObjects()
        identify.module_num = 2
        identify.use_advanced.value = True
        identify.x_name.value = "Foo"
        identify.y_name.value = "dizzy"
        identify.threshold.threshold_scope.value = TS_GLOBAL
        identify.threshold.global_operation.value = TM_MANUAL
        identify.threshold.manual_threshold.value = .5
        identify.exclude_size.value = False
        pipeline.add_module(identify)

        flag_module = FlagImage()
        flag_module.module_num = 3
        flag = flag_module.flags[0]
        flag.wants_skip.value = True
        criterion = flag.measurement_settings[0]
        criterion.source_choice.value = S_IMAGE
        criterion.measurement.value = "Count_dizzy"
        criterion.wants_minimum.value = True
        criterion.minimum_value.value = 1000
        pipeline.add_module(flag_module)

        measureobjectsizeshape = MeasureObjectSizeShape()
        measureobjectsizeshape.module_num = 4
        measureobjectsizeshape.object_groups[0].name.value = "dizzy"
        pipeline.add_module(measureobjectsizeshape)

        pipeline_txt = StringIO()
        pipeline.savetxt(pipeline_txt)

        image = np.zeros((11, 17))
        image[2:-2, 2:-2] = 1

        image_metadata = [[
            "Foo",
            [["Y", image.shape[0], image.strides[0] / 8],
             ["X", image.shape[1], image.strides[1] / 8]]
        ]]
        message = [
            zmq.Frame(self.session_id),
            zmq.Frame(),
            zmq.Frame(RUN_REQ_1),
            zmq.Frame(pipeline_txt.getvalue()),
            zmq.Frame(json.dumps(image_metadata)),
            zmq.Frame(image)
        ]
        self.socket.send_multipart(message)
        response = self.socket.recv_multipart()
        self.assertEqual(response.pop(0), self.session_id)
        self.assertEqual(response.pop(0), "")
        self.assertEqual(response.pop(0), RUN_REPLY_1)
        metadata = json.loads(response.pop(0))
        data = response.pop(0)
        measurements = self.decode_measurements(metadata, data)
        self.assertEqual(measurements[cpmeas.IMAGE]["Count_dizzy"][0], 1)
        self.assertEqual(measurements["dizzy"]["Location_Center_Y"][0], 5)
        self.assertEqual(len(measurements["dizzy"]["AreaShape_Area"]), 0)
Ejemplo n.º 4
0
    def test_03_03_run_missing_measurement(self):
        # Regression test of knime-bridge issue #6
        #
        # Missing measurement causes exception
        #
        pipeline = cpp.Pipeline()
        load_images = LoadImages()
        load_images.module_num = 1
        load_images.images[0].channels[0].image_name.value = "Foo"
        pipeline.add_module(load_images)
        identify = IdentifyPrimaryObjects()
        identify.module_num = 2
        identify.use_advanced.value = True
        identify.x_name.value = "Foo"
        identify.y_name.value = "dizzy"
        identify.threshold.threshold_scope.value = TS_GLOBAL
        identify.threshold.global_operation.value = TM_MANUAL
        identify.threshold.manual_threshold.value = .5
        identify.exclude_size.value = False
        pipeline.add_module(identify)

        flag_module = FlagImage()
        flag_module.module_num = 3
        flag = flag_module.flags[0]
        flag.wants_skip.value = True
        criterion = flag.measurement_settings[0]
        criterion.source_choice.value = S_IMAGE
        criterion.measurement.value = "Count_dizzy"
        criterion.wants_minimum.value = True
        criterion.minimum_value.value = 1000
        pipeline.add_module(flag_module)

        measureobjectsizeshape = MeasureObjectSizeShape()
        measureobjectsizeshape.module_num = 4
        measureobjectsizeshape.object_groups[0].name.value = "dizzy"
        pipeline.add_module(measureobjectsizeshape)

        pipeline_txt = StringIO()
        pipeline.savetxt(pipeline_txt)

        image = np.zeros((11, 17))
        image[2:-2, 2:-2] = 1

        image_metadata = [
            ["Foo",
             [["Y", image.shape[0], image.strides[0] / 8],
              ["X", image.shape[1], image.strides[1] / 8]]]]
        message = [
            zmq.Frame(self.session_id),
            zmq.Frame(),
            zmq.Frame(RUN_REQ_1),
            zmq.Frame(pipeline_txt.getvalue()),
            zmq.Frame(json.dumps(image_metadata)),
            zmq.Frame(image)]
        self.socket.send_multipart(message)
        response = self.socket.recv_multipart()
        self.assertEqual(response.pop(0), self.session_id)
        self.assertEqual(response.pop(0), "")
        self.assertEqual(response.pop(0), RUN_REPLY_1)
        metadata = json.loads(response.pop(0))
        data = response.pop(0)
        measurements = self.decode_measurements(metadata, data)
        self.assertEqual(measurements[cpmeas.IMAGE]["Count_dizzy"][0], 1)
        self.assertEqual(measurements["dizzy"]["Location_Center_Y"][0], 5)
        self.assertEqual(len(measurements["dizzy"]["AreaShape_Area"]), 0)