Esempio n. 1
0
    def _processGaugeData(self, bundle, trackway, data):
        pesCount = bundle.leftPes.count + bundle.rightPes.count
        record = {'name':trackway.name, 'count':pesCount}

        gaugeData = data['gauges']

        try:
            value = NumericUtils.getWeightedMeanAndDeviation(gaugeData.abs)
            record['abs'] = value.value
            record['absUnc'] = value.uncertainty
            self._trackwayGauges.abs.append((pesCount, value))
        except ZeroDivisionError:
            return

        widthValue = NumericUtils.getWeightedMeanAndDeviation(gaugeData.width)
        record['width'] = widthValue.value
        record['widthUnc'] = widthValue.uncertainty
        self._trackwayGauges.width.append((pesCount, widthValue))

        if gaugeData.pace:
            value = NumericUtils.getWeightedMeanAndDeviation(gaugeData.pace)
            record['pace'] = value.value
            record['paceUnc'] = value.uncertainty
            self._trackwayGauges.pace.append((pesCount, value))
        else:
            record['pace'] = ''
            record['paceUnc'] = ''

        if gaugeData.stride:
            value = NumericUtils.getWeightedMeanAndDeviation(gaugeData.stride)
            record['stride'] = value.value
            record['strideUnc'] = value.uncertainty
            self._trackwayGauges.stride.append((pesCount, value))
        else:
            record['stride'] = ''
            record['strideUnc'] = ''

        self._trackwayCsv.addRow(record)

        plot = ScatterPlot(
            data=data['points'],
            title='%s Width-Normalized Gauges (%s)' % (trackway.name, widthValue.label),
            xLabel='Track Position (m)',
            yLabel='Gauge (AU)')
        self._paths.append(plot.save(self.getTempFilePath(extension='pdf')))

        analysisTrackway = trackway.getAnalysisPair(self.analysisSession)
        analysisTrackway.simpleGauge = widthValue.raw
        analysisTrackway.simpleGaugeUnc = widthValue.rawUncertainty
Esempio n. 2
0
    def _analyzeTrackway(self, trackway, sitemap):
        entries = []
        data = {'entries':entries}

        self.trackwaysData[trackway.uid] = data
        super(TrackHeadingStage, self)._analyzeTrackway(trackway, sitemap)

        if len(entries) < 2:
            del self.trackwaysData[trackway.uid]
            return

        d = [item.deviation for item in entries]

        significantDeviations = []
        for deviation in d:
            if deviation >= 1.0:
                significantDeviations.append(deviation)

        devs = {
            'global':d[-1],
            'max':max(*d),
            'fraction':len(significantDeviations)/len(d) }

        data['deviations'] = devs

        color = 'blue'
        if devs['global'] >= 1.0:
            color = 'red'
        elif devs['max'] >= 1.0:
            color ='green'

        d = [item.point for item in entries]
        plot = ScatterPlot(
            data=d,
            color=color,
            title='%s Track Headings' % trackway.name,
            yLabel='Angle (Degrees)',
            xLabel='Trackway Curve Position (m)')
        self._paths.append(plot.save(self.getTempFilePath(extension='pdf')))
Esempio n. 3
0
    def _plotTracks(self, tracks, trackway):
        """_plotTracks doc..."""

        points = []
        labels = []
        for t in tracks:
            at = t.getAnalysisPair(self.analysisSession)
            if t.pes:
                signal = 1 if t.left else 2
            else:
                signal = 3 if t.left else 4
            p = PositionValue2D(x=at.curvePosition, y=signal)
            points.append(p)
            labels.append(t.shortFingerprint)

        plot = ScatterPlot(
            data=points,
            title='%s Trackway Ordering' % trackway.name,
            xLabel='Trackway Curve Position (m)',
            yLabel='Classification',
            yLimits=[0, 5],
            yTickFunc=self._plotLabelChannelsFunc)
        self._paths.append(plot.save(self.getTempFilePath(extension='pdf')))