diff --git a/cosmosis/runtime/pipeline.py b/cosmosis/runtime/pipeline.py index c3e8f08b..9750a726 100644 --- a/cosmosis/runtime/pipeline.py +++ b/cosmosis/runtime/pipeline.py @@ -1409,18 +1409,19 @@ def execute(block, config): else: return 1 - if derived is None: - like = p - else: + if isinstance(p, tuple): like = p[0] extra = p[1] - if not isinstance(extra, dict): - raise ValueError("The extra output from the likelihood function must be a dictionary") + if not isinstance(extra, dict): + raise ValueError("The extra output from the likelihood function must be a dictionary") + + for key, value in extra.items(): + block['derived', key] = value + else: + like = p block['likelihoods', 'a_like'] = like - for key, value in extra.items(): - block['derived', key] = value return 0 @@ -1446,10 +1447,10 @@ def execute(block, config): "params": parameters } - priors = [{ - "params": priors - - }] + if priors is not None: + priors = [{ + "params": priors + }] pipeline = cls(config, values = values, modules=[mod], priors=priors) return pipeline diff --git a/cosmosis/test/test_pipeline.py b/cosmosis/test/test_pipeline.py index fa538d87..27c8db7c 100644 --- a/cosmosis/test/test_pipeline.py +++ b/cosmosis/test/test_pipeline.py @@ -260,6 +260,12 @@ def log_like(p): assert r.like == 0.0 assert r.extra[0] == 0.0 + # version without priors or derived params extracted + pipeline = LikelihoodPipeline.from_likelihood_function(log_like, param_ranges) + r = pipeline.run_results([0,0,0,0]) + assert r.like == 0.0 + assert len(r.extra) == 0 + if __name__ == '__main__':