Ejemplo n.º 1
0
    def test_run(self, req):
        pr = integration.Integration('nanliu/circleci')
        pr.build = MagicMock()
        pr.update_status = MagicMock()
        pr.run()
        self.assertEqual(
            pr.build_param['PR_URL'],
            'https://github.com/nanliu/circleci/pull/32'
        )
        self.assertEqual(
            pr.build_param['CUSTOM_VALUES'],
            '{"circleci": {"repo": "circleci", "tag": "a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8"}}'
        )
        self.assertEqual(
            pr.build_param['STATUS_CONTEXT'],
            'ci/circleci-integration'
        )
        self.assertEqual(
            pr.build_param['STATUS_URL'],
            'https://api.github.com/repos/nanliu/circleci/statuses/a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8'
        )

        pr = integration.Integration(
            'nanliu/circleci',
            build_param={"CUSTOM_VALUES": '{"test": {"1": "2"} }' },
            context='ci/circleci-int'
        )
        pr.build = MagicMock()
        pr.update_status = MagicMock()
        pr.run()
        self.assertEqual(
            pr.build_param['PR_URL'],
            'https://github.com/nanliu/circleci/pull/32'
        )
        self.assertEqual(
            pr.build_param['CUSTOM_VALUES'],
            '{"test": {"1": "2"}, "circleci": {"repo": "circleci", "tag": "a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8"}}'
        )
        self.assertEqual(
            pr.build_param['STATUS_CONTEXT'],
            'ci/circleci-int'
        )
        self.assertEqual(
            pr.build_param['STATUS_URL'],
            'https://api.github.com/repos/nanliu/circleci/statuses/a96e5a6dfba3a96d27bfcbef66717ea51ffeacb8'
        )

        pr = integration.Integration(
            'nanliu/circleci',
            build_param={"CUSTOM_VALUES": 'bad' }
        )
        pr.build = MagicMock()
        pr.update_status = MagicMock()
        with self.assertRaises(ValueError) as context:
            pr.run()
Ejemplo n.º 2
0
    def __init__(self, db, settings):
        super().__init__(Qt.Vertical)
        self.settings = settings
        self.user = settings["user"]
        self.engine_path = settings["engine"]["path"]
        self.engine = integration.Integration(stockfish_path=self.engine_path)
        self.db = db
        self.board = board.Board()
        self.recent_games_table = None
        # default recent games to display
        self.num_games = settings["analysis"]["num_games"]
        self.games = None
        self.current_game_moves = None
        self.current_game_color = None
        self.threshold = settings["analysis"]["threshold"]

        # fetch recent games to create table
        self.fetch_games()

        self.btn_wid = None
        self.label_widget = None
        self.btns_and_labels = QWidget()
        self.btns_and_labels_layout = QHBoxLayout()
        self.btns_and_labels.setLayout(self.btns_and_labels_layout)

        self.create_buttons()
        self.create_labels()

        self.btns_and_labels_layout.addWidget(self.label_widget)
        self.btns_and_labels_layout.addWidget(self.btn_wid)
        self.addWidget(self.btns_and_labels)

        self.create_table()
Ejemplo n.º 3
0
 def test_filter_integration_branch(self, req):
     pr = integration.Integration('nanliu/circleci')
     self.assertEqual(
         pr.filter_integration_branch(['https://github.com/nanliu/circleci/pull/32']),
         []
     )
     self.assertEqual(
         pr.branch,
         'test_branch'
     )
Ejemplo n.º 4
0
 def test_filter_active_pr(self, req):
     pr = integration.Integration('nanliu/circleci')
     self.assertEqual(
         pr.filter_active_pr(['https://github.com/nanliu/circleci/pull/32']),
         ['https://github.com/nanliu/circleci/pull/32']
     )
     self.assertEqual(
         pr.branch,
         'master'
     )
Ejemplo n.º 5
0
 def test_init(self, req):
     pr = integration.Integration('nanliu/circleci')
     self.assertEqual(pr.repo, 'nanliu/circleci')
     self.assertEqual(pr.branch, 'master')
     self.assertEqual(pr.build_param,  {})
     self.assertEqual(pr.context,  'ci/circleci-integration')
