示例#1
0
    def createImageContext(self):
        TestStatsBase.createImageContext(self)

        self.imageContext = stats._ImageContext(item=self.plot2d.getImage(
            self._imgLgd),
                                                plot=self.plot2d,
                                                onlimits=False,
                                                roi=self._2Droi_rect)

        self.imageContext_2 = stats._ImageContext(item=self.plot2d.getImage(
            self._imgLgd),
                                                  plot=self.plot2d,
                                                  onlimits=False,
                                                  roi=self._2Droi_poly)
示例#2
0
    def testOnLimits(self):
        stat = stats.StatMin()

        self.plot1d.getXAxis().setLimitsConstraints(minPos=2, maxPos=5)
        curveContextOnLimits = stats._CurveContext(
            item=self.plot1d.getCurve('curve0'),
            plot=self.plot1d,
            onlimits=True,
            roi=None)
        self.assertEqual(stat.calculate(curveContextOnLimits), 2)

        self.plot2d.getXAxis().setLimitsConstraints(minPos=32)
        imageContextOnLimits = stats._ImageContext(
            item=self.plot2d.getImage('test image'),
            plot=self.plot2d,
            onlimits=True,
            roi=None)
        self.assertEqual(stat.calculate(imageContextOnLimits), 32)

        self.scatterPlot.getXAxis().setLimitsConstraints(minPos=40)
        scatterContextOnLimits = stats._ScatterContext(
            item=self.scatterPlot.getScatter('scatter plot'),
            plot=self.scatterPlot,
            onlimits=True,
            roi=None)
        self.assertEqual(stat.calculate(scatterContextOnLimits), 20)
示例#3
0
文件: testStats.py 项目: WuZifan/silx
 def createImageContext(self):
     self.plot2d = Plot2D()
     self._imgLgd = 'test image'
     self.imageData = numpy.arange(32*128).reshape(32, 128)
     self.plot2d.addImage(data=self.imageData,
                          legend=self._imgLgd, replace=False)
     self.imageContext = stats._ImageContext(
         item=self.plot2d.getImage(self._imgLgd),
         plot=self.plot2d,
         onlimits=False
     )
示例#4
0
文件: testStats.py 项目: vallsv/silx
 def createImageContext(self):
     self.plot2d = Plot2D()
     lgd = 'test image'
     self.imageData = numpy.arange(32*128).reshape(32, 128)
     self.plot2d.addImage(data=self.imageData,
                          legend=lgd, replace=False)
     self.imageContext = stats._ImageContext(
         item=self.plot2d.getImage(lgd),
         plot=self.plot2d,
         onlimits=False
     )
示例#5
0
 def test(self):
     """Test stats result on an image context with different scale and
     origins"""
     roi_origins = [(0, 0), (2, 10), (14, 20)]
     img_origins = [(0, 0), (14, 20), (2, 10)]
     img_scales = [1.0, 0.5, 2.0]
     _stats = {
         'sum': stats.Stat(name='sum', fct=numpy.sum),
     }
     for roi_origin in roi_origins:
         for img_origin in img_origins:
             for img_scale in img_scales:
                 with self.subTest(roi_origin=roi_origin,
                                   img_origin=img_origin,
                                   img_scale=img_scale):
                     self.plot.addImage(self.data,
                                        legend='img',
                                        origin=img_origin,
                                        scale=img_scale)
                     roi = RectangleROI()
                     roi.setGeometry(origin=roi_origin, size=(20, 20))
                     context = stats._ImageContext(
                         item=self.plot.getImage('img'),
                         plot=self.plot,
                         onlimits=False,
                         roi=roi)
                     x_start = int(
                         (roi_origin[0] - img_origin[0]) / img_scale)
                     x_end = int(x_start + (20 / img_scale)) + 1
                     y_start = int(
                         (roi_origin[1] - img_origin[1]) / img_scale)
                     y_end = int(y_start + (20 / img_scale)) + 1
                     x_start = max(x_start, 0)
                     x_end = min(max(x_end, 0), self.data_dims[1])
                     y_start = max(y_start, 0)
                     y_end = min(max(y_end, 0), self.data_dims[0])
                     th_sum = numpy.sum(self.data[y_start:y_end,
                                                  x_start:x_end])
                     self.assertAlmostEqual(
                         _stats['sum'].calculate(context), th_sum)
