Code Duplication    Length = 79-79 lines in 2 locations

src/hyperactive/optimizers/backend_stuff/results.py 1 location

@@ 10-88 (lines=79) @@
7
import pandas as pd
8
9
10
class Results:
11
    def __init__(self, results_list, opt_pros):
12
        self.results_list = results_list
13
        self.opt_pros = opt_pros
14
15
        self.objFunc2results = {}
16
        self.search_id2results = {}
17
18
    def _sort_results_objFunc(self, objective_function):
19
        best_score = -np.inf
20
        best_para = None
21
        search_data = None
22
23
        search_data_list = []
24
25
        for results_ in self.results_list:
26
            nth_process = results_["nth_process"]
27
28
            opt = self.opt_pros[nth_process]
29
            objective_function_ = opt.experiment.objective_function
30
            search_space_ = opt.s_space()
31
            params = list(search_space_.keys())
32
33
            if objective_function_ != objective_function:
34
                continue
35
36
            if results_["best_score"] > best_score:
37
                best_score = results_["best_score"]
38
                best_para = results_["best_para"]
39
40
            search_data = results_["search_data"]
41
            search_data["eval_times"] = results_["eval_times"]
42
            search_data["iter_times"] = results_["iter_times"]
43
44
            search_data_list.append(search_data)
45
46
        if len(search_data_list) > 0:
47
            search_data = pd.concat(search_data_list)
48
49
        self.objFunc2results[objective_function] = {
50
            "best_para": best_para,
51
            "best_score": best_score,
52
            "search_data": search_data,
53
            "params": params,
54
        }
55
56
    def _get_result(self, id_, result_name):
57
        if id_ not in self.objFunc2results:
58
            self._sort_results_objFunc(id_)
59
60
        search_data = self.objFunc2results[id_][result_name]
61
62
        return search_data
63
64
    def best_para(self, id_):
65
        best_para_ = self._get_result(id_, "best_para")
66
67
        if best_para_ is not None:
68
            return best_para_
69
70
        raise ValueError("objective function name not recognized")
71
72
    def best_score(self, id_):
73
        best_score_ = self._get_result(id_, "best_score")
74
75
        if best_score_ != -np.inf:
76
            return best_score_
77
78
        raise ValueError("objective function name not recognized")
79
80
    def search_data(self, id_):
81
        search_data = self._get_result(id_, "search_data")
82
83
        params = self.objFunc2results[id_]["params"]
84
85
        if search_data is not None:
86
            return search_data
87
88
        raise ValueError("objective function name not recognized")
89

src_old/hyperactive/results.py 1 location

@@ 10-88 (lines=79) @@
7
import pandas as pd
8
9
10
class Results:
11
    def __init__(self, results_list, opt_pros):
12
        self.results_list = results_list
13
        self.opt_pros = opt_pros
14
15
        self.objFunc2results = {}
16
        self.search_id2results = {}
17
18
    def _sort_results_objFunc(self, objective_function):
19
        best_score = -np.inf
20
        best_para = None
21
        search_data = None
22
23
        search_data_list = []
24
25
        for results_ in self.results_list:
26
            nth_process = results_["nth_process"]
27
28
            opt = self.opt_pros[nth_process]
29
            objective_function_ = opt.objective_function
30
            search_space_ = opt.s_space()
31
            params = list(search_space_.keys())
32
33
            if objective_function_ != objective_function:
34
                continue
35
36
            if results_["best_score"] > best_score:
37
                best_score = results_["best_score"]
38
                best_para = results_["best_para"]
39
40
            search_data = results_["search_data"]
41
            search_data["eval_times"] = results_["eval_times"]
42
            search_data["iter_times"] = results_["iter_times"]
43
44
            search_data_list.append(search_data)
45
46
        if len(search_data_list) > 0:
47
            search_data = pd.concat(search_data_list)
48
49
        self.objFunc2results[objective_function] = {
50
            "best_para": best_para,
51
            "best_score": best_score,
52
            "search_data": search_data,
53
            "params": params,
54
        }
55
56
    def _get_result(self, id_, result_name):
57
        if id_ not in self.objFunc2results:
58
            self._sort_results_objFunc(id_)
59
60
        search_data = self.objFunc2results[id_][result_name]
61
62
        return search_data
63
64
    def best_para(self, id_):
65
        best_para_ = self._get_result(id_, "best_para")
66
67
        if best_para_ is not None:
68
            return best_para_
69
70
        raise ValueError("objective function name not recognized")
71
72
    def best_score(self, id_):
73
        best_score_ = self._get_result(id_, "best_score")
74
75
        if best_score_ != -np.inf:
76
            return best_score_
77
78
        raise ValueError("objective function name not recognized")
79
80
    def search_data(self, id_):
81
        search_data = self._get_result(id_, "search_data")
82
83
        params = self.objFunc2results[id_]["params"]
84
85
        if search_data is not None:
86
            return search_data
87
88
        raise ValueError("objective function name not recognized")
89