r3gradient_test.py 5.4 KB

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