import os import uuid import joblib import json import gradio as gr import pandas as pd from huggingface_hub import CommitScheduler from pathlib import Path import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from warnings import filterwarnings filterwarnings('ignore') log_file = Path("logs/") / f"data_{uuid.uuid4()}.json" log_folder = log_file.parent scheduler = CommitScheduler( repo_id="machine-failure-logs", repo_type="dataset", folder_path=log_folder, path_in_repo="data", every=2 ) health_status_predictor = joblib.load('model.joblib') Latitude = gr.Number(label='Latitude') Longitude = gr.Number(label='Longitude') DBH = gr.Number(label='DBH') Tree_Height = gr.Number(label='Tree_Height') Crown_Width_North_South = gr.Number(label='Crown_Width_North_South') Crown_Width_East_West = gr.Number(label='Crown_Width_East_West') Slope = gr.Number(label='Slope') Elevation = gr.Number(label='Elevation') Temperature = gr.Number(label='Temperature') Humidity = gr.Number(label='Humidity') Soil_TN = gr.Number(label='Soil_TN') Soil_TP = gr.Number(label='Soil_TP') Soil_AP = gr.Number(label='Soil_AP') Soil_AN = gr.Number(label='Soil_AN') Menhinick_Index = gr.Number(label='Menhinick_Index') Gleason_Index = gr.Number(label='Gleason_Index') Fire_Risk_Index = gr.Number(label='Fire_Risk_Index') model_output = gr.Label(label="Health Status") def predict_health_status(Latitude, Longitude, DBH, Tree_Height, Crown_Width_North_South, Crown_Width_East_West, Slope, Elevation, Temperature, Humidity, Soil_TN, Soil_TP, Soil_AP, Soil_AN, Menhinick_Index, Gleason_Index, Fire_Risk_Index): sample = { 'Latitude': Latitude, 'Longitude': Longitude, 'DBH': DBH, 'Tree_Height': Tree_Height, 'Crown_Width_North_South': Crown_Width_North_South, 'Crown_Width_East_West': Crown_Width_East_West, 'Slope': Slope, 'Elevation': Elevation, 'Temperature': Temperature, 'Humidity': Humidity, 'Soil_TN': Soil_TN, 'Soil_TP': Soil_TP, 'Soil_AP': Soil_AP, 'Soil_AN': Soil_AN, 'Menhinick_Index': Menhinick_Index, 'Gleason_Index': Gleason_Index. 'Fire_Risk_Index': Fire_Risk_Index } data_point = pd.DataFrame([sample]) prediction = health_status_predictor.predict(data_point).tolist() with scheduler.lock: with log_file.open("a") as f: f.write(json.dumps( { 'Latitude': Latitude, 'Longitude': Longitude, 'DBH': DBH, 'Tree_Height': Tree_Height, 'Crown_Width_North_South': Crown_Width_North_South, 'Crown_Width_East_West': Crown_Width_East_West, 'Slope': Slope, 'Elevation': Elevation, 'Temperature': Temperature, 'Humidity': Humidity, 'Soil_TN': Soil_TN, 'Soil_TP': Soil_TP, 'Soil_AP': Soil_AP, 'Soil_AN': Soil_AN, 'Menhinick_Index': Menhinick_Index, 'Gleason_Index': Gleason_Index, 'Fire_Risk_Index': Fire_Risk_Index, 'prediction': prediction[0] } )) f.write("\n") return prediction[0] demo = gr.Interface( fn=predict_health_status, inputs=[Latitude, Longitude, DBH, Tree_Height, Crown_Width_North_South, Crown_Width_East_West, Slope, Elevation, Temperature, Humidity, Soil_TN, Soil_TP, Soil_AP, Soil_AN, Menhinick_Index, Gleason_Index, Fire_Risk_Index], outputs=model_output, title="Health Status Predictor", description="This API allows you to predict the health status of a Tree", allow_flagging="auto", concurrency_limit=8 ) demo.queue() demo.launch(share=False)