예제 #1
0
def comp_graph_embed():
    output = ADgraph.draw_graph2(out_num[visfunc], G[visfunc],
                                 edge_labs[visfunc], pos[visfunc],
                                 labs[visfunc])
    print('entered function')
    #output = io.BytesIO()
    #FigureCanvasSVG(fig).print_svg(output)
    return Response(output.getvalue(), mimetype='image/svg+xml')
예제 #2
0
def rev_dynamic():
    global curr_idx
    if len(rev_dyn_set) == 0:
        out = ADgraph.draw_graph_rev2(out_num[visfunc], G[visfunc],
                                      edge_labs[visfunc], pos[visfunc],
                                      labs[visfunc])
        return Response(out.getvalue(), mimetype='image/svg+xml')
    if curr_idx < 0:
        #global curr_idx
        curr_idx = 0
    if curr_idx > len(rev_dyn_set) - 1:
        #global curr_idx
        curr_idx = len(rev_dyn_set) - 1
    output = rev_dyn_set[
        curr_idx]  #ADgraph.draw_graph_rev2(out_num[visfunc], G[visfunc], edge_labs[visfunc], pos[visfunc], labs[visfunc])
    return Response(output.getvalue(), mimetype='image/svg+xml')
예제 #3
0
def build_function():
    global out_num
    out_num = [None] * master_outs
    for i in range(master_outs):
        if master_ins == 1:
            out_num[i] = function_output[i](x[i])
        if master_ins == 2:
            out_num[i] = function_output[i](x[i], y[i])
        if master_ins == 3:
            out_num[i] = function_output[i](x[i], y[i], z[i])
        if master_ins == 4:
            out_num[i] = function_output[i](x[i], y[i], z[i], u[i])
        if master_ins == 5:
            out_num[i] = function_output[i](x[i], y[i], z[i], u[i], v[i])
    global disp_val, disp_der
    disp_val = '['
    disp_der = '['
    for out in out_num:
        #disp_val = str(np.round(out.val, 2))
        #disp_der = str(np.round(out.der, 2))
        try:
            disp_val += str(np.round(out.val, 2))
            disp_der += str(np.round(out.der, 2))
        except:
            disp_val += str(np.round(out, 2))
            disp_der + +str([0] * master_ins)
        disp_val += ',\n'
        disp_der += ',\n'
    disp_val = disp_val[:-2] + ']'
    disp_der = disp_der[:-2] + ']'
    global G, edge_labs, pos, labs
    G = [None] * master_outs
    edge_labs = [None] * master_outs
    pos = [None] * master_outs
    labs = [None] * master_outs
    for i, out in enumerate(out_num):
        try:
            G[i], edge_labs[i], pos[i], labs[i] = ADgraph.get_graph_setup(out)
        except AttributeError:
            pass
