stasaking commited on
Commit
802339c
·
verified ·
1 Parent(s): 793dca4

Sync main.py from blood-brain-omics repo

Browse files
Files changed (1) hide show
  1. main.py +12 -8
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], "n_samples": r[1], "r2": r[2],
415
- "pearson": r[3], "mse": r[4], "mae": r[5]}
 
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 ("mse", "mae")
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 ("mse", "mae")
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 ("mse", "mae")
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] = {}