def showObjects(self): if not (self.contoursCb.isChecked() or \ self.showBBoxes.isChecked()) or \ self._files is None: return index = self.slider.value() try: mp = LsmProcessor(self._files.keys()[index], self.segdlg.segmentationParams(), self.cbar.checkedChannels(), treatment=self._files.values()[index]) # first channel for primary segementation mp.segmentation() except Exception as e: QMessageBox.critical(self, "Error", "%s:%s" % (type(e), str(e))) finally: if not mp.objects: return if self.contoursCb.isChecked(): self.cbar.setContours(mp.objects.contours) if self.showBBoxes.isChecked(): self.cbar.drawRectangles(mp.objects.centers.values(), self.segdlg.galSize.value(), isize=self.metadata.size)
def showObjects(self): if not (self.contoursCb.isChecked() or \ self.showBBoxes.isChecked()) or \ self._files is None: return index = self.slider.value() try: mp = LsmProcessor(self._files.keys()[index], self.segdlg.segmentationParams(), self.cbar.checkedChannels(), treatment=self._files.values()[index]) # first channel for primary segementation mp.segmentation() except Exception as e: QMessageBox.critical(self, "Error", "%s:%s" %(type(e), str(e))) finally: if not mp.objects: return if self.contoursCb.isChecked(): self.cbar.setContours(mp.objects.contours) if self.showBBoxes.isChecked(): self.cbar.drawRectangles(mp.objects.centers.values(), self.segdlg.galSize.value(), isize=self.metadata.size)
def onOpenImageDir(self): self.cbar.clearContours() self.viewer.clearRects() self.viewer.clearPolygons() idir = self.imageDir.text() ofile = self.dataFile.text() if isdir(idir): path = dirname(idir) elif isfile(ofile): path = dirname(ofile) else: path = expanduser("~") # TODO use getOpenFileNames instead idir = QFileDialog.getExistingDirectory(self, "Select an image directory", path) # cancel button if not idir: return self.imageDir.setText(idir) scanner = FileScanner(self.structType.currentText(), idir) self._files = scanner() if not self._files: QMessageBox.warning(self, "Error", "No files found") return self.dirinfo.setText("%d images found" % len(self._files)) proc = LsmProcessor(self._files.keys()[0], self.segdlg.segmentationParams(), self.cbar.checkedChannels(), treatment=self._files.values()[0]) self.metadata = proc.metadata self.metadata.n_images = len(self._files) images = list(proc.iterQImages()) props = list(proc.iterprops()) self.cbar.addChannels(len(images)) self.cbar.setImages(images, list(proc.iterprops())) state = self.segdlg.blockSignals(True) self.segdlg.setRegions(self.cbar.allChannels(), props) self.segdlg.setMaxZSlice(self.metadata.n_zslices - 1) self.segdlg.blockSignals(state) self.slider.setRange(0, self.metadata.n_images - 1) self.slider.setValue(0) self.showObjects()
def onOpenImageDir(self): self.cbar.clearContours() self.viewer.clearRects() self.viewer.clearPolygons() idir = self.imageDir.text() ofile = self.dataFile.text() if isdir(idir): path = dirname(idir) elif isfile(ofile): path = dirname(ofile) else: path = expanduser("~") # TODO use getOpenFileNames instead idir = QFileDialog.getExistingDirectory(self, "Select an image directory", path) # cancel button if not idir: return self.imageDir.setText(idir) scanner = FileScanner(self.structType.currentText(), idir) self._files = scanner() if not self._files: QMessageBox.warning(self, "Error", "No files found") return self.dirinfo.setText("%d images found" %len(self._files)) proc = LsmProcessor(self._files.keys()[0], self.segdlg.segmentationParams(), self.cbar.checkedChannels(), treatment=self._files.values()[0]) self.metadata = proc.metadata self.metadata.n_images = len(self._files) images = list(proc.iterQImages()) props = list(proc.iterprops()) self.cbar.addChannels(len(images)) self.cbar.setImages(images, list(proc.iterprops())) state = self.segdlg.blockSignals(True) self.segdlg.setRegions(self.cbar.allChannels(), props) self.segdlg.setMaxZSlice(self.metadata.n_zslices-1) self.segdlg.blockSignals(state) self.slider.setRange(0, self.metadata.n_images-1) self.slider.setValue(0) self.showObjects()
def showImage(self, index=0): # no image directory yet if self._files is None: return try: proc = LsmProcessor(self._files.keys()[index], self.segdlg.segmentationParams(), self.cbar.checkedChannels(), treatment=self._files.values()[index]) except IndexError: return self.viewer.clearPolygons() self.viewer.clearRects() images = list(proc.iterQImages()) self.cbar.setImages(images, list(proc.iterprops()))
def __call__(self): self.started.emit() self.progressSetRange.emit(0, len(self.files)) writer = HdfWriter(self.outfile) colors = [self.colors[ch] for ch in self.channels.values()] writer.setupFile(self.metadata.n_images, self.channels, colors) writer.saveSettings(self.seg_params, self.feature_groups, self.channels.values(), self.colors) try: gsize = self.seg_params.values()[0].gallery_size for i, (file_, treatment) in enumerate(self.files.iteritems()): self.progressUpdate.emit(i + 1) self.interruption_point() self.thread().msleep(self.PYDELAY) mp = LsmProcessor(file_, self.seg_params, self.channels, gsize, treatment) # first channel for primary segementation mp.segmentation() mp.calculateFeatures(self.feature_groups) objects = mp.objects # saveData ignores empty objects image = mp.image[:, :, :, self.channels.keys()] writer.saveData(objects, image, treatment) self.contourImage.emit(tuple(mp.iterQImages()), objects.contours) self.progressSetRange.emit(0, 0) self.progressUpdate.emit(-1) writer.flush() self.finished.emit() except AbortQWorker: pass except HdfError as e: self.error.emit(e) traceback.print_exc() raise except Exception as e: self.error.emit(e) traceback.print_exc() raise finally: writer.close()
def __call__(self): self.started.emit() self.progressSetRange.emit(0, len(self.files)) writer = HdfWriter(self.outfile) colors = [self.colors[ch] for ch in self.channels.values()] writer.setupFile(self.metadata.n_images, self.channels, colors) writer.saveSettings(self.seg_params, self.feature_groups, self.channels.values(), self.colors) try: gsize = self.seg_params.values()[0].gallery_size for i, (file_, treatment) in enumerate(self.files.iteritems()): self.progressUpdate.emit(i+1) self.interruption_point() self.thread().msleep(self.PYDELAY) mp = LsmProcessor(file_, self.seg_params, self.channels, gsize, treatment) # first channel for primary segementation mp.segmentation() mp.calculateFeatures(self.feature_groups) objects = mp.objects # saveData ignores empty objects image = mp.image[:, :, :, self.channels.keys()] writer.saveData(objects, image, treatment) self.contourImage.emit(tuple(mp.iterQImages()), objects.contours) self.progressSetRange.emit(0, 0) self.progressUpdate.emit(-1) writer.flush() self.finished.emit() except AbortQWorker: pass except HdfError as e: self.error.emit(e) traceback.print_exc() raise except Exception as e: self.error.emit(e) traceback.print_exc() raise finally: writer.close()