import gradio as gr import pandas as pd import torch from predict import RiskPredictor # Initialize the predictor predictor = RiskPredictor() def predict_risk(age, bmi, systolic_bp, diastolic_bp, cholesterol, heart_rate, smoking, steps, stress, physical_activity, sleep, family_history, diet_quality, alcohol, risk_score): input_data = { 'age': age, 'bmi': bmi, 'systolic_bp': systolic_bp, 'diastolic_bp': diastolic_bp, 'cholesterol_mg_dl': cholesterol, 'resting_heart_rate': heart_rate, 'smoking_status': smoking, 'daily_steps': steps, 'stress_level': stress, 'physical_activity_hours_per_week': physical_activity, 'sleep_hours': sleep, 'family_history_heart_disease': family_history, 'diet_quality_score': diet_quality, 'alcohol_units_per_week': alcohol, 'heart_disease_risk_score': risk_score } prediction = predictor.predict_single(input_data) # Return mapping for color-coded feedback result_text = f"## Predicted Category: {prediction.upper()}" if prediction == 'Low': description = "✅ Low risk! Excellent heart health habits." color = "#2ed573" elif prediction == 'Medium': description = "⚠️ Moderate risk. Consider heart-healthy changes." color = "#ffa502" else: description = "🚨 High risk! Please consult a health professional." color = "#ff4757" return f'
{result_text}
{description}
' # Gradio Interface with gr.Blocks(theme=gr.themes.Soft()) as demo: gr.Markdown("# 🏥 CardioGuard: RNN Heart Risk Predictor") gr.Markdown("Enter patient data below to analyze cardiovascular risk using a Deep Learning RNN model.") with gr.Row(): with gr.Column(): age = gr.Number(label="Age", value=45) bmi = gr.Number(label="BMI", value=26.5) systolic = gr.Number(label="Systolic BP", value=130) diastolic = gr.Number(label="Diastolic BP", value=85) cholesterol = gr.Number(label="Cholesterol (mg/dl)", value=210) with gr.Column(): smoking = gr.Dropdown(["Never", "Former", "Current"], label="Smoking Status", value="Never") family_history = gr.Dropdown(["No", "Yes"], label="Family History", value="No") steps = gr.Number(label="Daily Steps", value=6000) heart_rate = gr.Number(label="Resting Heart Rate", value=72) risk_score = gr.Number(label="Internal Risk Score (0-100)", value=35.0) with gr.Column(): stress = gr.Slider(1, 10, step=1, label="Stress Level", value=5) diet = gr.Slider(1, 10, step=1, label="Diet Quality", value=6) activity = gr.Number(label="Physical Activity (hrs/wk)", value=3.5) sleep = gr.Number(label="Sleep Hours", value=7.5) alcohol = gr.Number(label="Alcohol Units/wk", value=2.0) btn = gr.Button("Analyze Risk Profile", variant="primary") output = gr.HTML() btn.click(predict_risk, inputs=[ age, bmi, systolic, diastolic, cholesterol, heart_rate, smoking, steps, stress, activity, sleep, family_history, diet, alcohol, risk_score ], outputs=output) if __name__ == "__main__": demo.launch()