From fb47c022595796a91b0981a7aa339b118eb2c683 Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 15 Apr 2020 14:07:02 +0100 Subject: [PATCH] separated nlo config into multiple files --- autofit/optimize/grid_search.py | 6 +++-- autofit/optimize/non_linear/multi_nest.py | 26 ++++++++++++------- autofit/optimize/non_linear/non_linear.py | 7 +++-- .../config/non_linear/DownhillSimplex.ini | 8 ++++++ .../config/non_linear/GridSearch.ini | 3 +++ .../MultiNest.ini} | 17 ++---------- 6 files changed, 38 insertions(+), 29 deletions(-) create mode 100644 test_autofit/test_files/config/non_linear/DownhillSimplex.ini create mode 100644 test_autofit/test_files/config/non_linear/GridSearch.ini rename test_autofit/test_files/config/{non_linear.ini => non_linear/MultiNest.ini} (71%) diff --git a/autofit/optimize/grid_search.py b/autofit/optimize/grid_search.py index 8408e95d9..39866dea3 100644 --- a/autofit/optimize/grid_search.py +++ b/autofit/optimize/grid_search.py @@ -114,8 +114,10 @@ def __init__( self.paths = paths self.parallel = parallel - self.number_of_cores = conf.instance.non_linear.get( - "GridSearch", "number_of_cores", int + self.number_of_cores = conf.instance.non_linear.config_for( + "GridSearch" + ).get( + "general", "number_of_cores", int ) self.phase_tag_input = paths.phase_tag diff --git a/autofit/optimize/non_linear/multi_nest.py b/autofit/optimize/non_linear/multi_nest.py index 55875834d..25c195bd4 100644 --- a/autofit/optimize/non_linear/multi_nest.py +++ b/autofit/optimize/non_linear/multi_nest.py @@ -51,11 +51,14 @@ def __init__(self, paths=None, sigma=3, run=pymultinest.run): self.log_zero = self.config("log_zero", float) self.max_iter = self.config("max_iter", int) self.init_MPI = self.config("init_MPI", bool) - self.terminate_at_acceptance_ratio = conf.instance.non_linear.get( - "MultiNest", "terminate_at_acceptance_ratio", bool + multinest_config = conf.instance.non_linear.config_for( + "MultiNest" ) - self.acceptance_ratio_threshold = conf.instance.non_linear.get( - "MultiNest", "acceptance_ratio_threshold", float + self.terminate_at_acceptance_ratio = multinest_config.get( + "general", "terminate_at_acceptance_ratio", bool + ) + self.acceptance_ratio_threshold = multinest_config.get( + "general", "acceptance_ratio_threshold", float ) self.run = run @@ -147,11 +150,14 @@ def prior(cube, ndim, nparams): return cube - stagger_resampling_likelihood = conf.instance.non_linear.get( - "MultiNest", "stagger_resampling_likelihood", bool + multinest = conf.instance.non_linear.config_for( + "MultiNest" + ) + stagger_resampling_likelihood = multinest.get( + "general", "stagger_resampling_likelihood", bool ) - stagger_resampling_value = conf.instance.non_linear.get( - "MultiNest", "stagger_resampling_value", float + stagger_resampling_value = multinest.get( + "general", "stagger_resampling_value", float ) class Fitness: @@ -162,8 +168,8 @@ def __init__( Fitness function that only handles resampling """ self.stagger_accepted_samples = 0 - self.resampling_likelihood = conf.instance.non_linear.get( - "MultiNest", "null_log_evidence", float + self.resampling_likelihood = multinest.get( + "general", "null_log_evidence", float ) def __call__(self, cube, ndim, nparams, lnew): diff --git a/autofit/optimize/non_linear/non_linear.py b/autofit/optimize/non_linear/non_linear.py index 0c6843f4a..3205d428f 100644 --- a/autofit/optimize/non_linear/non_linear.py +++ b/autofit/optimize/non_linear/non_linear.py @@ -137,8 +137,11 @@ def config(self, attribute_name, attribute_type=str): attribute An attribute for the key with the specified type. """ - return conf.instance.non_linear.get( - self.__class__.__name__, attribute_name, attribute_type + return conf.instance.non_linear.config_for( + self.__class__.__name__).get( + "general", + attribute_name, + attribute_type ) def __eq__(self, other): diff --git a/test_autofit/test_files/config/non_linear/DownhillSimplex.ini b/test_autofit/test_files/config/non_linear/DownhillSimplex.ini new file mode 100644 index 000000000..c565317aa --- /dev/null +++ b/test_autofit/test_files/config/non_linear/DownhillSimplex.ini @@ -0,0 +1,8 @@ +[general] +xtol = 1e-4 +ftol = 1e-4 +maxiter = None +maxfun = None +full_output = 0 +disp = 1 +retall = 0 diff --git a/test_autofit/test_files/config/non_linear/GridSearch.ini b/test_autofit/test_files/config/non_linear/GridSearch.ini new file mode 100644 index 000000000..b6d83d445 --- /dev/null +++ b/test_autofit/test_files/config/non_linear/GridSearch.ini @@ -0,0 +1,3 @@ +[general] +number_of_cores = 3 +step_size = 0.1 diff --git a/test_autofit/test_files/config/non_linear.ini b/test_autofit/test_files/config/non_linear/MultiNest.ini similarity index 71% rename from test_autofit/test_files/config/non_linear.ini rename to test_autofit/test_files/config/non_linear/MultiNest.ini index 8536c92a6..260a7c11f 100644 --- a/test_autofit/test_files/config/non_linear.ini +++ b/test_autofit/test_files/config/non_linear/MultiNest.ini @@ -1,4 +1,4 @@ -[MultiNest] +[general] importance_nested_sampling = True multimodal = True const_efficiency_mode = False @@ -21,17 +21,4 @@ init_MPI = False stagger_resampling_likelihood = False stagger_resampling_value = 1000.0 terminate_at_acceptance_ratio = False -acceptance_ratio_threshold = 1.0 - -[DownhillSimplex] -xtol = 1e-4 -ftol = 1e-4 -maxiter = None -maxfun = None -full_output = 0 -disp = 1 -retall = 0 - -[GridSearch] -number_of_cores = 3 -step_size = 0.1 +acceptance_ratio_threshold = 1.0 \ No newline at end of file