varshakolanu's picture
Update app.py
d8de57d verified
import gradio as gr
import pandas as pd
import logging
import sys
import os
# Set up logging to capture errors
logging.basicConfig(stream=sys.stdout, level=logging.INFO)
logger = logging.getLogger(__name__)
# Verify that required files exist
try:
if not os.path.exists("dataset.csv"):
logger.error("dataset.csv not found!")
raise FileNotFoundError("dataset.csv not found!")
if not os.path.exists("style.css"):
logger.error("style.css not found!")
raise FileNotFoundError("style.css not found!")
except Exception as e:
logger.error(f"Error checking files: {str(e)}")
raise
# Load the dataset
try:
logger.info("Loading dataset.csv...")
df = pd.read_csv("dataset.csv")
logger.info("Dataset loaded successfully.")
except Exception as e:
logger.error(f"Error loading dataset: {str(e)}")
raise
# Function to suggest treatment and medicines based on symptoms
def suggest_treatment(symptoms_input):
try:
logger.info(f"Processing symptoms: {symptoms_input}")
symptoms_input = symptoms_input.lower().strip()
if not symptoms_input:
return "Please enter symptoms."
# Search for matching symptoms in the dataset
for index, row in df.iterrows():
dataset_symptoms = row['symptoms'].lower().strip()
input_symptom_list = [s.strip() for s in symptoms_input.split(",")]
dataset_symptom_list = [s.strip() for s in dataset_symptoms.split(",")]
if all(symptom in dataset_symptom_list for symptom in input_symptom_list):
result = (
f"**Possible Disease**: {row['disease']}\n"
f"**Suggested Treatment**: {row['treatment']}\n"
f"**Medicines**: {row['medicines']}"
)
logger.info(f"Suggestion generated: {result}")
return result
return "Sorry, no matching disease found for the given symptoms. Please consult a doctor."
except Exception as e:
logger.error(f"Error in suggest_treatment: {str(e)}")
return f"Error processing symptoms: {str(e)}"
# Create Gradio interface using Blocks
with gr.Blocks(css="style.css") as app:
gr.Markdown("# Medical Suggestion AI")
gr.Markdown("Enter your symptoms to get treatment and medicine suggestions.")
symptoms_input = gr.Textbox(
label="Symptoms (e.g., fever, headache)",
placeholder="Enter symptoms separated by commas",
elem_classes="symptoms-input"
)
submit_btn = gr.Button("Submit", elem_classes="submit-btn")
output = gr.Markdown(label="Suggestions", elem_classes="output")
submit_btn.click(
fn=suggest_treatment,
inputs=symptoms_input,
outputs=output
)
# Launch the app
try:
logger.info("Launching Gradio app...")
app.launch(server_name="0.0.0.0", server_port=7860, share=False)
logger.info("Gradio app launched successfully.")
except Exception as e:
logger.error(f"Error launching Gradio app: {str(e)}")
raise