Ejemplo n.º 1
0
    def test_sum_different_quantity(self):
        p1 = _cartesianparam.new()
        p1.quantity = "DBZH"
        p1.setData(reshape(array((NO_DATA, 111, 0, 111), uint8), (2, 2)))
        p1.nodata, p1.undetect, p1.gain, p1.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d1 = _ravefield.new()
        d1.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d1.setData(reshape(array((0, 100, 75, 50), uint8), (2, 2)))
        d1.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p1.addQualityField(d1)

        p2 = _cartesianparam.new()
        p2.quantity = "TH"
        p2.setData(reshape(array((NO_DATA, 111, 0, 111), uint8), (2, 2)))
        p2.nodata, p2.undetect, p2.gain, p2.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d2 = _ravefield.new()
        d2.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d2.setData(reshape(array((0, 100, 75, 50), uint8), (2, 2)))
        d2.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p2.addQualityField(d2)

        obj = _acrr.new()
        obj.sum(p1, 200.0, 1.6)
        try:
            obj.sum(p2, 200.0, 1.6)
            self.fail("Expected IOError")
        except IOError:
            pass

        self.assertEqual(True, obj.isInitialized())
        self.assertEqual("DBZH", obj.getQuantity())
Ejemplo n.º 2
0
  def test_concatx(self):
    obj = _ravefield.new()
    obj.setData(numpy.zeros((10,10), numpy.uint8))
    obj.setValue(0,1,10.0)
    obj.setValue(5,4,20.0)
    obj.setValue(9,4,35.0)

    obj2 = _ravefield.new()
    obj2.setData(numpy.zeros((10,6), numpy.uint8))
    obj2.setValue(0,1,15.0)
    obj2.setValue(5,4,25.0)

    obj2.setValue(0,4,36.0)
    obj2.setValue(1,4,37.0)

    result = obj.concatx(obj2)
    self.assertEqual(16, result.xsize)
    self.assertEqual(10, result.ysize)
    self.assertAlmostEqual(10.0, result.getValue(0,1)[1], 4)
    self.assertAlmostEqual(20.0, result.getValue(5,4)[1], 4)
    self.assertAlmostEqual(15.0, result.getValue(10,1)[1], 4)
    self.assertAlmostEqual(25.0, result.getValue(15,4)[1], 4)
    self.assertAlmostEqual(35.0, result.getValue(9,4)[1], 4)
    self.assertAlmostEqual(36.0, result.getValue(10,4)[1], 4)
    self.assertAlmostEqual(37.0, result.getValue(11,4)[1], 4)
