Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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()
Esempio n. 4
0
    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()
Esempio n. 5
0
    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()))
Esempio n. 6
0
    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()))
Esempio n. 7
0
    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()
Esempio n. 8
0
    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()