rahul755025/Mathematical_Calculation
0
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()