Exemplo n.º 1
0
    def test_02_01_prepare_to_create_batch_single(self):
        n = N.NamesAndTypes()
        n.module_num = 1
        n.assignment_method.value = N.ASSIGN_ALL
        n.single_image_provider.value = IMAGE_NAME
        m = cpmeas.Measurements(mode="memory")
        pathnames = ["foo", "fuu"]
        expected_pathnames = ["bar", "fuu"]
        filenames = ["boo", "foobar"]
        expected_filenames = ["boo", "barbar"]
        urlnames = ["file:/foo/bar", "http://foo/bar"]
        expected_urlnames = ["file:/bar/bar", "http://foo/bar"]

        m.add_all_measurements(cpmeas.IMAGE,
                               cpmeas.C_FILE_NAME + "_" + IMAGE_NAME,
                               filenames)
        m.add_all_measurements(cpmeas.IMAGE,
                               cpmeas.C_PATH_NAME + "_" + IMAGE_NAME,
                               pathnames)
        m.add_all_measurements(cpmeas.IMAGE, cpmeas.C_URL + "_" + IMAGE_NAME,
                               urlnames)
        pipeline = cpp.Pipeline()
        pipeline.add_module(n)
        workspace = cpw.Workspace(pipeline, n, m, None, m, None)
        n.prepare_to_create_batch(workspace, lambda x: x.replace("foo", "bar"))
        for feature, expected in ((cpmeas.C_FILE_NAME, expected_filenames),
                                  (cpmeas.C_PATH_NAME, expected_pathnames),
                                  (cpmeas.C_URL, expected_urlnames)):
            values = m.get_measurement(cpmeas.IMAGE,
                                       feature + "_" + IMAGE_NAME,
                                       np.arange(len(expected)) + 1)
            self.assertSequenceEqual(expected, list(values))
Exemplo n.º 2
0
 def test_01_06_02_missing(self):
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_RULES
     n.matching_choice.value = N.MATCH_BY_METADATA
     n.add_assignment()
     n.assignments[0].image_name.value = C0
     n.assignments[1].image_name.value = C1
     n.assignments[0].rule_filter.value = 'file does contain "%s"' % C0
     n.assignments[1].rule_filter.value = 'file does contain "%s"' % C1
     n.join.build("[{'%s':'%s','%s':'%s'},{'%s':'%s','%s':'%s'}]" %
                  (C0, M0, C1, M2, C0, M1, C1, M3))
     data = {
         C0: [("%s%s%s" % (C0, m[M0], m[M1]), m)
              for i, m in enumerate(md([(M1, 3), (M0, 2)]))],
         C1: [("%s%s%s" % (C1, m[M2], m[M3]), m)
              for i, m in enumerate(md([(M3, 3), (M2, 2)]))]
     }
     bad_row = 3
     # Steal the bad row's metadata
     additional = [data[C1][bad_row]]
     del data[C0][bad_row]
     del data[C1][bad_row]
     self.do_teest(n, data, [(M0, M2), (M1, M3)], [(M0, C0), (M1, C0),
                                                   (M2, C1), (M3, C1)],
                   additional)
Exemplo n.º 3
0
    def test_01_08_some_against_all(self):
        #
        # Permute both the order of the columns and the order of joins
        #

        joins = [{C0: M0, C1: M1}, {C0: None, C1: M2}]
        for cA, cB in ((C0, C1), (C1, C0)):
            for j0, j1 in ((0, 1), (1, 0)):
                n = N.NamesAndTypes()
                n.assignment_method.value = N.ASSIGN_RULES
                n.matching_choice.value = N.MATCH_BY_METADATA
                n.add_assignment()
                n.assignments[0].image_name.value = cA
                n.assignments[1].image_name.value = cB
                n.assignments[
                    0].rule_filter.value = 'file does contain "%s"' % cA
                n.assignments[
                    1].rule_filter.value = 'file does contain "%s"' % cB
                n.join.build(repr([joins[j0], joins[j1]]))
                mA0 = [M0, M3][j0]
                mB0 = [M0, M3][j1]
                mA1 = joins[j0][C1]
                mB1 = joins[j1][C1]
                data = {
                    C0: [("%s%s" % (C0, m[M0]), m)
                         for i, m in enumerate(md([(mB0, 2), (mA0, 3)]))],
                    C1: [("%s%s%s" % (C1, m[M1], m[M2]), m)
                         for i, m in enumerate(md([(mB1, 2), (mA1, 3)]))]
                }
                expected_keys = [[(M0, M1), (M2, )][i] for i in j0, j1]
                self.do_teest(n, data, expected_keys, [(C0, M0), (C0, M3),
                                                       (C1, M1), (C1, M2)])
