Пример #1
0
    def load_chosen_path(self):
        path = []
        all_msg_tree_view = self._view.all_msg_scrolled_win.get_child()
        focus_segment = all_msg_tree_view.get_selection()
        model, _iter = focus_segment.get_selected()
        depth = model.iter_depth(_iter)

        current__id = model.get_value(_iter, 0)
        current_segment_lower_num = model.get_value(_iter, 1)
        current_segment_upper_num = model.get_value(_iter, 2)
        current_segment = FloatInterval.closed(current_segment_lower_num,
                                               current_segment_upper_num)
        path.insert(0, [current__id, current_segment])
        parent_iter = _iter
        for i in range(depth):
            parent_iter = model.iter_parent(parent_iter)
            parent_id = model.get_value(parent_iter, 0)
            parent_segment_lower_num = model.get_value(parent_iter, 1)
            parent_segment_upper_num = model.get_value(parent_iter, 2)
            parent_segment = FloatInterval.closed(parent_segment_lower_num,
                                                  parent_segment_upper_num)
            path.insert(0, [parent_id, parent_segment])
        calibrate_parameter = self.load_chosen_parameter()
        path.insert(0, [calibrate_parameter, None])
        return path
Пример #2
0
 def calculate_beta_0_interval(self, alpha=0.05, precision=5):
     x_mean = self.x.mean()
     delta = x_mean ** 2 / ((self.x - x_mean) ** 2).sum()
     delta = math.sqrt(delta + self.x.count() ** -1)
     delta = self.calculate_t_distribute().isf(alpha / 2) * delta * self.calculate_std_e()
     b0 = self.calculate_Beta0()
     return FloatInterval.closed(round(b0 - delta, precision), round(b0 + delta, precision))
Пример #3
0
def roleta(populacao, start, target):
    #Calcula um vetor de fitness dos individuos da populacao
    fitPop = []
    porcFitness = []
    sumFitness = 0
    for individuo in populacao:
        fitIndividuo = fitness(individuo, start, target)
        fitPop.append(fitIndividuo)
        sumFitness += fitIndividuo

    #Calcula a soma total das fitness
    #sumFitness = sum(fitPop)

    #Calcula a porcentagem de cada fitness individual em relacao a fitness total
    for fit in fitPop:
        porcFitness.append(round(fit / sumFitness, 2))

    # Calcula a posicao da agulha da roleta - numero entre 0 e 1 randomico
    agulha = np.random.uniform(0, max(porcFitness), 1) / sumFitness

    #Cria os intervalos da roleta e faz o giro
    resultado = 0
    a = 0
    for porc in porcFitness:
        b = a + porc
        if float(agulha) in fInterval.closed(a, b):
            break
        else:
            resultado += 1
        a = b

    return populacao[resultado]
Пример #4
0
def calculate_Var_confidence_interval_large(series, confidence_interval=0.95):
    count = series.count()
    var = series.var()
    upper = (count - 1) * var
    rv = chi2(count - 1)
    alpha = 1 - confidence_interval
    return FloatInterval.closed(round(upper / rv.isf(alpha / 2), 2), round(upper / rv.isf(1 - alpha / 2), 2))
Пример #5
0
    def update_calibrate_parameter_interval_combobox(self, widget):
        self.clear_factors_scrolled_win()
        self.calibrate_parameter_interval_choose_combobox.clear()

        last_segment = self._presenter.load_last_dependency_segment()
        default_segment = FloatInterval.closed(2020, 2020)
        if last_segment == default_segment:
            self.clear_calibrate_parameter_interval_combobox()
        else:
            try:
                parameter_segments = self._presenter.get_calibrate_parameter_segments()
            except ValueError:
                dialog = Gtk.MessageDialog(parent=self.main_window, flags=0, message_type=Gtk.MessageType.INFO,
                                           buttons=Gtk.ButtonsType.OK, text="提示")
                dialog.format_secondary_text("请先选择好各个依赖分段")
                dialog.run()
                dialog.destroy()
            else:
                self._parameter_segments = parameter_segments
                interval_model = Gtk.ListStore(int, str)
                interval_model.append([2020, '--请先选择校正参数区间--'])
                count = 0
                for segment in parameter_segments:
                    interval = segment[0]
                    lower_num = interval.lower
                    upper_num = interval.upper
                    interval_model.append([count, '[{}, {}]'.format(lower_num, upper_num)])
                    count += 1
                self.calibrate_parameter_interval_choose_combobox.set_model(interval_model)
                cell = Gtk.CellRendererText()
                self.calibrate_parameter_interval_choose_combobox.pack_start(cell, True)
                self.calibrate_parameter_interval_choose_combobox.add_attribute(cell, 'text', 1)
                self.calibrate_parameter_interval_choose_combobox.set_active(0)
