Spaces:
Runtime error
Runtime error
File size: 3,010 Bytes
a99fb8d 12dd9a0 a99fb8d b6150c8 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 a99fb8d 12dd9a0 6e4f158 12dd9a0 a99fb8d 12dd9a0 a99fb8d | 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 | import os
import pandas as pd
import plotly.express as px
from groq import Groq
import gradio as gr
GROQ_API_KEY ="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"
client = Groq(api_key=GROQ_API_KEY)
# Function to process the traffic dataset
def process_traffic_data(csv_file):
data = pd.read_csv(csv_file)
peak_hours = data.groupby("Time")["Total"].sum().idxmax()
worst_situation = data.groupby("Traffic Situation")["Total"].sum().idxmax()
vehicle_contribution = (
data[["CarCount", "BikeCount", "BusCount", "TruckCount"]]
.sum()
.apply(lambda x: round((x / data["Total"].sum()) * 100, 2))
)
summary = (
f"Peak traffic hour: {peak_hours}. Worst traffic situation: {worst_situation}.\n"
f"Vehicle Contribution to Traffic:\n"
f"- Cars: {vehicle_contribution['CarCount']}%\n"
f"- Bikes: {vehicle_contribution['BikeCount']}%\n"
f"- Buses: {vehicle_contribution['BusCount']}%\n"
f"- Trucks: {vehicle_contribution['TruckCount']}%\n"
)
return data, summary
# Function to generate suggestions using Groq API
def generate_suggestions(summary):
input_content = (
f"Here is the detailed traffic data summary:\n{summary}"
f"Suggest realistic traffic optimization strategies with supporting stats."
)
chat_completion = client.chat.completions.create(
messages=[{"role": "user", "content": input_content}],
model="llama3-8b-8192",
)
return chat_completion.choices[0].message.content
# Function to create traffic visualization
def create_visualization(data):
fig = px.bar(
data,
x="Day of the week",
y="Total",
color="Traffic Situation",
title="Total Traffic by Day and Traffic Situation",
labels={"Total": "Total Vehicles", "Day of the week": "Day"},
)
return fig.to_html()
# Gradio interface function
def analyze_traffic(file):
data, summary = process_traffic_data(file.name)
suggestions = generate_suggestions(summary)
visualization_html = create_visualization(data)
return summary, suggestions, visualization_html
# Gradio interface definition
with gr.Blocks() as demo:
gr.Markdown("# Traffic Optimization Application")
gr.Markdown(
"Upload a CSV file with traffic data to generate traffic flow optimization suggestions and visualize traffic patterns."
)
with gr.Row():
file_input = gr.File(label="Upload Traffic Data CSV")
analyze_button = gr.Button("Analyze Traffic Data")
with gr.Row():
summary_output = gr.Textbox(label="Traffic Data Summary", lines=8)
suggestions_output = gr.Textbox(label="Optimization Suggestions", lines=8)
visualization_output = gr.HTML(label="Traffic Visualization")
analyze_button.click(
analyze_traffic, inputs=file_input, outputs=[summary_output, suggestions_output, visualization_output]
)
# Launch Gradio app
if __name__ == "__main__":
demo.launch()
|