From fd417464226e9b82de4dcc0200ec01c733132ad0 Mon Sep 17 00:00:00 2001 From: Vaclav Petras Date: Wed, 7 Oct 2026 11:03:30 -0400 Subject: [PATCH] r.sim: Rename the option random_seed to seed The random seed is the option seed in the eleven other tools which take one, all through G_OPT_M_SEED, and only r.sim.water and r.sim.sediment call it random_seed. The key in the history and the run summary is seed already. The old name keeps working through the renamed options list, with the parser's warning, as the earlier renames of these tools do. Written with the help of Claude Code. --- lib/gis/renamed_options | 2 + raster/r.sim/r.sim.sediment/main.c | 3 +- .../r.sim/r.sim.sediment/r.sim.sediment.html | 2 +- raster/r.sim/r.sim.sediment/r.sim.sediment.md | 2 +- .../tests/r_sim_sediment_random_test.py | 18 +++---- .../tests/r_sim_sediment_summary_test.py | 2 +- .../testsuite/test_r_sim_sediment.py | 2 +- raster/r.sim/r.sim.water/main.c | 3 +- raster/r.sim/r.sim.water/r.sim.water.html | 14 ++--- raster/r.sim/r.sim.water/r.sim.water.ipynb | 2 +- raster/r.sim/r.sim.water/r.sim.water.md | 14 ++--- .../tests/r_sim_water_landforms_test.py | 4 +- .../tests/r_sim_water_mannings_null_test.py | 2 +- .../tests/r_sim_water_nprocs_test.py | 2 +- .../tests/r_sim_water_random_test.py | 51 +++++++++++-------- .../tests/r_sim_water_summary_test.py | 4 +- .../r.sim.water/tests/r_sim_water_test.py | 25 +++++---- .../tests/r_sim_water_time_series_test.py | 2 +- .../r.sim.water/testsuite/test_r_sim_water.py | 10 ++-- 19 files changed, 85 insertions(+), 79 deletions(-) diff --git a/lib/gis/renamed_options b/lib/gis/renamed_options index acf29f1f993..9c0db584d7b 100644 --- a/lib/gis/renamed_options +++ b/lib/gis/renamed_options @@ -333,6 +333,7 @@ r.sim.sediment|nwalk:nwalkers r.sim.sediment|niterations:duration r.sim.sediment|outiter:output_step r.sim.sediment|outwalk:walkers_output +r.sim.sediment|random_seed:seed r.sim.sediment|tauin:shear_stress r.sim.sediment|tc:transport_capacity r.sim.sediment|tranin:transport_coeff @@ -353,6 +354,7 @@ r.sim.water|nwalk:nwalkers r.sim.water|outiter:output_step r.sim.water|outwalk:walkers_output r.sim.water|rain_val:rain_value +r.sim.water|random_seed:seed r.sim.water|traps:flow_control # r.slope.aspect r.slope.aspect|min_slp_allowed:min_slope diff --git a/raster/r.sim/r.sim.sediment/main.c b/raster/r.sim/r.sim.sediment/main.c index 3795af88541..f83f9e16732 100644 --- a/raster/r.sim/r.sim.sediment/main.c +++ b/raster/r.sim/r.sim.sediment/main.c @@ -280,7 +280,6 @@ int main(int argc, char *argv[]) parm.diffc->guisection = _("Parameters"); parm.seed = G_define_standard_option(G_OPT_M_SEED); - parm.seed->key = "random_seed"; flag.generateSeed = G_define_flag(); flag.generateSeed->key = 's'; @@ -288,7 +287,7 @@ int main(int argc, char *argv[]) _("Generate random seed (result is non-deterministic) [deprecated]"); flag.generateSeed->description = _("This flag is deprecated and will be removed in a future release. " - "Seeding is automatic or use parameter random_seed."); + "Seeding is automatic or use parameter seed."); parm.threads = G_define_option(); parm.threads->key = "nprocs"; diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.html b/raster/r.sim/r.sim.sediment/r.sim.sediment.html index acb90dcedd3..cef4226dc11 100644 --- a/raster/r.sim/r.sim.sediment/r.sim.sediment.html +++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.html @@ -86,7 +86,7 @@