예제 #4
0
def graphwindow():
    global show_table
    global visfunc
    errors = ""
    if request.method == "POST":
        action = request.form["action"]
        if request.form["action"] == "Set Input Values":
            show_table = False
            global varlist
            varlist = []
            try:
                global x
                x = [None] * master_outs
                for i in range(master_outs):
                    x[i] = ADnum(float(request.form["x"]),
                                 ins=master_ins,
                                 ind=0)
                var_strs['x'] = request.form["x"]
                varlist.append(x)
                if master_ins > 1:
                    global y
                    y = [None] * master_outs
                    for i in range(master_outs):
                        y[i] = ADnum(float(request.form["y"]),
                                     ins=master_ins,
                                     ind=1)
                    var_strs['y'] = request.form["y"]
                    varlist.append(y)
                if master_ins > 2:
                    global z
                    z = [None] * master_outs
                    for i in range(master_outs):
                        z[i] = ADnum(float(request.form["z"]),
                                     ins=master_ins,
                                     ind=2)
                    var_strs['z'] = request.form['z']
                    varlist.append(z)
                if master_ins > 3:
                    global u
                    u = [None] * master_outs
                    for i in range(master_outs):
                        u[i] = ADnum(float(request.form["u"]),
                                     ins=master_ins,
                                     ind=3)
                    var_strs['u'] = request.form["u"]
                    varlist.append(u)
                if master_ins > 4:
                    global v
                    v = [None] * master_outs
                    for i in range(master_outs):
                        v[i] = ADnum(float(request.form["v"]),
                                     ins=master_ins,
                                     ind=4)
                    var_strs['v'] = request.form["v"]
                    varlist.append(v)
                build_function()
                return render_template('graph2.html',
                                       ins=master_ins,
                                       outs=master_outs,
                                       errors=errors,
                                       var_strs=var_strs,
                                       flabels=flabels,
                                       func_content=func_content,
                                       full=True,
                                       val=disp_val,
                                       der=disp_der,
                                       show_table=False,
                                       func_select=False)
            except:
                errors += "Please enter numeric values for all of the inputs."

        else:
            global curr_idx
            global rev_dyn_set
            if request.form["action"] == "f1":
                visfunc = 0
                curr_idx = 0
                rev_dyn_set = []
            if request.form["action"] == "f2":
                visfunc = 1
                curr_idx = 0
                rev_dyn_set = []
            if request.form["action"] == "f3":
                visfunc = 2
                curr_idx = 0
                rev_dyn_set = []
            table = get_table()
            if request.form["action"][0] == 'd':
                curr_idx = 0
                action = request.form["action"]
                i = int(action[-2])
                var = varlist[int(action[-1])]
                rev_dyn_set = ADgraph.get_rev_dynamic_outs(
                    out_num[i], var[i].revder(out_num[i])[1], G[i],
                    edge_labs[i], pos[i], labs[i],
                    var[i].revder(out_num[i])[0])
            if request.form["action"] == "prev":
                curr_idx = curr_idx - 1
            if request.form["action"] == "next":
                curr_idx = curr_idx + 1
            return render_template('graph2.html',
                                   visfunc=visfunc,
                                   ins=master_ins,
                                   outs=master_outs,
                                   errors=errors,
                                   var_strs=var_strs,
                                   flabels=flabels,
                                   func_content=func_content,
                                   full=True,
                                   val=disp_val,
                                   der=disp_der,
                                   func_select=True,
                                   table=table)
        #if action[0]=="g":
        #if request.form["action"]=="Computational Graph":
        #   comp_graph(int(action[-1]))
        #  if show_table:
        #     df = ADgraph.gen_table(out_num[int(action[-1])])
        #    table = df.to_html(index=False)
        #ADgraph.draw_graph2(out_num[0], G[0], edge_labs[0], pos[0], labs[0])
        #else:
        #   table = 0
        #return render_template('graph.html', ins=master_ins, outs=master_outs, errors=errors, var_strs=var_strs, flabels=flabels, func_content=func_content, full=True, val=disp_val, der=disp_der, show_table=show_table, tables=table)
        #comp_graph(int(action[-1]))
        #if action[0]=="t":
        #   df = ADgraph.gen_table(out_num[int(action[-1])])
        #  table = df.to_html(index=False)
        # show_table = True
        #return render_template('graph.html', ins=master_ins, outs=master_outs, errors=errors, var_strs=var_strs, flabels=flabels, func_content=func_content, full=True, val=disp_val, der=disp_der, show_table = show_table, tables=table)
        #if action[0]=='r':
        #if request.form["action"]=="Reverse Graph":
        #   rev_graph(int(action[-1]))
        #ADgraph.draw_graph_rev2(out_num[0], G[0], edge_labs[0], pos[0], labs[0])
        #  return render_template('graph.html', ins=master_ins, outs=master_outs, errors=errors, var_strs=var_strs, flabels=flabels, func_content=func_content, full=True, val=disp_val, der=disp_der, show_table=show_table)
        #if action[0]=='d':
        #if request.form["action"]=="Rev Dynamic":
        #   rev_dynamic(int(action[-2]), varlist[int(action[-1])])
        #ADgraph.draw_graph_rev_dynamic(out_num[0], x[0].revder(out_num[0])[1], G[0], edge_labs[0], pos[0], labs[0], x[0].revder(out_num[0])[0])
        #return render_template('graph.html', ins=master_ins, outs=master_outs, errors=errors, var_strs=var_strs, flabels=flabels, func_content=func_content, full=True, val=disp_val, der=disp_der, show_table=show_table)
    return render_template('graph2.html',
                           ins=master_ins,
                           outs=master_outs,
                           errors=errors,
                           var_strs=var_strs,
                           flabels=flabels,
                           func_content=func_content,
                           full=False,
                           show_table=False,
                           func_select=False)
예제 #5
0
def rev_dynamic(i, var):
    ADgraph.draw_graph_rev_dynamic(out_num[i], var[i].revder(out_num[i])[1],
                                   G[i], edge_labs[i], pos[i], labs[i],
                                   var[i].revder(out_num[i])[0])
예제 #6
0
def rev_graph(i):
    ADgraph.draw_graph_rev2(out_num[i], G[i], edge_labs[i], pos[i], labs[i])
예제 #7
0
def comp_graph(i):
    ADgraph.draw_graph2(out_num[i], G[i], edge_labs[i], pos[i], labs[i])
예제 #8
0
def get_table():
    df = ADgraph.gen_table(out_num[visfunc])
    return df.to_html(index=False)