Exemplo n.º 4
0
    def run_workspace(self,
                      path,
                      load_as_type,
                      series=None,
                      index=None,
                      channel=None,
                      single=False):
        '''Run a workspace to load a file
        
        path - path to the file
        load_as_type - one of the LOAD_AS... constants
        series, index, channel - pick a plane from within a file
        
        returns the workspace after running
        '''
        n = N.NamesAndTypes()
        n.assignment_method.value = N.ASSIGN_ALL if single else N.ASSIGN_RULES
        n.single_image_provider.value = IMAGE_NAME
        n.single_load_as_choice.value = load_as_type
        n.assignments[0].image_name.value = IMAGE_NAME
        n.assignments[0].object_name.value = OBJECTS_NAME
        n.assignments[0].load_as_choice.value = load_as_type
        n.module_num = 1
        pipeline = cpp.Pipeline()
        pipeline.add_module(n)
        url = pathname2url(path)
        pathname, filename = os.path.split(path)
        m = cpmeas.Measurements(mode="memory")
        if load_as_type == N.LOAD_AS_OBJECTS:
            url_feature = cpmeas.C_OBJECTS_URL + "_" + OBJECTS_NAME
            path_feature = cpmeas.C_OBJECTS_PATH_NAME + "_" + OBJECTS_NAME
            file_feature = cpmeas.C_OBJECTS_FILE_NAME + "_" + OBJECTS_NAME
            series_feature = cpmeas.C_OBJECTS_SERIES + "_" + OBJECTS_NAME
            frame_feature = cpmeas.C_OBJECTS_FRAME + "_" + OBJECTS_NAME
            channel_feature = cpmeas.C_OBJECTS_CHANNEL + "_" + OBJECTS_NAME
        else:
            url_feature = cpmeas.C_URL + "_" + IMAGE_NAME
            path_feature = cpmeas.C_PATH_NAME + "_" + IMAGE_NAME
            file_feature = cpmeas.C_FILE_NAME + "_" + IMAGE_NAME
            series_feature = cpmeas.C_SERIES + "_" + IMAGE_NAME
            frame_feature = cpmeas.C_FRAME + "_" + IMAGE_NAME
            channel_feature = cpmeas.C_CHANNEL + "_" + IMAGE_NAME

        m.image_set_number = 1
        m.add_measurement(cpmeas.IMAGE, url_feature, url)
        m.add_measurement(cpmeas.IMAGE, path_feature, pathname)
        m.add_measurement(cpmeas.IMAGE, file_feature, filename)
        if series is not None:
            m.add_measurement(cpmeas.IMAGE, series_feature, series)
        if index is not None:
            m.add_measurement(cpmeas.IMAGE, frame_feature, index)
        if channel is not None:
            m.add_measurement(cpmeas.IMAGE, channel_feature, channel)
        m.add_measurement(cpmeas.IMAGE, cpmeas.GROUP_NUMBER, 1)
        m.add_measurement(cpmeas.IMAGE, cpmeas.GROUP_INDEX, 1)

        workspace = cpw.Workspace(pipeline, n, m, N.cpo.ObjectSet(), m, None)
        n.run(workspace)
        return workspace