Run summary

r.sim.sediment elevation=elevation water_depth=water_depth detachment_coeff=detachment \ transport_coeff=transport shear_stress=shear_stress man_value=1 \ sediment_flux=flux erosion_deposition=erdep transport_capacity=tc \ - duration=1 random_seed=1 -p format=json + duration=1 seed=1 -p format=json
diff --git a/raster/r.sim/r.sim.sediment/r.sim.sediment.md b/raster/r.sim/r.sim.sediment/r.sim.sediment.md
index 87e4afe0a6a..8e3c7cf6ae3 100644
--- a/raster/r.sim/r.sim.sediment/r.sim.sediment.md
+++ b/raster/r.sim/r.sim.sediment/r.sim.sediment.md
@@ -76,7 +76,7 @@ Summary of a run in JSON:
 r.sim.sediment elevation=elevation water_depth=water_depth detachment_coeff=detachment \
     transport_coeff=transport shear_stress=shear_stress man_value=1 \
     sediment_flux=flux erosion_deposition=erdep transport_capacity=tc \
-    duration=1 random_seed=1 -p format=json
+    duration=1 seed=1 -p format=json
 ```
 
 ```json
diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py
index 21c0f2c1379..66dbb7fc5fc 100644
--- a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py
+++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_random_test.py
@@ -65,15 +65,15 @@ def simulate(session, walkers=None, env=None, **kwargs):
 
 def test_same_seed_gives_same_flux(session):
     """Two runs with the same seed give the same sediment flux."""
-    first, _ = simulate(session, random_seed=1)
-    second, _ = simulate(session, random_seed=1)
+    first, _ = simulate(session, seed=1)
+    second, _ = simulate(session, seed=1)
     assert np.array_equal(first, second)
 
 
 def test_different_seeds_give_different_results(session):
     """Runs with different seeds give different fluxes and walker positions."""
-    first_flux, first_walkers = simulate(session, "walkers_seed_1", random_seed=1)
-    second_flux, second_walkers = simulate(session, "walkers_seed_2", random_seed=2)
+    first_flux, first_walkers = simulate(session, "walkers_seed_1", seed=1)
+    second_flux, second_walkers = simulate(session, "walkers_seed_2", seed=2)
     assert not np.array_equal(first_flux, second_flux)
     assert not np.array_equal(first_walkers, second_walkers)
 
@@ -83,7 +83,7 @@ def test_generated_seed_is_the_seed_option(session):
     env = session.env.copy()
     env["GRASS_RANDOM_SEED"] = "3"
     generated, _ = simulate(session, env=env)
-    given, _ = simulate(session, random_seed=3)
+    given, _ = simulate(session, seed=3)
     assert np.array_equal(generated, given)
 
 
