def getSlide(self, slideNumber = None, **kwargs): rc = kwargs['renderingProperties'] tc = kwargs['tracingProperties'] newSlide = barTracedSlideRenderer(\ rendererConfiguration = rc,\ tracingConfiguration = tc) newSlide.slideNumber = slideNumber if slideNumber == None: for contour in self._contours: newSlide.addPath(contour.getBarPath()) for marker in self._markers: newSlide.addLabel(marker.getLabel()) for textElem in self._textElems: newSlide.addLabel(textElem.getLabel()) if slideNumber is not None: # Choose slide element corresponding to provided slide number: # elementKey = self.slideRange[slideNumber] # coordElemList = self._zindex[elementKey] coordElemList = self._zindex[self.slideRange[slideNumber]] for contour in coordElemList.paths: newSlide.addPath(contour.getBarPath()) for labelEl in coordElemList.labels: newSlide.addLabel(labelEl.getLabel()) newSlide.updateMetadata(barBregmaMetadataElement(coordElemList.zCoord)) transformationMatrixTuple=(\ self._scaling[0], self._coord[0], self._scaling[1], self._coord[1]) newSlide.updateMetadata =\ (barTransfMatrixMetadataElement(transformationMatrixTuple)) return newSlide
def _saveTransformationAsMetadata(self, transformation, bregma): """ @type transformation: 4 elements array @param transformation: array holding transformation coefficients in following orader: [b,a,d,c]. x'=a*x+b, y'=c*y+d @type bregma: string @param bregma: bregma coordinate Puts stereotactic coordinates matrix as SVG metadata Clues given by Rembrand Bakker: x'=xy[0]+xy[1]*x y'=xy[0]+xy[1]*y """ # We assume that template is properly defined and empty template # has precisely one 'metadata' element. # Appending transformation matrix and bregma coordinate TransformationMatrix =\ (1*transformation[0][1], transformation[0][0], 1*transformation[1][1], transformation[1][0]) spatialMatrix = barTransfMatrixMetadataElement(TransformationMatrix) BregmaMetadataElement = barBregmaMetadataElement(bregma) return (spatialMatrix, BregmaMetadataElement)
def _getSlide(self, slideNumber): """ @type slideNumber: C{int} @param slideNumber: Number of slide to extract @rtype: L{barTracedSlideRenderer<barTracedSlideRenderer>} @return: Traced slide with given number. """ # Get PIL bitmap image containing slide with given slideNumber # It is assumed that image is provided in RGB mode. sourceImage = self._getSourceImage(slideNumber) # Extract list of uniqe colours from source slide image # list of tuples in rgbformat uniqeColours = self._getUniqeColours(sourceImage) # Create traced slide: # Use customized slide tempate if provided try: self.slideTemplate customSlideTemplate = self.slideTemplate except: customSlideTemplate = None retSlide = barTracedSlideRenderer( slideTemplate=customSlideTemplate, rendererConfiguration=self.renderingProperties, tracingConfiguration=self.tracingProperties) retSlide.slideNumber = slideNumber # Remove background color from the set of colours in the bitmap uniqeColours.remove(self.backgroundColor) # Iterate over all uniqe colours and create set of paths basing on # every uniqe colour: for imageColour in uniqeColours: map(retSlide.addPath, self._processStructure(sourceImage, imageColour)) # Append metadata to newly created slide: spatialLocation = [ barTransfMatrixMetadataElement( self._getSpatialTransfMatrix(slideNumber)), barBregmaMetadataElement(self._getZCoord(slideNumber)) ] retSlide.updateMetadata(spatialLocation) return retSlide
def _getSlide(self, slideNumber): """ @type slideNumber: C{int} @param slideNumber: Number of slide to extract @rtype: L{barTracedSlideRenderer<barTracedSlideRenderer>} @return: Traced slide with given number. """ # Get PIL bitmap image containing slide with given slideNumber # It is assumed that image is provided in RGB mode. sourceImage = self._getSourceImage(slideNumber) # Extract list of uniqe colours from source slide image # list of tuples in rgbformat uniqeColours = self._getUniqeColours(sourceImage) # Create traced slide: # Use customized slide tempate if provided try: self.slideTemplate customSlideTemplate = self.slideTemplate except: customSlideTemplate = None retSlide = barTracedSlideRenderer( slideTemplate=customSlideTemplate, rendererConfiguration=self.renderingProperties, tracingConfiguration=self.tracingProperties) retSlide.slideNumber = slideNumber # Remove background color from the set of colours in the bitmap uniqeColours.remove(self.backgroundColor) # Iterate over all uniqe colours and create set of paths basing on # every uniqe colour: for imageColour in uniqeColours: map(retSlide.addPath, self._processStructure( sourceImage, imageColour)) # Append metadata to newly created slide: spatialLocation = [ barTransfMatrixMetadataElement( self._getSpatialTransfMatrix(slideNumber)), barBregmaMetadataElement(self._getZCoord(slideNumber))] retSlide.updateMetadata(spatialLocation) return retSlide
def getSlide(self, slideNumber=None, **kwargs): rc = kwargs['renderingProperties'] tc = kwargs['tracingProperties'] newSlide = barTracedSlideRenderer(\ rendererConfiguration = rc,\ tracingConfiguration = tc) newSlide.slideNumber = slideNumber if slideNumber == None: for contour in self._contours: newSlide.addPath(contour.getBarPath()) for marker in self._markers: newSlide.addLabel(marker.getLabel()) for textElem in self._textElems: newSlide.addLabel(textElem.getLabel()) if slideNumber is not None: # Choose slide element corresponding to provided slide number: # elementKey = self.slideRange[slideNumber] # coordElemList = self._zindex[elementKey] coordElemList = self._zindex[self.slideRange[slideNumber]] for contour in coordElemList.paths: newSlide.addPath(contour.getBarPath()) for labelEl in coordElemList.labels: newSlide.addLabel(labelEl.getLabel()) newSlide.updateMetadata( barBregmaMetadataElement(coordElemList.zCoord)) transformationMatrixTuple=(\ self._scaling[0], self._coord[0], self._scaling[1], self._coord[1]) newSlide.updateMetadata =\ (barTransfMatrixMetadataElement(transformationMatrixTuple)) return newSlide