kkose's picture
Updated the Access tokens
b80ce2a verified
import json
import os
from datetime import datetime
import pandas as pd
from huggingface_hub import HfApi
API = HfApi()
SUBMISSIONS_REPO = "isic-archive/ISIC2024_submissions" # private
RESULTS_REPO = "isic-archive/ISIC2024_results" # public or private
# Use your HF token (set as a Space secret)
HF_TOKEN = os.environ.get("ISIC2024_ACCESS_TOKEN")
def submit_prediction(model_name: str, predictions_file) -> str:
"""Upload a submission to the submissions dataset."""
timestamp = datetime.now().isoformat()
submission_id = f"{model_name}_{timestamp}".replace(" ", "_")
# Upload the predictions file
API.upload_file(
path_or_fileobj=predictions_file.name,
path_in_repo=f"predictions/{submission_id}.jsonl",
repo_id=SUBMISSIONS_REPO,
repo_type="dataset",
token=HF_TOKEN,
)
# Upload a metadata record
metadata = {
"model_name": model_name,
"submitted_by": "user", # could use HF OAuth here
"submission_time": timestamp,
"predictions_file": f"predictions/{submission_id}.jsonl",
}
metadata_bytes = json.dumps(metadata).encode()
API.upload_file(
path_or_fileobj=metadata_bytes,
path_in_repo=f"metadata/{submission_id}.json",
repo_id=SUBMISSIONS_REPO,
repo_type="dataset",
token=HF_TOKEN,
)
return f"Submitted! Your submission ID is `{submission_id}`. Results will appear on the leaderboard once evaluation is complete."
def load_results() -> pd.DataFrame:
"""Load the latest results from the results dataset."""
try:
from datasets import load_dataset
ds = load_dataset(RESULTS_REPO, token=HF_TOKEN)
df = ds["train"].to_pandas()
# Sort by score descending
df = df.sort_values("overall_score", ascending=False).reset_index(drop=True)
return df
except Exception:
return pd.DataFrame(columns=["model_name", "overall_score"])