counting / app.py
spagestic's picture
feat: implement Gradio interfaces for algebra operations and create tabbed interface
fe0557b
raw
history blame
5.65 kB
import gradio as gr
from maths.arithmetic.arithmetic_interface import (
add_interface, subtract_interface, multiply_interface, divide_interface,
array_calc_interface, array_calc_vis_interface,
gcd_interface, lcm_interface, is_prime_interface # Assuming these were added earlier from a subtask
)
from maths.algebra.algebra_interface import solve_linear_equation_interface
from maths.algebra.algebra_tabs import algebra_tab
from maths.geometry.trigonometry_interface import (
trig_interface, inverse_trig_interface, solve_trig_equations_interface, trig_identities_interface # Assuming these
)
from maths.calculus.calculus_interface import (
derivative_interface, integral_interface,
limit_interface, taylor_series_interface, fourier_series_interface, # Assuming these
partial_derivative_interface, multiple_integral_interface # Assuming these
)
from maths.matrices.matrices_interface import (
matrix_add_interface, matrix_subtract_interface, matrix_multiply_interface,
matrix_determinant_interface, matrix_inverse_interface
)
from maths.vectors.vectors_interface import (
vector_add_interface, vector_subtract_interface,
vector_dot_product_interface, vector_cross_product_interface
)
from maths.differential_equations.differential_equations_interface import (
first_order_ode_interface, second_order_ode_interface
)
from maths.operations_research.operations_research_interface import (
branch_and_bound_interface, dual_simplex_interface, simplex_solver_interface
)
from maths.equations.equations_interface import (
equations_app, solve_quadratic_interface # equations_app is the tabbed interface, solve_quadratic_interface for direct use
)
# Categorize interfaces by topics
arithmetic_interfaces_list = [
add_interface, subtract_interface, multiply_interface,
divide_interface, array_calc_interface, array_calc_vis_interface
]
arithmetic_tab_names = [
"Addition", "Subtraction", "Multiplication", "Division",
"Array Calculation", "Array Calculation Viz"
]
number_theory_interfaces_list = [gcd_interface, lcm_interface, is_prime_interface]
number_theory_tab_names = ["GCD", "LCM", "Prime Check"]
algebra_tab = gr.TabbedInterface(
algebra_interfaces_list,
algebra_tab_names,
title="Algebra"
)
equations_interfaces_list = [
solve_linear_equation_interface, solve_quadratic_interface, # keep direct quadratic solver for single tab
solve_trig_equations_interface
]
equations_tab_names = [
"Linear Equation Solver", "Quadratic Solver",
"Trigonometric Equation Solver"
]
geometry_interfaces_list = [trig_interface, inverse_trig_interface, trig_identities_interface]
geometry_tab_names = ["Trig Functions", "Inverse Trig", "Trig Identities"]
calculus_interfaces_list = [
derivative_interface, integral_interface, limit_interface,
taylor_series_interface, fourier_series_interface,
partial_derivative_interface, multiple_integral_interface
]
calculus_tab_names = [
"Derivative", "Integral", "Limits",
"Taylor Series", "Fourier Series",
"Partial Derivatives", "Multiple Integrals"
]
differential_equations_interfaces_list = [first_order_ode_interface, second_order_ode_interface]
differential_equations_tab_names = ["First Order ODE", "Second Order ODE"]
matrices_interfaces_list = [
matrix_add_interface, matrix_subtract_interface,
matrix_multiply_interface, matrix_determinant_interface,
matrix_inverse_interface
]
matrices_tab_names = [
"Matrix Addition", "Matrix Subtraction", "Matrix Multiplication",
"Matrix Determinant", "Matrix Inverse"
]
vectors_interfaces_list = [
vector_add_interface, vector_subtract_interface,
vector_dot_product_interface, vector_cross_product_interface
]
vectors_tab_names = ["Vector Addition", "Vector Subtraction", "Dot Product", "Cross Product"]
operations_research_interfaces_list = [
branch_and_bound_interface, dual_simplex_interface, simplex_solver_interface
]
operations_research_tab_names = ["Branch & Bound", "Dual Simplex", "Simplex Steps"]
# Create topic-based tabbed interfaces
arithmetic_tab = gr.TabbedInterface(arithmetic_interfaces_list, arithmetic_tab_names, title="Arithmetic")
number_theory_tab = gr.TabbedInterface(number_theory_interfaces_list, number_theory_tab_names, title="Number Theory")
equations_tab = equations_app # Only include the composite equations_app in the equations tab to avoid duplicate Gradio blocks
geometry_tab = gr.TabbedInterface(geometry_interfaces_list, geometry_tab_names, title="Geometry")
calculus_tab = gr.TabbedInterface(calculus_interfaces_list, calculus_tab_names, title="Calculus")
differential_equations_tab = gr.TabbedInterface(differential_equations_interfaces_list, differential_equations_tab_names, title="Differential Equations")
matrices_tab = gr.TabbedInterface(matrices_interfaces_list, matrices_tab_names, title="Matrices")
vectors_tab = gr.TabbedInterface(vectors_interfaces_list, vectors_tab_names, title="Vectors")
operations_research_tab = gr.TabbedInterface(operations_research_interfaces_list, operations_research_tab_names, title="Operations Research")
# Main demo with topic tabs
demo = gr.TabbedInterface(
[
arithmetic_tab, number_theory_tab, algebra_tab,
equations_tab, geometry_tab, calculus_tab, differential_equations_tab,
matrices_tab, vectors_tab, operations_research_tab
],
[
"Arithmetic", "Number Theory", "Algebra",
"Equations", "Geometry", "Calculus", "Differential Equations",
"Matrices", "Vectors", "Operations Research"
]
)
# Launch the Gradio app
if __name__ == "__main__":
demo.launch(mcp_server=True)