Ejemplo n.º 3
0
    def test_shiftData_neg(self):
        obj = _polarscanparam.new()
        f1 = _ravefield.new()
        f2 = _ravefield.new()
        obj.setData(
            numpy.array(
                [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]],
                numpy.uint8))
        f1.setData(
            numpy.array(
                [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]],
                numpy.uint8))
        f2.setData(
            numpy.array(
                [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]],
                numpy.uint8))
        obj.addQualityField(f1)
        obj.addQualityField(f2)
        obj.shiftData(-1)

        self.assertTrue((numpy.array(
            [[4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [0, 1, 2, 3]],
            numpy.uint8) == obj.getData()).all())
        self.assertTrue((numpy.array(
            [[4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [0, 1, 2, 3]],
            numpy.uint8) == obj.getQualityField(0).getData()).all())
        self.assertTrue((numpy.array(
            [[4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15], [0, 1, 2, 3]],
            numpy.uint8) == obj.getQualityField(1).getData()).all())
Ejemplo n.º 4
0
    def test_accumulate_distfield_nodata(self):

        distance_field1 = (10, 20, 30, ACRR_NO_DATA)
        distance_field2 = (10, 20, 30, ACRR_NO_DATA)

        p1 = _cartesianparam.new()
        p1.quantity = "DBZH"
        p1.setData(reshape(array((111, 111, UNDETECT, NO_DATA), uint8),
                           (2, 2)))
        p1.nodata, p1.undetect, p1.gain, p1.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d1 = _ravefield.new()
        d1.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d1.setData(reshape(array(distance_field1, uint8), (2, 2)))
        d1.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p1.addQualityField(d1)

        p2 = _cartesianparam.new()
        p2.quantity = "DBZH"
        p2.setData(reshape(array((111, 111, 111, NO_DATA), uint8), (2, 2)))
        p2.nodata, p2.undetect, p2.gain, p2.offset = NO_DATA, UNDETECT, 0.5, -32.5

        d2 = _ravefield.new()
        d2.addAttribute("what/gain", DEFAULT_DISTANCE_GAIN)
        d2.setData(reshape(array(distance_field2, uint8), (2, 2)))
        d2.addAttribute("how/task", "se.smhi.composite.distance.radar")

        p2.addQualityField(d2)

        obj = _acrr.new()
        obj.nodata = ACRR_NO_DATA
        obj.undetect = UNDETECT
        obj.sum(p1, 200.0, 1.6)
        obj.sum(p2, 200.0, 1.6)

        result = obj.accumulate(0.0, 2, 1.0)

        self.assertAlmostEqual(1.0, result.getAttribute("what/prodpar"), 4)
        self.assertEqual("ACRR", result.quantity)
        self.assertAlmostEqual(ACRR_NO_DATA, result.nodata, 4)
        self.assertAlmostEqual(UNDETECT, result.undetect, 4)

        refAcrr = [1.0, 1.0, 0.5, ACRR_NO_DATA]
        refDist = self.calculateAvgDistanceField(
            [distance_field1, distance_field2], DEFAULT_DISTANCE_GAIN)
        Acrr = result.getData().flatten()
        qfield = result.getQualityFieldByHowTask(
            "se.smhi.composite.distance.radar")
        self.assertAlmostEqual(0.0, qfield.getAttribute("what/offset"), 4)
        self.assertAlmostEqual(1000.0, qfield.getAttribute("what/gain"), 4)
        Dist = qfield.getData().flatten()
        for i in range(len(refAcrr)):
            self.assertAlmostEqual(Acrr[i], refAcrr[i], 2)
            self.assertAlmostEqual(Dist[i], refDist[i], 2)
Ejemplo n.º 5
0
    def test_getConvertedQualityValueAtLonLat(self):
        obj = _cartesian.new()
        obj.projection = _rave.projection(
            "gnom", "gnom",
            "+proj=gnom +R=6371000.0 +lat_0=56.3675 +lon_0=12.8544")
        obj.xscale = 100.0
        obj.yscale = 100.0

        xy = obj.projection.fwd(deg2rad((12.8544, 56.3675)))
        obj.areaextent = (xy[0] - 4 * 100.0, xy[1] - 5 * 100.0,
                          xy[0] + 6 * 100.0, xy[1] + 5 * 100.0)
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        param.nodata = 255.0
        param.undetect = 0.0

        a = numpy.zeros((11, 9))
        a = numpy.array(a.astype(numpy.float64), numpy.float64)
        a = numpy.reshape(a, (11, 9)).astype(numpy.float64)

        param.setData(a)

        qf = numpy.arange(99)
        qf = numpy.array(qf.astype(numpy.float64), numpy.float64)
        qf = numpy.reshape(qf, (11, 9)).astype(numpy.float64)

        qf2 = numpy.arange(99)
        qf2 = numpy.array(qf.astype(numpy.float64), numpy.float64)
        qf2 = numpy.reshape(qf, (11, 9)).astype(numpy.float64)
        qf2[5][4] = 199.0

        field1 = _ravefield.new()
        field1.addAttribute("how/task", "se.task.1")
        field1.addAttribute("what/offset", 10.0)
        field1.addAttribute("what/gain", 2.0)
        field1.setData(qf)
        param.addQualityField(field1)

        field2 = _ravefield.new()
        field2.addAttribute("how/task", "se.task.2")
        field2.addAttribute("what/gain", 3.0)
        field2.setData(qf2)
        param.addQualityField(field2)

        obj.addParameter(param)
        obj.defaultParameter = "DBZH"

        #expected = obj.getConvertedValue((4,5))
        result = obj.getConvertedQualityValueAtLonLat(
            deg2rad((12.8544, 56.3675)), "se.task.1")
        self.assertAlmostEqual(10.0 + 2.0 * 49.0, result, 4)
        result = obj.getConvertedQualityValueAtLonLat(
            deg2rad((12.8544, 56.3675)), "se.task.2")
        self.assertAlmostEqual(3.0 * 199.0, result, 4)
Ejemplo n.º 6
0
    def test_multiplicative_wGainOffsetAndDatatype(self):
        obj = _qitotal.new()
        obj.gain = 0.001
        obj.offset = -0.01
        obj.datatype = _rave.RaveDataType_UCHAR

        f1 = _ravefield.new()
        f1.setData(numpy.zeros((2, 2), numpy.float64))
        f1.setValue(0, 0, 0.1)
        f1.setValue(0, 1, 0.2)
        f1.setValue(1, 0, 0.3)
        f1.setValue(1, 1, 0.4)

        f2 = _ravefield.new()
        f2.setData(numpy.zeros((2, 2), numpy.float64))
        f2.setValue(0, 0, 0.1)
        f2.setValue(0, 1, 0.2)
        f2.setValue(1, 0, 0.5)
        f2.setValue(1, 1, 1.0)

        f3 = _ravefield.new()
        f3.setData(numpy.zeros((2, 2), numpy.uint8))
        f3.addAttribute("what/gain", 0.1)
        f3.addAttribute("what/offset", 0.2)
        f3.setValue(0, 0, 1)  #0.2 + 1*0.1 = 0.3
        f3.setValue(0, 1, 2)  #0.2 + 2*0.1 = 0.4
        f3.setValue(1, 0, 3)  #0.2 + 3*0.1 = 0.5
        f3.setValue(1, 1, 4)  #0.2 + 4*0.1 = 0.6

        result = obj.multiplicative([f1, f2, f3])

        self.assertEqual(_rave.RaveDataType_UCHAR, result.datatype)
        self.assertAlmostEqual(0.001, result.getAttribute("what/gain"))
        self.assertAlmostEqual(-0.01, result.getAttribute("what/offset"))

        # Due to the conversion errors, we can not check on more than 2 decimals
        #0,0 = 0.1 * 0.1 * 0.3 = 0.003
        self.assertAlmostEqual(0.003,
                               result.getValue(0, 0)[1] * 0.001 - 0.01, 2)

        #0,1 = 0.2 * 0.2 * 0.4 = 0.016
        self.assertAlmostEqual(0.016,
                               result.getValue(0, 1)[1] * 0.001 - 0.01, 2)

        #1,0 = 0.3 * 0.5 * 0.5 = 0.075
        self.assertAlmostEqual(0.075,
                               result.getValue(1, 0)[1] * 0.001 - 0.01, 2)

        #1,1 = 0.4 * 1.0 * 0.6 = 0.24
        self.assertAlmostEqual(0.24,
                               result.getValue(1, 1)[1] * 0.001 - 0.01, 2)
Ejemplo n.º 7
0
    def test_minimum_with_weights(self):
        obj = _qitotal.new()
        f1 = _ravefield.new()
        f1.setData(numpy.zeros((2, 2), numpy.float64))
        f1.addAttribute("how/task", "se.smhi.f1")
        f1.setValue(0, 0, 0.1)  # 0.1 * 0.5 = 0.05
        f1.setValue(0, 1, 0.2)  # 0.2 * 0.5 = 0.10
        f1.setValue(1, 0, 0.3)  # 0.3 * 0.5 = 0.15
        f1.setValue(1, 1, 0.4)  # 0.4 * 0.5 = 0.2

        f2 = _ravefield.new()
        f2.setData(numpy.zeros((2, 2), numpy.float64))
        f2.addAttribute("how/task", "se.smhi.f2")
        f2.setValue(0, 0, 0.1)  # 0.1 * 0.75 = 0.075
        f2.setValue(0, 1, 0.1)  # 0.1 * 0.75 = 0.075
        f2.setValue(1, 0, 0.5)  # 0.5 * 0.75 = 0.375
        f2.setValue(1, 1, 1.0)  # 1.0 * 0.75 = 0.75

        f3 = _ravefield.new()
        f3.setData(numpy.zeros((2, 2), numpy.uint8))
        f3.addAttribute("how/task", "se.smhi.f3")
        f3.addAttribute("what/gain", 0.1)
        f3.addAttribute("what/offset", 0.2)
        f3.setValue(0, 0, 1)  # (0.2 + 1*0.1) * 0.9 = 0.27
        f3.setValue(0, 1, 2)  # (0.2 + 2*0.1) * 0.9 = 0.36
        f3.setValue(1, 0, 3)  # (0.2 + 3*0.1) * 0.9 = 0.45
        f3.setValue(1, 1, 4)  # (0.2 + 4*0.1) * 0.9 = 0.54

        obj.setWeight("se.smhi.f1", 0.5)
        obj.setWeight("se.smhi.f2", 0.25)
        obj.setWeight("se.smhi.f3", 0.25)

        result = obj.minimum([f1, f2, f3])

        self.assertEqual("pl.imgw.quality.qi_total",
                         result.getAttribute("how/task"))
        self.assertEqual("method:minimum",
                         result.getAttribute("how/task_args"))

        #0,0 = min(0.05, 0.075, 0.27) = 0.05 => 0.1
        self.assertAlmostEqual(0.1, result.getValue(0, 0)[1], 4)

        #0,1 = min(0.1, 0.075, 0.36) = 0.075 => 0.1
        self.assertAlmostEqual(0.1, result.getValue(0, 1)[1], 4)

        #1,0 = min(0.15, 0.375, 0.45) = 0.15 => 0.3
        self.assertAlmostEqual(0.3, result.getValue(1, 0)[1], 4)

        #1,1 = min(0.2, 0.75, 0.54) = 0.2 => 0.4
        self.assertAlmostEqual(0.4, result.getValue(1, 1)[1], 4)
Ejemplo n.º 8
0
    def test_additive_with_weights(self):
        obj = _qitotal.new()
        f1 = _ravefield.new()
        f1.setData(numpy.zeros((2, 2), numpy.float64))
        f1.addAttribute("how/task", "se.smhi.f1")
        f1.setValue(0, 0, 0.1)
        f1.setValue(0, 1, 0.2)
        f1.setValue(1, 0, 0.3)
        f1.setValue(1, 1, 0.4)

        f2 = _ravefield.new()
        f2.setData(numpy.zeros((2, 2), numpy.float64))
        f2.addAttribute("how/task", "se.smhi.f2")
        f2.setValue(0, 0, 0.1)
        f2.setValue(0, 1, 0.2)
        f2.setValue(1, 0, 0.5)
        f2.setValue(1, 1, 1.0)

        f3 = _ravefield.new()
        f3.setData(numpy.zeros((2, 2), numpy.uint8))
        f3.addAttribute("how/task", "se.smhi.f3")
        f3.addAttribute("what/gain", 0.1)
        f3.addAttribute("what/offset", 0.2)
        f3.setValue(0, 0, 1)  #0.2 + 1*0.1 = 0.3
        f3.setValue(0, 1, 2)  #0.2 + 2*0.1 = 0.4
        f3.setValue(1, 0, 3)  #0.2 + 3*0.1 = 0.5
        f3.setValue(1, 1, 4)  #0.2 + 4*0.1 = 0.6

        obj.setWeight("se.smhi.f1", 0.5)
        obj.setWeight("se.smhi.f2", 0.25)
        obj.setWeight("se.smhi.f3", 0.25)

        result = obj.additive([f1, f2, f3])

        self.assertEqual("pl.imgw.quality.qi_total",
                         result.getAttribute("how/task"))
        self.assertEqual("method:additive",
                         result.getAttribute("how/task_args"))

        #0,0 = (0.1*0.5 + 0.1*0.25 + 0.3*0.25) = 0.15
        self.assertAlmostEqual(0.15, result.getValue(0, 0)[1], 4)

        #0,1 = (0.2*0.5 + 0.2*0.25 + 0.4*0.25) = 0.25
        self.assertAlmostEqual(0.25, result.getValue(0, 1)[1], 4)

        #1,0 = (0.3*0.5 + 0.5*0.25 + 0.5*0.25) = 0.4
        self.assertAlmostEqual(0.4, result.getValue(1, 0)[1], 4)

        #1,1 = (0.4*0.5 + 1.0*0.25 + 0.6*0.25) = 0.6
        self.assertAlmostEqual(0.6, result.getValue(1, 1)[1], 4)
Ejemplo n.º 9
0
    def Xtest_multiplicative_weighted_fields(self):
        obj = _qitotal.new()
        f1 = _ravefield.new()
        f1.addAttribute("how/task", "se.smhi.f1")
        f1.setData(numpy.zeros((2, 2), numpy.float64))
        f1.setValue(0, 0, 0.1)
        f1.setValue(0, 1, 0.2)
        f1.setValue(1, 0, 0.3)
        f1.setValue(1, 1, 0.4)

        f2 = _ravefield.new()
        f1.addAttribute("how/task", "se.smhi.f2")
        f2.setData(numpy.zeros((2, 2), numpy.float64))
        f2.setValue(0, 0, 0.1)
        f2.setValue(0, 1, 0.2)
        f2.setValue(1, 0, 0.5)
        f2.setValue(1, 1, 1.0)

        f3 = _ravefield.new()
        f3.setData(numpy.zeros((2, 2), numpy.uint8))
        f3.addAttribute("how/task", "se.smhi.f3")
        f3.addAttribute("what/gain", 0.1)
        f3.addAttribute("what/offset", 0.2)
        f3.setValue(0, 0, 1)  #0.2 + 1*0.1 = 0.3
        f3.setValue(0, 1, 2)  #0.2 + 2*0.1 = 0.4
        f3.setValue(1, 0, 3)  #0.2 + 3*0.1 = 0.5
        f3.setValue(1, 1, 4)  #0.2 + 4*0.1 = 0.6

        obj.setWeight("se.smhi.f1", 10.0)
        obj.setWeight("se.smhi.f2", 5.0)

        result = obj.multiplicative([f1, f2, f3])

        self.assertEqual("pl.imgw.quality.qi_total",
                         result.getAttribute("how/task"))
        self.assertEqual("method:multiplicative",
                         result.getAttribute("how/task_args"))

        #0,0 = 0.1 * 0.1 * 0.3 = 0.003
        self.assertAlmostEqual(0.003, result.getValue(0, 0)[1], 4)

        #0,1 = 0.2 * 0.2 * 0.4 = 0.016
        self.assertAlmostEqual(0.016, result.getValue(0, 1)[1], 4)

        #1,0 = 0.3 * 0.5 * 0.5 = 0.075
        self.assertAlmostEqual(0.075, result.getValue(1, 0)[1], 4)

        #1,1 = 0.4 * 1.0 * 0.6 = 0.24
        self.assertAlmostEqual(0.24, result.getValue(1, 1)[1], 4)
Ejemplo n.º 10
0
 def create_quality_field(self, xsize, ysize, dtype, value, howtask):
     obj = _ravefield.new()
     data = numpy.zeros((ysize, xsize), dtype)
     data = data + value
     obj.setData(data)
     obj.addAttribute("how/task", howtask)
     return obj
Ejemplo n.º 11
0
 def lonlats(self, name=None, level=None):
     self.grbs.seek(0)
     try:
         if name != None and level != None:
             latlons = self.grbs.select(name=name, level=level)[0].latlons()
         elif name != None and level == None:
             latlons = self.grbs.select(name=name)[0].latlons()
         else:
             latlons = self.grbs.readline().latlons()
         lats = _ravefield.new()
         lats.setData(latlons[0])
         lons = _ravefield.new()
         lons.setData(latlons[1])
         return (lons, lats)
     except ValueError, e:
         raise IOError(e)
Ejemplo n.º 12
0
    def testPadding(self):
        import numpy

        scan = _polarscan.new()
        dbzh = _polarscanparam.new()
        dbzh.quantity = "DBZH"
        l = []
        for i in range(360):
            l.append([i, i, i])

        data = numpy.array(l).astype(numpy.uint16)
        dbzh.setData(data)
        scan.addParameter(dbzh)
        dbzh.quantity = "TH"
        scan.addParameter(dbzh)

        options = ropo_realtime.options()
        options.emitter2 = (-10, 3, 3)  # default

        newscan, gates = ropo_realtime.PadNrays(scan, options)
        newdata = newscan.getParameter("DBZH").getData()

        # Test data wrapping
        self.assertEqual(newdata[:4].tolist(), data[356:, ].tolist())
        self.assertEqual(newdata[364:, ].tolist(), data[:4, ].tolist())

        classification = _ravefield.new()
        classification.setData(newdata)  # bogus probability of anomaly array
        unwrapped, classification = ropo_realtime.UnpadNrays(
            newscan, classification, gates)

        # Test data unwrapping
        self.assertEqual(
            unwrapped.getParameter("DBZH").getData().tolist(), data.tolist())
Ejemplo n.º 13
0
    def test_apply(self):
        distance = _ravefield.new()
        distance.setData(numpy.zeros((2, 2), numpy.float64))
        distance.setValue(0, 0, 0.1)
        distance.setValue(0, 1, 0.2)
        distance.setValue(1, 0, 0.3)
        distance.setValue(1, 1, 0.4)
        distance.addAttribute("what/gain", 10000.0)
        distance.addAttribute("what/offset", 0.0)

        param = _cartesianparam.new()
        param.setData(numpy.zeros((2, 2), numpy.float64))
        param.setValue((0, 0), 1)
        param.setValue((0, 1), 2)
        param.setValue((1, 0), 3)
        param.setValue((1, 1), 4)
        param.quantity = "ACRR"
        param.gain = 10.0
        param.offset = 2.0

        gra = _gra.new()
        gra.A = 1.0
        gra.B = 2.0
        gra.C = 3.0

        result = gra.apply(distance, param)
        self.assertAlmostEqual(47.77, result.getConvertedValue((0, 0))[1], 2)
        self.assertAlmostEqual(1102.61, result.getConvertedValue((0, 1))[1], 2)
        self.assertAlmostEqual(3200.0, result.getConvertedValue((1, 0))[1], 4)
        self.assertAlmostEqual(4200.0, result.getConvertedValue((1, 1))[1], 4)
Ejemplo n.º 14
0
    def hacFilter(self, scan, quant="DBZH", enough=100):
        NOD = odim_source.NODfromSource(scan)

        # If HAC files are missing, then this method will passively fail.
        try:
            self.readHac(hacFile(scan, lastmonth=True))

            if self.hac.getAttribute("how/count") < enough:
                raise ValueError, "Not enough hits in climatology for %s" % NOD

            hac_data = self.hac.getData()
            if hac_data.shape != (scan.nrays, scan.nbins):
                print hac_data.shape, (scan.nrays, scan.nbins)
                raise IOError, "Scan and HAC have different geometries for %s" % NOD

            ## Get site-specific threshold!
            try:
                self.thresh = ARGS[NOD].thresh
            except KeyError:
                self.thresh = ARGS["default"].thresh
            ## Got site-specific threshold?

            qind = _ravefield.new()
            qind.setData(zeros(hac_data.shape, uint8))
            qind.addAttribute("how/task", "eu.opera.odc.hac")
            qind.addAttribute("how/task_args", self.thresh)
            scan.addQualityField(qind)

            _odc_hac.hacFilter(scan, self.hac, quant)
        except Exception, e:
            print traceback.format_exc()
Ejemplo n.º 15
0
 def makeHac(self, fstr, nrays, nbins):
     if not os.path.isfile(fstr):
         self.hac = _ravefield.new()
         self.hac.addAttribute("how/count", 0)
         self.hac.setData(zeros((nrays, nbins), uint32))
     else:
         raise IOError, "HAC file already exists: %s" % fstr
Ejemplo n.º 16
0
  def test_concatx_differentY(self):
    obj = _ravefield.new()
    obj.setData(numpy.zeros((10,10), numpy.uint8))
    obj.setValue(0,1,10.0)
    obj.setValue(5,4,20.0)

    obj2 = _ravefield.new()
    obj2.setData(numpy.zeros((9,6), numpy.uint8))
    obj2.setValue(0,1,15.0)
    obj2.setValue(5,4,25.0)

    try:
      obj.concatx(obj2)
      self.fail("Expected ValueError")
    except ValueError:
      pass 
Ejemplo n.º 17
0
    def test_minimum_inconsistent_dimensions(self):
        obj = _qitotal.new()
        f1 = _ravefield.new()
        f1.setData(numpy.zeros((2, 2), numpy.float64))

        f2 = _ravefield.new()
        f2.setData(numpy.zeros((2, 2), numpy.float64))

        f3 = _ravefield.new()
        f3.setData(numpy.zeros((3, 2), numpy.uint8))

        try:
            obj.minimum([f1, f2, f3])
            self.fail("Expected AttributeError")
        except AttributeError:
            pass
Ejemplo n.º 18
0
    def test_qualityfields(self):
        obj = _cartesianparam.new()
        field1 = _ravefield.new()
        field2 = _ravefield.new()
        field1.addAttribute("what/name", "field1")
        field2.addAttribute("what/name", "field2")

        obj.addQualityField(field1)
        obj.addQualityField(field2)

        self.assertEqual(2, obj.getNumberOfQualityFields())
        self.assertEqual("field1",
                         obj.getQualityField(0).getAttribute("what/name"))
        obj.removeQualityField(0)
        self.assertEqual(1, obj.getNumberOfQualityFields())
        self.assertEqual("field2",
                         obj.getQualityField(0).getAttribute("what/name"))
 def createQualityField(self, nrays, nbins, zv, howtask):
   qfdata = numpy.zeros((nrays, nbins), numpy.int8)
   qfdata = qfdata + zv
   qf = _ravefield.new()
   qf.setData(qfdata)
   qf.addAttribute("how/task", howtask)
   return qf
   
Ejemplo n.º 20
0
 def test_bad_names(self):
   obj = _ravefield.new()
   BAD_NAMES = ["xyz/is", "what", "is"]
   for n in BAD_NAMES:
     try:
       obj.addAttribute(n, 5)
       self.fail("Expected AttributeError")
     except AttributeError:
       pass
Ejemplo n.º 21
0
    def test_getQualityFieldByHowTask(self):
        param = _cartesianparam.new()
        param.quantity = "DBZH"
        data = numpy.zeros((4, 5), numpy.int8)
        param.setData(data)

        field1 = _ravefield.new()
        field2 = _ravefield.new()
        field1.addAttribute("how/task", "se.smhi.f1")
        field1.addAttribute("what/value", "f1")
        field2.addAttribute("how/task", "se.smhi.f2")
        field2.addAttribute("what/value", "f2")

        param.addQualityField(field1)
        param.addQualityField(field2)

        result = param.getQualityFieldByHowTask("se.smhi.f2")
        self.assertEqual("f2", result.getAttribute("what/value"))
Ejemplo n.º 22
0
  def test_removeAttributes(self):
    obj = _ravefield.new()
    obj.addAttribute("what/is", 10.0)
    obj.addAttribute("where/is", "that")
    obj.addAttribute("how/are", 5)

    obj.removeAttributes()
    
    names = obj.getAttributeNames()
    self.assertEqual(0, len(names))
Ejemplo n.º 23
0
    def test_findQualityFieldByHowTask(self):
        obj = _cartesian.new()
        param = _cartesianparam.new()

        field1 = _ravefield.new()
        field2 = _ravefield.new()
        field3 = _ravefield.new()

        field1.addAttribute("how/task", "se.task.1")
        field1.addAttribute("how/some", "should not be found")
        field2.addAttribute("how/task", "se.task.2")
        field3.addAttribute("how/notask", "abc")

        obj.addQualityField(field1)
        obj.addQualityField(field2)
        obj.addQualityField(field3)

        field4 = _ravefield.new()
        field5 = _ravefield.new()
        field4.addAttribute("how/task", "se.task.1")
        field4.addAttribute("how/some", "should be found")
        field5.addAttribute("how/task", "se.task.3")

        param.addQualityField(field4)
        param.addQualityField(field5)

        param.quantity = "DBZH"
        param.setData(numpy.zeros((240, 240), numpy.uint8))
        obj.addParameter(param)

        self.assertEqual(
            "should be found",
            obj.findQualityFieldByHowTask("se.task.1").getAttribute(
                "how/some"))
        self.assertEqual(
            "se.task.2",
            obj.findQualityFieldByHowTask("se.task.2").getAttribute(
                "how/task"))
        self.assertEqual(
            "se.task.3",
            obj.findQualityFieldByHowTask("se.task.3").getAttribute(
                "how/task"))
        self.assertEqual(None, obj.findQualityFieldByHowTask("abc"))
Ejemplo n.º 24
0
    def test_additive(self):
        obj = _qitotal.new()
        f1 = _ravefield.new()
        f1.setData(numpy.zeros((2, 2), numpy.float64))
        f1.setValue(0, 0, 0.1)
        f1.setValue(0, 1, 0.2)
        f1.setValue(1, 0, 0.3)
        f1.setValue(1, 1, 0.4)

        f2 = _ravefield.new()
        f2.setData(numpy.zeros((2, 2), numpy.float64))
        f2.setValue(0, 0, 0.1)
        f2.setValue(0, 1, 0.2)
        f2.setValue(1, 0, 0.5)
        f2.setValue(1, 1, 1.0)

        f3 = _ravefield.new()
        f3.setData(numpy.zeros((2, 2), numpy.uint8))
        f3.addAttribute("what/gain", 0.1)
        f3.addAttribute("what/offset", 0.2)
        f3.setValue(0, 0, 1)  #0.2 + 1*0.1 = 0.3
        f3.setValue(0, 1, 2)  #0.2 + 2*0.1 = 0.4
        f3.setValue(1, 0, 3)  #0.2 + 3*0.1 = 0.5
        f3.setValue(1, 1, 4)  #0.2 + 4*0.1 = 0.6

        result = obj.additive([f1, f2, f3])

        self.assertEqual("pl.imgw.quality.qi_total",
                         result.getAttribute("how/task"))
        self.assertEqual("method:additive",
                         result.getAttribute("how/task_args"))

        #0,0 = (0.1 + 0.1 + 0.3)/3 = 0.1667
        self.assertAlmostEqual(0.1667, result.getValue(0, 0)[1], 4)

        #0,1 = (0.2 + 0.2 + 0.4)/3 = 0.2667
        self.assertAlmostEqual(0.2667, result.getValue(0, 1)[1], 4)

        #1,0 = (0.3 + 0.5 + 0.5)/3 = 0.4333
        self.assertAlmostEqual(0.4333, result.getValue(1, 0)[1], 4)

        #1,1 = (0.4 + 1.0 + 0.6)/3 = 0.6667
        self.assertAlmostEqual(0.6667, result.getValue(1, 1)[1], 4)
Ejemplo n.º 25
0
 def test_addField_no_quantity(self):
     obj = _verticalprofile.new()
     f = _ravefield.new()
     f.setData(numpy.zeros((10, 1), numpy.uint8))
     f.addAttribute("how/this", 1.0)
     try:
         obj.addField(f)
         self.fail("Expected AttributeError")
     except AttributeError:
         pass
Ejemplo n.º 26
0
 def test_setGetNZ(self):
     obj = _verticalprofile.new()
     self.assertTrue(None == obj.getNZ())
     f = _ravefield.new()
     f.setData(numpy.zeros((10, 1), numpy.uint8))
     f.addAttribute("how/this", 1.0)
     obj.setNZ(f)
     result = obj.getNZ()
     self.assertAlmostEqual(1.0, result.getAttribute("how/this"), 4)
     self.assertEqual("nz", result.getAttribute("what/quantity"))
Ejemplo n.º 27
0
    def test_minimum(self):
        obj = _qitotal.new()
        f1 = _ravefield.new()
        f1.setData(numpy.zeros((2, 2), numpy.float64))
        f1.setValue(0, 0, 0.1)
        f1.setValue(0, 1, 0.2)
        f1.setValue(1, 0, 0.3)
        f1.setValue(1, 1, 0.4)

        f2 = _ravefield.new()
        f2.setData(numpy.zeros((2, 2), numpy.float64))
        f2.setValue(0, 0, 0.1)
        f2.setValue(0, 1, 0.1)
        f2.setValue(1, 0, 0.5)
        f2.setValue(1, 1, 1.0)

        f3 = _ravefield.new()
        f3.setData(numpy.zeros((2, 2), numpy.uint8))
        f3.addAttribute("what/gain", 0.1)
        f3.addAttribute("what/offset", 0.2)
        f3.setValue(0, 0, 1)  #0.2 + 1*0.1 = 0.3
        f3.setValue(0, 1, 2)  #0.2 + 2*0.1 = 0.4
        f3.setValue(1, 0, 3)  #0.2 + 3*0.1 = 0.5
        f3.setValue(1, 1, 4)  #0.2 + 4*0.1 = 0.6

        result = obj.minimum([f1, f2, f3])

        self.assertEqual("pl.imgw.quality.qi_total",
                         result.getAttribute("how/task"))
        self.assertEqual("method:minimum",
                         result.getAttribute("how/task_args"))

        #0,0 = min(0.1, 0.1, 0.3) = 0.1
        self.assertAlmostEqual(0.1, result.getValue(0, 0)[1], 4)

        #0,1 = min(0.2, 0.1, 0.4) = 0.1
        self.assertAlmostEqual(0.1, result.getValue(0, 1)[1], 4)

        #1,0 = min(0.3, 0.5, 0.5) = 0.3
        self.assertAlmostEqual(0.3, result.getValue(1, 0)[1], 4)

        #1,1 = min(0.4, 1.0, 0.6) = 0.4
        self.assertAlmostEqual(0.4, result.getValue(1, 1)[1], 4)
Ejemplo n.º 28
0
 def test_getConvertedValue_with_default_values(self):
   obj = _ravefield.new()
   obj.setData(numpy.zeros((10,10), numpy.uint8))
   obj.setValue(0,1,1.0)
   obj.setValue(0,2,2.0)
   obj.setValue(0,3,3.0)
   obj.setValue(0,4,4.0)
   self.assertAlmostEqual(1.0, obj.getConvertedValue(0,1)[1], 4)
   self.assertAlmostEqual(2.0, obj.getConvertedValue(0,2)[1], 4)
   self.assertAlmostEqual(3.0, obj.getConvertedValue(0,3)[1], 4)
   self.assertAlmostEqual(4.0, obj.getConvertedValue(0,4)[1], 4)
Ejemplo n.º 29
0
    def test_getQualityFieldByHowTask(self):
        obj = _cartesian.new()
        field1 = _ravefield.new()
        field2 = _ravefield.new()
        field3 = _ravefield.new()
        field1.addAttribute("how/task", "se.task.1")
        field2.addAttribute("how/task", "se.task.2")
        field3.addAttribute("how/notask", "abc")

        obj.addQualityField(field1)
        obj.addQualityField(field2)
        obj.addQualityField(field3)

        self.assertEqual(
            "se.task.1",
            obj.getQualityFieldByHowTask("se.task.1").getAttribute("how/task"))
        self.assertEqual(
            "se.task.2",
            obj.getQualityFieldByHowTask("se.task.2").getAttribute("how/task"))
        self.assertEqual(None, obj.getQualityFieldByHowTask("abc"))
Ejemplo n.º 30
0
 def test_addField_dev_bird(self):
     obj = _verticalprofile.new()
     f = _ravefield.new()
     f.setData(numpy.zeros((10, 1), numpy.uint8))
     f.addAttribute("how/this", 1.0)
     f.addAttribute("what/quantity", "dev_bird")
     obj.addField(f)
     result = obj.getField("dev_bird")
     self.assertAlmostEqual(1.0, result.getAttribute("how/this"), 4)
     self.assertEqual("dev_bird", result.getAttribute("what/quantity"))
     self.assertEqual(10, obj.getLevels())