Beispiel #1
0
    def test_getStat(self):
        reference = Raster('../../examples/data.tif')
        simulated = Raster('../../examples/data1.tif')
        reference.resetMask([2])
        simulated.resetMask([2])

        eb = EBudget(reference, simulated)
        stat = eb.getStat(nIter=3)
        ans0 = {
            'NoNo': 0.5,
            'NoMed': (5.0 * 5 / 8 + 3.0 * 3 / 8) / 8,
            'MedMed': 4.0 / 8,
            'MedPer': 1.0,
            'PerPer': 1.0
        }
        for k in stat[0].keys():
            np.testing.assert_almost_equal(stat[0][k], ans0[k])
        ans1 = {
            'NoNo': 0.5,
            'NoMed': (5.0 / 8 + 5.0 / 32 + 3.0 / 16 + 3.0 / 32) / 2,
            'MedMed': 4.0 / 8,
            'MedPer': 1.0,
            'PerPer': 1.0
        }
        for k in stat[1].keys():
            np.testing.assert_almost_equal(stat[0][k], ans1[k])
Beispiel #2
0
    def test_getStat(self):
        reference = Raster('../../examples/data.tif')
        simulated = Raster('../../examples/data1.tif')
        reference.resetMask([2])
        simulated.resetMask([2])

        eb = EBudget(reference, simulated)
        stat = eb.getStat(nIter=3)
        ans0 =  {'NoNo': 0.5, 'NoMed': (5.0*5/8 + 3.0*3/8)/8, 'MedMed': 4.0/8, 'MedPer': 1.0, 'PerPer': 1.0}
        for k in stat[0].keys():
            np.testing.assert_almost_equal(stat[0][k],ans0[k])
        ans1 = {'NoNo': 0.5, 'NoMed': (5.0/8+5.0/32 + 3.0/16 + 3.0/32)/2, 'MedMed': 4.0/8, 'MedPer': 1.0, 'PerPer': 1.0}
        for k in stat[1].keys():
            np.testing.assert_almost_equal(stat[0][k],ans1[k])
Beispiel #3
0
    def test_Init(self):
        Rj = {
            1:
            np.ma.array(
                data=[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 0.0, 0.0],
                      [0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0]],
                mask=[[False, False, False,
                       False], [False, False, False, False],
                      [False, False, False, False],
                      [False, False, False, False]],
            ),
            2:
            np.ma.array(
                data=[[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 1.0, 1.0],
                      [1.0, 1.0, 1.0, 1.0], [0.0, 0.0, 0.0, 0.0]],
                mask=[[False, False, False,
                       False], [False, False, False, False],
                      [False, False, False, False],
                      [False, False, False, False]],
            ),
            3:
            np.ma.array(
                data=[[0.0, 0.0, 0.0, 0.0], [0.0, 0.0, 0.0, 0.0],
                      [0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0]],
                mask=[[False, False, False,
                       False], [False, False, False, False],
                      [False, False, False, False],
                      [False, False, False, False]],
            )
        }

        eb = EBudget(self.reference, self.simulated)
        np.testing.assert_equal(eb.Rj, Rj)
Beispiel #4
0
    def test_weightedSum(self):
        eb = EBudget(self.reference, self.simulated)
        W = eb.W

        S1 = weightedSum(eb.Sj[1], W)
        S2 = weightedSum(eb.Sj[2], W)
        S3 = weightedSum(eb.Sj[3], W)
        self.assertEqual(S1, 5.0 / 16)
        self.assertEqual(S2, 3.0 / 16)
        self.assertEqual(S3, 8.0 / 16)
Beispiel #5
0
    def test_Mask(self):
        reference = Raster('../../examples/data.tif')
        simulated = Raster('../../examples/data1.tif')
        reference.resetMask([2])
        simulated.resetMask([2])

        eb = EBudget(reference, simulated)
        W = eb.W

        S1 = weightedSum(eb.Sj[1], W)
        S3 = weightedSum(eb.Sj[3], W)
        np.testing.assert_almost_equal(S1, 5.0 / 8)
        np.testing.assert_almost_equal(S3, 3.0 / 8)

        noNo = eb.NoNo()
        np.testing.assert_almost_equal(noNo, 0.5)

        noM = eb.NoMed()
        np.testing.assert_almost_equal(noM, (5.0 * 5 / 8 + 3.0 * 3 / 8) / 8)

        medM = eb.MedMed()
        np.testing.assert_almost_equal(medM, 4.0 / 8)

        medP = eb.MedPer()
        np.testing.assert_almost_equal(medP, 1.0)