Exemplo n.º 5
0
    def test_02_02_prepare_to_create_batch_multiple(self):
        n = N.NamesAndTypes()
        n.module_num = 1
        n.assignment_method.value = N.ASSIGN_RULES
        n.add_assignment()
        n.assignments[0].load_as_choice.value = N.LOAD_AS_GRAYSCALE_IMAGE
        n.assignments[0].image_name.value = IMAGE_NAME
        n.assignments[1].load_as_choice.value = N.LOAD_AS_OBJECTS
        n.assignments[1].object_name.value = OBJECTS_NAME
        m = cpmeas.Measurements(mode="memory")
        pathnames = ["foo", "fuu"]
        expected_pathnames = ["bar", "fuu"]
        filenames = ["boo", "foobar"]
        expected_filenames = ["boo", "barbar"]
        urlnames = ["file:/foo/bar", "http://foo/bar"]
        expected_urlnames = ["file:/bar/bar", "http://foo/bar"]

        for feature, name, values in ((cpmeas.C_FILE_NAME, IMAGE_NAME,
                                       filenames), (cpmeas.C_OBJECTS_FILE_NAME,
                                                    OBJECTS_NAME,
                                                    reversed(filenames)),
                                      (cpmeas.C_PATH_NAME, IMAGE_NAME,
                                       pathnames), (cpmeas.C_OBJECTS_PATH_NAME,
                                                    OBJECTS_NAME,
                                                    reversed(pathnames)),
                                      (cpmeas.C_URL, IMAGE_NAME, urlnames),
                                      (cpmeas.C_OBJECTS_URL, OBJECTS_NAME,
                                       reversed(urlnames))):
            m.add_all_measurements(cpmeas.IMAGE, feature + "_" + name, values)
        pipeline = cpp.Pipeline()
        pipeline.add_module(n)
        workspace = cpw.Workspace(pipeline, n, m, None, m, None)
        n.prepare_to_create_batch(workspace, lambda x: x.replace("foo", "bar"))
        for feature, name, expected in ((cpmeas.C_FILE_NAME, IMAGE_NAME,
                                         expected_filenames),
                                        (cpmeas.C_OBJECTS_FILE_NAME,
                                         OBJECTS_NAME,
                                         reversed(expected_filenames)),
                                        (cpmeas.C_PATH_NAME, IMAGE_NAME,
                                         expected_pathnames),
                                        (cpmeas.C_OBJECTS_PATH_NAME,
                                         OBJECTS_NAME,
                                         reversed(expected_pathnames)),
                                        (cpmeas.C_URL, IMAGE_NAME,
                                         expected_urlnames),
                                        (cpmeas.C_OBJECTS_URL, OBJECTS_NAME,
                                         reversed(expected_urlnames))):
            values = m.get_measurement(cpmeas.IMAGE, feature + "_" + name,
                                       np.arange(1, 3))
            self.assertSequenceEqual(list(expected), list(values))
Exemplo n.º 6
0
 def test_01_07_one_against_all(self):
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_RULES
     n.matching_choice.value = N.MATCH_BY_METADATA
     n.add_assignment()
     n.assignments[0].image_name.value = C0
     n.assignments[1].image_name.value = C1
     n.assignments[0].rule_filter.value = 'file does contain "%s"' % C0
     n.assignments[1].rule_filter.value = 'file does contain "%s"' % C1
     n.join.build("[{'%s':None,'%s':'%s'}]" % (C0, C1, M0))
     data = {
         C0: [(C0, {})] * 3,
         C1: [("%s%d" % (C1, i), m) for i, m in enumerate(md([(M0, 3)]))]
     }
     self.do_teest(n, data, [(M0, )], [(M0, C1)])
Exemplo n.º 7
0
 def test_01_10_by_order(self):
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_RULES
     n.matching_choice.value = N.MATCH_BY_ORDER
     n.add_assignment()
     n.assignments[0].image_name.value = C0
     n.assignments[1].image_name.value = C1
     n.assignments[0].rule_filter.value = 'file does contain "%s"' % C0
     n.assignments[1].rule_filter.value = 'file does contain "%s"' % C1
     data = {
         C0:
         [("%s%d" % (C0, i + 1), m) for i, m in enumerate(md([(M0, 2)]))],
         C1:
         [("%s%d" % (C1, i + 1), m) for i, m in enumerate(md([(M1, 2)]))]
     }
     self.do_teest(n, data, [(cpmeas.IMAGE_NUMBER, )], [(C0, M0), (C1, M1)])
