Chenzhou's picture
Update app.py
ec7f812
raw
history blame
2.29 kB
import sklearn
import gradio as gr
import joblib
import pandas as pd
import datasets
import requests
import json
import dateutil.parser as dp
import pandas as pd
from huggingface_hub import hf_hub_url, cached_download
import time
import datetime
title = "Stockholm Highway E4 Real Time Traffic Prediction"
description = "Stockholm E4 (59°23'44.7"" N 17°59'00.4""E) highway real time traffic prediction, updated in every hour"
inputs = [gr.Dataframe(row_count = (1, "fixed"), col_count=(7,"fixed"), label="Input Data", interactive=1)]
outputs = [gr.Dataframe(row_count = (1, "fixed"), col_count=(1, "fixed"), label="Predictions", headers=["Congestion Level"])]
model = joblib.load("./traffic_model.pkl")
response_smhi = requests.get(
'https://opendata-download-metanalys.smhi.se/api/category/mesan1g/version/2/geotype/point/lon/17.983/lat/59.3957/data.json')
json_response_smhi = json.loads(response_smhi.text)
def infer(input_dataframe):
return pd.DataFrame(model.predict(input_dataframe))
referenceTime = dp.parse(json_response_smhi["referenceTime"]).timestamp()
def get_time():
return datetime.datetime.now()
#with gr.Blocks() as demo:
# with gr.Row():
# with gr.Column():
# c_time2 = gr.Textbox(label="Current Time refreshed every second")
# demo.load(lambda: datetime.datetime.now(), None, c_time2, every=1)
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
gr.Dataframe(row_count = (1, "fixed"), col_count=(7,"fixed"),
headers=["referenceTime", "t", "ws", "prec1h", "fesn1h", "vis", "confidence"],
# datatype=["timestamp", "float", "float", "float", "float", "float"],
label="Input Data", interactive=1)
c_time2 = gr.Textbox(label="Current Time refreshed every second")
demo.load(lambda: datetime.datetime.now(), None, c_time2, every=1)
with gr.Column:
gr.Dataframe(row_count = (1, "fixed"), col_count=(1, "fixed"), label="Predictions", headers=["Congestion Level"])
with gr.Row():
btn_sub = gr.Button(value="Submit")
btn_sub.click(infer, inputs = inputs, outputs = outputs)
demo.queue().launch()