Spaces:
Sleeping
Sleeping
Sync main.py from blood-brain-omics repo
Browse files
main.py
CHANGED
|
@@ -288,7 +288,9 @@ def shutdown():
|
|
| 288 |
# Helpers
|
| 289 |
# =============================================================================
|
| 290 |
|
| 291 |
-
VALID_METRICS = {"r2", "pearson", "mse", "mae"}
|
|
|
|
|
|
|
| 292 |
|
| 293 |
|
| 294 |
def q(sql: str, params=None):
|
|
@@ -398,11 +400,12 @@ def maxn_detail(
|
|
| 398 |
phase = covariate_phase("maxn", covariates)
|
| 399 |
|
| 400 |
rows = q("""
|
| 401 |
-
SELECT target, n_samples, r2, pearson, mse, mae
|
|
|
|
| 402 |
FROM results
|
| 403 |
WHERE phase = ? AND blood_platform = ? AND brain_target = ?
|
| 404 |
AND model = ?
|
| 405 |
-
ORDER BY r2 DESC
|
| 406 |
""", [phase, blood, brain, model]).fetchall()
|
| 407 |
|
| 408 |
return {
|
|
@@ -411,8 +414,9 @@ def maxn_detail(
|
|
| 411 |
"covariates": covariates,
|
| 412 |
"model": model,
|
| 413 |
"targets": [
|
| 414 |
-
{"target": r[0], "
|
| 415 |
-
"
|
|
|
|
| 416 |
for r in rows
|
| 417 |
],
|
| 418 |
}
|
|
@@ -502,7 +506,7 @@ def h2h_blood_summary(
|
|
| 502 |
platforms = list(buffer.keys())
|
| 503 |
v0, v1 = buffer[platforms[0]], buffer[platforms[1]]
|
| 504 |
if v0 is not None and v1 is not None:
|
| 505 |
-
asc = metric in
|
| 506 |
winner = platforms[0] if (v0 < v1 if asc else v0 > v1) else platforms[1]
|
| 507 |
pair_wins[pair_key][winner] = pair_wins[pair_key].get(winner, 0) + 1
|
| 508 |
current = key
|
|
@@ -517,7 +521,7 @@ def h2h_blood_summary(
|
|
| 517 |
platforms = list(buffer.keys())
|
| 518 |
v0, v1 = buffer[platforms[0]], buffer[platforms[1]]
|
| 519 |
if v0 is not None and v1 is not None:
|
| 520 |
-
asc = metric in
|
| 521 |
winner = platforms[0] if (v0 < v1 if asc else v0 > v1) else platforms[1]
|
| 522 |
pair_wins[pair_key][winner] = pair_wins[pair_key].get(winner, 0) + 1
|
| 523 |
|
|
@@ -578,7 +582,7 @@ def h2h_blood_per_outcome(
|
|
| 578 |
"platforms": sorted(platforms_seen), "outcomes": []}
|
| 579 |
|
| 580 |
p_a, p_b = sorted(platforms_seen)
|
| 581 |
-
asc = metric in
|
| 582 |
|
| 583 |
# Aggregate per brain_target
|
| 584 |
by_outcome: dict[str, dict] = {}
|
|
|
|
| 288 |
# Helpers
|
| 289 |
# =============================================================================
|
| 290 |
|
| 291 |
+
VALID_METRICS = {"r2", "pearson", "mse", "mae", "accuracy", "f1"}
|
| 292 |
+
# Metrics where lower is better (used by every endpoint that compares values).
|
| 293 |
+
ASCENDING_METRICS = {"mse", "mae"}
|
| 294 |
|
| 295 |
|
| 296 |
def q(sql: str, params=None):
|
|
|
|
| 400 |
phase = covariate_phase("maxn", covariates)
|
| 401 |
|
| 402 |
rows = q("""
|
| 403 |
+
SELECT target, task_type, n_samples, r2, pearson, mse, mae,
|
| 404 |
+
accuracy, f1
|
| 405 |
FROM results
|
| 406 |
WHERE phase = ? AND blood_platform = ? AND brain_target = ?
|
| 407 |
AND model = ?
|
| 408 |
+
ORDER BY COALESCE(r2, accuracy) DESC
|
| 409 |
""", [phase, blood, brain, model]).fetchall()
|
| 410 |
|
| 411 |
return {
|
|
|
|
| 414 |
"covariates": covariates,
|
| 415 |
"model": model,
|
| 416 |
"targets": [
|
| 417 |
+
{"target": r[0], "task_type": r[1], "n_samples": r[2],
|
| 418 |
+
"r2": r[3], "pearson": r[4], "mse": r[5], "mae": r[6],
|
| 419 |
+
"accuracy": r[7], "f1": r[8]}
|
| 420 |
for r in rows
|
| 421 |
],
|
| 422 |
}
|
|
|
|
| 506 |
platforms = list(buffer.keys())
|
| 507 |
v0, v1 = buffer[platforms[0]], buffer[platforms[1]]
|
| 508 |
if v0 is not None and v1 is not None:
|
| 509 |
+
asc = metric in ASCENDING_METRICS
|
| 510 |
winner = platforms[0] if (v0 < v1 if asc else v0 > v1) else platforms[1]
|
| 511 |
pair_wins[pair_key][winner] = pair_wins[pair_key].get(winner, 0) + 1
|
| 512 |
current = key
|
|
|
|
| 521 |
platforms = list(buffer.keys())
|
| 522 |
v0, v1 = buffer[platforms[0]], buffer[platforms[1]]
|
| 523 |
if v0 is not None and v1 is not None:
|
| 524 |
+
asc = metric in ASCENDING_METRICS
|
| 525 |
winner = platforms[0] if (v0 < v1 if asc else v0 > v1) else platforms[1]
|
| 526 |
pair_wins[pair_key][winner] = pair_wins[pair_key].get(winner, 0) + 1
|
| 527 |
|
|
|
|
| 582 |
"platforms": sorted(platforms_seen), "outcomes": []}
|
| 583 |
|
| 584 |
p_a, p_b = sorted(platforms_seen)
|
| 585 |
+
asc = metric in ASCENDING_METRICS
|
| 586 |
|
| 587 |
# Aggregate per brain_target
|
| 588 |
by_outcome: dict[str, dict] = {}
|