Пример #6
0
def calculate_mean_confidence_interval_large(series, confidence_interval=0.90):
    mean = series.mean()
    s = math.sqrt(series.var())
    count = series.count()
    z = norm.isf((1 - confidence_interval) / 2)
    delta = round(z * (s / math.sqrt(count)), 1)
    return FloatInterval.closed(mean - delta, mean + delta)
Пример #7
0
 def link_parameter_nodes_factors(self, repeat_read):
     all_factors = self._current_calibrate_msg[6]
     for node in self._parameter_nodes:
         for segment in node.parameter_segments:
             left_num = segment[0][0]
             right_num = segment[0][1]
             if not repeat_read:
                 interval = FloatInterval.closed(left_num, right_num)
             else:
                 try:
                     interval = FloatInterval.closed(left_num, right_num)
                 except RangeBoundsException:
                     interval = FloatInterval.closed(left_num, left_num + 2)
             segment[0] = interval
             transfer_num = segment[1]
             factors = all_factors[transfer_num]
             segment[1] = factors
Пример #8
0
def calculate_mean_confidence_interval_small(series, confidence_interval=0.95):
    mean = series.mean()
    s = math.sqrt(series.var())
    count = series.count()
    rv = t(count - 1)
    z = rv.isf((1 - confidence_interval) / 2)
    delta = round(z * (s / math.sqrt(count)), 2)
    return FloatInterval.closed(mean - delta, mean + delta)
Пример #9
0
 def calculate_prediction_interval(self, x, alpha=0.05, precision=5):
     x_mean = self.x.mean()
     n = self.x.count()
     delta = (x - x_mean) ** 2 / ((self.x - x_mean) ** 2).sum()
     delta = math.sqrt(1 + delta + n ** -1)
     delta = self.calculate_t_distribute().isf(alpha / 2) * delta * self.calculate_std_e()
     y = x * self.calculate_Beta1() + self.calculate_Beta0()
     return FloatInterval.closed(round(y - delta, precision), round(y + delta, precision))
Пример #10
0
 def show_two_curves_in_senior(self):
     _id, lower_num, upper_num = self.load_chosen_segment()
     current_interval = FloatInterval.closed(lower_num, upper_num)
     current_factors_str = self.load_chosen_factors()
     current_factors = eval(current_factors_str)
     modified_factors = self.load_factors_entry()
     modified_segment = [current_interval, modified_factors]
     current_segment = [current_interval, current_factors]
     self._editor.show_two_factors_curve(modified_segment, current_segment)
 def load_current_entry(self):
     interval_list = []
     for entry in self._view.entries:
         num = float(entry.get_text())
         interval_list.append(num)
     lower_num = interval_list[0]
     upper_num = interval_list[1]
     interval = FloatInterval.closed(lower_num, upper_num)
     return interval
