DashboardSafeScan / utils.py
notbulubula
naprawianie all
1638e8f
raw
history blame
3.66 kB
import streamlit as st
import pandas as pd
import wandb
def fetch_runs_to_df(api, projects, selected_project):
data = []
if selected_project == "All":
# return all runs from all projects
for project_name, details in projects.items():
entity = details["entity"]
project = details["project"]
runs = api.runs(f"{entity}/{project}")
for run in runs:
data.append({
"Run Name": run.name,
"ID": run.id,
"Created At": run.created_at,
"State": run.state,
"Tags": ", ".join(run.tags) # Join tags into a single string
})
df = pd.DataFrame(data)
else:
# Get the selected project's details
entity = projects[selected_project]["entity"]
project = projects[selected_project]["project"]
runs = api.runs(f"{entity}/{project}")
for run in runs:
data.append({
"Run Name": run.name,
"ID": run.id,
"Created At": run.created_at,
"State": run.state,
"Tags": ", ".join(run.tags) # Join tags into a single string
})
df = pd.DataFrame(data)
return df
def fetch_run(api, projects, selected_project, selected_run_id):
# Fetch run details based on the selected project
if selected_project == "All":
# Find the project for the selected run_id
for project_name, details in projects.items():
entity = details["entity"]
project = details["project"]
try:
run = api.run(f"{entity}/{project}/{selected_run_id}")
break
except wandb.errors.CommError:
continue
else:
st.error(f"Run ID {selected_run_id} not found in any project.")
else:
entity = projects[selected_project]["entity"]
project = projects[selected_project]["project"]
run = api.run(f"{entity}/{project}/{selected_run_id}")
return run
def fetch_models_to_df(api, projects, selected_project, df):
data = []
for index, row in df.iterrows():
try:
if selected_project == "All":
# Determine the project for the current run
for project_name, details in projects.items():
entity = details["entity"]
project = details["project"]
try:
run = api.run(f"{entity}/{project}/{row['ID']}")
break
except wandb.errors.CommError:
continue
else:
st.error(f"Run ID {row['ID']} not found in any project.")
continue
else:
entity = projects[selected_project]["entity"]
project = projects[selected_project]["project"]
run = api.run(f"{entity}/{project}/{row['ID']}")
metrics = run.summary
model_name = run.config.get("model_name", "Unknown") # Fetch model name from the config, defaulting to "Unknown"
data.append({
"Model Name": model_name, # Add model name to the table
"Run Name": row["Run Name"],
"ID": row["ID"],
"Accuracy": metrics.get("accuracy"), # Example metric
"Loss": metrics.get("loss") # Example metric
})
except wandb.errors.CommError:
continue
data_df = pd.DataFrame(data)
return data_df