Spaces:
Sleeping
Sleeping
| import json | |
| from fastapi import APIRouter, Depends, Query | |
| from sqlalchemy.orm import Session | |
| from backend.app.db import get_db | |
| from backend.app.repositories.experiment_repo import get_experiments_by_ids, list_experiments | |
| router = APIRouter(tags=["compare"]) | |
| def compare_experiments(experiment_ids: str | None = Query(default=None), db: Session = Depends(get_db)): | |
| if experiment_ids: | |
| ids = [x.strip() for x in experiment_ids.split(",") if x.strip()] | |
| experiments = get_experiments_by_ids(db, ids) | |
| else: | |
| experiments = list_experiments(db) | |
| return { | |
| "experiments": [ | |
| { | |
| "experiment_id": exp.id, | |
| "dataset_id": exp.dataset_id, | |
| "algorithm": exp.algorithm, | |
| "status": exp.status, | |
| "config": json.loads(exp.config_json) if exp.config_json else {}, | |
| "metrics": json.loads(exp.metrics_json) if exp.metrics_json else {}, | |
| "summary": json.loads(exp.summary_json) if exp.summary_json else {}, | |
| "runtime_ms": exp.runtime_ms, | |
| "error_message": exp.error_message, | |
| } | |
| for exp in experiments | |
| ] | |
| } | |