def test_04_04_abspath(self):
     # Specify an absolute path for the images.
     def alter_fn(module):
         self.assertTrue(isinstance(module, C.CreateWebPage))
         module.directory_choice.dir_choice = C.ABSOLUTE_FOLDER_NAME
         module.directory_choice.custom_path = self.alt_directory
     filenames = [(None, 'A%02d.png' % i) for i in range(1, 3)]
     self.run_create_webpage(filenames, alter_fn=alter_fn)
     dom = self.read_html(os.path.join(self.alt_directory, DEFAULT_HTML_FILE))
     imgs = dom.getElementsByTagName("img")
     self.assertEqual(len(imgs), 2)
     for img in imgs:
         self.assertTrue(img.hasAttribute("src"))
         image_name = str(img.getAttribute("src"))
         path = url2pathname(image_name)
         self.assertTrue(os.path.exists(path))
Ejemplo n.º 2
0
    def test_04_04_abspath(self):
        # Specify an absolute path for the images.
        def alter_fn(module):
            self.assertTrue(isinstance(module, C.CreateWebPage))
            module.directory_choice.dir_choice = C.ABSOLUTE_FOLDER_NAME
            module.directory_choice.custom_path = self.alt_directory

        filenames = [(None, 'A%02d.png' % i) for i in range(1, 3)]
        self.run_create_webpage(filenames, alter_fn=alter_fn)
        dom = self.read_html(os.path.join(self.alt_directory, DEFAULT_HTML_FILE))
        imgs = dom.getElementsByTagName("img")
        self.assertEqual(len(imgs), 2)
        for img in imgs:
            self.assertTrue(img.hasAttribute("src"))
            image_name = str(img.getAttribute("src"))
            path = url2pathname(image_name)
            self.assertTrue(os.path.exists(path))
Ejemplo n.º 3
0
    def do_update_metadata(self, group):
        filelist = self.workspace.file_list
        urls = set([
            ipd.url for ipd in self.pipeline.get_filtered_image_plane_details(
                self.workspace)
        ])
        if len(urls) == 0:
            return

        def msg(url):
            return "Processing %s" % url

        import wx
        from bioformats.formatreader import get_omexml_metadata
        from bioformats.omexml import OMEXML
        from cellprofiler.modules.loadimages import url2pathname
        with wx.ProgressDialog("Updating metadata",
                               msg(list(urls)[0]),
                               len(urls),
                               style=wx.PD_CAN_ABORT
                               | wx.PD_APP_MODAL
                               | wx.PD_ELAPSED_TIME
                               | wx.PD_REMAINING_TIME) as dlg:
            for i, url in enumerate(urls):
                if i > 0:
                    keep_going, _ = dlg.Update(i, msg(url))
                    if not keep_going:
                        break
                if group.filter_choice == F_FILTERED_IMAGES:
                    match = group.filter.evaluate(
                        (cps.FileCollectionDisplay.NODE_IMAGE_PLANE,
                         Images.url_to_modpath(url), self))
                    if not match:
                        continue
                metadata = filelist.get_metadata(url)
                if metadata is None:
                    metadata = get_omexml_metadata(url2pathname(url))
                    filelist.add_metadata(url, metadata)
                metadata = OMEXML(metadata)
                exemplar = cpp.ImagePlaneDetails(url, None, None, None)
                if not self.pipeline.find_image_plane_details(exemplar):
                    self.pipeline.add_image_plane_details([exemplar])
                self.pipeline.add_image_metadata(url, metadata)
            self.ipds = self.pipeline.get_filtered_image_plane_details(
                self.workspace)
            self.update_metadata_keys()
