def make_workspace(self, image1, image2, objects=None):
     '''Make a workspace for testing Threshold'''
     module = M.MeasureColocalization()
     image_set_list = cpi.ImageSetList()
     image_set = image_set_list.get_image_set(0)
     for image_group, name, image in zip(module.image_groups,
                                         (IMAGE1_NAME, IMAGE2_NAME),
                                         (image1, image2)):
         image_group.image_name.value = name
         image_set.add(name, image)
     object_set = cpo.ObjectSet()
     if objects is None:
         module.images_or_objects.value = M.M_IMAGES
     else:
         module.images_or_objects.value = M.M_IMAGES_AND_OBJECTS
         module.object_groups[0].object_name.value = OBJECTS_NAME
         object_set.add_objects(objects, OBJECTS_NAME)
     pipeline = cpp.Pipeline()
     workspace = cpw.Workspace(pipeline,
                               module,
                               image_set,
                               object_set,
                               cpmeas.Measurements(),
                               image_set_list)
     return workspace, module
    def test_02_04_03_get_measurement_columns_both(self):
        module = M.MeasureColocalization()
        module.image_groups[0].image_name.value = IMAGE1_NAME
        module.image_groups[1].image_name.value = IMAGE2_NAME
        module.object_groups[0].object_name.value = OBJECTS_NAME
        module.images_or_objects.value = M.M_IMAGES_AND_OBJECTS
        columns = module.get_measurement_columns(None)
        expected = [
                       (cpmeas.IMAGE,
                        ftr % (IMAGE1_NAME, IMAGE2_NAME),
                        cpmeas.COLTYPE_FLOAT)
                       for ftr in self.all_image_measurement_formats] + [
                       (cpmeas.IMAGE,
                        ftr % (IMAGE2_NAME, IMAGE1_NAME),
                        cpmeas.COLTYPE_FLOAT)
                       for ftr in self.asymmetrical_measurement_formats] + [
                       (OBJECTS_NAME,
                        ftr % (IMAGE1_NAME, IMAGE2_NAME),
                        cpmeas.COLTYPE_FLOAT)
                       for ftr in self.all_object_measurement_formats] + [
                       (OBJECTS_NAME,
                        ftr % (IMAGE2_NAME, IMAGE1_NAME),
                        cpmeas.COLTYPE_FLOAT)
                       for ftr in self.asymmetrical_measurement_formats]

        self.assertEqual(len(columns), len(expected))
        for column in columns:
            self.assertTrue(any([all([cf == ef for cf, ef in zip(column, ex)])
                                 for ex in expected]))
    def test_02_02_get_measurements(self):
        '''Test the get_measurements function for some different cases'''
        module = M.MeasureColocalization()
        module.image_groups[0].image_name.value = IMAGE1_NAME
        module.image_groups[1].image_name.value = IMAGE2_NAME
        module.object_groups[0].object_name.value = OBJECTS_NAME
        module.images_or_objects.value = M.M_IMAGES

        def meas(name):
            ans = list(module.get_measurements(None, name, "Correlation"))
            ans.sort()
            if name == "Image":
                mf = self.all_image_measurement_formats
            else:
                mf = self.all_object_measurement_formats
            expected = sorted([_.split("_")[1] for _ in mf])
            return ans == expected

        self.assertTrue(meas("Image"))
        self.assertFalse(meas(OBJECTS_NAME))
        module.images_or_objects.value = M.M_OBJECTS
        self.assertFalse(meas("Image"))
        self.assertTrue(meas(OBJECTS_NAME))
        module.images_or_objects.value = M.M_IMAGES_AND_OBJECTS
        self.assertTrue(meas("Image"))
        self.assertTrue(meas(OBJECTS_NAME))
 def test_02_03_get_measurement_images(self):
     '''Test the get_measurment_images function for some different cases'''
     for iocase, names in (
             (M.M_IMAGES, [cpmeas.IMAGE]),
             (M.M_OBJECTS, [OBJECTS_NAME]),
             (M.M_IMAGES_AND_OBJECTS, [cpmeas.IMAGE, OBJECTS_NAME])):
         module = M.MeasureColocalization()
         module.image_groups[0].image_name.value = IMAGE1_NAME
         module.image_groups[1].image_name.value = IMAGE2_NAME
         module.object_groups[0].object_name.value = OBJECTS_NAME
         module.images_or_objects.value = iocase
         for name, mfs in ((cpmeas.IMAGE, self.all_image_measurement_formats),
                           (OBJECTS_NAME, self.all_object_measurement_formats)):
             if name not in names:
                 continue
             for mf in mfs:
                 ftr = mf.split("_")[1]
                 ans = module.get_measurement_images(
                         None, name, "Correlation", ftr)
                 expected = ["%s_%s" % (i1, i2) for i1, i2 in
                             ((IMAGE1_NAME, IMAGE2_NAME),
                              (IMAGE2_NAME, IMAGE1_NAME))]
                 if mf in self.asymmetrical_measurement_formats:
                     self.assertTrue(all([e in ans for e in expected]))
                 else:
                     self.assertTrue(any([e in ans for e in expected]))
    def test_02_01_get_categories(self):
        '''Test the get_categories function for some different cases'''
        module = M.MeasureColocalization()
        module.image_groups[0].image_name.value = IMAGE1_NAME
        module.image_groups[1].image_name.value = IMAGE2_NAME
        module.object_groups[0].object_name.value = OBJECTS_NAME
        module.images_or_objects.value = M.M_IMAGES

        def cat(name):
            return module.get_categories(None, name) == ["Correlation"]

        self.assertTrue(cat("Image"))
        self.assertFalse(cat(OBJECTS_NAME))
        module.images_or_objects.value = M.M_OBJECTS
        self.assertFalse(cat("Image"))
        self.assertTrue(cat(OBJECTS_NAME))
        module.images_or_objects.value = M.M_IMAGES_AND_OBJECTS
        self.assertTrue(cat("Image"))
        self.assertTrue(cat(OBJECTS_NAME))