Пример #12
0
 def create_dependency_node(segment, dependency_id):
     dependency_node = entity.CalibrateFile.CalibrateDependencyNode()
     segment_upper = segment[0][1]
     segment_lower = segment[0][0]
     transfer_num = segment[1]
     dependency_node.parameter_id = dependency_id
     dependency_node.transfer_num = transfer_num
     dependency_node.parameter_segment = FloatInterval.closed(
         segment_lower, segment_upper)
     return dependency_node
 def add_depend_segment_node(self,
                             parent_node,
                             child_id,
                             segment=FloatInterval.closed(
                                 float('-inf'), float('inf'))):
     # 当父节点在分支中的位置不是参数节点的前一级时,需考虑添加多级的分段
     child_node = CalibrateDependencyNode()
     child_node.parameter_segment = segment
     child_node.parameter_id = child_id
     child_node.parent = parent_node
     self._child_node = child_node
 def modify_depend_segment(lower_num, upper_num, depend_node):
     if not isinstance(depend_node, CalibrateDependencyNode):
         raise TypeError
     check_lower = isinstance(lower_num, int) or isinstance(
         lower_num, float)
     check_upper = isinstance(upper_num, int) or isinstance(
         upper_num, float)
     if not check_upper and not check_lower:
         raise ValueError('upper bound or lower bound type error')
     new_segment = FloatInterval.closed(lower_num, upper_num)
     depend_node.parameter_segment = new_segment
 def add_depend_behind(self, depend_in, new_dependency):
     for node in self._root_node.descendants:
         if depend_in == node.parameter_id:
             children_nodes = node.children
             node.children = []
             depend_node = CalibrateDependencyNode()
             depend_node.parameter_id = new_dependency
             default_segment = FloatInterval.closed(float('-inf'),
                                                    float('inf'))
             depend_node.parameter_segment = default_segment
             depend_node.parent = node
             depend_node.children = children_nodes
Пример #16
0
 def link_dependency_roots(root_node, entry_dependency):
     for segment in entry_dependency[1]:
         dependency_segment_node = entity.CalibrateFile.CalibrateDependencyNode(
         )
         parameter_id = entry_dependency[0]
         dependency_segment_node.parameter_id = parameter_id
         segment_upper = segment[0][1]
         segment_lower = segment[0][0]
         transfer_num = segment[1]
         interval = FloatInterval.closed(segment_lower, segment_upper)
         dependency_segment_node.parameter_segment = interval
         dependency_segment_node.transfer_num = transfer_num
         dependency_segment_node.parent = root_node
Пример #17
0
 def modify_factors_in_senior(self):
     path = self.load_chosen_path()
     path = path[:-1]
     calibrate_parameter_id, lower_num, upper_num = self.load_chosen_segment(
     )
     current_factors_str = self.load_chosen_factors()
     current_factors = eval(current_factors_str)
     current_interval = FloatInterval.closed(lower_num, upper_num)
     segment = [current_interval, current_factors]
     modified_factors = self.load_factors_entry()
     self._editor.modify_parameter_factors_in_senior(
         self._channel, calibrate_parameter_id, path, segment,
         modified_factors)
 def add_depend_before(self, depend_in, new_dependency):
     parent_nodes = []
     for node in self._root_node.descendants:
         if depend_in == node.parameter_id:
             parent_node = node.parent
             if parent_node not in parent_nodes:
                 parent_nodes.append(parent_node)
     for node_p in parent_nodes:
         parent_children = list(node_p.children)
         node_p.children = []
         depend_node = CalibrateDependencyNode()
         depend_node.parameter_id = new_dependency
         default_segment = FloatInterval.closed(float('-inf'), float('inf'))
         depend_node.parameter_segment = default_segment
         depend_node.parent = node_p
         depend_node.children = parent_children
