Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from src.main import get_fn, get_dev, get_tangent_line | |
| from src.piecewise import get_piecewise_fn, get_piecewise_dev | |
| from src.product_rule import get_pr_fn, get_pr_dev | |
| # to run app: python -m gr_app or gradio gr_app.py | |
| fn_fig, dev_fig = None, None | |
| tl_plot = None | |
| with gr.Blocks() as scatterplot: | |
| with gr.Column(): | |
| with gr.Row(): | |
| inp = gr.Textbox(value = "x**2", | |
| info = "eg 'np.sqrt(x)'", | |
| label = "Enter Your Expression here") | |
| inp_2 = gr.Textbox(value = "2", | |
| info = "e.g. 2", | |
| label = "Which point on x do you want to draw the tangent line?") | |
| btn = gr.Button("Run!") | |
| with gr.Row(): | |
| fn_scatter = gr.Plot(fn_fig) | |
| dev_scatter = gr.Plot(dev_fig) | |
| tl_scatter = gr.Plot(tl_plot) | |
| gr.on(triggers = [inp.submit, btn.click], | |
| fn=get_fn, | |
| inputs = inp, | |
| outputs = fn_scatter) | |
| gr.on(triggers = [inp.submit, btn.click], | |
| fn=get_dev, | |
| inputs = inp, | |
| outputs = dev_scatter) | |
| gr.on(triggers = [inp.submit, inp_2.submit, btn.click], | |
| fn=get_tangent_line, | |
| inputs = [inp, inp_2], | |
| outputs=tl_scatter) | |
| # dev_obj = None | |
| piecewise_fn_fig, piecewise_dev_fig = None, None | |
| with gr.Blocks() as piecewise: | |
| with gr.Column(): | |
| with gr.Row(): | |
| with gr.Column(): | |
| inp_func_1 = gr.Textbox(value = "x**2", | |
| info = "eg 'np.sqrt(x)'", | |
| label = "Enter Your Expression here") | |
| inp_sign_1 = gr.Textbox(value = "<", | |
| info = "eg <", | |
| label = "Enter Your Sign Here") | |
| with gr.Column(): | |
| inp_func_2 = gr.Textbox(value = "x**3", | |
| info = "e.g. x**3", | |
| label = "Enter Your Expression here") | |
| inp_sign_2 = gr.Textbox(value = ">=", | |
| info = "eg >=", | |
| label = "Enter Your Sign Here") | |
| inp_point = gr.Textbox(value = "2", | |
| info = "e.g. 2", | |
| label = "Enter where your point will be separating your piecewise function") | |
| btn_3 = gr.Button("Run!") | |
| with gr.Row(): | |
| piecewise_fn_scatter = gr.Plot(piecewise_fn_fig) | |
| piecewise_dev_scatter = gr.Plot(piecewise_dev_fig) | |
| gr.on(triggers = [inp_func_1.submit, inp_func_2.submit, inp_point.submit, inp_sign_1.submit, inp_sign_2.submit, btn_3.click], | |
| fn=get_piecewise_fn, | |
| inputs = [inp_func_1, inp_func_2, inp_point, inp_sign_1, inp_sign_2], | |
| outputs = piecewise_fn_scatter) | |
| gr.on(triggers = [inp_func_1.submit, inp_func_2.submit, inp_point.submit, inp_sign_1.submit, inp_sign_2.submit, btn_3.click], | |
| fn=get_piecewise_dev, | |
| inputs = [inp_func_1, inp_func_2, inp_point, inp_sign_1, inp_sign_2], | |
| outputs = piecewise_dev_scatter) | |
| pr_fn_fig, pr_dev_fig = None, None | |
| with gr.Blocks() as product_rule: | |
| with gr.Column(): | |
| with gr.Row(): | |
| inp = gr.Textbox(value = "x**2", | |
| info = "eg 'np.sqrt(x)'", | |
| label = "Enter Your First Expression here") | |
| inp_2 = gr.Textbox(value = "x**3", | |
| info = "e.g. x**3", | |
| label = "Enter Your Second Expression Here") | |
| btn = gr.Button("Run!") | |
| with gr.Row(): | |
| pr_fn_scatter = gr.Plot(pr_fn_fig) | |
| dev_scatter = gr.Plot(pr_dev_fig) | |
| gr.on(triggers = [inp.submit, inp_2.submit, btn.click], | |
| fn=get_pr_fn, | |
| inputs = [inp, inp_2], | |
| outputs = pr_fn_scatter) | |
| gr.on(triggers = [inp.submit, inp_2.submit, btn.click], | |
| fn=get_pr_dev, | |
| inputs = [inp, inp_2], | |
| outputs = dev_scatter) | |
| demo = gr.TabbedInterface([scatterplot, piecewise, product_rule], ["Single Function", "Piecewise Function", "Product Rule"]) | |
| if __name__ == "__main__": | |
| demo.launch() | |