Beispiel #6
0
    def test_coarse(self):
        reference = Raster('../../examples/data.tif')
        simulated = Raster('../../examples/data1.tif')
        reference.resetMask([2])
        simulated.resetMask([2])

        eb = EBudget(reference, simulated)
        eb.coarse(2)
        # W
        answer = np.array([[1.0, 0.25], [0.5, 0.25]])
        np.testing.assert_array_equal(eb.W, answer)
        # Rj
        answer1 = np.array([[1.0, 1.0], [0, 0]])
        answer3 = np.array([[0, 0], [1.0, 1.0]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Rj, ans)
        # Sj
        answer1 = np.array([[3.0/4, 0.0], [1.0, 0]])
        answer3 = np.array([[1.0/4, 1.0], [0, 1.0]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Sj, ans)

        eb.coarse(2)
        # W
        answer = np.array([[0.5]])
        np.testing.assert_array_equal(eb.W, answer)
        # Rj
        answer1 = np.array([[(1+1.0/4)/2]])
        answer3 = np.array([[(1.0/2 + 1.0/4)/2]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Rj, ans)
        # Sj
        answer1 = np.array([[(3.0/4 + 0.5)/2]])
        answer3 = np.array([[(1.0/4 + 1.0/4 + 1.0/4 )/2]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Sj, ans)
Beispiel #7
0
    def test_coarse(self):
        reference = Raster('../../examples/data.tif')
        simulated = Raster('../../examples/data1.tif')
        reference.resetMask([2])
        simulated.resetMask([2])

        eb = EBudget(reference, simulated)
        eb.coarse(2)
        # W
        answer = np.array([[1.0, 0.25], [0.5, 0.25]])
        np.testing.assert_array_equal(eb.W, answer)
        # Rj
        answer1 = np.array([[1.0, 1.0], [0, 0]])
        answer3 = np.array([[0, 0], [1.0, 1.0]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Rj, ans)
        # Sj
        answer1 = np.array([[3.0 / 4, 0.0], [1.0, 0]])
        answer3 = np.array([[1.0 / 4, 1.0], [0, 1.0]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Sj, ans)

        eb.coarse(2)
        # W
        answer = np.array([[0.5]])
        np.testing.assert_array_equal(eb.W, answer)
        # Rj
        answer1 = np.array([[(1 + 1.0 / 4) / 2]])
        answer3 = np.array([[(1.0 / 2 + 1.0 / 4) / 2]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Rj, ans)
        # Sj
        answer1 = np.array([[(3.0 / 4 + 0.5) / 2]])
        answer3 = np.array([[(1.0 / 4 + 1.0 / 4 + 1.0 / 4) / 2]])
        ans = {1: answer1, 3: answer3}
        np.testing.assert_equal(eb.Sj, ans)
Beispiel #8
0
 def test_MedPer(self):
     eb = EBudget(self.reference, self.simulated)
     medP = eb.MedPer()
     answer = min(6.0 / 16, 5.0 / 16) + min(6.0 / 16, 3.0 / 16) + min(
         4.0 / 16, 8.0 / 16)
     np.testing.assert_almost_equal(medP, answer)
Beispiel #9
0
 def test_MedMed(self):
     eb = EBudget(self.reference, self.simulated)
     medM = eb.MedMed()
     answer = 5.0 / 16
     np.testing.assert_almost_equal(medM, answer)
Beispiel #10
0
    def test_NoMed(self):
        eb = EBudget(self.reference, self.simulated)

        noM = eb.NoMed()
        answer = (6.0 * 5 / 16 + 6.0 * 3 / 16 + 4.0 * 8 / 16) / 16
        np.testing.assert_almost_equal(noM, answer)
Beispiel #11
0
    def test_NoNo(self):
        eb = EBudget(self.reference, self.simulated)

        noNo = eb.NoNo()
        answer = 1.0 / 3
        np.testing.assert_almost_equal(noNo, answer)