Spaces:
Runtime error
Runtime error
File size: 5,073 Bytes
f93ab8d 7772a1c bee4a9d 8c2c3d2 cd83371 3bf6bd4 f93ab8d a8a34f1 be8fd3b a8a34f1 cd83371 8fe2fcb 3bf6bd4 a8a34f1 8fe2fcb afd3f8f a8a34f1 614ac0b a8a34f1 8c2c3d2 98d9c54 8c2c3d2 b2d6c75 73e6ff6 5e1bac5 73e6ff6 8d99195 b2d6c75 936f336 b2d6c75 936f336 b2d6c75 34ac461 936f336 34ac461 b5dc851 6e3e359 b5dc851 34ac461 425589d 4e9e9f0 34ac461 1ce8dc4 b5dc851 40198f4 4794c33 425589d ce5d860 425589d 4e9e9f0 e6f6142 b5dc851 34ac461 f90575b 4e9e9f0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
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
from datetime import datetime
def get_row():
response_tomtom = requests.get(
'https://api.tomtom.com/traffic/services/4/flowSegmentData/absolute/10/json?key=azGiX8jKKGxCxdsF1OzvbbWGPDuInWez&point=59.39575,17.98343')
json_response_tomtom = json.loads(response_tomtom.text) # get json response
currentSpeed = json_response_tomtom["flowSegmentData"]["currentSpeed"]
freeFlowSpeed = json_response_tomtom["flowSegmentData"]["freeFlowSpeed"]
congestionLevel = currentSpeed/freeFlowSpeed
confidence = json_response_tomtom["flowSegmentData"]["confidence"] # Reliability of the traffic data, by percentage
# Get weather data from SMHI, updated hourly
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)
# weather data manual https://opendata.smhi.se/apidocs/metanalys/parameters.html#parameter-wsymb
# referenceTime = dp.parse(json_response_smhi["referenceTime"]).timestamp()
t = json_response_smhi["timeSeries"][0]["parameters"][0]["values"][0] # Temperature
ws = json_response_smhi["timeSeries"][0]["parameters"][4]["values"][0] # Wind Speed
prec1h = json_response_smhi["timeSeries"][0]["parameters"][6]["values"][0] # Precipation last hour
fesn1h = json_response_smhi["timeSeries"][0]["parameters"][8]["values"][0] # Snow precipation last hour
vis = json_response_smhi["timeSeries"][0]["parameters"][9]["values"][0] # Visibility
# Use current time
referenceTime = datetime.fromtimestamp(time.time())
row ={"referenceTime": referenceTime,
"temperature": t,
"wind speed": ws,
"precipation last hour": prec1h,
"snow precipation last hour": fesn1h,
"visibility": vis,
"confidence of data": confidence}
row = pd.DataFrame([row], columns=row.keys())
print(row)
row.dropna(axis=0, inplace=True)
return row
model = joblib.load(cached_download(
hf_hub_url("tilos/Traffic_Prediction", "traffic_model.pkl")
))
def infer(input_dataframe):
serie = input_dataframe["referenceTime"]
ts = dp.parse(serie.iloc[0]).timestamp()
input_dataframe["referenceTime"] = ts
res = pd.DataFrame(model.predict(input_dataframe)).clip(0, 1)
if res > 0.8:
status = "Smooth Traffic on E4"
elif res > 0.5:
status = "Slight congestion on E4"
else:
status = "Total congestion on E4"
return res, status
title = "Stoclholm Highway E4 Real Time Traffic Prediction"
description = "Stockholm E4 (59°23'44.7"" N 17°59'00.4""E) highway real time traffic prediction"
# inputs = [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)]
# outputs = [gr.Dataframe(row_count = (1, "fixed"), col_count=(1, "fixed"), label="Predictions", headers=["Congestion Level"])]
with gr.Blocks() as demo:
with gr.Row():
with gr.Column():
inputs = 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)
with gr.Column():
outputs = gr.Dataframe(row_count = (1, "fixed"), col_count=(1, "fixed"), label="Predictions", headers=["Freeflow Level"])
with gr.Row():
btn_sub = gr.Button(value="Submit")
with gr.Row():
btn_ref = gr.Button(value="Get real-time data")
btn_sub.click(infer, inputs = inputs, outputs = outputs)
btn_ref.click(get_row, inputs = None, outputs = inputs)
#examples = gr.Examples(fn = infer, examples=[get_row()],inputs=inputs,outputs=outputs ,cache_examples=True)
examples = gr.Examples(fn = infer, examples=[get_row()] ,inputs=inputs, outputs=outputs, cache_examples=False)
# demo.load(get_row, inputs = None, outputs = [inputs], every=10)
demo.load(get_row, inputs = None, outputs = [inputs])
# interface = gr.Interface(fn = infer, inputs = inputs, outputs = outputs, title=title, description=description, examples=[get_row()], cache_examples=False)
# interface.launch()
if __name__ == "__main__":
demo.queue().launch() |