r3gradient_test.py 5.0 KB

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