@@ -94,9 +94,9 @@ def test_results_do_not_depend_on_nprocs(session, nprocs):
     The water depth is an input here, so nothing a walker reacts to is
     changed by the other walkers of the same step.
     """
-    serial_flux, serial = simulate(session, f"walkers_{nprocs}_serial", random_seed=5)
+    serial_flux, serial = simulate(session, f"walkers_{nprocs}_serial", seed=5)
     parallel_flux, parallel = simulate(
-        session, f"walkers_{nprocs}_parallel", random_seed=5, nprocs=nprocs
+        session, f"walkers_{nprocs}_parallel", seed=5, nprocs=nprocs
     )
     assert serial.size
     assert np.array_equal(parallel, serial)
@@ -107,11 +107,11 @@ def test_results_do_not_depend_on_nprocs(session, nprocs):
 def test_seed_outside_range_is_an_error(session, seed):
     """A seed the generator cannot use is refused, not silently wrapped."""
     with pytest.raises(CalledModuleError, match="outside the range"):
-        simulate(session, random_seed=seed)
+        simulate(session, seed=seed)
 
 
 @pytest.mark.parametrize("seed", ["12abc", "1.5", "-", "99999999999999999999"])
 def test_seed_which_is_not_an_integer_is_an_error(session, seed):
     """A seed which the parser lets through but which is not an integer is refused."""
     with pytest.raises(CalledModuleError, match="Invalid random seed"):
-        simulate(session, random_seed=seed)
+        simulate(session, seed=seed)
diff --git a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py
index 4fc1ee25067..84a2ca6257b 100644
--- a/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py
+++ b/raster/r.sim/r.sim.sediment/tests/r_sim_sediment_summary_test.py
@@ -70,7 +70,7 @@ def sediment_inputs(session_tools):
         "shear_stress": "shear_stress",
         "man_value": 1,
         "diffusion_coeff": 0.05,
-        "random_seed": 1,
+        "seed": 1,
     }
 
 
diff --git a/raster/r.sim/r.sim.sediment/testsuite/test_r_sim_sediment.py b/raster/r.sim/r.sim.sediment/testsuite/test_r_sim_sediment.py
index bb4bc13a8de..85a01273384 100644
--- a/raster/r.sim/r.sim.sediment/testsuite/test_r_sim_sediment.py
+++ b/raster/r.sim/r.sim.sediment/testsuite/test_r_sim_sediment.py
@@ -85,7 +85,7 @@ def test_default(self):
             shear_stress=self.tauin,
             sediment_flux=self.sedflux,
             erosion_deposition=self.erdep,
-            random_seed=1,
+            seed=1,
         )
 
         # Assert that the output rasters exist
diff --git a/raster/r.sim/r.sim.water/main.c b/raster/r.sim/r.sim.water/main.c
index e1055c16cf7..e03034fb28b 100644
--- a/raster/r.sim/r.sim.water/main.c
+++ b/raster/r.sim/r.sim.water/main.c
@@ -315,7 +315,6 @@ int main(int argc, char *argv[])
     flag.tserie->guisection = _("Output");
 
     parm.seed = G_define_standard_option(G_OPT_M_SEED);
-    parm.seed->key = "random_seed";
 
     flag.generateSeed = G_define_flag();
     flag.generateSeed->key = 's';
@@ -323,7 +322,7 @@ int main(int argc, char *argv[])
         _("Generate random seed (result is non-deterministic) [deprecated]");
     flag.generateSeed->description =
         _("This flag is deprecated and will be removed in a future release. "
-          "Seeding is automatic or use parameter random_seed.");
+          "Seeding is automatic or use parameter seed.");
 
     parm.threads = G_define_option();
     parm.threads->key = "nprocs";
diff --git a/raster/r.sim/r.sim.water/r.sim.water.html b/raster/r.sim/r.sim.water/r.sim.water.html
index b9f2fbc0ab1..5a81b41767f 100644
--- a/raster/r.sim/r.sim.water/r.sim.water.html
+++ b/raster/r.sim/r.sim.water/r.sim.water.html
@@ -232,7 +232,7 @@ 

Run summary

 r.sim.water elevation=elevation depth=depth discharge=discharge rain_value=50 \
-    man_value=0.05 nwalkers=100000 duration=20 output_step=10 random_seed=3 \
+    man_value=0.05 nwalkers=100000 duration=20 output_step=10 seed=3 \
     -t -p format=json
 
@@ -251,7 +251,7 @@

Run summary

nwalkers=100000, duration=20, output_step=10, - random_seed=3, + seed=3, flags="tp", format="json", ) @@ -273,7 +273,7 @@

Run summary

nwalkers=100000, duration=20, output_step=10, - random_seed=3, + seed=3, flags="tp", format="json", ) @@ -325,7 +325,7 @@

Run summary

Random numbers and parallel processing

The walkers are placed and moved using pseudo-random numbers. The seed -is given by random_seed; without it, a seed is generated and +is given by seed; without it, a seed is generated and recorded in the history of the output maps and in the run summary as seed, so that the run can be repeated. With more than one thread, the results differ slightly between thread counts and between repeated runs, @@ -421,7 +421,7 @@

EXAMPLE

 r.sim.water elevation=elevation man=mannings rain_value=20 depth=depth \
-    duration=30 random_seed=1
+    duration=30 seed=1
 
In Python with grass.script: @@ -434,7 +434,7 @@

EXAMPLE

rain_value=20, depth="depth", duration=30, - random_seed=1, + seed=1, )
@@ -447,7 +447,7 @@

EXAMPLE

rain_value=20, depth="depth", duration=30, - random_seed=1, + seed=1, ) diff --git a/raster/r.sim/r.sim.water/r.sim.water.ipynb b/raster/r.sim/r.sim.water/r.sim.water.ipynb index 3311fb345cc..097140a3ae5 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.ipynb +++ b/raster/r.sim/r.sim.water/r.sim.water.ipynb @@ -127,7 +127,7 @@ " depth=\"depth\",\n", " output_step=5,\n", " duration=30,\n", - " random_seed=1,\n", + " seed=1,\n", " nprocs=1,\n", ")" ] diff --git a/raster/r.sim/r.sim.water/r.sim.water.md b/raster/r.sim/r.sim.water/r.sim.water.md index 755767d98be..c9040fbe3eb 100644 --- a/raster/r.sim/r.sim.water/r.sim.water.md +++ b/raster/r.sim/r.sim.water/r.sim.water.md @@ -222,7 +222,7 @@ Summary of a time series run with two output steps in JSON: ```sh r.sim.water elevation=elevation depth=depth discharge=discharge rain_value=50 \ - man_value=0.05 nwalkers=100000 duration=20 output_step=10 random_seed=3 \ + man_value=0.05 nwalkers=100000 duration=20 output_step=10 seed=3 \ -t -p format=json ``` @@ -241,7 +241,7 @@ Summary of a time series run with two output steps in JSON: nwalkers=100000, duration=20, output_step=10, - random_seed=3, + seed=3, flags="tp", format="json", ) @@ -263,7 +263,7 @@ Summary of a time series run with two output steps in JSON: nwalkers=100000, duration=20, output_step=10, - random_seed=3, + seed=3, flags="tp", format="json", ) @@ -316,7 +316,7 @@ The printed summary: ### Random numbers and parallel processing The walkers are placed and moved using pseudo-random numbers. The seed -is given by **random_seed**; without it, a seed is generated and +is given by **seed**; without it, a seed is generated and recorded in the history of the output maps and in the run summary as `seed`, so that the run can be repeated. With more than one thread, the results differ slightly between thread counts and between repeated runs, @@ -412,7 +412,7 @@ Simulate 30 minutes of overland flow with a uniform rainfall excess of ```sh r.sim.water elevation=elevation man=mannings rain_value=20 depth=depth \ - duration=30 random_seed=1 + duration=30 seed=1 ``` === "Python (grass.script)" @@ -425,7 +425,7 @@ Simulate 30 minutes of overland flow with a uniform rainfall excess of rain_value=20, depth="depth", duration=30, - random_seed=1, + seed=1, ) ``` @@ -438,7 +438,7 @@ Simulate 30 minutes of overland flow with a uniform rainfall excess of rain_value=20, depth="depth", duration=30, - random_seed=1, + seed=1, ) ``` diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py index 52c10ba66e8..12c78cffef9 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_landforms_test.py @@ -96,7 +96,7 @@ def surface(row_values, column_values): SPUR = surface(DOWNSLOPE, [-1.8, -0.8, -0.2, 0.0, -0.2, -0.8, -1.8]) -def landform_depth(project, elevation, *, random_seed=SEED, **kwargs): +def landform_depth(project, elevation, *, seed=SEED, **kwargs): """Simulate r.sim.water on an elevation array in a new project; return depth. The region is one cell per array element at unit resolution. Only the @@ -110,7 +110,7 @@ def landform_depth(project, elevation, *, random_seed=SEED, **kwargs): return tools.r_sim_water( elevation=elevation, depth=np.array, - random_seed=random_seed, + seed=seed, rain_value=RAIN, infil_value=0, man_value=0.1, diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_mannings_null_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_mannings_null_test.py index 43342b52ece..bb0fd801394 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_mannings_null_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_mannings_null_test.py @@ -57,7 +57,7 @@ def simulate(session, elevation, man, **kwargs): rain_value=50, nwalkers=2000, duration=2, - random_seed=1, + seed=1, nprocs=1, flags="p", format="json", diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_nprocs_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_nprocs_test.py index 73f4fe40412..108a4418571 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_nprocs_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_nprocs_test.py @@ -39,7 +39,7 @@ def depth(session, nprocs, rain=RAIN, **kwargs): man_value=0.05, nwalkers=400, duration=2, - random_seed=1, + seed=1, nprocs=nprocs, **kwargs, ) diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py index ee6064d1eec..3904fbab1d0 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_random_test.py @@ -64,15 +64,15 @@ def simulate_walkers(session, name, **kwargs): def test_same_seed_gives_same_depth(session): """Two runs with the same seed give the same water depth.""" - first = simulate_depth(session, random_seed=1) - second = simulate_depth(session, random_seed=1) + first = simulate_depth(session, seed=1) + second = simulate_depth(session, seed=1) assert np.array_equal(first, second) def test_different_seeds_give_different_depth(session): """Runs with different seeds give different water depths.""" - first = simulate_depth(session, random_seed=1) - second = simulate_depth(session, random_seed=2) + first = simulate_depth(session, seed=1) + second = simulate_depth(session, seed=2) assert not np.array_equal(first, second) @@ -83,17 +83,30 @@ def test_generated_seed_is_the_seed_option(session): generated = Tools(env=env).r_sim_water( elevation="elevation", depth=np.array, duration=5 ) - given = simulate_depth(session, random_seed=3) + given = simulate_depth(session, seed=3) assert np.array_equal(generated, given) +def test_old_option_name_is_renamed(session): + """The old name random_seed is accepted with a warning and means seed.""" + tools = Tools(session=session, consistent_return_value=True) + result = tools.r_sim_water( + elevation="elevation", depth=np.array, duration=5, random_seed=3 + ) + # The message is wrapped, so the words may be on separate lines. + assert re.search( + r"\s+has\s+been\s+renamed\s+to\s+", result.stderr + ) + assert np.array_equal(result.arrays.depth, simulate_depth(session, seed=3)) + + def test_generated_seed_is_recorded(session): """A run without a seed records the seed it used, and the seed repeats it.""" tools = Tools(session=session) tools.r_sim_water(elevation="elevation", depth="generated", duration=5) history = tools.r_info(map="generated", flags="h").text seed = int(re.search(r"\bseed=(-?\d+)", history).group(1)) - repeated = simulate_depth(session, random_seed=seed) + repeated = simulate_depth(session, seed=seed) generated = garray.array("generated", env=session.env) assert np.array_equal(repeated, generated) @@ -105,14 +118,14 @@ def test_deprecated_flag_generates_a_seed(session): generated = Tools(env=env).r_sim_water( elevation="elevation", depth=np.array, duration=5, flags="s" ) - given = simulate_depth(session, random_seed=3) + given = simulate_depth(session, seed=3) assert np.array_equal(generated, given) def test_seed_and_flag_are_exclusive(session): """The seed option and the flag to generate a seed cannot be combined.""" with pytest.raises(CalledModuleError, match="mutually exclusive"): - simulate_depth(session, random_seed=1, flags="s") + simulate_depth(session, seed=1, flags="s") @pytest.mark.parametrize("nprocs", [2, 4]) @@ -122,10 +135,8 @@ def test_depth_does_not_depend_on_nprocs_below_hmax(session, nprocs): Above hmax a walker reacts to the depth the walkers before it in the same step left, and that order depends on the threads. """ - serial = simulate_depth(session, random_seed=5, **NO_DEPTH_FEEDBACK) - parallel = simulate_depth( - session, random_seed=5, nprocs=nprocs, **NO_DEPTH_FEEDBACK - ) + serial = simulate_depth(session, seed=5, **NO_DEPTH_FEEDBACK) + parallel = simulate_depth(session, seed=5, nprocs=nprocs, **NO_DEPTH_FEEDBACK) assert np.array_equal(parallel, serial) @@ -133,12 +144,12 @@ def test_depth_does_not_depend_on_nprocs_below_hmax(session, nprocs): def test_walkers_do_not_depend_on_nprocs(session, nprocs): """Walkers end at the same positions with any number of threads.""" serial = simulate_walkers( - session, f"walkers_{nprocs}_serial", random_seed=5, **NO_DEPTH_FEEDBACK + session, f"walkers_{nprocs}_serial", seed=5, **NO_DEPTH_FEEDBACK ) parallel = simulate_walkers( session, f"walkers_{nprocs}_parallel", - random_seed=5, + seed=5, nprocs=nprocs, **NO_DEPTH_FEEDBACK, ) @@ -148,12 +159,8 @@ def test_walkers_do_not_depend_on_nprocs(session, nprocs): def test_walkers_depend_on_seed(session): """The walker comparison above can detect a difference.""" - first = simulate_walkers( - session, "walkers_seed_5", random_seed=5, **NO_DEPTH_FEEDBACK - ) - second = simulate_walkers( - session, "walkers_seed_6", random_seed=6, **NO_DEPTH_FEEDBACK - ) + first = simulate_walkers(session, "walkers_seed_5", seed=5, **NO_DEPTH_FEEDBACK) + second = simulate_walkers(session, "walkers_seed_6", seed=6, **NO_DEPTH_FEEDBACK) assert not np.array_equal(first, second) @@ -161,11 +168,11 @@ def test_walkers_depend_on_seed(session): def test_seed_outside_range_is_an_error(session, seed): """A seed the generator cannot use is refused, not silently wrapped.""" with pytest.raises(CalledModuleError, match="outside the range"): - simulate_depth(session, random_seed=seed) + simulate_depth(session, seed=seed) @pytest.mark.parametrize("seed", ["12abc", "1.5", "-", "99999999999999999999"]) def test_seed_which_is_not_an_integer_is_an_error(session, seed): """A seed which the parser lets through but which is not an integer is refused.""" with pytest.raises(CalledModuleError, match="Invalid random seed"): - simulate_depth(session, random_seed=seed) + simulate_depth(session, seed=seed) diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py index 17cfb806d86..c88f5d722bc 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_summary_test.py @@ -17,7 +17,7 @@ "elevation": ELEVATION, "man_value": 8, "diffusion_coeff": 0.05, - "random_seed": 1, + "seed": 1, } COMMON_KEYS = { @@ -134,7 +134,7 @@ def test_json_summary_stopped_early(session_tools): elevation=ELEVATION, depth="depth", duration=1, - random_seed=1, + seed=1, flags="p", format="json", ).json diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py index e0b471ae981..d9b7ae10a30 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_test.py @@ -32,7 +32,7 @@ NO_DIFFUSION = {"diffusion_coeff": 0.001} -def run_sim(session, *, random_seed=SEED, **kwargs): +def run_sim(session, *, seed=SEED, **kwargs): """Run r.sim.water on the session's terrain; return depth as ndarray. Assumes the session already contains rasters named elevation, dx, and dy @@ -57,7 +57,7 @@ def run_sim(session, *, random_seed=SEED, **kwargs): dx="dx", dy="dy", depth=np.array, - random_seed=random_seed, + seed=seed, **defaults, ) @@ -336,7 +336,7 @@ def test_discharge_within_mass_balance_bracket(east_slope_session): discharge=np.array, rain_value=RAIN, duration=DURATION, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, ) total = float(np.sum(discharge)) @@ -354,8 +354,7 @@ def test_results_consistent_across_seeds(east_slope_session): """ seeds = [1, 7, 42, 99, 123] sums = [ - float(np.sum(run_sim(east_slope_session, nwalkers=1000, random_seed=s))) - for s in seeds + float(np.sum(run_sim(east_slope_session, nwalkers=1000, seed=s))) for s in seeds ] mean_sum = np.mean(sums) for seed, total in zip(seeds, sums, strict=True): @@ -423,7 +422,7 @@ def test_error_output_is_zero(east_slope_session): rain_value=RAIN, man_value=0.1, duration=DURATION, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, ) assert error.shape == (1, 5), f"Expected one error value per cell:\n{error}" @@ -548,7 +547,7 @@ def test_duration_affects_time_series_progression(long_slope_session): nwalkers=10000, duration=10, output_step=5, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, flags="t", ) @@ -563,7 +562,7 @@ def test_duration_affects_time_series_progression(long_slope_session): nwalkers=10000, duration=20, output_step=5, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, flags="t", ) @@ -735,7 +734,7 @@ def test_dx_dy_optional(tmp_path): rain_value=RAIN, man_value=0.1, duration=DURATION, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, ) assert np.sum(depth) > 0, "Expected positive depth when dx/dy are omitted" @@ -796,7 +795,7 @@ def test_time_series_outputs(long_slope_session): man_value=0.3, duration=10, output_step=5, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, walkers_output="walkers", flags="t", @@ -839,7 +838,7 @@ def test_observation_logfile(east_slope_session, tmp_path): man_value=0.1, nwalkers=1000, duration=DURATION, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, observation="points", logfile=logfile, @@ -892,7 +891,7 @@ def test_walkers_output(long_slope_session): man_value=0.3, nwalkers=nwalkers, duration=DURATION, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, walkers_output="walkers", ) @@ -1010,7 +1009,7 @@ def test_north_slope_observation_logfile(tmp_path): man_value=0.1, nwalkers=1000, duration=DURATION, - random_seed=SEED, + seed=SEED, nprocs=NPROCS, observation="points", logfile=logfile, diff --git a/raster/r.sim/r.sim.water/tests/r_sim_water_time_series_test.py b/raster/r.sim/r.sim.water/tests/r_sim_water_time_series_test.py index dbcdd628559..98d1ca14862 100644 --- a/raster/r.sim/r.sim.water/tests/r_sim_water_time_series_test.py +++ b/raster/r.sim/r.sim.water/tests/r_sim_water_time_series_test.py @@ -18,7 +18,7 @@ "elevation": "elevation", "man_value": 0.1, "duration": 10, - "random_seed": 1, + "seed": 1, "nprocs": 1, } diff --git a/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py b/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py index 5d9f0dafca6..b80f020d660 100644 --- a/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py +++ b/raster/r.sim/r.sim.water/testsuite/test_r_sim_water.py @@ -110,7 +110,7 @@ def test_default(self): dy=self.dy, depth=self.depth, discharge=self.discharge, - random_seed=1, + seed=1, ) self.assertRasterExists(self.depth) self.assertRasterExists(self.discharge) @@ -133,7 +133,7 @@ def test_nodxdy(self): elevation=self.elevation, depth=self.depth, discharge=self.discharge, - random_seed=1, + seed=1, nprocs=1, ) @@ -178,7 +178,7 @@ def test_complex(self): hmax=0.25, halpha=3.9, hbeta=0.6, - random_seed=1, + seed=1, ) self.assertRasterExists(f"{self.depth}.05") self.assertRasterExists(f"{self.depth}.10") @@ -206,7 +206,7 @@ def test_infiltration(self): infil=self.infil, depth=self.depth, duration=30, - random_seed=1, + seed=1, ) self.assertRasterExists(self.depth) self.assertRastersEqual( @@ -249,7 +249,7 @@ def test_default(self): dx=self.dx, dy=self.dy, depth=self.depth, - random_seed=1, + seed=1, ) self.assertRasterFitsUnivar( self.depth, reference="sum=30424.022289", precision=1e-6