Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| from huggingface_hub import hf_hub_download | |
| import joblib | |
| import os | |
| from huggingface_hub import login, HfApi | |
| # Download and load the predictive maintenance model | |
| HF_TOKEN = os.getenv("HF_TOKEN") | |
| if not HF_TOKEN: | |
| st.error("HF_TOKEN is not set. Cannot download model.") | |
| else: | |
| try: | |
| model_path = hf_hub_download(repo_id="sudha1726/predictive_maintainance_model", filename="best_predictive_maintainance_model_v1.joblib", token=HF_TOKEN) | |
| model = joblib.load(model_path) | |
| st.success("Predictive Maintenance Model loaded successfully!") | |
| except Exception as e: | |
| st.error(f"Error loading model from Hugging Face: {e}") | |
| model = None | |
| # Streamlit UI for Predictive Maintenance | |
| st.title("Engine Predictive Maintenance App") | |
| st.write(""" | |
| This application predicts whether an engine requires maintenance based on real-time sensor data. | |
| Please enter the engine sensor readings below to get a prediction. | |
| """) | |
| if model: | |
| # User input fields for engine sensor data | |
| engine_rpm = st.number_input("Engine RPM", min_value=0, max_value=3000, value=700) | |
| lub_oil_pressure = st.number_input("Lub Oil Pressure (bar/kPa)", min_value=0.0, max_value=10.0, value=3.0, format="%.2f") | |
| fuel_pressure = st.number_input("Fuel Pressure (bar/kPa)", min_value=0.0, max_value=30.0, value=7.0, format="%.2f") | |
| coolant_pressure = st.number_input("Coolant Pressure (bar/kPa)", min_value=0.0, max_value=10.0, value=2.5, format="%.2f") | |
| lub_oil_temp = st.number_input("Lub Oil Temperature (°C)", min_value=0.0, max_value=100.0, value=75.0, format="%.2f") | |
| coolant_temp = st.number_input("Coolant Temperature (°C)", min_value=0.0, max_value=200.0, value=80.0, format="%.2f") | |
| # Assemble input data into DataFrame | |
| input_data = pd.DataFrame([{ | |
| 'Engine rpm': engine_rpm, | |
| 'Lub oil pressure': lub_oil_pressure, | |
| 'Fuel pressure': fuel_pressure, | |
| 'Coolant pressure': coolant_pressure, | |
| 'lub oil temp': lub_oil_temp, | |
| 'Coolant temp': coolant_temp | |
| }]) | |
| # Prediction | |
| if st.button("Predict Engine Condition"): | |
| prediction = model.predict(input_data)[0] | |
| result = "requires maintenance (Faulty)" if prediction == 1 else "does not require maintenance (Normal)" | |
| st.subheader("Prediction Result:") | |
| st.success(f"The model predicts the engine **{result}**") | |
| st.write("---") | |
| st.subheader("Upload Deployment to Hugging Face Space") | |
| if st.button("Upload Deployment Files"): | |
| if not HF_TOKEN: | |
| st.error("HF_TOKEN is not set. Cannot upload files.") | |
| else: | |
| login(token=HF_TOKEN) | |
| api = HfApi() | |
| repo_id = "sudha1726/predictive-maintainanace" # your Space repo | |
| folder_path = "predictive_maintainance_project/deployment" | |
| try: | |
| api.upload_folder( | |
| folder_path=folder_path, | |
| repo_id=repo_id, | |
| repo_type="space", | |
| path_in_repo="" | |
| ) | |
| st.success("Deployment files uploaded successfully to Hugging Face Space!") | |
| except Exception as e: | |
| st.error(f"Error uploading deployment files: {e}") | |