The AbstractSearch has the following property's, which we can group and move to a separate module within the search package:
def config_dict_test_mode_from(self, config_dict: Dict) -> Dict:
raise NotImplementedError
@property
def _class_config(self) -> Dict:
return self.config_type[self.__class__.__name__]
@cached_property
def config_dict_search(self) -> Dict:
config_dict = copy.deepcopy(self._class_config["search"])
for key, value in config_dict.items():
try:
config_dict[key] = self.kwargs[key]
except KeyError:
pass
return config_dict
@cached_property
def config_dict_run(self) -> Dict:
config_dict = copy.deepcopy(self._class_config["run"])
for key, value in config_dict.items():
try:
config_dict[key] = self.kwargs[key]
except KeyError:
pass
if os.environ.get("PYAUTOFIT_TEST_MODE") == "1":
logger.warning(f"TEST MODE ON: SEARCH WILL SKIP SAMPLING\n\n")
config_dict = self.config_dict_test_mode_from(config_dict=config_dict)
return config_dict
@property
def config_dict_settings(self) -> Dict:
return self._class_config["settings"]
@property
def config_type(self):
raise NotImplementedError()
This will likely amount to making a SearchConfig class, or something to that effect.
It is common for searches to overwrite config_dict_test_mode_from method which search speciifc inputs:
def config_dict_test_mode_from(self, config_dict : Dict) -> Dict:
"""
Returns a configuration dictionary for test mode meaning that the sampler terminates as quickly as possible.
Entries which set the total number of samples of the sampler (e.g. maximum calls, maximum likelihood
evaluations) are reduced to low values meaning it terminates nearly immediately.
Parameters
----------
config_dict
The original configuration dictionary for this sampler which includes entries controlling how fast the
sampler terminates.
Returns
-------
A configuration dictionary where settings which control the sampler's number of samples are reduced so it
terminates as quickly as possible.
"""
return {
**config_dict,
"n_like_max": 1,
}
I think we can just input a dictionary into this function in SearchConfig to ensure it stays generic.
The
AbstractSearch
has the following property's, which we can group and move to a separate module within thesearch
package:This will likely amount to making a
SearchConfig
class, or something to that effect.It is common for searches to overwrite
config_dict_test_mode_from
method which search speciifc inputs:I think we can just input a dictionary into this function in
SearchConfig
to ensure it stays generic.