示例#6
0
文件: testStats.py 项目: WuZifan/silx
    def testStatsImageAdv(self):
        """Test that scale and origin are taking into account for images"""

        image2Data = numpy.arange(32 * 128).reshape(32, 128)
        self.plot2d.addImage(data=image2Data, legend=self._imgLgd,
                             replace=True, origin=(100, 10), scale=(2, 0.5))
        image2Context = stats._ImageContext(
            item=self.plot2d.getImage(self._imgLgd),
            plot=self.plot2d,
            onlimits=False
        )
        _stats = self.getBasicStats()
        self.assertTrue(_stats['min'].calculate(image2Context) == 0)
        self.assertTrue(
            _stats['max'].calculate(image2Context) == 128 * 32 - 1)
        self.assertTrue(
            _stats['minCoords'].calculate(image2Context) == (100, 10))
        self.assertTrue(
            _stats['maxCoords'].calculate(image2Context) == (127*2. + 100,
                                                             31 * 0.5 + 10)
        )
        self.assertTrue(
            _stats['std'].calculate(image2Context) == numpy.std(
                self.imageData))
        self.assertTrue(
            _stats['mean'].calculate(image2Context) == numpy.mean(
                self.imageData))

        yData = numpy.sum(self.imageData, axis=1)
        xData = numpy.sum(self.imageData, axis=0)
        dataXRange = range(self.imageData.shape[1])
        dataYRange = range(self.imageData.shape[0])

        ycom = numpy.sum(yData * dataYRange) / numpy.sum(yData)
        ycom = (ycom * 0.5) + 10
        xcom = numpy.sum(xData * dataXRange) / numpy.sum(xData)
        xcom = (xcom * 2.) + 100
        self.assertTrue(
            _stats['com'].calculate(image2Context) == (xcom, ycom))
示例#7
0
文件: testStats.py 项目: vasole/silx
    def testStatsImageAdv(self):
        """Test that scale and origin are taking into account for images"""

        image2Data = numpy.arange(32 * 128).reshape(32, 128)
        self.plot2d.addImage(data=image2Data, legend=self._imgLgd,
                             replace=True, origin=(100, 10), scale=(2, 0.5))
        image2Context = stats._ImageContext(
            item=self.plot2d.getImage(self._imgLgd),
            plot=self.plot2d,
            onlimits=False
        )
        _stats = self.getBasicStats()
        self.assertTrue(_stats['min'].calculate(image2Context) == 0)
        self.assertTrue(
            _stats['max'].calculate(image2Context) == 128 * 32 - 1)
        self.assertTrue(
            _stats['minCoords'].calculate(image2Context) == (100, 10))
        self.assertTrue(
            _stats['maxCoords'].calculate(image2Context) == (127*2. + 100,
                                                             31 * 0.5 + 10)
        )
        self.assertTrue(
            _stats['std'].calculate(image2Context) == numpy.std(
                self.imageData))
        self.assertTrue(
            _stats['mean'].calculate(image2Context) == numpy.mean(
                self.imageData))

        yData = numpy.sum(self.imageData, axis=1)
        xData = numpy.sum(self.imageData, axis=0)
        dataXRange = range(self.imageData.shape[1])
        dataYRange = range(self.imageData.shape[0])

        ycom = numpy.sum(yData * dataYRange) / numpy.sum(yData)
        ycom = (ycom * 0.5) + 10
        xcom = numpy.sum(xData * dataXRange) / numpy.sum(xData)
        xcom = (xcom * 2.) + 100
        self.assertTrue(
            _stats['com'].calculate(image2Context) == (xcom, ycom))
示例#8
0
文件: testStats.py 项目: vallsv/silx
    def testOnLimits(self):
        stat = stats.StatMin()

        self.plot1d.getXAxis().setLimitsConstraints(minPos=2, maxPos=5)
        curveContextOnLimits = stats._CurveContext(
            item=self.plot1d.getCurve('curve0'),
            plot=self.plot1d,
            onlimits=True)
        self.assertTrue(stat.calculate(curveContextOnLimits) == 2)

        self.plot2d.getXAxis().setLimitsConstraints(minPos=32)
        imageContextOnLimits = stats._ImageContext(
            item=self.plot2d.getImage('test image'),
            plot=self.plot2d,
            onlimits=True)
        self.assertTrue(stat.calculate(imageContextOnLimits) == 32)

        self.scatterPlot.getXAxis().setLimitsConstraints(minPos=40)
        scatterContextOnLimits = stats._ScatterContext(
            item=self.scatterPlot.getScatter('scatter plot'),
            plot=self.scatterPlot,
            onlimits=True)
        self.assertTrue(stat.calculate(scatterContextOnLimits) == 20)