Leaderboard / app.py
Canstralian's picture
Update app.py
8b007ec verified
import gradio as gr
from gradio_leaderboard import Leaderboard, ColumnFilter, SelectColumns
import pandas as pd
# Sample data
data = {
"Model Name": ["SecModel A", "SecModel B", "SecModel C"],
"Version": ["1.0", "2.1", "1.3"],
"Detection Accuracy (%)": [98.5, 97.2, 96.8],
"False Positive Rate (%)": [0.5, 0.7, 0.6],
"Processing Time (ms)": [120, 150, 110],
"Model Size (MB)": [250, 300, 275],
}
df = pd.DataFrame(data)
# Define columns
columns = [
{"name": "Model Name", "type": "text", "displayed_by_default": True},
{"name": "Version", "type": "text", "displayed_by_default": True},
{"name": "Detection Accuracy (%)", "type": "number", "displayed_by_default": True},
{"name": "False Positive Rate (%)", "type": "number", "displayed_by_default": True},
{"name": "Processing Time (ms)", "type": "number", "displayed_by_default": True},
{"name": "Model Size (MB)", "type": "number", "displayed_by_default": True},
]
# Initialize leaderboard
leaderboard = Leaderboard(
value=df,
datatype=[col["type"] for col in columns],
select_columns=SelectColumns(
default_selection=[col["name"] for col in columns if col["displayed_by_default"]],
label="Select Columns to Display:",
),
search_columns=["Model Name", "Version"],
filter_columns=[
ColumnFilter("Detection Accuracy (%)", type="slider", min=90, max=100, label="Accuracy Range"),
ColumnFilter("False Positive Rate (%)", type="slider", min=0, max=5, label="False Positive Rate Range"),
ColumnFilter("Processing Time (ms)", type="slider", min=0, max=200, label="Processing Time Range"),
ColumnFilter("Model Size (MB)", type="slider", min=0, max=500, label="Model Size Range"),
],
interactive=False,
)
# Gradio interface
with gr.Blocks() as demo:
gr.Markdown("# Cybersecurity Models Leaderboard")
leaderboard.render()
demo.launch()