Пример #19
0
    def update_next_depend_segment(self, widget):
        self.clear_calibrate_parameter_interval_combobox()
        self.clear_factors_scrolled_win()

        viewport = self.dependencies_segment_choose_scrolled_win.get_child()
        main_box = viewport.get_child()
        boxes = main_box.get_children()

        focus_depend_id, focus_segment = self._presenter.load_focus_depend()
        default_segment = FloatInterval.closed(2020, 2020)
        focus_depend_id_index = self._depends_id.index(focus_depend_id)
        if focus_depend_id_index+1 < len(self._depends_id):
            next_parameter_id = self._depends_id[focus_depend_id_index+1]
            next_model = Gtk.ListStore(str, str)
            if focus_segment != default_segment:
                depend_path = self._presenter.load_depend_path(focus_depend_id)
                next_segments = self._presenter.get_depend_segments(depend_path, next_parameter_id)
                next_model.append(['[2020, 2020]', '--请先选择依赖区间--'])
                for segment in next_segments:
                    lower_num = segment.lower
                    upper_num = segment.upper
                    next_model.append(['[{}, {}]'.format(lower_num, upper_num), '[{}, {}]'.format(lower_num, upper_num)])
                next_box = boxes[focus_depend_id_index+1]
                next_label = next_box.get_children()[0]
                next_depend_id = int(next_label.get_text())
                next_combobox = next_box.get_children()[1]
                next_combobox.clear()
                next_combobox.set_model(next_model)
                current_cell = Gtk.CellRendererText()
                next_combobox.pack_start(current_cell, True)
                next_combobox.add_attribute(current_cell, 'text', 1)
                # next_combobox.set_active(0)   # 这里的set_active又会跳回去,陷入无限循环,有毒..
                if self._is_update_all_dependencies_segment_choose:
                    if next_depend_id == self._depends_id[-1]:
                        next_combobox.connect('changed', self.update_calibrate_parameter_interval_combobox)
                        self._is_update_all_dependencies_segment_choose = False
                    else:
                        next_combobox.connect('changed', self.update_next_depend_segment)
            else:
                for box in boxes[focus_depend_id_index+1:]:
                    combobox = box.get_children()[1]
                    combobox.clear()
                    empty_model = Gtk.ListStore()
                    combobox.set_model(empty_model)
Пример #20
0
 def calculate_beta_1_interval(self, alpha=0.05, precision=5):
     delta = math.sqrt(((self.x - self.x.mean()) ** 2).sum())
     delta = self.calculate_std_e() / delta
     delta = self.calculate_t_distribute().isf(alpha / 2) * delta
     b1 = self.calculate_Beta1()
     return FloatInterval.closed(round(b1 - delta, precision), round(b1 + delta, precision))
Пример #21
0
def calculate_percent_confidence_interval_large(p, n, confidence_interval=0.95):
    z = norm.isf((1 - confidence_interval) / 2)
    delta = round(z * math.sqrt(((p * (1 - p)) / n)), 4)
    return FloatInterval.closed(p - delta, p + delta)
Пример #22
0
 def test_interval(self):
     self.assertEqual(FloatInterval.closed(4.1317,6.13001), self.target.calculate_beta_1_interval())
     self.assertEqual(FloatInterval.closed(-4.9130, 554.01347), self.target.calculate_beta_0_interval())
     self.assertEqual(FloatInterval.closed(260.13241, 750.745), self.target.calculate_confidence_interval(45))
     self.assertEqual(FloatInterval.closed(-293.41195,1304.28935), self.target.calculate_prediction_interval(45))
Пример #23
0
 def testCalculateMeanConfidenceIntervalSmall(self):
     data = pandas.read_excel('mean_smaller.xlsx').age
     expected = FloatInterval.closed(1476.8, 1503.2)
     self.assertEqual(expected, sampler.calculate_mean_confidence_interval_small(data))
Пример #24
0
 def testCalculatePercentageConfidenceIntervalLarge(self):
     expected = FloatInterval.closed(0.5565, 0.7435)
     self.assertEqual(expected, sampler.calculate_percent_confidence_interval_large(0.65,100))
Пример #25
0
 def testCalculateMeanConfidenceIntervalLarge(self):
     data = pandas.read_excel('mean_large.xlsx').age
     expected = FloatInterval.closed(37.3689326757, 41.6310673243)
     self.assertEqual(expected, sampler.calculate_mean_confidence_interval_large(data))
Пример #26
0
 def testCalculatePercentageConfidenceIntervalLarge(self):
     data = pandas.read_excel('var_test.xlsx').weight
     expected = FloatInterval.closed(56.83, 180.39)
     self.assertEqual(expected, sampler.calculate_Var_confidence_interval_large(data))