dhani10's picture
Initial deploy
5b111f0 verified
import gradio as gr
import pandas as pd
import numpy as np
import os
import sys
sys.path.append('.')
try:
from model_loader import load_engine_model
print("✅ Model loader imported!")
except ImportError as e:
print(f"Import error for model_loader: {e}")
class MockModel:
def predict(self, X):
return {'prediction': 0, 'probability': 0.50, 'condition': 'Normal'}
def predict_proba(self, X):
return np.array([[0.50, 0.50]])
def load_engine_model(model_name="dhani10/engine-condition-model"):
print("⚠️ Using Mock Model.")
return MockModel()
# Default model repo (adjust if needed)
MODEL_REPO = os.getenv("MODEL_REPO", "dhani10/engine-condition-model")
model = load_engine_model(MODEL_REPO)
print(f"Model loaded: {type(model)}")
def predict_condition(engine_rpm, oil_pressure, fuel_pressure, coolant_pressure, oil_temp, coolant_temp):
input_data = {
'Engine rpm': engine_rpm,
'Lub oil pressure': oil_pressure,
'Fuel pressure': fuel_pressure,
'Coolant pressure': coolant_pressure,
'lub oil temp': oil_temp,
'Coolant temp': coolant_temp
}
result = model.predict(input_data)
color = "green" if result.get('condition','Error') == 'Normal' else "red"
emoji = "✅" if result.get('condition','Error') == 'Normal' else "⚠️"
proba = result.get('probability', 0.0)
return f"<h2 style='color:{color};'>{emoji} {result.get('condition','Error')}</h2><p>Confidence: {proba:.2%}</p>"
with gr.Blocks(title="Engine Maintenance Prediction") as demo:
gr.Markdown("# 🚀 Engine Maintenance Prediction")
gr.Markdown("Enter sensor readings to predict engine condition.")
with gr.Row():
with gr.Column():
engine_rpm = gr.Number(label="Engine RPM", value=791.0, step=1.0)
oil_pressure = gr.Number(label="Lub Oil Pressure (bar)", value=3.3, step=0.01)
fuel_pressure = gr.Number(label="Fuel Pressure (bar)", value=6.6, step=0.01)
coolant_pressure = gr.Number(label="Coolant Pressure (bar)", value=2.3, step=0.01)
oil_temp = gr.Number(label="Lub Oil Temp (°C)", value=77.6, step=0.1)
coolant_temp = gr.Number(label="Coolant Temp (°C)", value=78.4, step=0.1)
btn = gr.Button("Predict", variant="primary")
with gr.Column():
output = gr.HTML(label="Prediction Result")
btn.click(
predict_condition,
inputs=[engine_rpm, oil_pressure, fuel_pressure, coolant_pressure, oil_temp, coolant_temp],
outputs=output
)
if __name__ == "__main__":
demo.launch(server_name="0.0.0.0", server_port=7860)