r3gradient_test.py 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  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(
  105. "g.remove",
  106. flags="f",
  107. type="raster_3d",
  108. name=",".join(
  109. [
  110. "test_map_1_ref",
  111. "test_map_2_ref",
  112. "test_grad_x",
  113. "test_grad_y",
  114. "test_grad_z",
  115. "test_null_grad_x",
  116. "test_null_grad_y",
  117. "test_null_grad_z",
  118. ]
  119. ),
  120. )
  121. def test_gradient_runs(self):
  122. self.runModule("g.region", res3=10, n=100, s=0, w=0, e=120, b=0, t=50)
  123. self.assertModuleFail(
  124. "r3.gradient",
  125. input="test_map_1_ref",
  126. output=["test_grad_x", "test_grad_y"],
  127. overwrite=True,
  128. )
  129. self.assertModule(
  130. "r3.gradient",
  131. input="test_map_1_ref",
  132. output=["test_grad_x", "test_grad_y", "test_grad_z"],
  133. overwrite=True,
  134. )
  135. def test_gradient(self):
  136. self.runModule("g.region", res3=10, n=100, s=0, w=0, e=120, b=0, t=50)
  137. self.runModule(
  138. "r3.gradient",
  139. input="test_map_1_ref",
  140. output=["test_grad_x", "test_grad_y", "test_grad_z"],
  141. overwrite=True,
  142. )
  143. self.assertRaster3dFitsUnivar(
  144. raster="test_grad_x", reference=r3univar_test_grad_x, precision=1e-8
  145. )
  146. self.assertRaster3dFitsUnivar(
  147. raster="test_grad_y", reference=r3univar_test_grad_y, precision=1e-8
  148. )
  149. self.assertRaster3dFitsUnivar(
  150. raster="test_grad_z", reference=r3univar_test_grad_z, precision=1e-8
  151. )
  152. def test_gradient_block(self):
  153. self.runModule("g.region", res3=10, n=100, s=0, w=0, e=120, b=0, t=50)
  154. self.assertModule(
  155. "r3.gradient",
  156. input="test_map_1_ref",
  157. blocksize=[200, 2, 50],
  158. output=["test_grad_x", "test_grad_y", "test_grad_z"],
  159. overwrite=True,
  160. )
  161. self.assertRaster3dFitsUnivar(
  162. raster="test_grad_x", reference=r3univar_test_grad_x, precision=1e-8
  163. )
  164. self.assertRaster3dFitsUnivar(
  165. raster="test_grad_y", reference=r3univar_test_grad_y, precision=1e-8
  166. )
  167. self.assertRaster3dFitsUnivar(
  168. raster="test_grad_z", reference=r3univar_test_grad_z, precision=1e-8
  169. )
  170. def test_gradient_nulls(self):
  171. self.runModule("g.region", res3=1, n=5, s=0, w=0, e=5, b=0, t=5)
  172. self.assertModule(
  173. "r3.gradient",
  174. input="test_map_2_ref",
  175. blocksize=[200, 2, 50],
  176. output=["test_null_grad_x", "test_null_grad_y", "test_null_grad_z"],
  177. )
  178. self.assertRaster3dFitsUnivar(
  179. raster="test_null_grad_x",
  180. reference=r3univar_test_nulls_grad_x,
  181. precision=1e-8,
  182. )
  183. self.assertRaster3dFitsUnivar(
  184. raster="test_null_grad_y",
  185. reference=r3univar_test_nulls_grad_y,
  186. precision=1e-8,
  187. )
  188. self.assertRaster3dFitsUnivar(
  189. raster="test_null_grad_z",
  190. reference=r3univar_test_nulls_grad_z,
  191. precision=1e-8,
  192. )
  193. if __name__ == "__main__":
  194. test()