Beispiel #1
0
    def run(self):
        '''
        Start process execution
        '''
        self._slide = open_slide(self._slidepath)
        dz = self._get_dz()

        while True:
            try:
                data = self._tiler_queue.get()
                if data is None:  # no more tiles to process, break out of loop
                    self._tiler_queue.task_done()
                    break

                level, address, outdir = data

                tile = Tile(level=level,
                            address=address,
                            tile_size=self._tile_size,
                            overlap=self._overlap,
                            outdir=outdir,
                            format=self._format)

                if not os.path.exists(tile.get_filename()):
                    dz_tile = dz.get_tile(level, address)
                    dz_tile.save(tile.get_filename())

                if self._processor_queue:
                    self._processor_queue.put(tile)

                self._tiler_queue.task_done()
            except OpenSlideError as e:
                # on OpenSlideErrors, the slide object is corrupted
                # and needs to be reinitialized
                self._slide = open_slide(self._slidepath)
                dz = self._get_dz()
                print(e)
                self._tiler_queue.task_done()