Beispiel #1
0
    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
Beispiel #2
0
 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)
Beispiel #3
0
    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)
Beispiel #4
0
    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
Beispiel #5
0
    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
Beispiel #6
0
    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