diff --git a/bilby/core/result.py b/bilby/core/result.py index c8d9a517c40105f904477669168016833aa3209e..700c6469ae33e681fe85a9e4dcceb0f48f61c404 100644 --- a/bilby/core/result.py +++ b/bilby/core/result.py @@ -363,7 +363,7 @@ class Result(object): The number of times the likelihood function is called log_prior_evaluations: array_like The evaluations of the prior for each sample point - sampling_time: (datetime.timedelta, float) + sampling_time: datetime.timedelta, float The time taken to complete the sampling nburn: int The number of burn-in steps discarded for MCMC samplers diff --git a/bilby/core/utils/io.py b/bilby/core/utils/io.py index 880abbfe68fb29fe07fc5216a6ab6a8b728ba6ed..190f55ea4af4d31af9435fc6732c90a4bd1db642 100644 --- a/bilby/core/utils/io.py +++ b/bilby/core/utils/io.py @@ -1,3 +1,4 @@ +import datetime import inspect import json import os @@ -301,6 +302,8 @@ def encode_for_hdf5(key, item): output = item.copy() elif isinstance(item, tuple): output = {str(ii): elem for ii, elem in enumerate(item)} + elif isinstance(item, datetime.timedelta): + output = item.total_seconds() else: raise ValueError(f'Cannot save {key}: {type(item)} type') return output diff --git a/test/core/result_test.py b/test/core/result_test.py index f49e4a3a25727f45d268df0952cc4659ebd9d1be..fe83c820113ba673031aa5db993b7a19a2207d21 100644 --- a/test/core/result_test.py +++ b/test/core/result_test.py @@ -69,6 +69,7 @@ class TestResult(unittest.TestCase): sampler_kwargs=dict(test="test", func=lambda x: x), injection_parameters=dict(x=0.5, y=0.5), meta_data=dict(test="test"), + sampling_time=100.0, ) n = 100 @@ -254,6 +255,7 @@ class TestResult(unittest.TestCase): self.assertEqual(self.result.priors["y"], loaded_result.priors["y"]) self.assertEqual(self.result.priors["c"], loaded_result.priors["c"]) self.assertEqual(self.result.priors["d"], loaded_result.priors["d"]) + self.assertEqual(self.result.sampling_time, loaded_result.sampling_time) def test_save_and_dont_overwrite_json(self): self._save_and_dont_overwrite_test(extension='json')