예제 #9
0
def rev_graph_embed():
    output = ADgraph.draw_graph_rev2(out_num[visfunc], G[visfunc],
                                     edge_labs[visfunc], pos[visfunc],
                                     labs[visfunc])
    return Response(output.getvalue(), mimetype='image/svg+xml')
예제 #10
0
def graphwindow():
    global show_table
    errors = ""
    if request.method == "POST":
        action = request.form["action"]
        if request.form["action"] == "Set Input Values":
            show_table = False
            global varlist
            varlist = []
            try:
                global x
                x = [ADnum(float(request.form["x"]), ins=master_ins, ind=0)
                     ] * master_outs
                var_strs['x'] = request.form["x"]
                varlist.append(x)
                if master_ins > 1:
                    global y
                    y = [
                        ADnum(float(request.form["y"]), ins=master_ins, ind=1)
                    ] * master_outs
                    var_strs['y'] = request.form["y"]
                    varlist.append(y)
                if master_ins > 2:
                    global z
                    z = [
                        ADnum(float(request.form["z"]), ins=master_ins, ind=2)
                    ] * master_outs
                    var_strs['z'] = request.form['z']
                    varlist.append(z)
                if master_ins > 3:
                    global u
                    u = [
                        ADnum(float(request.form["u"]), ins=master_ins, ind=3)
                    ] * master_outs
                    var_strs['u'] = request.form["u"]
                    varlist.append(u)
                if master_ins > 4:
                    global v
                    v = [
                        ADnum(float(request.form["v"]), ins=master_ins, ind=4)
                    ] * master_outs
                    var_strs['v'] = request.form["v"]
                    varlist.append(v)
                build_function()
                return render_template('graph.html',
                                       ins=master_ins,
                                       outs=master_outs,
                                       errors=errors,
                                       var_strs=var_strs,
                                       flabels=flabels,
                                       func_content=func_content,
                                       full=True,
                                       val=disp_val,
                                       der=disp_der,
                                       show_table=False)
            except:
                errors += "Please enter numeric values for all of the inputs."
        if action[0] == "g":
            #if request.form["action"]=="Computational Graph":
            comp_graph(int(action[-1]))
            if show_table:
                df = ADgraph.gen_table(out_num[int(action[-1])])
                table = df.to_html(index=False)
            #ADgraph.draw_graph2(out_num[0], G[0], edge_labs[0], pos[0], labs[0])
            else:
                table = 0
            return render_template('graph.html',
                                   ins=master_ins,
                                   outs=master_outs,
                                   errors=errors,
                                   var_strs=var_strs,
                                   flabels=flabels,
                                   func_content=func_content,
                                   full=True,
                                   val=disp_val,
                                   der=disp_der,
                                   show_table=show_table,
                                   tables=table)
            #comp_graph(int(action[-1]))
        if action[0] == "t":
            df = ADgraph.gen_table(out_num[int(action[-1])])
            table = df.to_html(index=False)
            show_table = True
            return render_template('graph.html',
                                   ins=master_ins,
                                   outs=master_outs,
                                   errors=errors,
                                   var_strs=var_strs,
                                   flabels=flabels,
                                   func_content=func_content,
                                   full=True,
                                   val=disp_val,
                                   der=disp_der,
                                   show_table=show_table,
                                   tables=table)
        if action[0] == 'r':
            #if request.form["action"]=="Reverse Graph":
            rev_graph(int(action[-1]))
            #ADgraph.draw_graph_rev2(out_num[0], G[0], edge_labs[0], pos[0], labs[0])
            return render_template('graph.html',
                                   ins=master_ins,
                                   outs=master_outs,
                                   errors=errors,
                                   var_strs=var_strs,
                                   flabels=flabels,
                                   func_content=func_content,
                                   full=True,
                                   val=disp_val,
                                   der=disp_der,
                                   show_table=show_table)
        if action[0] == 'd':
            #if request.form["action"]=="Rev Dynamic":
            rev_dynamic(int(action[-2]), varlist[int(action[-1])])
            #ADgraph.draw_graph_rev_dynamic(out_num[0], x[0].revder(out_num[0])[1], G[0], edge_labs[0], pos[0], labs[0], x[0].revder(out_num[0])[0])
            return render_template('graph.html',
                                   ins=master_ins,
                                   outs=master_outs,
                                   errors=errors,
                                   var_strs=var_strs,
                                   flabels=flabels,
                                   func_content=func_content,
                                   full=True,
                                   val=disp_val,
                                   der=disp_der,
                                   show_table=show_table)
    return render_template('graph.html',
                           ins=master_ins,
                           outs=master_outs,
                           errors=errors,
                           var_strs=var_strs,
                           flabels=flabels,
                           func_content=func_content,
                           full=False,
                           show_table=False)