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() | |