Skip to content

Commit

Permalink
Merge pull request #61 from amoodie/fix_randomseed_setting
Browse files Browse the repository at this point in the history
Fix: random seed set to int if not provided, support reproducible runs
  • Loading branch information
amoodie committed Jun 18, 2020
2 parents fb75630 + b78b00a commit 5828072
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 10 deletions.
14 changes: 8 additions & 6 deletions pyDeltaRCM/init_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,16 @@ def determine_random_seed(self):
Writes the seed to the log for record.
"""
if self.seed is not None:
if self.seed is None:
# generate a random seed for reproducibility
self.seed = np.random.randint((2**32) - 1)

_msg = 'Setting random seed to: %s ' % str(self.seed)
self.logger.info(_msg)
if self.verbose >= 2:
print(_msg)
_msg = 'Setting random seed to: %s ' % str(self.seed)
self.logger.info(_msg)
if self.verbose >= 2:
print(_msg)

shared_tools.set_random_seed(self.seed)
shared_tools.set_random_seed(self.seed)

# always write the seed to file for record and reproducability
self.logger.info('Random seed is: %s ' % str(self.seed))
Expand Down
1 change: 0 additions & 1 deletion tests/test_deltaRCM_tools.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,6 @@ def test_logger_has_timestep_lines(tmp_path):
assert not '---- Timestep 2.0 ----' in _lines


@pytest.mark.xfail(raises=ValueError, strict=True)
def test_logger_random_seed_always_recorded(tmp_path):
file_name = 'user_parameters.yaml'
p, f = utilities.create_temporary_file(tmp_path, file_name)
Expand Down
7 changes: 4 additions & 3 deletions tests/test_initialization.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,15 +111,16 @@ def test_random_seed_settings_value(tmp_path):
assert delta.seed == 9999


def test_random_seed_settings_noaction_default(tmp_path):
def test_random_seed_settings_newinteger_default(tmp_path):
file_name = 'user_parameters.yaml'
p, f = utilities.create_temporary_file(tmp_path, file_name)
utilities.write_parameter_to_file(f, 'out_dir', tmp_path / 'out_dir')
utilities.write_parameter_to_file(f, 'S0', 0.005)
f.close()
delta = DeltaModel(input_file=p)
assert delta.seed is None
assert np.random.seed is not 0
assert delta.seed is not None
assert delta.seed <= (2**32) - 1
assert isinstance(int(delta.seed), int)


# test the entry points
Expand Down

0 comments on commit 5828072

Please sign in to comment.