r3gradient_test.py 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. # -*- coding: utf-8 -*-
  2. """
  3. Test of r3.gradient
  4. @author Anna Petrasova
  5. """
  6. from grass.gunittest import TestCase, test
  7. r3univar_test_grad_x = """
  8. n=600
  9. null_cells=0
  10. cells=600
  11. min=0.00902566899999995
  12. max=0.0993248405000001
  13. range=0.0902991715000001
  14. mean=0.0641879624599999
  15. mean_of_abs=0.0641879624599999
  16. stddev=0.0243482677445681
  17. variance=0.000592838142161176
  18. coeff_var=37.9327631091908
  19. sum=38.512777476
  20. """
  21. r3univar_test_grad_y = """
  22. n=600
  23. null_cells=0
  24. cells=600
  25. min=-0.0990409449999998
  26. max=-0.00774536350000012
  27. range=0.0912955814999997
  28. mean=-0.0563959154616667
  29. mean_of_abs=0.0563959154616667
  30. stddev=0.0244377519801364
  31. variance=0.000597203721842658
  32. coeff_var=-43.3324856597942
  33. sum=-33.837549277"""
  34. r3univar_test_grad_z = """
  35. n=600
  36. null_cells=0
  37. cells=600
  38. min=0.00643308800000026
  39. max=0.0967259644999999
  40. range=0.0902928764999997
  41. mean=0.0336457494116667
  42. mean_of_abs=0.0336457494116667
  43. stddev=0.0186882020765464
  44. variance=0.000349248896853835
  45. coeff_var=55.5440208743464
  46. sum=20.187449647
  47. """
  48. r3univar_test_nulls_grad_x = """
  49. n=107
  50. null_cells=18
  51. cells=125
  52. min=0
  53. max=10
  54. range=10
  55. mean=3.70093457943925
  56. mean_of_abs=3.70093457943925
  57. stddev=3.6357902977452
  58. variance=13.2189710891781
  59. coeff_var=98.2397883481656
  60. sum=396
  61. """
  62. r3univar_test_nulls_grad_y = """
  63. n=107
  64. null_cells=18
  65. cells=125
  66. min=-10
  67. max=0
  68. range=10
  69. mean=-3.70093457943925
  70. mean_of_abs=3.70093457943925
  71. stddev=3.6357902977452
  72. variance=13.2189710891781
  73. coeff_var=-98.2397883481656
  74. sum=-396
  75. """
  76. r3univar_test_nulls_grad_z = """
  77. n=107
  78. null_cells=18
  79. cells=125
  80. min=0
  81. max=10
  82. range=10
  83. mean=3.70093457943925
  84. mean_of_abs=3.70093457943925
  85. stddev=3.6357902977452
  86. variance=13.2189710891781
  87. coeff_var=98.2397883481656
  88. sum=396
  89. """
  90. class GradientTest(TestCase):
  91. @classmethod
  92. def setUpClass(cls):
  93. """Use temporary region settings"""
  94. cls.use_temp_region()
  95. cls.runModule('g.region', res3=10, n=100, s=0, w=0, e=120, b=0, t=50)
  96. cls.runModule('r3.in.ascii', input='data/test_map_1', output='test_map_1_ref')
  97. cls.runModule('g.region', res3=1, n=5, s=0, w=0, e=5, b=0, t=5)
  98. cls.runModule('r3.in.ascii', input='data/test_map_2', output='test_map_2_ref')
  99. @classmethod
  100. def tearDownClass(cls):
  101. """!Remove the temporary region"""
  102. cls.del_temp_region()
  103. cls.runModule('g.remove', flags='f', type='rast3d',
  104. pattern=['test_map_1_ref', 'test_map_2_ref', 'test_grad_x',
  105. 'test_grad_y', 'test_grad_z', 'test_null_grad_x',
  106. 'test_null_grad_y', 'test_null_grad_z'])
  107. def test_gradient_runs(self):
  108. self.runModule('g.region', res3=10, n=100, s=0, w=0, e=120, b=0, t=50)
  109. self.assertModuleFail('r3.gradient', input='test_map_1_ref',
  110. output=['test_grad_x', 'test_grad_y'], overwrite=True)
  111. self.assertModule('r3.gradient', input='test_map_1_ref',
  112. output=['test_grad_x', 'test_grad_y', 'test_grad_z'], overwrite=True)
  113. def test_gradient(self):
  114. self.runModule('g.region', res3=10, n=100, s=0, w=0, e=120, b=0, t=50)
  115. self.runModule('r3.gradient', input='test_map_1_ref',
  116. output=['test_grad_x', 'test_grad_y', 'test_grad_z'], overwrite=True)
  117. self.assertRaster3dFitsUnivar(raster='test_grad_x', reference=r3univar_test_grad_x, precision=1e-8)
  118. self.assertRaster3dFitsUnivar(raster='test_grad_y', reference=r3univar_test_grad_y, precision=1e-8)
  119. self.assertRaster3dFitsUnivar(raster='test_grad_z', reference=r3univar_test_grad_z, precision=1e-8)
  120. def test_gradient_block(self):
  121. self.runModule('g.region', res3=10, n=100, s=0, w=0, e=120, b=0, t=50)
  122. self.assertModule('r3.gradient', input='test_map_1_ref', block_size=[200, 2, 50],
  123. output=['test_grad_x', 'test_grad_y', 'test_grad_z'], overwrite=True)
  124. self.assertRaster3dFitsUnivar(raster='test_grad_x', reference=r3univar_test_grad_x, precision=1e-8)
  125. self.assertRaster3dFitsUnivar(raster='test_grad_y', reference=r3univar_test_grad_y, precision=1e-8)
  126. self.assertRaster3dFitsUnivar(raster='test_grad_z', reference=r3univar_test_grad_z, precision=1e-8)
  127. def test_gradient_nulls(self):
  128. self.runModule('g.region', res3=1, n=5, s=0, w=0, e=5, b=0, t=5)
  129. self.assertModule('r3.gradient', input='test_map_2_ref', block_size=[200, 2, 50],
  130. output=['test_null_grad_x', 'test_null_grad_y', 'test_null_grad_z'])
  131. self.assertRaster3dFitsUnivar(raster='test_null_grad_x',
  132. reference=r3univar_test_nulls_grad_x, precision=1e-8)
  133. self.assertRaster3dFitsUnivar(raster='test_null_grad_y',
  134. reference=r3univar_test_nulls_grad_y, precision=1e-8)
  135. self.assertRaster3dFitsUnivar(raster='test_null_grad_z',
  136. reference=r3univar_test_nulls_grad_z, precision=1e-8)
  137. if __name__ == '__main__':
  138. test()