Ejemplo n.º 4
0
    def do_update_metadata(self, group):
        filelist = self.workspace.file_list
        urls = set([ipd.url for ipd in self.pipeline.get_filtered_image_plane_details(self.workspace)])
        if len(urls) == 0:
            return

        def msg(url):
            return "Processing %s" % url

        import wx
        from bioformats.formatreader import get_omexml_metadata
        from bioformats.omexml import OMEXML
        from cellprofiler.modules.loadimages import url2pathname

        with wx.ProgressDialog(
            "Updating metadata",
            msg(list(urls)[0]),
            len(urls),
            style=wx.PD_CAN_ABORT | wx.PD_APP_MODAL | wx.PD_ELAPSED_TIME | wx.PD_REMAINING_TIME,
        ) as dlg:
            for i, url in enumerate(urls):
                if i > 0:
                    keep_going, _ = dlg.Update(i, msg(url))
                    if not keep_going:
                        break
                if group.filter_choice == F_FILTERED_IMAGES:
                    match = group.filter.evaluate(
                        (cps.FileCollectionDisplay.NODE_IMAGE_PLANE, Images.url_to_modpath(url), self)
                    )
                    if not match:
                        continue
                metadata = filelist.get_metadata(url)
                if metadata is None:
                    metadata = get_omexml_metadata(url2pathname(url))
                    filelist.add_metadata(url, metadata)
                metadata = OMEXML(metadata)
                exemplar = cpp.ImagePlaneDetails(url, None, None, None)
                if not self.pipeline.find_image_plane_details(exemplar):
                    self.pipeline.add_image_plane_details([exemplar])
                self.pipeline.add_image_metadata(url, metadata)
            self.ipds = self.pipeline.get_filtered_image_plane_details(self.workspace)
            self.update_metadata_keys()
Ejemplo n.º 5
0
        def fn():
            from bioformats import load_image_url
            import javabridge
            from scipy.io.matlab.mio import loadmat
            from cellprofiler.modules.loadimages import url2pathname

            javabridge.attach()
            with self.image_dict_lock:
                generation = self.image_dict_generation
                
            for k, v in well.iteritems():
                sd = {}
                with self.image_dict_lock:
                    if self.image_dict_generation > generation:
                        return
                    self.image_dict[k] = sd
                for c, fd in enumerate(v):
                    if PlateData.D_CHANNEL in fd:
                        channel = fd[PlateData.D_CHANNEL]
                    else:
                        channel = str(c+1)
                    url = fd[PlateData.D_FILENAME]
                    try:
                        if url.lower().endswith(".mat"):
                            img = loadmat(
                                url2pathname(url), 
                                struct_as_record=True)["Image"]
                        else:
                            img = load_image_url(url)
                        with self.image_dict_lock:
                            if self.image_dict_generation > generation:
                                return
                            sd[channel] = img
                    except:
                        traceback.print_exc()
                        pass
            wx.CallAfter(self.update_figure)
            javabridge.static_call(
                "java/lang/System", "gc", "()V")
            javabridge.detach()
Ejemplo n.º 6
0
        def fn():
            from bioformats import load_image_url
            import javabridge
            from scipy.io.matlab.mio import loadmat
            from cellprofiler.modules.loadimages import url2pathname

            javabridge.attach()
            with self.image_dict_lock:
                generation = self.image_dict_generation

            for k, v in well.iteritems():
                sd = {}
                with self.image_dict_lock:
                    if self.image_dict_generation > generation:
                        return
                    self.image_dict[k] = sd
                for c, fd in enumerate(v):
                    if PlateData.D_CHANNEL in fd:
                        channel = fd[PlateData.D_CHANNEL]
                    else:
                        channel = str(c + 1)
                    url = fd[PlateData.D_FILENAME]
                    try:
                        if url.lower().endswith(".mat"):
                            img = loadmat(
                                    url2pathname(url),
                                    struct_as_record=True)["Image"]
                        else:
                            img = load_image_url(url)
                        with self.image_dict_lock:
                            if self.image_dict_generation > generation:
                                return
                            sd[channel] = img
                    except:
                        traceback.print_exc()
                        pass
            wx.CallAfter(self.update_figure)
            javabridge.static_call(
                    "java/lang/System", "gc", "()V")
            javabridge.detach()