Ejemplo n.º 6
0
def main(is_plot=False):
    # TODO: 求插值多项式
    # 等节点
    poly = polynomials.Polynomials(n, x_k, y_k, y_k_diff)
    er = error.InterpolationError(n, x_k, y_k, y_k_diff)
    ing = integration.Integration(n, x_k, y_k, y_k_diff)
    # # 切比雪夫零点
    poly_c = polynomials.Polynomials(n, x_k_c, y_k_c, y_k_diff)
    er_c = error.InterpolationError(n, x_k_c, y_k_c, y_k_diff)
    ing_c = integration.Integration(n, x_k_c, y_k_c, y_k_diff)

    if la_debug:
        # # 拉格朗日等节点插值多项式
        poly.lagrange_polynomials(x)

        # 插值余项
        lagrange_e_r_n = f - poly.L_n
        # 估计误差 无穷范数和最大值范数
        er.error_lagrange(0.95, x, lagrange_e_r_n, w=poly.w)
        if is_plot:
            # sp.plot(lagrange_e_r_n, (x, -1, 1))
            # sp.plot(sp.diff(lagrange_e_r_n), (x, -1, 1), title=r"$R_n\'$")
            # for i in range(nodes):
            #     print("l%d" % i)
            #     print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 6)))
            kexi = sp.Symbol(r'\xi')
            print('w:', sp.latex(sp.N(sp.expand(poly.w), 6)))
            f_d = f
            for i in range(nodes):
                f_d = sp.diff(f_d)
            print('插值余项')
            # lagrange_e_r_n_np_d = sp.lambdify(x, sp.diff(lagrange_e_r_n), "numpy")(x_np)
            # lagrange_e_r_n_np = sp.lambdify(x, lagrange_e_r_n, "numpy")(x_np)
            # plot_figures.num_plot(x_np, lagrange_e_r_n_np, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\larn.svg",
            #                       x_label=r'$x$',
            #                       y_label=r'$R_n(x)$', title='拉格朗日插值余项', is_show=True,)
            # plot_figures.num_plot(x_np, lagrange_e_r_n_np_d, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\larnd.svg",
            #                       x_label=r'$x$',
            #                       y_label=r'$R’_n(x)$', title='拉格朗日插值余项导数', is_show=True, )
            # print(sp.latex(sp.N(f_d, 6)))
            # print(sp.latex(sp.N(f_d.subs(x, kexi), 6)))
            # print(sp.latex(sp.N(sp.diff(f_d.subs(x, sp.Symbol('\eta'))), 6)))
            # print(sp.latex(sp.N(sp.expand(poly.L_n), 6)))
            print('拉格朗日等节点插值余项:', )
            print(er.L_R_n)
            # print(sp.latex(sp.N(sp.expand(lagrange_e_r_n), 5)))
            print('R\'n')
            # print(sp.latex(sp.N(sp.diff(sp.expand(lagrange_e_r_n)), 6)))
            # sp.plot(sp.diff(lagrange_e_r_n), (x, -1, 1))
            print('拉格朗日等节点插值余项最大范数:', er.L_max_nor_acc)
            print('拉格朗日等节点插值余项2范数:', er.L_2_nor)

            print('*' * 100)
        # 积分
        ing.lagrange(poly.l_k, x, poly.L_n, f)
        if is_plot:
            ing.newton_cotes()
            # for i in range(n + 1):
            # print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 5)))
            # print(sp.latex(sp.N(sp.expand(sp.integrate(poly.l_k[i])), 5)))
            print("A_k")
            print(ing.L_A_k)
            print("实际积分为:", sp.integrate(poly.L_n, (x, -1, 1)))
            print("积分为:", ing.L_I_n)
            print("代数精度:", ing.L_m)
            print("积分余项:", ing.R_f_ac)
            print("手推插值余项的积分:")
            print(sp.latex(sp.N(ing.R_f_ac_poly, 6)))
            print("电脑推插值余项的积分:")
            print(sp.latex(sp.expand(sp.N(sp.integrate(lagrange_e_r_n), 6))))
            print('*' * 100)

        # # 拉格朗日切比雪夫零点
        poly_c.lagrange_polynomials(x)
        # 插值余项
        la_c_r_n = f - poly_c.L_n
        # 估计误差 无穷范数和最大值范数
        er_c.error_lagrange(0.3, x, la_c_r_n, w=poly.w, is_print=False)
        if 0:
            # sp.plot(r_n**2, (x, -1, 1), title=r'$Lagrange polynomials\' error$')

            np.set_printoptions(formatter={'float': '{: 0.4f}'.format})

            print('w')
            print(sp.latex(sp.N(sp.expand(poly_c.w), 6)))
            print('L_n_c')
            print(sp.latex(sp.N(sp.expand(poly_c.L_n), 6)))

            # print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 6)))
            f_d = f
            for i in range(nodes):
                f_d = sp.diff(f_d)
            print('插值余项')
            kexi = sp.Symbol(r'\xi')
            print(sp.latex(sp.N(f_d, 6)))
            print(sp.latex(sp.N(f_d.subs(x, kexi), 6)))
            print('R\'n')
            print(sp.latex(sp.N(sp.diff(sp.expand(la_c_r_n)), 6)))

            # la_c_r_n_d = sp.lambdify(x, sp.diff(la_c_r_n), "numpy")(x_np)
            # la_c_r_n = sp.lambdify(x, la_c_r_n, "numpy")(x_np)
            # plot_figures.num_plot(x_np, la_c_r_n, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\lacrn.svg",
            #                       x_label=r'$x$',
            #                       y_label=r'$R_n(x)$', title='拉格朗日插值余项', is_show=True,)
            # plot_figures.num_plot(x_np, la_c_r_n_d, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\lacrnd.svg",
            #                       x_label=r'$x$',
            #                       y_label=r'$R’_n(x)$', title='拉格朗日插值余项导数', is_show=True, )
            print('拉格朗日切比雪夫插值余项:最大范数', er_c.L_max_nor_acc)
            print('拉格朗日切比雪夫插值余项:2范数', er_c.L_2_nor)
            print('*' * 100)
        # 积分
        ing_c.lagrange(poly_c.l_k, x, poly_c.L_n, f)
        if 0:
            L_n_np = sp.lambdify(x, poly_c.L_n, "numpy")(x_np)
            # print(p_n_np)
            # print(f_np)
            # plot_figures.num_plot(x_np, f_np, L_n_np,
            #                       path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\LandFNumc.svg",
            #                       x_label=r'$x$',
            #                       y_label=r'$f(x),L_n(x)$', title='原函数与拉格朗日插值多项式', is_show=True,
            #                       label=[r'$Primitive\ Function$', r'$Lagrange\ Polynomials$'])
            # for i in range(n + 1):
            # print(sp.latex(sp.N(sp.expand(poly.l_k[i]), 5)))
            # print(sp.latex(sp.N(sp.expand(sp.integrate(poly.l_k[i])), 5)))
            # for i in range(nodes):
            #     print("l%d" % i)
            #     print(sp.latex(ing_c.L_A_k_poly[i]))
            print("实际积分为:", sp.integrate(poly_c.L_n, (x, -1, 1)))
            print("积分为:", ing_c.L_I_n)
            print("代数精度:", ing_c.L_m)
            print("积分余项:", ing_c.R_f_ac)
            print("手推插值余项的积分:")
            print(sp.latex(sp.N(ing_c.R_f_ac_poly, 6)))
            print("电脑推插值余项的积分:")
            print(sp.latex(sp.expand(sp.N(sp.integrate(la_c_r_n), 6))))
            print('*' * 100)

    if new_debug:
        # 牛顿等节点插值
        poly.newton(x)
        newton_r_n = f - poly.P_n
        er.error_lagrange(0.95, x, newton_r_n, w=poly.w)

        # p_n_np = sp.lambdify(x, poly.P_n, "numpy")(x_np)
        # # print(p_n_np)
        # # print(f_np)
        # plot_figures.num_plot(x_np, f_np, p_n_np, path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\NandFNumc.svg",
        #                       x_label=r'$x$',
        #                       y_label=r'$f(x),P_n(x)$', title='原函数与牛顿插值多项式', is_show=True,
        #                       label=[r'$Primitive\ Function$', r'$Newton\ Polynomials$'])

        if is_plot:
            print('插值多项式')
            print(sp.latex(sp.N(sp.expand(poly.P_n), 6)))
            # sp.plot(newton_r_n ** 2, (x, -1, 1), title=r'$Lagrange polynomials\' error$')
            print('牛顿等节点插值余项:最大范数', er.L_max_nor_acc)
            print('牛顿等节点插值余项:2范数', er.L_2_nor)
            print("*" * 100)
        # 积分 Newton-Cotes
        ing.newton_cotes()
        if is_plot:
            print("牛顿科特斯积分:", ing.nc_I_n)
            print("科特斯系数")
            print(ing.C_k)
            print(ing.C_k.sum())
            print("*" * 100)

        # 牛顿切比雪夫节点插值
        poly_c.newton(x)
        newton_c_r_n = f - poly_c.P_n
        er_c.error_lagrange(0.3, x, newton_c_r_n, w=poly.w)
        if is_plot:
            # p_n_np = sp.lambdify(x, poly_c.P_n, "numpy")(x_np)
            # # print(p_n_np)
            # # print(f_np)
            # plot_figures.num_plot(x_np, f_np, p_n_np,
            #                       path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\NandFNumc.svg",
            #                       x_label=r'$x$',
            #                       y_label=r'$f(x),P_n(x)$', title='原函数与牛顿插值多项式', is_show=True,
            #                       label=[r'$Primitive\ Function$', r'$Newton\ Polynomials$'])
            # sp.plot(newton_c_r_n**2, (x, -1, 1), title=r'$Lagrange polynomials\' error$')
            print('插值多项式')
            print(sp.latex(sp.N(sp.expand(poly.P_n), 6)))
            # print(sp.latex(sp.N(sp.expand(poly.P_n), 6)))
            print('牛顿切比雪夫插值余项:最大范数', er_c.L_max_nor_acc)
            print('牛顿切比雪夫插值余项插值余项:2范数', er_c.L_2_nor)
            print("*" * 100)

    if linear_debug:
        # 分段线性插值
        poly.linear(x)
        print(sp.latex(sp.N(poly.I_n, 6)))
        if is_plot:
            ing.linear()
            print("线性插值函数积分:", ing.T_n)
        #     I_n_np = sp.lambdify(x, poly.I_n, "numpy")(x_np)
        #     plot_figures.num_plot(x_np, f_np, I_n_np,
        #                           path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\LinearandF.svg",
        #                           x_label=r'$x$',
        #                           y_label=r'$f(x),I_n(x)$', title='原函数与分段线性插值函数', is_show=True,
        #                           label=[r'$Primitive\ Function$', r'$Linear\ Splines$'])
    if hermite_debug:
        # Hermite插值
        poly.hermite(x)
        if is_plot:
            ing.hermite()
            print("线性插值函数积分:", ing.H_T_n)
            I_n_np = sp.lambdify(x, poly.H_I_n, "numpy")(x_np)
            plot_figures.num_plot(
                x_np,
                f_np,
                I_n_np,
                path="C:\\Users\\93715\\Desktop\\数值分析期末大作业\\figure\\HandF2.svg",
                x_label=r'$x$',
                y_label=r'$f(x),I_n(x)$',
                title='原函数与分段Hermite插值函数',
                is_show=True,
                label=[r'$Primitive\ Function$', r'$Hermite\ Splines$'])

    if Gauss_debug:
        ing.gauss(x)
        print("高斯积分:", ing.G_T_n)
Ejemplo n.º 7
0
 def update_options(self):
     self.engine = integration.Integration(stockfish_path=self.engine_path)
     self.recreate_table()