CoolFace
Apppublic

rahul755025/Mathematical_Calculation

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
app.py198 linesDownload Raw Back to root
1import gradio as gr2import sympy as sp3import pandas as pd4import kagglehub5import time6 7# =============================8# LOAD DATASET (AI CHAT)9# =============================10try:11    path = kagglehub.dataset_download("ashishkumarak/chatgpt-reviews-daily-updated")12    df = pd.read_csv(path + "/chatgpt_reviews.csv")13    df = df[['review', 'rating']].dropna()14except:15    df = pd.DataFrame({"review": ["Dataset not loaded"], "rating": [0]})16 17 18# =============================19# MATRIX PARSER20# =============================21def parse_matrix(matrix_input_str):22    rows = matrix_input_str.strip().split('\n')23 24    if not rows or all(not row.strip() for row in rows):25        raise ValueError("Matrix input cannot be empty.")26 27    matrix_list = []28    num_cols = None29 30    for i, row in enumerate(rows):31        elements = [e.strip() for e in row.replace(',', ' ').split() if e.strip()]32 33        if not elements:34            raise ValueError(f"Row {i+1} is empty.")35 36        try:37            row_values = [sp.Rational(e) for e in elements]38        except:39            raise ValueError(f"Invalid number in row {i+1}")40 41        if num_cols is None:42            num_cols = len(row_values)43        elif len(row_values) != num_cols:44            raise ValueError("All rows must have same number of columns.")45 46        matrix_list.append(row_values)47 48    A = sp.Matrix(matrix_list)49 50    if not A.is_square:51        raise ValueError("Matrix must be square.")52 53    return A54 55 56# =============================57# MATRIX OPERATIONS58# =============================59def matrix_operations(matrix_input_str):60    steps = []61 62    try:63        steps.append("โณ Parsing matrix...")64        A = parse_matrix(matrix_input_str)65        time.sleep(0.3)66 67        steps.append("๐Ÿ”ข Calculating determinant...")68        det = A.det()69        time.sleep(0.3)70 71        steps.append("๐Ÿ“ Computing cofactor matrix...")72        cofactor = A.cofactor_matrix()73        time.sleep(0.3)74 75        steps.append("๐Ÿ”„ Computing adjugate matrix...")76        adjugate = A.adjugate()77        time.sleep(0.3)78 79        steps.append("๐Ÿงฎ Computing inverse...")80        if det == 0:81            inverse_text = "โŒ Inverse does not exist (Determinant = 0)"82            inverse_latex = inverse_text83        else:84            inverse = A.inv()85            inverse_text = sp.pretty(inverse)86            inverse_latex = f"${sp.latex(inverse)}$"87        time.sleep(0.3)88 89        steps.append("๐Ÿ“Š Computing advanced properties...")90        rank = A.rank()91        transpose = A.T92        eigenvals = A.eigenvals()93 94        return (95            "\n".join(steps),96 97            f"Determinant:\n{det}",98            f"Cofactor Matrix:\n{sp.pretty(cofactor)}",99            f"Adjugate Matrix:\n{sp.pretty(adjugate)}",100            f"Inverse Matrix:\n{inverse_text}",101 102            f"### Determinant\n${sp.latex(det)}$",103            f"### Cofactor\n${sp.latex(cofactor)}$",104            f"### Adjugate\n${sp.latex(adjugate)}$",105            f"### Inverse\n{inverse_latex}",106 107            f"### Rank\n${rank}$",108            f"### Transpose\n${sp.latex(transpose)}$",109            f"### Eigenvalues\n${sp.latex(eigenvals)}$"110        )111 112    except Exception as e:113        return (f"Error: {e}", "", "", "", "", "", "", "", "", "", "")114 115 116# =============================117# AI CHAT (DATASET BASED)118# =============================119def chatbot_response(user_input):120    user_input = user_input.lower()121 122    matches = df[df['review'].str.lower().str.contains(user_input)]123 124    if not matches.empty:125        row = matches.iloc[0]126        return f"๐Ÿ“Š Similar Review:\n\n{row['review']}\n\nโญ Rating: {row['rating']}"127    else:128        return "No similar review found. Try different keywords."129 130 131def chat_interface(message, history):132    response = chatbot_response(message)133    history.append((message, response))134    return "", history135 136 137# =============================138# UI DESIGN139# =============================140with gr.Blocks(theme=gr.themes.Soft()) as demo:141 142    gr.Markdown("## ๐Ÿงฎ Advanced Matrix + AI Chat System")143    gr.Markdown("Matrix Operations + AI Chat (Dataset-based)")144 145    # -------- MATRIX INPUT --------146    matrix_input = gr.Textbox(147        lines=6,148        label="Enter Matrix",149        placeholder="Example:\n1 2 3\n4 5 6\n7 8 9"150    )151 152    run_btn = gr.Button("๐Ÿš€ Compute")153 154    progress = gr.Textbox(label="Processing Steps")155 156    with gr.Tabs():157 158        # ===== TAB 1 =====159        with gr.Tab("๐Ÿ“Œ Basic Outputs"):160            det_out = gr.Textbox(label="Determinant")161            cof_out = gr.Textbox(label="Cofactor Matrix")162            adj_out = gr.Textbox(label="Adjugate Matrix")163            inv_out = gr.Textbox(label="Inverse Matrix")164 165        # ===== TAB 2 =====166        with gr.Tab("๐Ÿ“Š Mathematical View"):167            det_latex = gr.Markdown()168            cof_latex = gr.Markdown()169            adj_latex = gr.Markdown()170            inv_latex = gr.Markdown()171 172        # ===== TAB 3 =====173        with gr.Tab("๐Ÿš€ Advanced Properties"):174            rank_out = gr.Markdown()175            transpose_out = gr.Markdown()176            eigen_out = gr.Markdown()177 178        # ===== TAB 4 (AI CHAT) =====179        with gr.Tab("๐Ÿค– AI Chat"):180            chatbot = gr.Chatbot()181            msg = gr.Textbox(label="Ask about reviews")182            clear = gr.Button("Clear Chat")183 184            msg.submit(chat_interface, [msg, chatbot], [msg, chatbot])185            clear.click(lambda: None, None, chatbot, queue=False)186 187    run_btn.click(188        matrix_operations,189        inputs=matrix_input,190        outputs=[191            progress,192            det_out, cof_out, adj_out, inv_out,193            det_latex, cof_latex, adj_latex, inv_latex,194            rank_out, transpose_out, eigen_out195        ]196    )197 198demo.launch()