File size: 1,234 Bytes
4013eed
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
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"])


@router.get("/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
        ]
    }