Spaces:
Runtime error
Runtime error
File size: 5,887 Bytes
6fedaa7 be9e9ca adcbaca 03e67cf 6fedaa7 c4ec6df 852d5ad c4ec6df 03e67cf c4ec6df 6fedaa7 c4ec6df 03e67cf c4ec6df 03d8f37 c4ec6df 03d8f37 c4ec6df 03e67cf c4ec6df 03d8f37 c4ec6df 03e67cf c4ec6df dc46bb2 c4ec6df 03d8f37 03e67cf 03d8f37 03e67cf 03d8f37 f5086fc a642d4a c560442 d2d3ba1 a642d4a f5086fc 03e67cf f5086fc af6c04e 03e67cf f5086fc 03e67cf f5086fc 03e67cf 26e57cf 0dd59e9 67b00d8 0dd59e9 a766b35 0dd59e9 f50a4d0 ef884ae 0dd59e9 4d5e943 e757b51 03e67cf c4ec6df 03d8f37 c4ec6df 03e67cf |
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 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
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("Chenzhou/Traffic_Prediction", "traffic_model_adam.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).iloc[0, 0]
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 pd.DataFrame({'Freeflow Level':[res], 'Status': [status]})
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"
# 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:
gr.Markdown("<h1 style='text-align: center; margin-bottom: 1rem'>"
+ title
+ "</h1>")
gr.Markdown(description)
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=(2, "fixed"), label="Predictions", headers=["Freeflow Level", "Status"])
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)
#example_row = ["2023-01-01 15:00:00", 4.5, 6.6, 0, 0, 40, 1]
ref_ex = datetime.fromtimestamp(1672585200)
example_row ={"referenceTime": ref_ex,
"temperature": 4.5,
"wind speed": 6.6,
"precipation last hour": 0.0,
"snow precipation last hour": 0.0,
"visibility": 40,
"confidence of data": 1}
example_row = pd.DataFrame([example_row], columns=example_row.keys())
example_row.dropna(axis=0, inplace=True)
#examples = gr.Examples(fn = infer, examples=[get_row()],inputs=inputs,outputs=outputs ,cache_examples=True)
examples = gr.Examples(fn = infer, examples=[example_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() |