Exemplo n.º 8
0
 def test_01_01_one(self):
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_RULES
     n.matching_choice.value = N.MATCH_BY_METADATA
     n.assignments[0].image_name.value = C0
     n.join.build("[{\"%s\":\"%s\"}]" % (C0, M0))
     # It should match by order, even if match by metadata and the joiner
     # are set up.
     data = {
         C0: [("images/1.jpg", {
             M0: "k1"
         }), ("images/2.jpg", {
             M0: "k3"
         }), ("images/3.jpg", {
             M0: "k2"
         })]
     }
     self.do_teest(n, data, [(cpmeas.IMAGE_NUMBER, )], [(M0, C0)])
Exemplo n.º 9
0
 def test_01_05_match_two_and_two(self):
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_RULES
     n.matching_choice.value = N.MATCH_BY_METADATA
     n.add_assignment()
     n.assignments[0].image_name.value = C0
     n.assignments[1].image_name.value = C1
     n.assignments[0].rule_filter.value = 'file does contain "%s"' % C0
     n.assignments[1].rule_filter.value = 'file does contain "%s"' % C1
     n.join.build("[{'%s':'%s','%s':'%s'},{'%s':'%s','%s':'%s'}]" %
                  (C0, M0, C1, M2, C0, M1, C1, M3))
     data = {
         C0: [("%s%s%s" % (C0, m[M0], m[M1]), m)
              for i, m in enumerate(md([(M1, 3), (M0, 2)]))],
         C1: [("%s%s%s" % (C1, m[M2], m[M3]), m)
              for i, m in enumerate(md([(M3, 3), (M2, 2)]))]
     }
     self.do_teest(n, data, [(M0, M2), (M1, M3)], [(M0, C0), (M1, C0),
                                                   (M2, C1), (M3, C1)])
Exemplo n.º 10
0
 def test_01_03_match_one_different_key(self):
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_RULES
     n.matching_choice.value = N.MATCH_BY_METADATA
     n.add_assignment()
     n.assignments[0].image_name.value = C0
     n.assignments[1].image_name.value = C1
     n.assignments[0].rule_filter.value = 'file does contain "1"'
     n.assignments[1].rule_filter.value = 'file doesnot contain "1"'
     n.join.build("[{'%s':'%s','%s':'%s'}]" % (C0, M0, C1, M1))
     data = {
         C0: [("images/1.jpg", {
             M0: "k1"
         })],
         C1: [("images/2.jpg", {
             M1: "k1"
         })]
     }
     self.do_teest(n, data, [(M0, M1)], [(M0, C0), (M1, C1)])
Exemplo n.º 11
0
 def test_01_11_by_order_bad(self):
     # Regression test of issue #392: columns of different lengths
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_RULES
     n.matching_choice.value = N.MATCH_BY_ORDER
     n.add_assignment()
     n.assignments[0].image_name.value = C0
     n.assignments[1].image_name.value = C1
     n.assignments[0].rule_filter.value = 'file does contain "%s"' % C0
     n.assignments[1].rule_filter.value = 'file does contain "%s"' % C1
     n.ipd_columns = \
         [[cpp.ImagePlaneDetails("%s%d" % (C0, (3-i)), None, None, None, **m)
           for i, m in enumerate(md([(M0, 3)]))],
          [cpp.ImagePlaneDetails("%s%d" % (C1, i+1), None, None, None, **m)
                        for i, m in enumerate(md([(M1, 2)]))]]
     data = {
         C0:
         [("%s%d" % (C0, i + 1), m) for i, m in enumerate(md([(M0, 2)]))],
         C1:
         [("%s%d" % (C1, i + 1), m) for i, m in enumerate(md([(M1, 2)]))]
     }
     additional = [("%sBad" % C0, {})]
     self.do_teest(n, data, [(cpmeas.IMAGE_NUMBER, )], [(C0, M0), (C1, M1)])
Exemplo n.º 12
0
 def test_01_00_01_all(self):
     n = N.NamesAndTypes()
     n.assignment_method.value = N.ASSIGN_ALL
     n.single_image_provider.value = C0
     data = {C0: [("images/1.jpg", {M0: "1"})]}
     self.do_teest(n, data, [(cpmeas.IMAGE_NUMBER, )], [(M0, C0)])