示例#1
0
    def _postAnalyze(self):
        """_postAnalyze doc..."""

        ratios = []

        for name, curve in DictUtils.iter(self.data):
            segments = curve.segments

            for i in ListUtils.rangeOn(segments):
                segment = segments[i]
                segmentLine = segment.line

                # If this is an extrapolated segment, use the length from the neighboring segment
                # instead of the artificial length of this segment.
                if segment == segments[0]:
                    segmentLine = segments[i + 1].line
                elif segment == segments[-1]:
                    segmentLine = segments[i - 1].line

                for pairData in segment.pairs:
                    projectionLine = pairData["line"]
                    ratios.append(100.0 * projectionLine.length.raw / segmentLine.length.raw)

        h = Histogram(
            data=ratios,
            binCount=50,
            xLabel="Projection/Stride Ratio (%)",
            title="Relative Stride to Projection Length Ratios",
        )
        h.shaveDataToXLimits()
        self._paths.append(h.save(path=self.getTempFilePath(extension="pdf")))

        self.mergePdfs(self._paths, "Curve-Projection.pdf")
示例#2
0
    def _processCurveDeviations(self, key, label):
        """_processCurveDeviations doc..."""

        d = [data['deviations'][key]
                for k, data in DictUtils.iter(self.trackwaysData)]
        dCurved = []
        dStraight = []
        for item in d:
            if item < 1.0:
                dStraight.append(item)
            else:
                dCurved.append(min(10.0, item))

        plot = Histogram(
            data=dCurved,
            title='%s Trackway Deviations' % label,
            xLabel='Trackway Index')
        self._paths.insert(0, plot.save(self.getTempFilePath(extension='pdf')))

        d = [(index, d[index]) for index in ListUtils.rangeOn(d)]
        dCurved = []
        dStraight = []
        for item in d:
            if item[-1] < 1.0:
                dStraight.append(item)
            else:
                dCurved.append((item[0], min(10.0, item[1])) )

        self.logger.write('%s Trackways: %s/%s (%s%%)' % (
            label,
            len(dCurved),
            len(dCurved) + len(dStraight),
            100.0*len(dCurved)/(len(dCurved) + len(dStraight)) ))

        plot = MultiScatterPlot(
            {'data':dStraight, 'color':'blue'},
            {'data':dCurved, 'color':'red'},
            title='%s Trackway Deviations' % label,
            xLabel='Trackway Index',
            yLabel='Fractional Deviation')
        self._paths.insert(1, plot.save(self.getTempFilePath(extension='pdf')))
    def _drawCurveSeries(cls, drawing, series):
        """_drawCurveSeries doc..."""

        line = None
        for i in ListUtils.rangeOn(series.tracks):
            track = series.tracks[i]

            try:
                nextTrack = series.tracks[i + 1]
            except Exception:
                cls._drawLine(
                    drawing=drawing, line=line,
                    color='#009900', opacity=0.1,
                    startCap=False, connect=False)
                return

            line = LineSegment2D(track.positionValue, nextTrack.positionValue)
            cls._drawLine(
                drawing=drawing,
                line=line,
                color='#009900',
                opacity=0.1,
                endCap=False
            )