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))
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()
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()
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()
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()